液晶万年历实验报告.pdf

上传人:无*** 文档编号:93401989 上传时间:2023-07-04 格式:PDF 页数:24 大小:2.94MB
返回 下载 相关 举报
液晶万年历实验报告.pdf_第1页
第1页 / 共24页
液晶万年历实验报告.pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《液晶万年历实验报告.pdf》由会员分享,可在线阅读,更多相关《液晶万年历实验报告.pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、河南机电高等专科学校综合实训报告系 部:电子通信工程系专 业:应用电子技术班 级:学生姓名:2013年 6 月实训任务书1.时间:2 013年6月4日 2 013年6月2 8日2 .实训单位:河南机电高等专科学校3.实训目的:熟悉电路板及电子产品的制作全过程4.实训任务:了解电路板图得来的方法,掌握电路板图的打印技巧;会使用热转印机将电路图转印到覆铜板上;掌握电路板的腐蚀过程及注意事项;会使用高速钻床给电路板打孔;认识电子元器件,熟悉常用元器件的特性;熟练掌握焊接方法和技巧,完成电路板的焊接;掌握电子产品通电调试的注意事项,会检修电子产品;作好实训笔记,对自己所发现的疑难问题及时请教解决;联系

2、自己专业知识,体会电子产品制作过程,总结自己的心得体会;参考相关的书籍、资料,认真完成实训报告。液晶万年历作品简介本款作品基于AT89S51主控芯片和DS18B20时钟芯片,采用液晶显示屏1602显示,使用温度传感器采集周围环境温度实现功能:显示年月日时分秒温度准确显不可通过按键进行校时操作定时响铃作品特点:采用双电源供电,停电时可自动切换到电池供电:工作稳定,低功耗,寿命长,外形简洁大方,方便携带、摆放。1.本设计的主要设计思想是两方面:1、通过设计硬件控制电路和软件控制程序,从而实现能够正确地显示某年某月某日某时某分某秒,万年历应具有校时功能、定时功能、报时功能。可能除了上边的功能还有其他

3、的功能,如果需要还可以不断的向上加功能。在万年历电子表的上面还有调整时间和定时用的几个功能键(复位键、选择位键、各个位数值的增大和减小两个键等)硬件控制电路主要用T AT89S51芯片处理器、LCD1602液晶显示器、DS1302时钟芯片等。根据各自芯片的功能互相连接成万年历电子表的控制电路。2、软件控制程序主要有主控程序、万年历电子表的时间控制程序。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是万年历电子表中比较重要的部分。时间控制程序体现了年、月、日、小时、分钟、秒及星期的计算方法。设计中使用的时钟芯片是美国DALLAS公司推出

4、的与MCI46818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS1302,采 用DS1302作为主要计时芯片,可做到计时准确。对它的控制,主要是对其的初始化和对其数据的读取。采用连续工作制,一般无需每次都初始化,即使系统复位也是如此。但初始化时,首先应禁止芯片内部的更新周期操作。所以,应先将它状态寄存器B中的SET位 置1,然后初始化。DS1302处于正常工作状态时-,每秒即产生一个更新周期。在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。为了采样时标寄存器中的数据,采用两种避开在更新周期内访问时标寄存器的方法。第一种是利用更新周期结束发出的中断

5、。第二种是利用寄存其A中的UIP位来指示芯片是否处于更新中期。L C D 1 6 0 2的实物图。图 2-2 L C D 1 6 0 2 的实物图LCD1602引脚说明表 2-1 L C D 1 6 0 2 弓|脚编号符号引脚说明编号符号引脚说明1V S S电源地9D 2双向数据口2V D D电源正极1 0D 3双向数据口3V L对比度调节1 1D 4双向数据口4R S数据/命令选择1 2D 5双向数据口5R/W读/写选择1 3D 6双向数据口6E模块使能端1 4D 7双向数据口7D O双向数据口1 5B L K背光源地8D 1双向数据口1 6B L A背光源正极1602的基本操作时序读状态输

