数字时钟设计.doc_第1页
数字时钟设计.doc_第2页
数字时钟设计.doc_第3页
数字时钟设计.doc_第4页
数字时钟设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学课程设计(论文)报告用纸 第36页/共36页 课程设计(论文)说明书题 目: 数字时钟设计 院 (系): * 专 业: * 学生姓名: * 学 号: * 指导教师: * 职 称: 副教授 20*年 * 月 * 日摘 要时钟的工作原理很简单,由秒,分,时三位构成。进行六十秒进一分,六十分进一小时,二十四小时为一个大的系统工作周期,即为一天。在进位的问题上可考虑对本位采用反馈清零法,秒,分十位周期为六,作为进位周期。主要问题是秒信号的选择上,采用晶振分频的方法得到稳定高精度的秒脉冲信号,本系统的门电路全部采用低功耗,稳定性好的ttl门电路,从而使整个系统的精度得到提高。校时和报时电路分别由stc89c53和ds1302定时正当系统构成,校时电路采用手动脉冲校时法,报时电路的报时信号由分十位进位信号提供。关键词:ttl;stc89c32;ds1302;lcd1602 。abstract:the working principle of the clock is very simple, by seconds, minutes, when the three pose. carried out in a sub-60 seconds, six very into one hour, round-the-clock system for a large duty cycle, which is one day. in the binary may consider the issue of feedback on the use of zero-based method, seconds, 10 cycles at six, as a binary cycle. the main problem in choosing the second signal, using the method of crystal frequency stable high-precision pulse signal, the gate circuit, so that the accuracy of the entire system be improved. time and stc89c53, respectively, and ds1302 from time to time constitutes a legitimate system, school fast circuit law school, the newspaper of the time signals from the circuit 10 minutes into the digital signal to provide.keywords:ttl,stc89c32,ds1302,lcd1602.引言41 设计方案41.1 数字时钟设计分析41.2 设计要求52 硬件电路设计52.1 stc单片机主控电路52.1.1 stc89c52rc单片机介绍52.1.2 stc89c5管脚说明62.1. 主系统电路图92.2 ds1302时钟源92.2.1 ds1302的结构及工作原理102.2.2 引脚功能及结构102.2.3 ds1302的控制字节112.2.4 数据输入输出(i/o)112.2.5 ds1302的寄存器112.2.6 ds1302与cpu的连接122.2.7 ds1302硬件电路122.3 lcd1602显示电路132.3.1 管脚功能132.3.2 lcd1602的特性132.3.3 指令集132.3.4 lcd1602特性及应用142.3.5 lcd1602操作控制142.3.6 lcd1602电路142.4 蜂鸣器报时电路152.5 按键电路153 整体电路图154 程序设计164.1 程序设计内容164.2 程序流程图164.3 c语言源程序175 结论17谢 辞18参考文献19附 录 一20附 录 二20引言时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用led显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。考虑到精度所需和上电自动同步时间,设计中用到了专门的时钟芯片ds1302。stc单片机上电后,不停读取ds1302,获得时间信息,控制lcd1602显示出来。时间设置时,当按下确定的时刻,单片机写ds1302,修改ds1302的当前时间,完成时间设置。1 设计方案1.1 数字时钟设计分析采用stc单片机内部定时器定时产生时分秒,程序简单,电路结构简单,但是精度太低,同时,精度会受到环境的影响严重。同时,每次开机时间都会复位,就算加上外部存储器,时时存储当前时间,开机后读到的是关机时的时间,因此,不实用,电路也变得复杂了。因此,选择专门的时钟芯片更加合理。时间显示部分用数码管显示,原理简单,价格低廉,但是pcb布线复杂,同时显示内容受到很大限制,用lcd1602液晶显示,可实现显示的多样化和人性化。同时,用lcd1602液晶显示可以提升电路系统的档次。1.2 设计要求 设计一个数字时钟,能显示时分秒,并且能够修改设定时间,同时具有整点报时功能。stc单片机做为系统核心模块,控制lcd1602液晶显示、读写时钟源芯片、报警电路,并能支持按键。lcd1602液晶能够清晰准确的显示时间,不能闪烁,乱码和出现鬼影。ds1302时钟源产生的时间必须得准确,读取时钟信息时,不能出现乱码,当然也不能出现错误。电调后,时钟源应该能够保持时间更新,开机后能自动显示更新的时间,并且掉电保持时间应该尽可能的长久。整点报时要准确,报时时蜂鸣器声音要足够响亮,并且能人工终止报时。按键要灵敏,按键消抖要做得比较好,不能出现连续按的情况。程序下载要稳定,以便调试程序,同时电路布局要合理大方,元件布局要美观。对于程序,代码要简短,但是容易读懂,最好标写好注释,软件实现的功能要齐全,同时要模块化,方便调试和移植。2 硬件电路设计本课题主要分个模块:stc单片机主控电路、ds1302时钟源、lcd1602时间显示、蜂鸣器报时电路、按键电路以及串口等电路。下面将依次对各个模块进行说明。2.1 stc单片机主控电路2.1.1 stc89c52rc单片机介绍stc89c52rc单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特征:1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2. 工作电压:5.5v3.3v(5v单片机)/3.8v2.0v(3v单片机)3. 工作频率范围:040mhz,相当于普通8051的080mhz,实际工作频率可达48mhz4. 用户应用程序空间为8k字节5. 片上集成512字节ram6. 通用i/o口(32个),复位后为:p1/p2/p3/p4是准双向口/弱上拉,p0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为i/o口用时,需加上拉电阻。7. isp(在系统可编程)/iap(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(rxd/p3.0,txd/p3.1)直接下载用户程序,数秒即可完成一片8. 具有eeprom功能9. 具有看门狗功能10. 共3个16位定时器/计数器。即定时器t0、t1、t211. 外部中断4路,下降沿中断或低电平触发电路,power down模式可由外部中断低电平触发中断方式唤醒12. 通用异步串行口(uart),还可用定时器软件实现多个uart13. 工作温度范围:-40+85(工业级)/075(商业级)14. pdip封装2.1.2 stc89c5管脚说明图1 stc管脚分布图vcc(40引脚):电源电压vss(20引脚):接地p0端口(p0.0p0.7,3932引脚):p0口是一个漏极开路的8位双向i/o口。作为输出端口,每个引脚能驱动8个ttl负载,对端口p0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,p0口也可以提供低8位地址和8位数据的复用总线。此时,p0口内部上拉电阻有效。在flash rom编程时,p0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。p1端口(p1.0p1.7,18引脚):p1口是一个带内部上拉电阻的8位双向i/o口。p1的输出缓冲器可驱动(吸收或者输出电流方式)4个ttl输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。p1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(iil)。此外,p1.0和p1.1还可以作为定时器/计数器2的外部技术输入(p1.0/t2)和定时器/计数器2的触发输入(p1.1/t2ex),具体参见下表1。表1 p1.0和p1.1引脚复用功能引脚号功能特性p1.0t2(定时器/计数器2外部计数输入),时钟输出p1.1t2ex(定时器/计数器2捕获/重装触发和方向控制)在对flash rom编程和程序校验时,p1接收低8位地址。p2端口(p2.0p2.7,2128引脚):p2口是一个带内部上拉电阻的8位双向i/o端口。p2的输出缓冲器可以驱动(吸收或输出电流方式)4个ttl输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。p2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(iil)。在访问外部程序存储器和16位地址的外部数据存储器(如执行“movx dptr”指令)时,p2送出高8位地址。在访问8位地址的外部数据存储器(如执行“movx r1”指令)时,p2口引脚上的内容(就是专用寄存器(sfr)区中的p2寄存器的内容),在整个访问期间不会改变。在对flash rom编程和程序校验期间,p2也接收高位地址和一些控制信号。p3端口(p3.0p3.7,1017引脚):p3是一个带内部上拉电阻的8位双向i/o端口。p3的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。p3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(iil)。在对flash rom编程或程序校验时,p3还接收一些控制信号。p3口除作为一般i/o口外,还有其他一些复用功能,如表2所示:表2 p3口引脚复用功能引脚号复用功能p3.0rxd(串行输入口)p3.1txd(串行输出口)p3.2(外部中断0)p3.3(外部中断1)p3.4t0(定时器0的外部输入)p3.5t1(定时器1的外部输入)p3.6(外部数据存储器写选通)p3.7(外部数据存储器读选通)rst(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,rst引脚输出96个晶振周期的高电平。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能无效。disrto默认状态下,复位高电平有效。ale/prog(30引脚):地址锁存控制信号(ale)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(prog)也用作编程输入脉冲。在一般情况下,ale以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ale脉冲将会跳过。如果需要,通过将地址位8eh的sfr的第0位置“1”,ale操作将无效。这一位置“1”,ale仅在执行movx或mov指令时有效。否则,ale将被微弱拉高。这个ale使能标志位(地址位8eh的sfr的第0位)的设置对微控制器处于外部执行模式下无效。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当at89c51rc从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/vpp(31引脚):访问外部程序存储器控制信号。为使能从0000h到ffffh的外部程序存储器读取指令,必须接gnd。注意加密方式1时,将内部锁定位reset。为了执行内部程序指令,应该接vcc。在flash编程期间,也接收12伏vpp电压。xtal1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。xtal2(18引脚):振荡器反相放大器的输入端。2.1. 主系统电路图图2为单片机主系统电路图,图中接口j5为串行下载口。cry1为晶体振荡器,与c6、c7构成单片机的时钟电路;r2和c3为单片机的上电复位电路;同时除了单片机电源管脚(40脚和20脚)接上电源以外,第31脚也必须接上正电源,否则单片机不能工作。因此,图2也称之为单片机最小系统,只有满足图2电路条件后,单片机才能工作。图2主系统电路图2.2 ds1302时钟源ds1302时钟芯片是dallas公司推出的具有涓细电流充电能力的低功耗实时时钟电路、ds1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。2.2.1 ds1302的结构及工作原理ds1302 是美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds1202兼容,但增加了主电源/后备电源双电源引脚, 同时提供了对后备电源进行涓细电流充电的能力。2.2.2 引脚功能及结构 ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1和x2是振荡源,外接32.768khz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:首先,rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.0v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。i/o为串行数据输入输出端(双向),后面有详细说明。sclk为时钟输入端。图3为ds1302的引脚功能图。图3 ds1302的引脚图2.2.3 ds1302的控制字节ds1302 的控制字如图4所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图4 ds1302控制字节图2.2.4 数据输入输出(i/o)在控制指令字输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位到高位7。图5、图6分别为ds1302的读写控制时序图。图5 ds1302读时序图6 ds1302写时序2.2.5 ds1302的寄存器ds1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式,其日历、时间寄存器及其控制。此外,ds1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;另一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。2.2.6 ds1302与cpu的连接实际上,在调试程序时可以不加电容器,只加一个32.768khz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入ds18b20,同时显示实时温度。只要占用cpu一个口线即可。 lcd还可以换成led,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块lcm101,内含看门狗(wdt)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示ram,可显示任意字段笔划,具有34线串行接口,可与任何单片机、ic接口。功耗低,显示状态时电流为2a (典型值),省电模式时小于1a,工作电压为2.4v3.3v,显示清晰。2.2.7 ds1302硬件电路图7为ds1302工作电路图,cry2为32.768k的晶体振荡器。国产ds1302的sclk、i/o、rst管脚与单片机i/o相连接时,必须加上上拉电阻才可以,否则数据读取不稳定,接法如图8所示。 图7ds1302电 图8ds1302i/o上拉电阻2.3 lcd1602显示电路lcd1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块。2.3.1 管脚功能 标准16教接口,其中: 第1脚:vss为电源地; 第2脚:vcc接5v电源正极;第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)。第4脚:rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;第5脚:rw为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作;第6脚:e(或en)端为使能(enable)端;第714脚:d0d7为8位双向数据端;第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.3.2 lcd1602的特性+3.3v电压,对比度可调;内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器ddram;内建有192个5x7点阵的字型的字符发生器cgrom;8个可由用户自定义的5x7的字符发生器cgram。2.3.3 指令集 1602通过d0d7的8位数据端传输数据和指令。显示模式设置: 0x38 设置162显示,57点阵,8位数据接口; 显示开关及光标设置:1dcb d显示(1有效)、c光标显示(1有效)、b光标闪烁(1有效);0000 01ns n=1(读或写一个字符后地址指针加1 &光标加1),n=0(读或写一个字符后地址指针减1 &光标减1),s=1 且 n=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动;数据指针设置:数据首地址为80h,所以数据地址为80h+地址码(0-27h,40-67h)。2.3.4 lcd1602特性及应用微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。在日常生活中,我们对液晶显示器并不陌生,液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品例如在电饭煲、电磁炉、功放、摄像机中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、led数码管、液晶显示器。发光管和led数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。2.3.5 lcd1602操作控制1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a”。因为1602识别的是ascii码,试验可以用ascii码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如a。图9 1602的16进制ascii码表地址2.3.6 lcd1602电路图10是lcd1602模块的电路图,j100是接口,lcd数据位为p00至p07,控制脚分别为rs、rw、lcden。图10 lcd1602电路2.4 蜂鸣器报时电路 蜂鸣器报时电路如图11,由一个8050npn型三极管和一个蜂鸣器组成。三极管放大电流,驱动蜂鸣器。蜂鸣器为有源蜂鸣器,上电后由其内部震荡器产生一定频率,发出声音。 图11 蜂鸣器电路 图12独立按键2.5 按键电路电路有四个独立按键:加、减、确定、退出,用来调节时间和日期,电路如图12所示。3 整体电路图整体电路图如图13,u1为stc单片机,j5为单片机下载口,s1为按键开关。此系统用5v供电,工作电流不超过10ma.图13数字时钟整体电路图4 程序设计4.1 程序设计内容程序分三个模块,分别是:主程序模块、lcd1026液晶显示模块、ds1302时钟源模块。结束按键检测写lcd1602读取ds1302启动、初始化4.2 程序流程图写ds1302修改时间图14程序流程图程序开始时,设置液晶lcd1602显示模式,进入主循环;读取ds1302,获得时间,立即由lcd162显示出来,同时检测按键,完成一个周期。如果有按键按下,则进入时间修改程序,若要修改时间,设置好时间后,按确认键即可将新的时间写入ds1302,完成修改时间。4.3 c语言源程序c语言源程序主要分三个模块,分别如下:1.#include:主函数模块; 2.#include lcd1602.h:lcd1602显示模块;3.#include ds1302.h:ds1302时钟源模块。详细程序见附录二5 结论完成了数字时钟的设计,学会了使用ds1302芯片,国产的ds1302时钟芯片不管用单片机的哪个io口,都需要加上上拉电阻,否则读到的数据是一连串的“85”。同时,学会了查找资料,整个过程使用了altium designer软件进行画图和仿真,并用keilc单片机知识进行编程以完成设计要求的功能。我已经尽了自己的最大努力,也从中学到了很多知识,获益匪浅。谢 辞感谢学院给我们提供这样的实践动手机会,并通过课程设计使我们能够有机会将书本上学到的知识运用到的实际中去。感谢李老师监督我及时完成了本次课程设计,在此特别感谢李老师和给予我帮助的同学。参考文献1 刘文涛. mcs-51单片机培训教程(c51)版.电子工业出版社, 2005.8.2 王宜怀.单片机原理及其嵌入式应用教程.北京希望电子出版社, 2002.8.3 邵贝贝.单片机嵌入式应用的在线开发方法.清华大学出版社, 2006.3.4 白驹珩,雷晓平编.单片计算机及其应用.电子科技大学出版社,1994.55 jean j.labrosse 著. 嵌入式系统构件.袁勤勇等译.北京:机械工业出版社, 2002.6 谭浩强.c程序设计程序设计程序设计程序设计,清华大学出版社,2008.8.27 贾振国:ds18b20 及高精度温度测量的实现,电子技术应用,2000.1,p9-p148 伟 正:单线数字温度传感器的原理与应用,电子技术应用,2000.6,p23-p319 周月霞、孙传友:ds18b20 硬件连接及软件编程,传感器世界,2001.8,p13-p2110 8051系列单片机c程序设计完全手册,人民邮电出版社,1996.3,p25-p29附 录 一 pcb版图附 录 二c语言源程序:顶层模块:#include /包含单片机寄存器的头文件#include lcd1602.h#include ds1302.h/*以下是ds1302芯片的操作程序*/unsigned char code digit10=0123456789; /定义字符数组显示数字char second,minute,hour,day,month,year;bit flag=0; /*sbit set =p02;sbit cancel=p01;sbit left =p03;sbit right =p00;*/sbit left =p34;sbit right =p35;sbit set =p36;sbit cancel=p37;sbit sound =p20;/*函数功能:延时若干微秒入口参数:n*/ void delaynms(unsigned char n) unsigned char i; for(i=0;in;i+) ;void dlay()unsigned char i,j,k;for(i=0;i30;i+)for(j=0;ji;j+)for(k=0;kj;k+);/*函数功能:显示秒入口参数:x*/ void displaysecond(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x49); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /*函数功能:显示分钟入口参数:x*/ void displayminute(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x46); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /*函数功能:显示小时入口参数:x*/ void displayhour(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x43); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /*函数功能:显示日入口参数:x*/ void displayday(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x0c); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /day_temp=j; /*函数功能:显示月入口参数:x*/ void displaymonth(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x09); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /*函数功能:显示年入口参数:x*/ void displayyear(unsigned char x) unsigned char i,j; /j,k,l分别储存温度的百位、十位和个位i=x/10;/取十位j=x%10;/取个位 /writeaddress(0x06); /写显示地址,将在第行第列开始显示writedata(digiti); /将百位数字的字符常量写入lcdwritedata(digitj); /将十位数字的字符常量写入lcddelaynms(50); /延时ms给硬件一点反应时间 /时间设定/ 时间设定/void timeset()/char s_year,char s_month,char s_day,char s_hour,char s_minute,char s_secondunsigned char h;h=1;while(flag)if(h=1)writeaddress(0x02);print(_);dlay();writeaddress(0x02);displayhour(hour); /显示小时dlay();if(!left) delaynms(10); while(!left);hour-;if(hour23)hour=0;if(!set) delaynms(10); while(!set);h+;/if(h7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=2)writeaddress(0x05);print(_);dlay();writeaddress(0x05);displayminute(minute); /显示分dlay();if(!left) delaynms(10); while(!left);minute-;if(minute59)minute=0;if(!set) delaynms(10); while(!set);h+;/if(h7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=3)writeaddress(0x08);print(_);dlay();writeaddress(0x08);displaysecond(second); /显示秒dlay();if(!left) delaynms(10); while(!left);second-;if(second59)second=0;if(!set) del

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论