1、1第一章 设计要求及系统组成1.1 设计要求利用单片机最小系统设计一个电子时钟,显示方式为*:*:*,并且可以任意修改时间。1.2 系统组成原理框图如图 1.1单片机复位电路时钟电路按键电路1602 显示模块图 1.1 系统原理框图第二章 系统设计方案2.1 系统设计方案 电路原理图如图 2.1 所示2图 2.1 电路原理图2.2 电路模块组成及其工作原理2.2.1 时钟电路系统时钟源由内部时钟方式产生,时钟电路由 12MH 晶振和两个 30PF 瓷片电容组成,构成自激振荡,形成振荡源提供给单片机。电容可在 5PF 到 30PF之间选择,电容的大小对振荡频率有微小影响,可起频率微调作用。时钟电
2、路如图 2.2 所示图 2.2 时钟电路2.2.2 复位电路单片机复位有上电复位和手动复位两种方式,上电复位是接通电源后利用 RC 充电来实现复位。手动复位是通过人为干预,强制系统复位。复位电路如图 2.3 所示,可以实现上电复位和手动复位功能。3图 2.3 复位电路2.2.3 按键电路在单片机的 P1.0、P1.1、P1.2 三个 I/O 口接三个简易按键,通过不断检测按键状态,识别按键的按下顺序和次数即可实现时间的任意修改。按键电路如图 2.4 所示。2.2.4 1602 液晶显示模块电路 本设计是通过对 1602 液晶显示屏的控制来实现时间的显示。1602 液晶显示模块的驱动如下所述:4
3、图 2.4 1602 液晶屏实物图1602 采用标准的 16 脚接口,其中:第 1 脚:VSS 为地电源第 2 脚:VDD 接 5V 正电源第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比度第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以写入指令或者显示地址,当RS 为低电平 RW 为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时
4、可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线5第 1516 脚:空脚1602 显示屏的时序图如图 2.5。图 2.5 1602 时序图1602 液晶显示屏和单片机的连线图如图 2.6 所示。图 2.6 1602 和单片机连线图6第三章 程序设计及其调试3.1 程序设计程序设计如下:#include#define uchar unsigned char #define uint unsigned intsbit lcdrs=P20;sbit lcswr=P21;sbit lcden=P22;sbit
5、s1=P10;sbit s2=P11;sbit s3=P12;sbit rd=P37;uchar count,s1num;char miao,shi,fen;uchar code table=“ 2011-6-14 TUN“;uchar code table1=“ 00:00:00“;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;lcswr=0;P0=com;delay(5);7lcden=1;delay(5);lcden=0;void write_date(
6、uchar date)lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);8for(num=0;num12;num+)write_date(table1num);delay(
7、5);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void keyscan()rd=0;if(s1=0)delay(5);if(s1=0) s1num+;9while(!s1);if(s1num=1)TR0=0;write_c
8、om(0x80+0x40+10);write_com(0x0f);if(s1num=2)write_com(0x80+0x40+7);if(s1num=3)write_com(0x80+0x40+4);if(s1num=4)s1num=0;write_com(0x0c);TR0=1;if(s1num!=0)if(s2=0)delay(5);if(s2=0)10while(!s2);if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen+;if(fen=60)fen=
9、0;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);if(s3=0)11delay(5);if(s3=0)while(!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40
10、+7);if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);12void main()init();while(1)keyscan();void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=18)count=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)13shi=0;write_sfm(4,shi);writ
11、e_sfm(7,fen);write_sfm(10,miao);3.2 实验调试实验过程中出现了很多的问题,经过反复的程序修改和调试,最终完成了本设计的要求,实现了电子时钟功能。在电路焊接前,通过 protues 单片机仿真软件多次调试和仿真,得出了正确的实验结果。Protues 仿真图如图 3.1 所示。图 3.1 protues 仿真图结论经过两周的课程设计,不断的测试和分析,最终完成了电子时钟的设计和制作。在实验的设计及仿真测试时,当没有得出正确的实验现象是,必须冷静、14沉着的思考问题的来源,切勿太过紧张。在电路的焊接过程,须仔细再仔细,案部分焊接导线,切勿乱了头绪。这样才能在电路制作
12、过程中减少许多不必要的错误。本次设计组要是程序设计部分,在程序设计过程中,出现了很多的问题,经过和组员的多次讨论和研究、 ,并参阅了一些电子资料,解决的很多难题。此课程设计主要考察了对单片机技术原理及程序设计基础等知识。理论结合实践,使得在平时学习的单片机技术知识有了一个新的认识。此次设计的电子时钟是一个典型的单片机使用实例。通过本次设计,使得对单片机技术有了进一步的认识,并且对此产生了浓厚的兴趣,为以后的学习打下了坚实基础。通过和组员的共同努力,成功的完成此次课程设计,在排除问题过程中,体验了程序设计及电路设计制作的艰辛,更能够体会到成功的喜悦。参考文献1 张先庭.单片机原理、接口和 C51 使用程序设计.国防工出版社.20112 吴立新.实用电子技术手册.机械工业出版社.20033 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2004.附录15图 1 实验电路 PCB 图