6、入:R S=L,R W=H,E=I I输出:D B O D B 7=状态字写指令输入:R S=L,R W=L,E=下降沿脉冲输出:无读数据输入:R S=H,R W=H,E=H输出:D B O D B 7=数据写数据输入:R S=H,R W=L,E=下降沿脉冲输出:无2.33 时钟设定的设计美国D a 1 1 a s公司推出的低功耗具有涓细电流充电能力的实时时钟芯片D S 1 3 0 2,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能。现在流行的串行时钟芯片很多,如D S 1 3 0 2、D S 1 3 0 7、P C F 84 85等。这些芯片接口简单、价格低廉、使用方

7、便,被广泛地采用。本文介绍的实时时钟芯片为D S 1 3 0 2,是D a l l a s公司的一种具有涓细电流充电能力的实时时钟芯片,采用普3 2.768k H z晶振。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。主要性能特点1、3 1字节带后备电池的R A M用于数据存储2、串行I/0 U,管脚数量少3、宽范围工作电压:2.0 5.5 v4、工作电压2.0 V时,电流小于3 0 0 h A5、读/写时钟或R A M数据时有两种传送方式:单字节传送和突发模式传送6、8脚D I P封装或其他可选封装方式DS1302的引脚说明D S 1 3 0 2的引

8、脚如图2-3所示。VC C 1为后备电源,VC C 2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。D S 1 3 0 2由VC C 1或VC C 2两者中的较大者供电。当VC C 2大于VC C I+0.2 V时,VC C 2给D S 1 3 0 2供电。当VC C 2小于VC C 1时,D S 1 3 0 2由VC C 1供电。XI、X2为振荡源,外接3 2.768H z晶振。R S T是复位,片选线,通过把R S T输入驱动置高电平来启动所有的数据传送。R S T输入有两种功能:(1),R S T接通控制逻辑,允许地址/命令序列送入移位寄存器;(2),R S T提供了终止单字节

9、多字节数据的传送手段。当R S T为高电平时,所有的数据传送被初始化,允许对D S 1 3 0 2进行操作。如果在传送过程中置R S T为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在VC C 2.5 V之前,R S T必须保持低电平。只有在S C L K为低电平时,才能将R S T置为高电平。I/O为串行数据输入输出端(双向),下文有详细说明。S C L K为时钟输入端。图2-3 DS1302的管脚VcclVCC2xlSCLKx2I/OGND/RES2.4按键的应用在单片机应用系统中,按键主要有两种形式:1、直接按键;2、矩阵编码键盘。直接按键的每个按键都单独接到单片

10、机的一个I/O 口上,直接按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别。下面设计中以AT89s51增强型单片机实验板的直接按键来学习单片机轻触按键在单片机系统中的应用。直接按键的每个按键都单独接到单片机的一个I/O 口上,直接按键则通过判断按键端口的电位,当按键按下去后,I/O 口上的电位变为逻辑0,从而送给51单片机一个中断信号,主控51单片机开始转到定时器、中断源等过程。AT89S51S51增强型单片机实验板的4 个轻触按键原理图如图2-4所示。GND图2-4单片机中按键的接法2.5系统的直流电压系统中的时钟芯片DS1302保存及计时,需要一个恒定的

11、直流电压提供,本设计采用两节L5V的干电池串联成3V的电压,为DS1302提供电压。单片机电源电路直流电源提供,考虑到该电源可能存在交流成分,故在电源输出端加入7805进行直流5 伏整流,同时加入电容进行滤波。3.程序的设计3.1 主程序的设计本设计采用时钟芯片DS1302,阳历程序只需从时钟芯片DS1302各个寄存器中读出年、月、日、星期、时、分、秒等数据,再处理即可。在首次对DS13O2进行操作之前必须对它进行初始化,然后从DS1302中读出数据,再经处理后送给液晶LCD1602显示缓冲单元。主程序流程图如图3-1所示。如图3 T 主程序流程图3.2 日期设定程序设计调整时间用4个调整按钮

