《高精度大屏幕LED日历时钟设计(定稿)(共54页).doc》由会员分享,可在线阅读,更多相关《高精度大屏幕LED日历时钟设计(定稿)(共54页).doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上广东海洋大学寸金学院毕业论文(设计) 论文题目: 高精度大屏幕LED日历时钟设计 A high precision and large screen LED calendar clock design 系 别: 信息技术系 专 业: 计算机科学与技术 班 级: 计算机科学与技术1班 姓 名: 陈创胜 学 号: 1 指导老师: 叶伟慧 职 称: 讲师 日 期: 2012年5月5日 广东海洋大学寸金学院教专心-专注-专业目 录摘 要在51单片机应用的系统中,常常需要记录实时的时间信息并长期保存。比如,在数据采集时,对某些重要的信息不仅需要几路车其内容,还需要记录下改事件发
2、生的准确时间;在银行营业大厅中使用的利率或汇率显示屏,上面除了需要显示利率或汇率等数据以外,还需要显示实时的时间信息,如年、月、日、星期、时间等。本文用51单片机以及DS1302日历时钟芯片实现日历时钟的设计。论文研究了DS1302日历时钟芯片的相关功能。设计结果表明本文设计的基于DS1302的实时日历时钟显示系统完全能够满足设计要求关键词: DS1302,51单片机, LCD1062显示器Abstract 51 SCM application system , often need to record real-time information and long-term preservat
3、ion. For example, when data collection for some important information not only need to record the content, but also record the exact time of the incident; the banking hall in the use of interest rate or exchange rate display, shown above in addition to the interest rate or exchange rate such data, i
4、t also needs to show real-time information, such as year, month, date, day and time. In this paper,51MCU and the calendar clock chip DS1302 calendar clock design.Thesis of the calendar clock chip DS1302-related functions.Design results show that the DS1302-based design of real-time calendar clock di
5、splay system can completely meet the design requirements.Key Word :DS1302,51Microcontroller, LCD1062 display第1章 引言1.1背景与意义LED显示屏作为信息传播的一种重要手段,具有高亮度、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定等优点,再加上集成电路的使用,LED显示屏的外围电路变得越来越简单,性价比不断攀升,使得LED显示屏广泛用于各行各业以及公共场所,成为了信息化时代发布工具。现在的LED大屏幕一般应用于汽车站、银行、机场、高速公路可变报版、体育场馆比赛等人多去关注的地方
6、,所以这就要求LED大屏幕要设计得鲜明、显眼、耐用、三防能力强。本次设计将LED大屏幕和电子日历时钟的结合起来,打破传统电子时钟只适用于个人的局限,将日历时钟推广到公共场合,更方便人们。本次设计将采用51单片机、DS1302日历时钟芯片和1062显示器(代替LED大屏幕,因为两者都差不多)。1.2论文设计1.2.1 系统设计实现的目标本文是以实时时钟芯片DS1302和AT89C52单片机为主要研究对象,着重进行51单片机如何读取DS1302内部时钟信息的研究。主要内容包括:1) 实时温度显示;2) 年月日星期时分秒显示;3) 年月日星期时分秒调整;4) 闹钟定时小时分钟和秒;1.2.2 系统的
7、总体设计采用AT89C52作为主控单片机,时钟模块选用DS1302作为时钟芯片,显示模块选用LCD1062,设置部分选用按键电路。AT89C52与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。DS1302 实时时钟芯片功能丰富,可以用来直接代替IBM PC 上的时钟日历芯片DS12887,同时,它的管脚也和MCB、D
8、S12887 相兼容。由于DS1302 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS1302 中自带有锂电池,外部掉电时,其内部时间信息还能够保持10 年之久;对于一天内的时间记录,有12 小时制和24 小时制两种模式。用户还可对DS1302 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。该系统的系统框图如图1.1示:图1-1系统框图第2章 需求分析2.1需求分析数字电子钟一个无处不在的电子产品,经过多年的发展技术已经相当成熟了。随着电子技术的产业结构调整,生产工艺的飞速发展,市场对智能电子时钟的需
9、求也越来越大,而现今市场上多采用的普通电子表,不具备报时和闹钟的双重功能。日前应用广泛的数字钟大多用DS1302时钟芯片,以51单片机为核心控制部件制作的。可以实现对年、月、日、周、时、分、秒精确计时,闰年补偿,可计时至2100年。DS1302内嵌一个锂电池,可以保证在没有电源系统的情况下做到非易挥发性计时。通过对相应管脚电平的简单设置,就可以轻松地适应Intel处理器或Motorola处理器的总线时序。通过扩展还可以实现对电子钟所在地点的温度显示和智能闹钟功能,广泛用于车站、医院、机场、厕所等公共场所的时间显示。该电子钟运用单片机进行设计制作,通过软件编程完成实时时间显示、按键调节时间,与数
10、字电路电子钟相比具有设计电路简单、成本低的优点。与机械钟表和3V电源半机械表相比,数字电子钟具有时间精确度高、停电不用校准、较少汞的使用等优点。2.2 可行性分析通过可行性分析对所开发的高精度时钟从适应性、经济效益以及开发成本进行研究。通过调查和高精度时钟设计目标分析,对要开发的硬件、软件从技术、经济、资源和管理进行可行性的分析。以保证资源合理使用、避免失误和浪费。l 技术可行性:通过51单片机来设计电子时钟,采用K软件来进行编程,可以实现小时、分、秒和年、月、日的显示的功能。本次设计的电子时钟系统由时钟电路、显示电路、按键调整电路、定时报警电路四个部分组成。本次报告需要介绍51单片机的基本原
11、理,分析时钟芯片DS1302各个管脚的功能及它在设计电路中的作用工作原理及其软件设计过程以及1062显示屏在设计电路中的作用。l 经济可行性:本次设计使用的单片机是51单片机,是集CPU、RAM/ROM,计数和多种接口于一体的微控制器。自从单片机在20世纪70年代问世,以其极高的性能价格比,受到人们的重视和关注。它体积小、重量轻、抗干扰能力强、环境要求不高、价格相对比较低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。DS1302时钟芯片设计了一种具有校时和闹钟功能的高精度电子钟,DS1302可精确计时到2100年。其价格一般为几元到几十元,性价比比较高。l 操作可行性
12、:51单片机通过软件编程,在1062显示屏上实现时、分、秒和年、月、日,并且按秒实时更新显示,利用时钟芯片DS1302来实现计时,定时功能,通过四个按键开关:一个用于功能选择、一个用于闹钟查看、另外两个为数值增多和减少,来实现参数设置和调节功能,到达设置的闹钟时间,由蜂鸣器发声,起报警作用。本次设计的电子时钟,走时精度较高,可满足多种场合的应用需求。2.3开发及运行环境本次设计包括51单片机、DS1302时钟芯片、1062显示屏、K软件。下图为原理图 图2-1原理图第3章 硬件电路设计3.1单片机最小系统本系统以AT89C52单片机为核心,本系统选用11.0592MHZ的晶振,使得单片机有合理
13、的运行速度。起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。AT89C52单片机最小系统电路设计如图3-1所示。图3-1单片机最小系统3.2时钟芯片设计3.2.1时钟芯片引脚介绍 1) 时钟芯片DS1302,其引脚分布图如下所示图3-2时钟引脚分布MOT (1脚) :总线时序模式选择脚。接高电平,选择MOTOROLA总线时;序;接低电平或悬空,择选择INTEL总线时序。NC (2,3,16,20,21,22脚):悬空脚。AD0AD7(411脚):地址/地址数据复用总线引脚。CS(13脚):片选脚,低电平有效。AS(14脚):地址锁存输入脚。
14、下降沿时,地址被锁存,紧接着的上升沿来时地址被清除。R/W(15脚):读/写输入脚。在选择MOTOROLA总线时序模式时,此引脚用于指示当前的读写周期,高电平指示当前为读周期,低电平指示当前为写周期;选择INTEL中线时序模式时,此引脚为低电平有效的输入脚,相当于通用RAM的写使能信号(/WE)DS(17脚):选择MOTOROLA总线时序模式时,此引脚为数据锁存脚;选择INTEL总线时序模式时,此引脚为读输入脚,低电平有效,相当于典型的内存的输出使能信号(/OE)RESET(18脚):复位脚,低电平有效,复位不会影响到时钟、日历和RAM。IRQ(19脚):中断申请输出脚,低电平有效,可作为微处
15、理器的中断输入。SQW(23脚):方波信号输出脚。可通过设置寄存器位SQWE关断此信号输出,此信号的输出频率也可通过对芯片内部的寄存器编程予以改变。VCC(24脚):+5v电源端。3.2.2 4个控制寄存器介绍DS1302有4个控制寄存器,在任何时间都可以进行访问,即使处于更新周期。寄存器A字节的内容如下。MSB LSB UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0UIP: 更新标志位。为只读位且不受复位操作的影响,为1时,表示即将发生的数据更新;为0时,表示至少244US不会更新数据。当UIP为0时,可以获得所有时钟、日历、闹钟信息。将寄存器B中的SET位置1可以限制任何数
16、据更新操作,并且清除UIP位。DV2、DV1、DV0:此3位为010时将打开晶振,并开始计时。RES3、RES2、RES1、RES0:用于设置周期性中断产生的时间周期和输出方波的频率。寄存器B字节的内容如下。 MSB LSB SET PIE AIE UIE SQWE DM24/12 DSESET:设置位,可读写,不受复位操作影响。为0时,不处于设置状态,芯片进行正常时间数据更新;为1时,抑制数据更新,可以通过程序设定时间和日历信息。PIE:周期性中断使能位,可读写,复位时清除此位。为1时,允许寄存器C中的周期中断标志位PF,驱动/IRQ引脚为低产生中断信号输出,中断信号产生的周期由RS3RE0
17、决定。AIE:闹钟中断使能位,可读写。为1时,允许寄存器C中的闹钟中断标志位AF、闹钟发生时就会通过/IRQ引脚产生中断输出。UIE:数据更新结束中断使能位,可读写。复位或者SET位为1时清除此位。为1时允许寄存器C中的更新结束标志UF,更新结束时就会通过/IRQ引脚产生中断输出。SQWE:方波使能位,可读写,复位时清除此位。为0时,SQW引脚保持低电平;为1时,SQW引脚输出方波信号,其频率由RS3RS0决定。DM:数据模式位,可读写,不受复位操作影响。为0时,设置时间、日历信息为二进制数据;为1时,设置为BCD码数据。24/12:时间模式设置为,可读写,不受复位操作影响。为0时,设置为12
18、小时模式;为1时,设置为24小时模式。DSE:为1时,会引起两次特殊的时间更新;4月的第一个星期日凌晨1:59:59会直接更新到3:00:00,10月的最后一个星期日凌晨1:59:59会直接更新到1:00:00;为0时,时间信息正常更新,此位可读写,不受复位操作影响。寄存器C字节内容如下。 MSB LSB IRQF PF AF UF 0 0 0 0IQRF:中断申请标志位。为1时,/IRQ引脚为低,产生中断申请。当PF、PIE为1时或者AF、ATE为1或者UF、UIE为1时,此位为1,否则置0.PF:中期中断标志位。为1时,它是只读位,和PIE位状态无关,由复位操作或者寄存器C操作清除。AF:
19、闹钟中断标志位。为1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器C操作清除。UF:数据更新结束中断标志位。每个更新周期后此位都会置1,当UIE位位置1时,UF若为1就会引起IRQF置1,将驱动/IRQ引脚为低电平,申请中断。此位由复位操作或读寄存器C操作清除。寄存器D字节的内容如下。 MSB LSB 0 0 0 0 0 0 0 0VRT;RAM和时间有效位。用于指示和VBAT引脚连接的电池状态。此位不可写,也不受操作为影响,正常情况下读取时总去为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据就会出现问题。芯片DS12CR887的113字节普通RAM空间为非易失
20、性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。3.3按键调整电路 系统四个独立键盘均采用查询方式,S2用于设置年、月、日、时、分、秒、星期的数值加,以及闹钟开,S3用于设置年、月、日、时、分、秒、星期的数值减以及闹钟关,s1用于具体设置时钟位的切换,s4键用于设置闹钟。其电路图如3-3所示:图3-3按键电路连接3.4电源模块 电子钟的电源为5伏直流电源,本设计中我使用的是5V的充电模块,电源模块的原理图如图3-4所示:图3-4电源模块第4章 软件设计4.1主程序流程 主程序开始初始化,并打开中断,然后执行扫描闹钟、键盘及读取18B20值。当有S1键按
21、下时,执行时钟设置,当有S4键按下时,则进入闹钟设置,无论是时钟还是闹钟,设置完后退出,温度、时钟恢复实时显示。主程序流程图如图4-1所示:初始化开中断读18b20S1或S2是否按下扫描闹钟显示温度设置闹钟显示温度设置时间图4-1主程序流程图4.2 时间设置子流程 通过单片机判断S1按下的次数来设置,由s1num标志位来记录次数,用if语句判断执行命令。系统程序不断扫面键盘,当s1键按下后产生一个低电平,即s1num加一。在调节时间之前首先进行各个变量初始化,及设置起始时间,同时为读取数据作准备。当s1=1时进入秒的设置,地址指针指向miao显示位置处,通过两个if语句分别循环控制显示秒数的加
22、和减。当s1=2时,地址指针指向fen显示位置处,变量最大值为59。当s1=3时,地址指针指向shi显示位置处,变量最大值设为23。当s1=4时,地址指针指向week显示位置处,最大值设为7,1至7分别用MON、TUE、WED、THU 、FRI、SAT、SUN字符串显示。随着s2、s3值的的变化显示不同的字符串。当s1=5时,地址指针指向day显示位置,变量最大值为31。当s1=6时,地址指针指向month显示位置,变量最大值为12。当s1=7时,地址指针指向year显示位置,最大值为99。S1=1秒S1=2分S1=7月S1=8退出S2调加秒S3调减秒S3调减年S2调加年图4-2时间设置流程图
23、4.3闹钟设置子程序流程时间设置程序流程图如图4-3所示。在开始时间设置之前程序会关闭全局中断,直至设置结束,中断又会重新开启,进入计时状态。闹钟的设置时通过S1键的按下次数来判断的。当单片机检测到S4键按下一次时则进入闹钟设置界面,光标并自动跳到秒设置位置,可以对秒进行设置,当S1键依次按下1、2、3次时,则分别进入闹钟的秒、分、时关的设置。:S4=1设置闹钟S4=2退出设置S1=1调节秒S1=2调节分S1=3调节时S1=4退出图4-3闹钟设置流程图4.4程序设计问题4.4.1 按键抖动问题按键在按下时因为机械原因会产生抖动,抖动的后果就是当按下一次按键时因为抖动的原因让系统读取到多次的按键
24、按下的次数,由此导致设置时出现错误。解决的方法如下:当按键按下时读取按键键值,若5ms后键值和按下是相等,则确认为有效按键,以此消除按键抖动带来的问题。4.4.2 蜂鸣器设置蜂鸣器报警时,设置响100毫秒,停100毫秒,循环响应,产生滴滴的声音。4.4.3 液晶显示器设置初始化设置显示模式设置写入指令码write_com(0x38),设置功能16*2显示,5*7点阵,8位数据接口显示/开关及光标设置8) 写入指令码write_com(0x0c),设置开显示,不显示光标,光标不闪烁。16) 写入指令码write_com(0x06),设置当读或写一个字符后地址指针加一,且光标加一。当写一个字符,整
25、屏显示不移动。显示清屏,写入指令码write_com(0x01)。写入指令码函数write_com()写指令过程 :输入:rs=0,D0-D7=指令码,E=高脉冲写入数据函数 write_date() 写指令过程: 输入:rs=1,D0-D7=数据,E=高脉冲写入指令和数据时rw端已经接地。数据指针设置 指令码80H+地址码(0-27H)显示第一行的字符 指令码80H+地址码(40H-67H)显示的第二行字符4.4.4中断设置EA=1;/打开总中断EX1=1;/打开外部中断IT1=1;/设置负跳变沿触发中断当闹钟到点时响应外部中1 时间到时IRQ端从高阻态转为低电平,此时读一次c寄存器清除IR
26、Q端的输出,等待下一次定时。void exter() interrupt 2 /外部中断1服务程序uchar c;/进入中断表示闹钟时间到flag_ri=1; /设置标志位,用以大程序中报警c=read_ds(0x0c);/读取12c887c寄存器表示响应了中端第5章 测试5.1测试软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面
27、。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51软件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为Vision(通常称为V2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:Vision IDE集成开发环境C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及 Monit
28、or-51、RTX51实时操作系统。5.2软件调试应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存建立工程并添加源文件设置工程编译/汇编、连接,产生目标文件程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File-New,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-New Pro
29、ject,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group Source Group1”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着
30、对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for TargetTarget1(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序
31、调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline Assambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove
32、 Breakpoint或Debug-Breakpoints等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。结束语本文是一篇关于用单片机实现高精度日历时钟论文,设计中使用到了AT89C52和1602液晶显示屏。在设计过程中我通过在网上和图书馆查阅资料,收集了关于单片机和液晶显示方面的资料,通过对这些资料的学习,我了解了单片机的基本结构,使用和单片机在生活和生产中所发挥的作用;液晶显示的原理和使用。本次毕业设计除了让我回顾以前学过的知识外,也使我学习到了新的东西。这次毕业设计可以说是对四年的大学学习的总结。本次毕业设计完成的主要工作和任务如下:
33、对设计方案的理论研究,单片机的合理选型,硬件电路的设计,电路板的制作,元器件的焊接,软件的编写和调试以及毕业论文的制作。通过对本课题的研究我有以下几个方面的收获:(1)学习与掌握了单片机的基本原理及其各种应用,对它的各种硬件接口与软件设计方法有较深入的认识。 (2)对液晶显示有了一定的认识,能够初步掌握液晶显示的原理。 (3)通过对电路原理图、pcb图的绘制,电路板的制作掌握了对Altium Designer Winter 09 (4)本设计重点在于软件的设计,因此在设计过程中使自己在大学学到的C语言知识得到了巩固,同时提高了解决实际问题的能力。 由于时间仓促,再加上作者水平有限,本文不免有很
34、多错误,恳请各位读者批评指正。致 谢在我的毕业设计与论文完成过程中,得到了很多人的帮助与支持。首先,最感谢的是我的指导老师叶伟慧老师,他以严谨的治学态度、做研究全力以赴的精神,对我毕业设计和论文的写作给予悉心指导,提出了许多批评建议,使个人的毕业设计和论文得以如期完成,在此致上最真挚的谢意。也谢谢大学所有教导过我的老师,谢谢你们四年来的悉心教导与关心爱护。感谢培养教育我的母校广东海洋大学寸金学院!最后,感谢我亲爱的家人,感谢他们在生活及情感上的容忍及包容,在我完成论文的学习生活中,默默的支持着我。 参考文献1 余锡存,曹国华,单片机原理及接口技术. 西安:西安电子科技大学出版社,20002 郭
35、天祥,新概念51单片机c语言教程。北京:电子工业出版社,20093 杨拴科, 模拟电子技术基础. 北京:高等教育出版社, 2003。4 李光才,楼然笛.单片机课程设计实例指导. 北京:北京航空航天大学出版社,2004。6 杨立民,单片机技术及应用.西安:西安电子科技大学出版社,1997.912。7 马忠梅,单片机的C语言应用程序设计.北京:北京航空航天大学出版社,1997。8王天曦 ,李洪儒.电子技术工艺基础.北京:清华大学出版社,2000。9 弘道工作室,融会贯通 Protel99电路设计.北京: 人民交通出版设,2000。10 张伟,王力,赵晶,ProtelDXP 入门与提高.北京:人民邮
36、电出版社, 2003.2。11 李广弟,朱月秀,王秀山.单片机基础M. 北京:北京航空航天大学出版社, 2001.7。12 谭浩强,C程序设计(第二版)M.北京:清华大学出版社,2003。 13 付家才,单片机控制工程实践技术M. 北京:化学工业出版社,2004.3。14 W.Simpson,Editor,The Point-to-Point Protocol, RFC1661 EB/OL. July 1994。15 WAVECOM,AT Commands Interface Guide, Revision 002EB/OL.6th November 2003。附录程序代码#include/#
37、includeDS18B20_3.H#include #include #define uint unsigned int#define uchar unsigned char#define wd 1/定义是否有温度功能 =0时无温度,=1时有温度#define yh 0x80 /LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(=80)#define er 0x80+0x40 /LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)/液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit en=P27;/sbit rw=P26; /如果硬件上rw接
38、地,就不用写这句和后面的rw=0了sbit rs=P26;/校时按键与C51的引脚连接定义sbit menu=P30;/菜单键sbit set=P31; /设置键sbit add=P32; /加键sbit dec=P33; /减键sbit ensure=P34;/确认键sbit DQ=P20;/sbit buzzer=P14;/蜂鸣器,通过三极管8550驱动,端口低电平响sbit led=P24; /LCD背光开关bit led1=1;unsigned char temp_miao;unsigned char bltime; /背光亮的时间/DS1302时钟芯片与C51之间的引脚连接定义sbi
39、t IO=P11;sbit SCLK=P12;sbit RST=P10;uchar a,miao,shi,fen,ri,yue,nian,week,setn,temp;uint flag;/flag用于读取头文件中的温度值,和显示温度值bit c_moon;uchar nz_shi=12,nz_fen=0,nz_miao=0,setNZn; /定义闹钟变量uchar shangyimiao,bsn,temp_hour;/记录上一秒时间uchar T_NL_NZ;/计数器bit timerOn=0;/闹钟启用标志位bit baoshi=0;/整点报时标志位bit p_r=0; /平年/润年 =0
40、表示平年,=1表示润年data uchar year_moon,month_moon,day_moon,week;sbit ACC0=ACC0;sbit ACC7=ACC7;code uchar year_code597= 0x04,0xAe,0x53, /1901 0 0x0A,0x57,0x48, /1902 3 0x55,0x26,0xBd, /1903 6 0x0d,0x26,0x50, /1904 9 0x0d,0x95,0x44, /1905 12 0x46,0xAA,0xB9, /1906 15 0x05,0x6A,0x4d, /1907 18 0x09,0xAd,0x42, /
41、1908 21 0x24,0xAe,0xB6, /1909 0x04,0xAe,0x4A, /1910 0x6A,0x4d,0xBe, /1911 0x0A,0x4d,0x52, /1912 0x0d,0x25,0x46, /1913 0x5d,0x52,0xBA, /1914 0x0B,0x54,0x4e, /1915 0x0d,0x6A,0x43, /1916 0x29,0x6d,0x37, /1917 0x09,0x5B,0x4B, /1918 0x74,0x9B,0xC1, /1919 0x04,0x97,0x54, /1920 0x0A,0x4B,0x48, /1921 0x5B,0
42、x25,0xBC, /1922 0x06,0xA5,0x50, /1923 0x06,0xd4,0x45, /1924 0x4A,0xdA,0xB8, /1925 0x02,0xB6,0x4d, /1926 0x09,0x57,0x42, /1927 0x24,0x97,0xB7, /1928 0x04,0x97,0x4A, /1929 0x66,0x4B,0x3e, /1930 0x0d,0x4A,0x51, /1931 0x0e,0xA5,0x46, /1932 0x56,0xd4,0xBA, /1933 0x05,0xAd,0x4e, /1934 0x02,0xB6,0x44, /1935 0x39,0x37,0x38,