1、单片机原理与应用课程实训单片机原理与应用课程实训液晶(LED)日历时钟项目实训液晶(LED)日历时钟项目实训 班级:电子1001 组员:陶涛、张含、卞修杰、张辉辉、季必云、郑军、赵胜强、高晓军 指导老师:朱孝立 日期:2012年6月18日2012年6月21日三、软件流程三、软件流程与说明与说明液晶液晶(LED)(LED)日历日历时钟项目实训时钟项目实训二、硬件工作二、硬件工作原理原理2.1 2.1 电路图电路图2.2 2.2 主要模块主要模块2.3 2.3 主要元件主要元件3.1 3.1 软件框图软件框图3.2 3.2 重点函数重点函数编程编程一、项目概述一、项目概述 四、调试过程四、调试过程
2、与实验结果与实验结果ZZZZZZZ项目概述项目概述 1功能特性:液晶屏显示当前时间,并可通过按键调整 2技术指标参数:DS1302是51单片机系统常用的日历时钟,该芯片提供了秒、分、时、日、月、星期和年的信息。DS1302的读写操作要在严格的复位信号和时钟信号的配合下完成。 3开发器材:AT89S52单片机、日历时钟DS1302及SMC1602 LCM液晶显示屏 4环境:SZ51单片机开发板Z电路图电路图DS13021602LCDZ主要模块主要模块1.模块组成:本程序采用模块化设计的方法,主要由主函数,显示模块,日期模块组成。2.单片机主控制模块电路设计 在这里我们们要了解一下关于AT89S5
3、2单片机的相关的资料从而使我们们对AT89S51有一个深入理解和印象。AT89S52单片机具有在线调试的功能,可以很方面的用于实时的时钟连接调试,在本系统中单片机的工作与复位电路图。所采用的12M的晶振用于单片机的工作,采用上电的方式进行复位。 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源
4、),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。有主电源和备份电源双引脚,而且备份电源可由大容量电容(1F)来替代。需要强调的是,DS1302需要使用32.768KHz的晶振。 数字时钟芯片的详细的介绍,通过单片机可以很方便的控制时钟芯片的工作,下面看一下时钟芯片DS1302与系统的连接图如图2-3所示。图2-3 3. 键盘输入部分 键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。 在键盘的设计过程中,一般采用非编码键盘,在此的使用的过程中要注意消抖的问题,键盘的抖动对系统正常的工作影响很大,所以一
5、定要消抖。 在本系统的设计过程中,共有四个键分别是功能移位键、时间的“+”键、时间的“”键、特殊时间转换键:与系统的连线图如图2-5下 S4S3R1110KR910KR1010KVCC+C310pS2S1R1510kR1610KRSTP1.7P1.6P1.5P1.4GND图2-5Z主要元件主要元件 AT89S52单片机 日历时钟DS1302 SMC1602 LCM液晶显示屏Z开始开始定义日定义日期变量期变量调用初调用初始化函数始化函数液晶显液晶显示函数示函数1外部中外部中断函数断函数结束结束开始开始控制外部控制外部中断程序中断程序 DS1302写读函数写读函数1602写指令函数写指令函数延时函
6、数延时函数结束结束主函数主函数 初始化函数初始化函数Z3.2.1主函数void main()/主函数 uchar n; init();while(numn!=0)/写液晶的第一行显示writedat(numn);n+; writecom(0 x80+0 x40);n=0;while(num1n!=0)/液晶的第二行显示writedat(num1n);n+;while(1)/对时间的不断刷新if(flag=0)readtime1302();writecom(0 x80+0 x44);writedat(0 x30+shi/16);writedat(0 x30+shi%16);writecom(0
7、x80+0 x47);writedat(0 x30+fen/16);writedat(0 x30+fen%16);writecom(0 x80+0 x4a);writedat(0 x30+miao/16);writedat(0 x30+miao%16);writecom(0 x83);writedat(0 x30+nian/16);writedat(0 x30+nian%16);writecom(0 x86);writedat(0 x30+month/16);writedat(0 x30+month%16);writecom(0 x89);writedat(0 x30+day/16);writ
8、edat(0 x30+day%16);writecom(0 x8d);writedat(xingqiweek0);writedat(xingqiweek1);writedat(xingqiweek2); 3.2.3对1602编程void writecom(uchar com)/写指令函数 delay1(5);rs=0;rw=0;e=0;delay();P0=com;delay();delay();delay();e=1;delay();delay();delay();e=0; void writedat(uchar dat)/写数据函数 delay1(5);rs=1;rw=0;e=0;dela
9、y();P0=dat;delay();delay();delay();e=1;delay();delay();delay();e=0; 3.2.4对秒控制switch(flag)case 1:writecom(0 x0f);writecom(0 x80+0 x4a); /秒的控制 让光标在秒的位置上闪烁if(k2=0)delay1(10);if(k2=0)miao=miao/16*10+miao%16;miao+;if(miao=60)miao=0;while(!k2);writedat(0 x30+miao/10);/刷新秒的显示writedat(0 x30+miao%10);writeco
10、m(0 x80+0 x4a);miao=miao/10*16+miao%10;writebyte1302(0 x8e,0 x00); writebyte1302(0 x80,miao);writebyte1302(0 x8e,0 x80); if(k3=0)delay1(10);if(k3=0)delay1(10);if(k3=0)miao=miao/16*10+miao%16;miao-;if(miao=-1)miao=59;while(!k3);writedat(0 x30+miao/10);writedat(0 x30+miao%10);writecom(0 x80+0 x4a);mia
11、o=miao/10*16+miao%10;writebyte1302(0 x8e,0 x00);writebyte1302(0 x80,miao);writebyte1302(0 x8e,0 x80);break;Z4.4.调试过程与实验结果调试过程与实验结果 刚开始我们只写了初步的程序,只能控制秒、分、时、并进行调整,接着经过我们共同的探讨和努力又在原有程序上加上了对年月日的按键调整,后来我们又对液晶显示屏上的星期进行了调整,利用的是DS1302芯片内部程序。最终我们实验结果是可调整到当前时间,并且可以通过按键调整。 结果是:20120621THU 00:00:00结束语学习心得这次硬件部件
12、设计与调试实践,使我们学习了很多的东西。通过近一周的学习和实践,使我们对所学的知识进行了系统的复习和巩固,同时,通过课设,培养和锻炼了我们 的动手能力,这一点非常重要,不仅对我们以后的学习有帮助,还可以为以后的工作打下一定的基础。这一次的实训对我们的帮助很大,使我们真正的认识到了理论与实际的区别,这将成为我们的学习目标和动力,更进一步的挖掘自己的能力,使自己获得进一步的提高。这段时间的学习,使我们了解到了理论和实际之间的差别,第一次真正接触到了实际中的问题,并通过和老师、同学交流,加强了自身的分析问题、解决问题的能力。同时,我们也发现了自己在某些方面的不足,这是我们以后要加以改进的方面。在组织电路图的过程中使我们也学会了如何搭建单片机的硬件电路,如何根据硬件电路图来编制相关的程序,使我们对硬件课程的学习有了更浓的兴趣,使我们对我们所学的这个方向有了更浓的兴趣。 经过这次的练习,我们会更加严格要求自己,认真对待每一个课时,认真学好单片机这门课,争取有一个新的提高。Z