12、S I、S 2、S 3、S 4,1个作为选通控制用,即S 1,另外4个作为加,减,左移,右移使用,分别定义为控制按钮,加按钮,减按钮,左移按钮,右移按钮。在调整时间过程中要调整的位与别的位应该有区别。3.3时 钟程序设计时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T O打开后,进入计时,满1 0 0毫秒后,重装定时。中断一次,满一秒后秒进位,满6 0秒后即为1分钟,分钟单元进位,6 0分到了后,时单元进位,24小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送L C D中显示出来实现时钟计时功能。计时子程序如下:u

13、c h a r month,d a y,h our,minite,se c ond;void re a d time();void write(uc h a r a d d r,uc h a r ord e r);void d e la yl();void d e la yl()延时子程序(uc h a r x;f or(x=1 0;x 0;x-);void write(uc h a r a d d r,uc h a r ord e r)时间的增减(uc h a r k;sc k=0;d e la yl();rst=l;d e la yl0 ;f or(k=0;k 8;k+)(sc k=0;d

14、 a te in=a d d r&0 x0 1;a d d r=a d d r l;d e la yl();sc k=l;d e la yl();)4电路原理图及P C B图4.1根据设计方案绘制原理图液晶万年历电路原理图如图4.1 所示:1-T-f454,B9M”aa”M?ME图4.1液晶万年历原理图4.2由电路原理图生成PCB图,并对图进行修改连接。如图4.2所示:图4.2液晶万年历PCB5产品实物图经过焊接调试,最后做出产品,以下是一张液晶万年历实物图:图5.15.2图5.1液晶万年历图源程序如卜.所示8 inc lud e ttinc lud e /inc lud e L CD 1 6

15、 0 2.h/inc lud e ”D S 1 3 0 2.h#d e f ine uint unsig ne d int#d e f ine uc h a r unsig ne d c h a rsb it D S 1 3 0 2 _ CL K =P r5;sb it D S 1 3 0 2 _ I 0 =P r4;sb it D S 1 3 0 2 _ R S T=P C3;sb it A CCO =A CU O;sb it A CC7 =A CC7;实时时钟时钟线引脚实时时钟数据线引脚实时时钟复位线引脚c h a r h id e _ se c,h id e _ min,h id e _

16、 h our,h id e _ d a y,h id e _ we e k,h id e _ month,h id e _ ye a r;秒,分,时到日,月,年位闪的计数c h a r d one,c ount,te mp,f la g,up_ f la g,d own_ f la g;sb it S e t=P 2 1;模式切换键sb i t U p=P 2 c 2;加法按钮sb it D own=P 2 3;减法按钮sb it out=P 2 c 4;立刻跳出调整模式按钮sb it D Q =P2;温度传送数据1 0 口uc h a r te mp_ va lue;温度值uc h a r

17、Te mpB uf f e r 5 ,we e k_ va lue 2 ;void sh ow_ time();液晶显示程序/*1 6()2 液晶显示部分子程序*5 1c/P ort D e f initions*sb it L c d R s=P 2 5;sb it L c d R w=P 2 c 6;sb it L c d E n=P 2-7;sf r D B P ort=0 x8 0;P 0=0 x8 0,P 1=0 x9 0,P 2=0 xA 0,P 3=0 xB 0.数据端口unsig ne d c h a r L CD _ W a it(void)L c d R s=0;L c d

18、 R w=l;_ nop_();L c d E n=l;_ nop_();L c d E n=O;re turn D B P ort;)向 L CD 写入命令或数据*4 d e f ine L CD _ CO M M A N D0/Comma nd d e f ine L CD _ D A TA1/D a ta#d e f ine L CD _ CL E A R _ S CR E E N0 x0 1/清屏 d e f ine L CD H O M I N G0 x0 2光标返回原点void L CD _ W rite(b it style,unsig ne dc h a r input)L c

19、 d E n=0;L c d R s=style;L c d R w=0;_ nop_ ();D B P ort=input;nop 0 ;注意顺序L c d E n=l;_ nop_ ();注意顺序L c d E n=0;_ nop();L CD _ W a it();)/设 置 显 本模 式*d e f ine L CD S H O W0 x0 4显示开 d e f ine L CD J I D E0 x0 0显示关 d e f ine L CD CU R S O R0 x0 2显示光标 d e f ine L CD _ N O _ CU R S O R0 x0 0无光标4 d e f i

20、ne L CD _ F L A S H0 x0 1光标闪动 d e f ine L CD _ N O _ F L A S H0 x0 0光标不闪动void L CD _ S e tD ispla y(unsig ne d c h a r D ispla yM od e)L CD W rite (L CD CO M M A N D,0 x0 8|D ispla yM od e);)/设置输入模式*#d e f ineL CD _ A C_ U P0 x0 24 d e f ineL CD _ A C_ D O W N0 x0 0 /d e f a ult d e f ineL CD J f O

21、V E0 x0 1 /画面可平移ttd e f ineL CD _ N O M O V E0 x0 0 /d e f a ultvoid L CD S e tlnput(unsig ne d c h a r I nputM od e)L CD W rite(L CD CO M M A N D,0 x0 4 1 I nputM od e);void L CD I nitia l()L c d E n=0;L CD J ri te (I.CD _ CO M M A N D,0 x3 8);8 位数据端口,2 行显示,5*7 点阵L CD W rite (L CD CO M M A N D,0 x3

22、 8);L CD S e tD ispla y(L CD S H O W|L CD _ N 0 CU R S O R);开启显示,无光标L CD J ri te (L CD _ CO M M A N D,L CD CL E A R S CR E E N);清屏L CD S e tI nput(L CD _ A C_ U P|L CD _ N O _ M O V E);/A C 递增,画面不动)液 晶字 符输入 的位置*void G otoX Y(unsig ne d c h a r x,unsig ne d c h a r y)if(y=0)L CD J V rite (L CD _ CO M

23、 M A N D,0 x8 0 1 x);if(y=l)L CD W rite(L CD CO M M A N D,0 x8 0 (x-0 x4 0);将字符输出到液晶显示void P rint(unsig ne d c h a r*str)wh ile(*str!=,0?)(L CD J V ri te (L CD J)A TA,*str);str+;)/*D S 1 3 0 2 时钟部分子程序*/type d e f struc t _ S Y S TE M TI M E.unsig ne d c h a r S e c ond;unsig ne d c h a r M inute;uns

24、ig ne d c h a r H our;unsig ne d c h a r W e e k;unsig ne d c h a r D a y;unsig ne d c h a r M onth;unsig ne d c h a r Y e a r;unsig ne dunsig ne dS Y S TE M TI M E;c h a r D a te S tring ll;c h a r Time S tring 9 ;定义的时间类型S Y S TE M TI M E Curre ntT加e;力 d e f ine A M(X)Xnd e f ine P M(X)(X+1 2)d e f

25、 ine D S 1 3 0 2 S E CO N D 0 x8 0 d e f ine D S 1 3 0 2 M I N U TE 0 x8 2/转成2 4 小时制时钟芯片的寄存器位置,存放时间#d e f ine D S 1 3 0 2 J I 0 U R 0 x8 44 d e f ine D S 1 3 0 2 _ W E E K 0 x8 A d e f ine D S 1 3 0 2 _ D A Y 0 x8 6itd e f ine D S 1 3 0 2 _ M()N TH 0 x8 8 d e f ine D S 1 3 0 2 _ Y E A R 0 x8 Cvoid D

26、 S 1 3 0 2 I nputB yte(unsig ne d c h a r c l)实时时钟写入一字节(内部函数)unsig ne d c h a r i;A CC=d;f or(i=8;i 0;i-)D S 1 3 0 2 _ I 0=A CCO;相当于汇编中的R R CD S 1 3 0 2 _ CL K =1D S 1 3 0 2 _ CL K =0A CC=A CC 1)unsig ne d c h a r D S 1 3 0 2 0 utputB yte(void)实时时钟读取一字节(内部函数)unsig ne d c h a r i;f or(i=8;i 0;i一)A CC

27、=A CC 1;相当于汇编 中 的 R R CA CC7 =D S 1 3 0 2 _ I 0;D S 1 3 0 2 _ CL K =1;D S 1 3 0 2 _ CL K =0;re turn(A CC);)void W rite l3 0 2(unsig ne d c h a r uc A d d r,unsig ne d c h a r uc D a)/uc A d d r:D S 1 3 0 2 地址,uc D a ta:要写的数据 D S 1 3 0 2 _ R S T=0;D S 1 3 0 2 _ CL K =0;D S 1 3 0 2 _ R S T=1;D S 1 3 0

