参考文献:
[1] 刘文涛 单片机语言C51典型应用设计[M] 人民邮电出版社2005,1(1):5-8 [2] 求是科技 单片机典型模块设计实例导航[M] 人民邮电出版社 1995,1(4):32-34 [3] 赵亮 侯国锐 单片机C语言编程与实例[M] 人民邮电出版社 1995,1(6):37-38 [4] 稻叶 保[日] 振荡电路的设计与应用[M] 科学出版社 1997,19(3):71-72 [5] 猪饲国夫 本多中二[日] 数字系统设计[M] 科学出版社 1998,1(2):122-124 [6] 铃木雅臣[日] 晶体管电路设计(上)(下)[M]科学出版社 2003,1(6):92-93 [7] 冈村迪夫[日] OP放大电路设计[M] 科学出版社 2003,1(6):92-93
[8] 杨帮文 应用电路百例丛书 新型集成器件实用电路[M] 电子工业出版社 ,2004,1(34):13-14 [9] 求是科技 李现通 串口通信技术与工程实践[M] 人民邮电出版社 2001,3(2):56-58 [10] 杨金岩 8051单片机数据传输接口扩展技术与应用实例[M] 人民邮电出版社 1996,1(2):1-5 [11] keil c51的使用[M] 人民邮电出版社 1998,1(2):122-124 [12] 电子制作工作室 电子制作[J] 电子制作杂志社 2005,2(3):23-24 [13] 吉雷.Protel 99—从入门到精通[M]西安电子科技大学出版社.2000.10 [14] 张友德.单片微型机原理、应用和实验[M] 复旦大学出版社.1996.10 [15] ATMEL公司 AT89S52的技术手册[J]. 2002.3
[16] 深圳市中源单片机发展有限公司[J] AT89C52 Datasheets. 1994.7 [17] http://www.tzdiy.com/Soft_Show.asp?SoftID=25 2005.8
[18] http://www.happycampus.com.cn/pages/2004/06/08/D142698.html 2006.5 [19] http://www.tzdiy.com/Soft_Show.asp?SoftID=14 2006.5
第 17 页 共 27 页
本科生毕业论文(设计) 致谢
致 谢
在毕业设计期间,我得到了许多热心的教师、同学的帮助,在此表示深深的谢意。
首先,我衷心地感谢我的导师邓于实验师。他耐心的教诲和严谨的态度使我受益匪浅,正是他在各方面的精心指导才使我最终完成了课题。
同时,我也要感谢马培、梁成山同学。在整个毕业设计期间,正是我们积极的讨论及他们的全力协助,才使我的课题以较快的速度完成。
最后,我不能不对在百忙之中抽出宝贵时间来参加参加论文评阅的各位教师表示由衷的谢意,他的的指导不但能修正论文中的错误,而且也使我得以真知。
由于本人学识有限,文中必有不妥之处,敬请各位教师批评指正。
第 18 页 共 27 页
张 露
2006年5月于重庆永川
附页1: 程序清单
//************************************ //**********1602-LED or Clock********* //************************************ #include \#include \
//************************************************************
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar bdata flag;
sbit start=flag^0;//设置时间标志位 sbit start1=flag^1; sbit start2=flag^2; sbit start3=flag^3; sbit start4=flag^4; sbit start5=flag^5; sbit start6=flag^6; sbit start7=flag^7; bit casp; sbit rs=P2^3; sbit rw=P2^4; sbit e =P2^5;
uchar code table1[]={'M','C','U',' ','C','l','o','c', 'k',' ','S','y','s','t','e','m'}; uchar code table2[]={' ',' ',' ',' ',' ',':',' ',' ', ':',' ',' ','.',' ',' ',' ',' '};
uchar code table3[]={'0','1','2','3','4','5','6','7','8','9','S','e','t',' ',' ',' '};
uchar second_l,second,minte,hour; uchar count,buffer[7],count1;
uchar tempsecond,tempminte,temphour;
uchar tempdaysecond,tempdayminte,tempdayhour; void display(void); void scankey(void); void delaysecond(void); void delayfirst(void); void write(void); void enable(void); void sys_init2(void); void temptime(void); void checktime(void); void checkdaytime(void);
第 19 页 共 27 页
void tempdaytime(void); void callmusic(void);
void checkled(uchar checkled,uchar checkled1,uchar jnz); //***************************************************** uchar T1count; uchar T1minte;
uchar bdata Tofirst1; sbit Tofirst=Tofirst1^0; sbit firstday=Tofirst1^1; //*************************** //**********main************* //*************************** void main(void) {
uchar i; // P0=0x01;enable(); // P0=0x38;enable(); // P0=0x0c;enable(); // P0=0x80;enable(); // for(i=0;i<16;i++) {
P0=table1[i]; // write(); // }
P0=0xc0;enable(); //for(i=0;i<16;i++) {
P0=table2[i]; // write(); // }
TMOD=0x11; //TH0=(65536-50000)/256; //TL0=(65536-50000)%6; //TH1=(65536-50000)/256; //TL1=(65536-50000)%6; //sys_init2(); //ET1=1; //ET0=1;TR0=1;EA=1; //start2=0;start=0;start1=0; //hour=12;minte=59; //while(1) {
if(Tofirst==0) {
if(P3_7==0)
定义字符变量 i 从液晶显示地址(0x80),开始逐步写入16个字符调用写数据子程序 液晶显示地址(0xc0) 从液晶显示地址(0xc0),开始逐步写入16个字符调用写数据子程序 初始化定时器0/1的状态寄存器 赋初值给定时器0TH0 赋初值给定时器0TL0 赋初值给定时器1TH1 赋初值给定时器1TL1 调用启动定时器2子程序 允许定时器1中断
允许定时器0中断,启动定时器0,允许CPU中断 位寻址区start2,start,start1为0
时缓冲区赋初值为12,分缓冲区赋初值为59 第 20 页 共 27 页
{
P3_6=0; //灯亮
temptime(); //记录天黑后的时间,用于4个小时之后灯灭(P3_6=1) TR1=1; } }
//if(P3_7==0){P1_7=0;TR1=1;Tofisrt=1;}只执行一次
if(P3_7==1) {
P3_6=1; //灯灭 tempdaytime(); } } }
//************************ //******write************* //************************
void write(void) //液晶写数据子程序 {
rs=1; //rs=1; rw=0; //rw=0; e=0; //e=0;
delayfirst(); //调用延时子程序 e=1; //e=1; }
//********************** //*******enable********* //**********************
void enable(void) //液晶使能子程序 {
rs=0; //rs=0; rw=0; //rw=0; e=0; //e=0;
delayfirst(); //调用延时子程序 e=1; //e=1 }
//**************************** //*********timer************** //**************************** void timer0()interrupt 1 using 0 {
TH0=(65536-50000)/256; //赋初值定时器0给TH0
第 21 页 共 27 页