版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青海民族大学毕 业 论 文 ( 设 计 ) 论文题目: 基于51 单片机的万年历的设计 摘 要 随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活中。日历是人们不可或缺的日常用品。但一般日历都为纸制用品,使用不便,寿命不长。本文借助电路仿真软件Protues对基于AT89S51单片机的电子万年历的设计方法及仿真进行了全面的阐述。该电子万年历在硬件方面主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCM点阵液晶显示屏显示。时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。日历能显示阳历和阴历年、月、日以及星期、时
2、、分、秒。 此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景 关键词:单片机 万年历 可调 DS1302 12864 Abstract With the rapid development of world economy and the forthcoming of information era, many kinds of mini-type intelligent domestic electric appliances appear in our life one after another. Calendars
3、are necessary daily goods in peoples life. This paper mainly discuss the design and simulation of electronic calender based on AT89S51 with the help of Protues. On the hardware side, the electronic calendar using AT89C51 microcontroller as the main control center, clock provided by the DS1302 clock
4、chip , 1602LED dot matrix LCD display. Time and date adjusting is carried out by three keys, which can also set the alarm clock.To sum up the calendar has read convenient, direct display, functional diversity, simple circuit, low cost, and many other advantages, conform to the trend of the developme
5、nt of electronic instruments, and has a broad market prospect. Key words: SCM perpetual calendar DS1302 12864目 录前 言11. 方案设计21.1 系统基本方案选择和论证21.1.1单片机芯片的选择21.1.2显示模块选择方案和论证21.1.3时钟芯片选择方案与论证21.2 电路设计最终方案决定32.系统的硬件设计与实现42.1 电路设计框图42.2 系统硬件概述42.2.1 AT89C52概述42.2.2 DS1302概述62.2.3 12684概述73. 系统的软件设计83.1 程序
6、流程框图83.2 从1302读取日期和时间流程图93.3 时间调整程序流程图104.系统测试104.1硬件测试104.2软件测试115.结论11参考文献12致 谢13附 录14前 言在日新月异的21世纪里,时间对现代人来说更加紧迫,从观太阳、摆钟到现在电子钟,时间的记录方式在不断的更新进步。然而,随着社会、科技的发展,集直观性,精度高,寿命长,功能全等为一体的记录方式更为人们所需求。在电子产业高速发展这一时代背景下,大规模集成电路大量出现,电子钟也因读取方便、显示直观、功能多样、电路简洁等诸多优点随之诞生,它的出现极大地影响了人们的生活,我们的时间记录更为全面和科学。因此,对万年历的研究与探索
7、是具有相当重要的现实意义和实用价值。电子万年历属于小型智能电子产品,既可广泛应用于家庭,也可应用于银行、医院、学校等公共场所。它利用单片机进行控制,因为单片机具有高可靠性、高性价比、低电压、低功耗等一系列优点;利用DS1302实时时钟芯片进行记时,因为其具有高性能、低功耗、带RAM的实时时钟电路,可对年、月、日、周日、时、分、秒进行计时,同时具有闰年补偿功能等优点;利用12864液晶显示,因为其具有显示功能强大、价格便宜等特点,再外加一些基本系统即可实现时间的调整和显示。因此,电子万年历制作既有市场前景,又能培养单片机的运用能力,无论从实用价值,还是从培养能力的角度来看这都是很有意义的毕业设计
8、课题。本万年历的设计要实现公历年、月、日,农历年、月、日,星期,时、分、秒,显示公历节日,农历节日,生日,时间段提醒以及节日、生日与时间段的交替显示,并在开机时设置显示作者的相关信息。最终在老师的指导和同学们的帮助下,经过自己的努力完成了这个课题,并从中提高了实践动手、团结合作和综合运用理论知识进行工程实践的能力。1. 方案设计1.1 系统基本方案选择和论证 1.1.1单片机芯片的选择本设计采用AT89C52芯片作为硬件核心,该芯片内有4K字节的在线编程Flash存储器,可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。1.1.2显示模块选择方案和论证方案
9、一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。 方案二:LED数码管显示数码管具有低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,操作简单方案等优点。但由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示。方案三:LCD12864液晶显示此液晶具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势和可视面积大,画面效果好,分辨率高,抗干扰能力强等特点,并且能够方便的显示文
10、字和数字。所以最终选择LCD12864。 1.1.3时钟芯片选择方案与论证方案一:不使用芯片,采用单片机的定时计数器这种方法直接采用单片机定时计数器提供信号,模拟时钟的时, 分,秒。如:利用AT80C52芯片,定时器用工作方式1,每50ms产生一个中断,循环20次,即1s周期。每一个周期加1,那么1min为60个周期,1h就是60*60=3600个周期。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但实现的时间误差较大,所以不采用此方案。方案二:并行接口时钟芯片 DS12887采用单片机应用系统并行总线(三总线)扩展的接口电路,采用这种接口电路具有操作速度快,编程方便的优点。但是对于80C
11、52单片机来说,低位地址线要通过锁存器输出,还要地址译码器,而且并行口芯片的体积相对较大。方案三:串行接口时钟芯片DS1302采用DS1302时钟芯片实现时钟,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背
12、电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。所以,最终选择串行时钟芯片DS1302。1.2 电路设计最终方案决定 综上各模块的选择方案与论证,确定最后的主要硬件资源如下:采用AT89C52作为主控制系统;DS1302提供时钟;12864液晶屏作为显示。2.系统的硬件设计与实现2.1 电路设计框图 单片机主控模块从DS1302时钟模块读取时间,通过片内芯片处理,将显示结果通过PO口床送至12684液晶显示模块显示出最终的界面;同时,单片机主控模块对键盘进行扫描,有按键按下时进入调整状态,并在1
13、2684液晶上显示状态。2.2 系统硬件概述 2.2.1 AT89C52概述AT89C52功能特性概述:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时器/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路;可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式;空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作;掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。AT89C52的引脚定义及功能:Vcc :接+5V 电源Vss :接地XTAL1和XTAL2:时钟引
14、脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使引脚输出高电平,设置SFR AUXR的DISRT0(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。 PSEN:程序存
15、储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的变成电压Vpp.PO P1 P2 P3口:四个I/O口,其中P3口还具有第二功能:端口引脚第二功能端
16、口引脚第二功能P3.0 RXD(串行输入口)P3.4T0(定时/计数器0)P3.1 TXD(串行输出口)P3.5T1(定时/计数器1)P3.2(外中断0)P3.6(外部数据存储器写通道)P3.3 (外中断1)P3.7(外部数据存储器读通道) AT89C52管脚图及控制电路: 2.2.2 DS1302概述 DS1302功能特性概述:提时钟计数功能,可以对秒、分钟、小时、日、月、年、星期的计数;年计数可达到2100年;有31*8位的额外数据暂存寄存器;采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据;内部有一个318的用于临时性存放数据的RAM寄存器;具有主
17、电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 AT89C52的引脚定义及功能: Vcc1:备用电源 Vcc2:主电源 X1和X2:振荡源,外接32.、KHz晶振 I/O:串行数据输入端(双向) SCLK:输入端 RST:复位端 DS1302管脚图及控制电路: 2.2.3 12684概述12684功能特性概述:显示内容12864点;全屏点阵;2M ROM总共提供8192个汉字(1616点阵);16K ROM总共提供128个字符(168点阵);工作温度:-2070摄氏度,存储温度:-3080摄氏度。引脚定义及功能:VSS:电源地VDD:电源正V0:液晶显示器驱动电器(可调
18、)RS:RS=“H”,表示DB0DB7为显示数据;RS=“L”,表示DB0DB7为控制指R/W:R/W=“H”,E=“H”,数据被督导DB0DB7;R/W=“1”,E=“HL”,DB0DB7 的数据被写到IR或DRDB1-7:数据线PSB:串并口选择NC:空脚RST:复位脚VOUT:倍压输出脚LEDA/K:背光电源,A正 K负12864管脚图及控制电路3. 系统的软件设计该系统的软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。电子万年历的程序主要包括3个方面的内容:一是DS1302从单片机中读取数据进行计数,二是利用
19、按键进行时间的调整,三是单片机中读取DS1302中的数据驱动LED12684显示时间。3.1 程序流程框图主程序流程框图如下图所示,12864,DS1302的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。3.2 从1302读取日期和时间流程图3.3 时间调整程序流程图4.系统测试4.1硬件测试在Protues仿真结束后,于焊接板上完成了硬件组装。在调试硬件时遇到过很多问题,但只要细心、认真检查这些问题都是可以避免的,主要问题及解决办法现列如下:(1) 接通电源后LCD12864没有正确的显示。在不通电状态下用万用表检测电路是否正常连接,在检查回路时没有发现问题,怀疑是
20、单片机驱动电路有问题,加载了所有端口的LED的驱动程序,所有端口都能正常工作,排除是单片机驱动电路有问题这一可能性;再次对电路进行检查发现排阻太小,换成10K的排阻后,LCD正常显示。(2) 电路工作一段时间之后有的芯片发热严重。经查发现原来是有尖锐的管脚刺破邻近的漆包线造成短路,断掉该线并再次连接可解决问题。(3) 接通后液晶正常显示了,但是在时间位置全部显示“?”号,初步判断是时间未正确读取,经过仔细用万用表检查,发现DS302接地端接触不良,解决后显示正常。4.2软件测试(1)程序烧入后,开机画面正常,可是一进入显示界面就有未知符号出现,后又恢复正常,且调时也没问题。初步判断与显示程序无
21、关,经过反复调试,发现是开机画面结束后为对12864液晶进行初始化,最后修改后问题得以解决。(2)修改时间、日期时农历没有自动对应上。把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题。5.结论 通过对电子万年历的设计,从中不仅学习到了新知识,还丰富了许多的设计经验。例如进行程序编写时,由于思路的不清晰,导致程序问题不断出现,还不知从何而解,最后静下心来,仔细理了一下编程思路,再一步一步往下编写,遇到问题一个一个解决,这样既锻炼自己又节约了时间。经过这一个多月
22、的努力,从开始准备资料到硬件电路的制作,再到毕业论文的完成,其中有问题不能得以解决的烦恼,也有收获新知的快乐。而且,经过这次设计真的理解了理论与实践的差别,没有扎实的理论,实践过程要走很多弯路,而实践中又会遇到很多理论上不曾提到过的问题。所有,我们要有脚踏实地,认真严谨,实事求是的学习态度,也要有不怕困难、坚持不懈、吃苦耐劳的精神去面对困难。 参考文献杨子文.单片机原理及应用 .西安:西安电子科技大学出版社,2006彭伟.单片机C语言程序设计实训100例.北京:电子工业出版社,2009阎石.数字电子技术基础.北京:高等教育出版社,2006陈正振.电子电路设计与制作.广西:广西交通职业技术学院信
23、息工程系,2007胡汉才.单片机原理与接口技术.北京:清华大学出版社,2004何小艇.电子系统设计M.杭州:浙江大学出版社,2007李光飞.单片机课程设计实例指导.北京:北京航空航天大学出版社,2004.马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,2003侯玉宝.基于proteus的51系列单片机设计与仿真.北京:电子工业出版社,2008郭荣生.电子技术实验与实践济南:中国石油大学出版社,2007王法能.单片机原理及应用.北京:科学出版社 2004致 谢我的大学生活将随着这个毕业论文而随之结束,在大学这四年的学习和生活中,我不仅学到了丰富的专业知识,还学会了怎么为人处世,
24、怎么面对困难,怎么奋发向上,怎么学会关心别人。在学校期间,有太多的感动让我们怀念,有太多的人让我们难忘,有太多的笑声与快乐。总之,有太多太多值得怀念的东西,它将是我们一生宝贵的财富。在这个毕业设计阶段,我学习到了新知识,丰富了实践经验,还对我们这个专业的工艺流程有了更深刻的理解,对我们毕业后从事本专业工作打下了结实的基础。因为这个过程,我们就拥有了比别人更多的专业体验,在面试中我们就比别人多了一个砝码。 在大学最后的这个阶段,经过一个月的努力终于完成了电子万年历设计,在此要感谢的人有很多,首先感谢学校提供的优越实验环境,使我能全身心的投入到我的设计中。感谢物理与电子工程学院,有大量量参考文献供
25、我们查阅。感谢我的指导老师孙老师给我的仔细检查和改正。感谢同我一起探讨学习的同学们。还要感谢实验室老师的大力支持,当印制电路板生成后,借出各种调试工具,使系统在最短的时间里调试成功,使本系统能顺利实现。 附 录附录一 元器件明细表:元件名称 数量元件名称 数量AT89C521个10K电阻1个DS13021个22UF电解电容1个LCD128641个30PF电容2个排阻(10K)1个12M晶振1个按钮5个32.768k晶振1个附录二 仪器设备清单仪器名称数量仪器名称数量RF-2148USB智能编程器1个EDA实验箱1个附录三 电路原理图附录四 PCB图附录五 实物图附录六 程序清单#include
26、 #include #define uchar unsigned char#define uint unsigned intuchar sec,min,hour,day,month,year,week;bit w; uchar next;void DelayUs2x(unsigned char t) while(-t);void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); void delay(uint ms) / 延时子程序 uint a,b,c; /ms=1000为1.015s fo
27、r(a=2;a0;a-) for(b=46;b0;b-) for(c=ms;c0;c-);sbit RS = P24;sbit RW = P25;sbit E = P26;sbit RES = P21;sbit PSB = P20;sbit sclk=P10;/1302串行时钟sbit I_O=P11;/1302数据端口sbit rst=P12;/1302复位sbitk1=P34;/功能健sbitk2=P35;/时间加sbitk3=P36; /时间减sbitk4=P37;/确定键#define DataPort P0 /单片机 P0 液晶DB0-DB7uchar code DayCode19=
28、0x00,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3; uint code DayCode23=0x111,0x130,0x14e;uchar LunarMonth,LunarDay,LunarYear;bit c_moon;uchar code YearCode300= 0x0C,0x96,0x45, /2000 297 0x4d,0x4A,0xB8, /2001 300 0x0d,0x4A,0x4C, /2002 303 0x0d,0xA5,0x41, /2003 306 0x25,0xAA,0xB6, /2004 309 0x05,0x6A,0x49,
29、 /2005 312 0x7A,0xAd,0xBd, /2006 315 0x02,0x5d,0x52, /2007 318 0x09,0x2d,0x47, /2008 321 0x5C,0x95,0xBA, /2009 324 0x0A,0x95,0x4e, /2010 327 0x0B,0x4A,0x43, /2011 0x4B,0x55,0x37, /2012 0x0A,0xd5,0x4A, /2013 0x95,0x5A,0xBf, /2014 0x04,0xBA,0x53, /2015 0x0A,0x5B,0x48, /2016 0x65,0x2B,0xBC, /2017 0x05,
30、0x2B,0x50, /2018 0x0A,0x93,0x45, /2019 0x47,0x4A,0xB9, /2020 0x06,0xAA,0x4C, /2021 0x0A,0xd5,0x41, /2022 0x24,0xdA,0xB6, /2023 0x04,0xB6,0x4A, /2024 0x69,0x57,0x3d, /2025 0x0A,0x4e,0x51, /2026 0x0d,0x26,0x46, /2027 0x5e,0x93,0x3A, /2028 0x0d,0x53,0x4d, /2029 0x05,0xAA,0x43, /2030 0x36,0xB5,0x37, /20
31、31 0x09,0x6d,0x4B, /2032 0xB4,0xAe,0xBf, /2033 0x04,0xAd,0x53, /2034 0x0A,0x4d,0x48, /2035 0x6d,0x25,0xBC, /2036 0x0d,0x25,0x4f, /2037 0x0d,0x52,0x44, /2038 0x5d,0xAA,0x38, /2039 0x0B,0x5A,0x4C, /2040 0x05,0x6d,0x41, /2041 0x24,0xAd,0xB6, /2042 0x04,0x9B,0x4A, /2043 0x7A,0x4B,0xBe, /2044 0x0A,0x4B,0
32、x51, /2045 0x0A,0xA5,0x46, /2046 0x5B,0x52,0xBA, /2047 0x06,0xd2,0x4e, /2048 0x0A,0xdA,0x42, /2049 0x35,0x5B,0x37, /2050 0x09,0x37,0x4B, /2051 0x84,0x97,0xC1, /2052 0x04,0x97,0x53, /2053 0x06,0x4B,0x48, /2054 0x66,0xA5,0x3C, /2055 0x0e,0xA5,0x4f, /2056 0x06,0xB2,0x44, /2057 0x4A,0xB6,0x38, /2058 0x0
33、A,0xAe,0x4C, /2059 0x09,0x2e,0x42, /2060 0x3C,0x97,0x35, /2061 0x0C,0x96,0x49, /2062 0x7d,0x4A,0xBd, /2063 0x0d,0x4A,0x51, /2064 0x0d,0xA5,0x45, /2065 0x55,0xAA,0xBA, /2066 0x05,0x6A,0x4e, /2067 0x0A,0x6d,0x43, /2068 0x45,0x2e,0xB7, /2069 0x05,0x2d,0x4B, /2070 0x8A,0x95,0xBf, /2071 0x0A,0x95,0x53, /
34、2072 0x0B,0x4A,0x47, /2073 0x6B,0x55,0x3B, /2074 0x0A,0xd5,0x4f, /2075 0x05,0x5A,0x45, /2076 0x4A,0x5d,0x38, /2077 0x0A,0x5B,0x4C, /2078 0x05,0x2B,0x42, /2079 0x3A,0x93,0xB6, /2080 0x06,0x93,0x49, /2081 0x77,0x29,0xBd, /2082 0x06,0xAA,0x51, /2083 0x0A,0xd5,0x46, /2084 0x54,0xdA,0xBA, /2085 0x04,0xB6
35、,0x4e, /2086 0x0A,0x57,0x43, /2087 0x45,0x27,0x38, /2088 0x0d,0x26,0x4A, /2089 0x8e,0x93,0x3e, /2090 0x0d,0x52,0x52, /2091 0x0d,0xAA,0x47, /2092 0x66,0xB5,0x3B, /2093 0x05,0x6d,0x4f, /2094 0x04,0xAe,0x45, /2095 0x4A,0x4e,0xB9, /2096 0x0A,0x4d,0x4C, /2097 0x0d,0x15,0x41, /2098 0x2d,0x92,0xB5, /2099;/
36、*复位1302*/void reset1302()sclk=0;rst=0;rst=1;/*向1302写入1字节*/void wrieteByte1302(uchar add)uchar i;for(i=0;i=1;void writeClkBye(uchar add,uchar num)reset1302();wrieteByte1302(add);wrieteByte1302(num);/*1302初始化*/void init1302()reset1302();writeClkBye(0x8e,0);/允许写入reset1302();writeClkBye(0x90,0xaa);/慢充电r
37、eset1302();writeClkBye(0x80,00);/秒初值reset1302();writeClkBye(0x82,0x12);/分reset1302();writeClkBye(0x84,0x12);/时reset1302();writeClkBye(0x86,0x04);/日reset1302();writeClkBye(0x88,0x03);/月reset1302();writeClkBye(0x8a,0x07);/星期reset1302();writeClkBye(0x8c,0x12);/年reset1302();/*检测忙位*/void Check_Busy() RS=
38、0; RW=1; E=1; DataPort=0xff; while(DataPort&0x80)=0x80);/忙则等待 E=0;/*写命令*/void Write_Cmd(unsigned char Cmd)Check_Busy();RS=0;RW=0;E=1;DataPort=Cmd;DelayUs2x(5);E=0;DelayUs2x(5);/*写数据*/void Write_Data(unsigned char Data)Check_Busy();RS=1;RW=0;E=1;DataPort=Data;DelayUs2x(5);E=0;DelayUs2x(5);/*液晶屏初始化*/v
39、oid Init_ST7920() DelayMs(40); /大于40MS的延时程序 PSB=1; /设置为8BIT并口工作模式 DelayMs(1); /延时 RES=0; /复位 DelayMs(1); /延时 RES=1; /复位置高 DelayMs(10); Write_Cmd(0x30); /选择基本指令集 DelayUs2x(50); /延时大于100us Write_Cmd(0x30); /选择8bit数据流 DelayUs2x(20); /延时大于37us Write_Cmd(0x0c); /开显示(无游标、不反白) DelayUs2x(50); /延时大于100us Wri
40、te_Cmd(0x01); /清除显示,并且设定地址指针为00H DelayMs(15); /延时大于10ms Write_Cmd(0x06); /指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动 DelayUs2x(50); /延时大于100us/*从1302读取*/uchar ReadByte1302()uchar i;uchar RByte;uchar TempByte;RByte=0x00;I_O=1;for(i=0;i8;i+)sclk=1;sclk=0;TempByte=(uchar)I_O;TempByte=1;RByte|=TempByte;
41、return RByte;uchar read1302(uchar add)uchar num;reset1302();wrieteByte1302(add);ReadByte1302();num=ReadByte1302();return num;void LCDTestWord(bit i, uchar word) if(i=0) Write_Cmd(word); /i=0;则写入指令 else Write_Data(word); /i=1;则写入数据 /*向LCD发送一个字符串即写汉字*/void LCDSendWord(uchar *p) while(*p0) Write_Data(*
42、p); p+; /*往LCD上填写 年 月 日 小时 分钟 秒 星期以及它们的 数据*/void DisplayYear() year=read1302(0x8d); /从1302的0X8D处读出年数据 LCDTestWord(0,0x81); /写指令 在第一行第二个字符位置显示 年 LCDTestWord(1,(year/16)+0x30); /写数据 LCDTestWord(1,year%16+0x30); /写数据 LCDTestWord(0,0x82); /写指令 第一行第三个字符位置 LCDSendWord(年); /显示 年 LCD DDRAM第一行地址为80-87, /第二行为
43、90-97,第三行为88-8F,第四行为98-9Fvoid DisplayMonth() month=read1302(0x89); /从1302中读取月份数据 LCDTestWord(0,0x83); /写命令 if(month/16!=0) LCDTestWord(1,(month/16)+0x30); /写数据 else LCDTestWord(1,0x20); /写数据 LCDTestWord(1,month%16+0x30); /写数据 LCDTestWord(0,0x84); /写指令 LCDSendWord(月); /显示 月void DisplayDay() day=read1
44、302(0x87); /从1302中读取日期数据 LCDTestWord(0,0x85); if(day/16!=0) LCDTestWord(1,(day/16)+0x30); else LCDTestWord(1,0x20); LCDTestWord(1,day%16+0x30); LCDTestWord(0,0x86); LCDSendWord(日);void DisplayWeek() week=(read1302(0x8b)%16; /从1302中读取星期数据 LCDTestWord(0,0x95); LCDSendWord(星期); LCDTestWord(0,0x97); if(
45、week=7) LCDSendWord(日); if(week=6) LCDSendWord(六); if(week=5) LCDSendWord(五); if(week=4) LCDSendWord(四); if(week=3) LCDSendWord(三); if(week=2) LCDSendWord(二); if(week=1) LCDSendWord(一); /显示星期一到星期日 void DisplayHour() hour=read1302(0x85); LCDTestWord(0,0x90); LCDTestWord(1,(hour/16)+0x30); LCDTestWord
46、(1,hour%16+0x30);void DisplayMin() min=read1302(0x83); LCDTestWord(0,0x91); LCDTestWord(1,0x3a);/写入分割号 : LCDTestWord(1,(min/16)+0x30); LCDTestWord(1,min%16+0x30); LCDTestWord(1,0x3a);/写入分割号 :void DisplaySec() sec=read1302(0x81); LCDTestWord(0,0x93); LCDTestWord(1,(sec/16)+0x30); LCDTestWord(1,sec%16+0x30); void UpDate() DisplayYear();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考志愿填报的策略优化与信息匹配机制研究
- 连锁门店盈利机制与扩张条件研究
- 云原生数字化转型方案研究
- 传染病及其预防-1
- 五年级语文上册语文园地二【词句段运用】
- 学习成效持续改进办法
- 在线教育平台学习者流失预测模型及干预策略研究报告
- UPS电源电池内阻可采用交流阻抗检测方法
- 西宁湟源日月山 2026 生态管护岗公务员招录测评试题 招聘 3 人
- 苏州常熟服装厂招聘缝纫工 53 人多劳多得
- 2026云南昆明市呈贡区妇幼健康服务中心招聘1人备考题库及答案详解(新)
- AI写作与公文写作培训课
- 伦理审查中的试验方案科学性评估
- 第一单元 分类与整 理 课件 2025-2026学年二年级数学人教版上册
- 《电力机车行车安全装备》全套教学课件
- 计算机视觉完整全套教学课件
- (2025秋新修订)人教版三年级数学上册全册教案(教学设计)
- 华东师大版八年级数学上册《第十章数的开方》单元测试卷带答案解析
- 统编版五升六语文开学摸底测试卷(十)(含答案)
- 高中生物开学第一课课件
- 施工队进场安全教育培训
评论
0/150
提交评论