28、 2 I nputB yte (uc A d d r);/地址,命令D S 1 3 0 2 I nputB yte(uc D a);/写 I B yte 数据D S 1 3 0 2 CL K =1:D S 1 3 0 2 _ R S T=0;unsig ne d c h a r R e a d l3 0 2(unsig ne d c h a r uc A d d r)读取 D S 1 3 0 2 某地址的数据 unsig ne d c h a r uc D a ta;D S 1 3 0 2 _ R S T=0;D S 1 3 0 2.CL K =0;D S 1 3 0 2 _ R S T=1;

29、D S 1 3 0 2 I nputB yte (uc A d d r i 0 x0 1);/地址,命令uc D a ta =D S 1 3 0 2 0 utputB yte ();/读 I B yte 数据D S 1 3 0 2 _ CL K =1;D S 1 3 0 2 _ R S T=0;re turn(uc D a ta);)void D S 1 3 0 2 G e tTime(S Y S TE M TI M E *Time)获取时钟芯片的时钟数据到自定义的结构型数组(unsi g ne d c h a r R e a d V a l ue;R e a d V a l ue =R e

30、a d l 302(D S 1302_ S EC 0N D);T i m e-S e c ond =(R e a d V a l ue&0 x 70)4)*10+(R e a d V a 1ue&O x O F);R e a d V a l ue =R e a d l 302(D S 1302 M I N U T E);T i m e-M i nute =(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue&O x O F);R e a d V a l ue =R e a d 1302(D S 1302_ H 0U R);T i m e-H our=

31、(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue&O x O F);R e a d V a l ue =R e a d l 302(D S 1302_ D A Y);T i m e-D a y =(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue a O x O F);R e a d V a l ue =R e a d l 302(D S 1302 W EEK);T i m e-W e e k =(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue&O x

32、O F);R e a d V a l ue =R e a d 1302(D S 1302_ M 0N T H);T i m e-M onth 二(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue&O x O F);R e a d V a l ue =R e a d 1302(D S 1302_ YEA R);T i m e-Ye a r=(R e a d V a l ue&0 x 70)4)*10+(R e a d V a l ue&O x O F);)v oi d D a te T oS tr(S YS T EM T I M E*T i m e)

33、/将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里D a te S tri ng i f(h i d e y e a r2)2007/07/22这里的i f,e l se语句都是判断位闪烁,2就不显示,输出字符串为T i m e-D a te S tri ng 0=2;T i m e-D a te S tri ng f l=O;T i m e-D a te S tri ng 2=T i m e-Ye a r/10+O;T i m e-D a te S tri ng 3=T i m e-Ye a r%10+O;)e l se T i m e-D a te S tr i ng 0=;T

34、i m e-D a te S tr i ng 1=;T i m e-D a te S tri ng 2=;T i m e-D a te S tri ng 3=;)T i m e-D a t e S tr i ng 4i f(h i d e _ m onth D a te S tri ng 5=T i m e-M onth/10+O;T i m e-D a te S tri ng 6=T i m e-M onth%10+O;e l seT i m e-D a te S tri ng 5=;T i m e-D a te S tri ng 6:,;)T i m e-D a te S tri ng 7

35、=;i f(h i d e d a y D a te S tri ng 8=T i m e-D a y/10+O;T i m e-D a te S tri ng 9=T i m e-D a y%10+O;e l seT i m e-D a te S tri ng 8=;T i m e-D a te S tri ng 9=;)i f(h i d e _ w e e k W e e k%10+O ;/星期的数据另外放到w e e k v a l ue数组里,跟年,月,日的分开存放,因为等一下要在最后显示e l sew e e k _ v a l ue O=;w e e k _ v a l ue l

36、=0;T i m e-D a te S tri ng 10=0;字符串末尾加0,判断结束字符)v oi d T i m e T oS tr(S YS T EM T I M E*T i m e)将时,分,秒数据转换成液晶显示字符放到数组T i m e S tri ng E;i f(h i d e _ h our T i m e S tri ng 0=T i m e-H our/10+O;T i m e-T i m e S tri ng l =T i m e-H our%10+O;)e l se(T i m e-T i m e S tri ng 0=;T i m e-T i m e S tri n

37、g l=;)T i m e-T i m e S tri ng 2=:;i f(h i d e _ m i n T i m e S tri ng 3=T i m e-M i nute/10+O;T i m e-T i m e S tri ng 4=T i m e-M i nute%10+O;)e l se(T i m e-T i m e S tri ng 3=;T i m e-T i m e S tri ng 4=;T i m e-T i m e S tri ng 5=:;i f(h i d e _ se c T i m e S tri ng 6=T i m e-S e c ond/10+O;T

38、 i m e-T i m e S tri ng 7=T i m e-S e c ond%10+O;e l seT i m e-T i m e S tri ng 6二;T i m e-T i m e S tri ng 7=;T i m e-D a te S tri ng 8=0;)v oi d I ni ti a l _ D S 1302(v oi d)时钟芯片初始化(unsi g ne d c h a r S e c ond=R e a d l 302(D S 1302 S EC O N D);i f (S e c ond&0 x 80)/判断时钟芯片是否关闭W ri te 1302(0 x

39、8e,0 x 00);/写入允许W ri te 1302(0 x 8c,0 x 07);以下写入初始化时间 日期:07/07/2。星 期:3.时间:23:59:55Write 1302(0 x88,0 x07);Write 1302(0 x86,0 x25):Writel302(0 x8a,0 x07);Write 1302(0 x84,0 x23);Write 1302(0 x82,0 x59);Write 1302(0 x80,0 x55);Write 1302(0 x8e,0 x80);禁止写入)/*dsl8b20 延迟子函数(晶振 12MHz)*/void de lay 18B20(u

40、nsigned int i)while(i);/*ds 18b20 初始化函数*/void Init_DS18B20(void)unsigned char x=0;D Q =1;/DQ 复位delay_18B20(8);稍做延时D Q =0;单片机将DQ拉低delay_18B20(80);精确延时大于 480usD Q =1;拉高总线delay_18B20(14);x=DQ;稍做延时后如果x=0则初始化成功x=l则初始化失败delay_18B20(20);)/*dsl8b20 读一个字节*/unsigned char ReadOneChar(void)(uchar i=0;uchar dat=

41、0;for(i=8;i0;i-)(DQ=0;/给脉冲信号d a t=l;DQ=1;/给脉冲信号if(DQ)d a t|=0 x80;delay8B20(4);return(dat);)/*dsl 8b20 写个字节*/void WriteOneChar(uchar dat)unsigned char i=0;for(i=8;i0;i)D Q=0;DQ=dat&OxOl;d e l a y _ 18B 20(5);D Q =1;d a t=l;)/*读取 d sl 8b 20 当前温度*/v oi d R e a d T e m p(v oi d)unsi g ne d c h a r a=0;

42、unsi g ne d c h a r b=0;unsi g ne d c h a r t=0;I ni t_ D S 18B 20();W ri te O ne C h a r(O x C C);/跳过读序号列号的操作W ri te O ne C h a r(0 x 44);/启动温度转换d e l a y _ 18B 20(100);/th i s m e ssa g e i s w e ry i m p orta ntI ni t_ D S 18B 20();W ri te O ne C h a r(O x C C);/跳过读序号列号的操作W ri te O ne C h a r(O x

43、 B E);读取温度寄存器等(共可读9个寄存器)前两个就是温度d e l a y _ 18B 20(100);a=R e a d O ne C h a r();读取温度值低位b=R e a d O ne C h a r();读取温度值高位te m p _ v a l ue=b 4;)v oi d te m p to_ str()温度数据转换成液晶字符显示 T e m p B uf f e r0=te m p _ v a l ue/10+,05;十位T e m p B uf f e rl=te m p _ v a l ue%10+,0J;个位T e m p B uf f e r2=0 x d f

44、;温度符号T e m p B uf f e r3=,C ;T e m p B uf f e r4=,0?;v oi d D e l a y l m s(unsi g ne d i nt c ount)unsi g ne d i nt i,j;f or(i=0;K c ount;i+)f or(j=0;j 0;d e l a y-)f or(i=0;i 0 x 59)超过 59 秒,清零te m p=0;b re a k;c a se 2:te m p=R e a d l 302(D S 1302_ M I N U T E);读取分数te m p=te m p+l;分数加 1up _ f l a

45、 g=l;i f (te m p 0 x 59)超过 59 分,清零te m p=0;b re a k;c a se 3:te m p=R e a d l 302(D S 1302_ H 0U R);读取小时数te m p=te m p+l;小时数加 1up _ f l a g=l;i f (te m p 0 x 23)超过2 3小时,清零te m p=0;b re a k;c a se 4:te m p=R e a d l 302(D S 1302_ W EEK);读取星期数te m p=te m p+l;星期数加 1up _ f l a g=l;i f(te m p 0 x 7)te m

46、p=l;b re a k;c a se 5:te m p=R e a d l 302(D S 1302_ D A Y);读取日数te m p=te m p+l;日数加 1up _ f l a g=l;i f(te m p 0 x 31)te m p=l;b re a k;c a se 6:te m p=R e a d l 302(D S 1302_ M 0N T H);读取月数te m p=te m p+l;/月数加 1up _ f l a g=l;i f(te m p 0 x 12)te m p=1;b re a k;c a se 7:te m p=R e a d l 302(D S 130

47、2_ YEA R);读取年数te m p=te m p+l;年数加 1up _ f l a g=l;i f (te m p 0 x 85)te m p=0;b re a k;d e f a ul t:b re a k;w h i l e(U p=0);)v oi d D ow nk e y()降序按键D ow n=1;i f(D ow n=0)(m d e l a y(8);sw i tc h(c ount)c a se 1:te m p=R e a d l 302(D S 1302,S EC O N D);读取秒数te m p=te m p-l;秒数减 1d ow n_ f l a g=l;

48、数据调整后更新标志i f (te m p-0 x 7f)小于0秒,返回59秒te m p=0 x 59;b re a k;c a se 2:te m p=R e a d 1302(D S 1302 M I N U T E);读取分数te m p=te m p-l;分数减 1d ow n_ f l a g=l;i f (te n)p=-l)te m p=0 x 59;小于0秒,返回59秒b re a k;c a se 3:te m p=R e a d 1302(D S 1302_ H 0U R);读取小时数te m p=te m p-l;/小时数减 1d ow n_ f l a g=l;i f

49、(te m p=-l)te m p=0 x 23;b re a k;c a se 4:te m p=R e a d l 302(D S 1302_ W EEK);读取星期数te m p=te m p-l;星期数减 Id ow n_ f l a g=l;i f (te m p=O)te m p=0 x 7;b re a k;c a se 5:te m p=R e a d 1302(D S 1302_ D A Y);读取日数te m p=te m p-l;日数减 1d ow n f l a g=l;i f (te m p=0)te m p=31;b re a k;c a se 6:te m p=R

50、 e a d l 302(D S 1302_ M 0N T H);读取月数te m p=te m p-l;月数减 1d ow n f l a g=l;i f (te m p=0)te m p=12;b re a k;c a se 7:te m p=R e a d l 302(D S 1302_ YEA R);读取年数te m p=te m p-1;年数减 1d ow n f l a g=l;i f (te m p=-l)te m p=0 x 85;b re a k;d e f a ul t:b re a k;)w h i 1 e (D om=0);)v oi d S e tk e y()模式选

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