电子万年历毕业设计111_第1页
电子万年历毕业设计111_第2页
电子万年历毕业设计111_第3页
电子万年历毕业设计111_第4页
电子万年历毕业设计111_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、电子万年历毕业设计论文 学号:201225110206中州大学毕业设计(论文)题 目 万年历的设计 学 院 工程技术学院 专 业 应电 年 级 12 班 级 应电(2) 学生姓名 xx 指导教师 孙建延 职称 副教授 时 间 2014年12月4日 目 录中文摘要 3ABSTRACT 41 设计要求与方案论证 51.1设计要求 51.1.1 基本要求51.2电路设计方案52 电子万年历硬件设计与实现 62.1 电子万年历系统设计 62.1.1系统设计框图62.1.2 系统硬件概述7 2.2 系统硬件各模块作用62.2.1 单片机主控制模块62.2.2 时钟电路模块112.2.3 温度采集模块17

2、2.2.4 显示模块17 2.3 电子万年历电路设计212.3.1 系统电路图212.3.2 电路图分析223 电子万年历软件设计 243.1 程序流程框图 243.1.1 总流程图243.1.2 阳历程序流程图253.1.3 阴历程序流程图253.1.4 时间调整程序流程图263.2 部分程序的设计 273.2.1 DS18B20,ds1302温度子程序.274 指标测 404.1 测试仪器 404.2 硬件测试 404.3 软件测试 414.4 测试结果分析与结论 414.4.1 测试结果分析414.4.2 测试结论425 设计总结 43致谢 44参考文献 44附录一:系统程序清单附录二:

3、系统使用说明书摘 要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。电子万年历设计是基于单片机进行的,可以显示年、月、日、时、分、秒、周及温度信息,具有可调整日期和时间功能。设计包含AT89S52单片机模块、LED数码管模块、键盘模块、DS1302模块、数字式温度传感器DS18B20模块。AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。LED数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少。DS1302的使用寿命长,误差小。对于

4、数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。数字式温度传感器DS18B20仅需要一条数据线进行数据传输,易与单片机连接简化系统电路.数字式温度传感器还具有测量精度高、测量范围广等优点。关键词:AT89S52;DS1302;DS18B20;LED数码管;单片机AbstractElectronic calendar is a very broad daily timing tool, to the modern society more and more popular. It can be for the year, month,

5、 day, week, time, minutes and seconds, but also has a leap year compensation and other functions. Electronic calendar design is based on the MCU, can display year, month, day, hours, minutes, seconds, week and temperature information, with functions of can adjust the date and time. Design consists o

6、f AT89S52 single chip microcomputer module, LED digital tube module, keyboard module, DS1302 module, digital temperature sensor DS18B20 module. AT89S52 single chip microcomputer as the core, low consumption, and able to work under 3 v low voltage, voltage can choose 3 5 v voltage supply. LED digital

7、 tube dynamic scanning, for the most suitable display Numbers, price moderate, and the dynamic scanning method and single chip microcomputer connection, takes up less microcontroller mouth line. DS1302 of long service life and small error. For digital electronic calendar using intuitive digital disp

8、lay, can display year, month, day, Sunday, at the same time, minutes and seconds, and when the information such as temperature, but also has time calibration, and other functions. Digital temperature sensor DS18B20 need only a data line for data transmission, easy circuit connected to the microcontr

9、oller simplified system. Digital temperature sensor has advantages of high measurement precision, wide measurement range. Key words: AT89S52 devices; DS1302. DS18B20. LED digital tube; Single chip microcomputer1设计要求与方案1.1 设计要求1.1.1基本要求(1)具有年、月、日、星期、时、分、秒等功能;(2)时间与阴、阳历能够自动关联;(3)具备年、月、日、星期、时、分、秒校准功能;1

10、.2电路设计方案综合课下对查阅资料得出结论,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟; 数字式温度传感器DS18B20;LED数码管动态扫描作为显示,实现万年历自我调制,自动关联,能明确区分出,年,月,日,星期,时,分,秒的准确性能。2电子万年历硬件设计与实现2.1 电子万年历系统设计2.1.1系统设计框图键盘模块AT89S52主控制模 块LED数码管动态扫描显示模块 温度采集模块DS1302时钟模块2.1.2 系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、

11、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由个数码管,74ls138、74ls47译码器构成。使用动态扫描显示方式对数字的显示。2.2系统硬件各模块作用2.2.1单片机主控制模块(1)主要性能与MCS-51单片机产品兼容

12、、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。(2)功能特性描述 At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧

13、的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8

14、位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输

15、入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。 (3)引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P

16、2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个

17、 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 (4)端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于F

18、LASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活

19、。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源

20、Vpp,当然这必须是该器件是使用12V编程电压Vpp。AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端,如图 2-1 所示。图 2-1 主控制系统2.2.2时钟

21、电路模块DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 (1) DS1302的结构及工作原理引脚功能及结构 DS1302的引脚排列,其中Vcc1为后备电源,VCC2

22、为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传

23、送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。DS1302的控制字节 控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,

24、数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式 。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式

25、下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。(2)DS1302实时显示时间的软硬件 DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。DS1302与CPU的连接 实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟

26、发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有34线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A (典型值),省电模式时小于1A,工作电压为2.4V3.3V,显示清晰。 DS1302实时时间流程 DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。 在DS1302的时钟

27、日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。 尤其是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池

28、。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 F就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。(3) 结论 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其

29、出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。时钟芯片DS1302的工作原理DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操

30、作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。DS1302的控制字节DS1302的控制字如表2-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的

31、地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR表2-1 DS1302的控制字格式数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图2-2所示图2-2 DS1302读/写时序图 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、

32、时间寄存器及其控制字见表2-2。表2-2 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 图 2-3示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源

33、。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O

34、引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。 图 2-3 DS1302的引脚图2.2.3温度采集模块采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地,如图2-4所示。 图2-4 DS18B20温度采集2.2.4显示模块LED单元模块,由集成有多行、多列的发光二极管四边形模块构成,所述的四边形模

35、块至少一边为带有一组以上凹凸槽块的边缘。所述的四边形模块至少可有一组对边两壁均带有一组以上凹凸槽块,其中,两对边凹凸槽块可呈对应状,亦可呈对称状。所述的四边形模块的主视面上可带有用于模糊模块拼接界限的装饰结构。如 LCD1602液晶芯片(1)主要技术参数:显示容量16×2字符芯片工作电压4.55.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95×4.35(W×H)mm表2-3 1602液晶技术参数(2)接口信号说明:编号符号引脚说明编号符号引脚说明1VSS电源地9D2DateI/02VDD电源正极10D3DateI/03VL液晶显示偏压信

36、号11D4DateI/04RS数据/命令选择端(H/L)12D5DateI/05R/W读/写选择端(H/L)13D6DateI/06E使能信号14D7DateI/07D0DateI/015BLA背光源正极8D1DateI/016BLK背光源负极表2-4 1602引脚说明(3)控制器接口说明基本操作时序:a. 读状态: 输入: RS=L,RW=H,E=H 输出: D0D7=状态字b. 写指令: 输入: RS=L,RW=L, D0D7指令码,E= 高脉冲 输出:无c. 读数据: 输入: RS=H,RW=H,E=H 输出: D0D7=数据d. 写数据: 输入: RS=H,RW=L,D0D7=数据,E

37、= 高脉冲 输出: 无(4)状态字说明STA7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0表2-5 各状态字说明STA0-6当前数据地址指针的数值STA7 读写操作使能1: 禁止 0: 允许表2-6 STA 0-7状态字说明注:对控制器每次进行读写操作之前,都必须进行读写检测,确保STA为0(5)指令说明 初始化设置 显示模式设置指令码功能00111000设置16×2显示,5×7点阵,8位数据接口表2-7 显示模式 显示开/关及光标出设置指令码功能00001DCBD=1开显示;D=0 关显示C=1 显示光标; C=0 不显示光标B

38、=1 光标闪烁; B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字符后地址指针减一,且光标减一S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果S=0 当写一个字符,整屏显示不移动表2-8 显示开/关及光标 数据指针设置指令码功能80H+地址码(0-27H,40H-67H)设置数据地址指针表2-9数据指针如图2-5所示,采用动态扫描显示,由个数码管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列。74ls47接240限流电阻,

39、再接共行的LED数码管的断码。 图2-5 LED动态扫描显示2.3电子万年历电路设计2.3.1系统电路图图2-5 系统电路图2.3.2 电路图分析本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使

40、用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由个数码管,74ls138、74ls47译码器构成。使用动态扫描显示方式对数字的显示 AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电

41、复位电路,20引脚为接地端,40引脚为电源端。其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对

42、DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。动态扫描显示,由个数码管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列

43、。74ls47接240限流电阻,再接共行的LED数码管的断码。3电子万年历软件设计开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序3.1程序流程框图3.1.1总流程图 图3-1 总程序流程图3.1.2 阳历程序流程图图3-2计算阳历程序流程图3.1.3 阴历程序流程图图3-3 阴历程序流程图3.1.4 时间调整程序流程图图3-4时间调整程序流程图3.2 部分程序的设计3.2.1 DS18B20温度子程序.60#include"DS18B20_3.H"#define uint unsigned i

44、nt#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; #define yh 0x80 #define er 0x80+0x40 /液晶屏的与C51之间的引脚连接定义sbit rs=P20;sbit en=P22;sbit rw=P21; /如果硬件上rw接地,就不用写这句和后面的rw=0了sbit led=P26; /LCD背光开关/DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P11;sbit SCLK=P10;sbit RST=P12;sbit ACC0=ACC

45、0;sbit ACC7=ACC7;/校时按键与C51的引脚连接定义sbit key1=P15; /设置键sbit key2=P16; /加键sbit key3=P17; /减键sbit buzzer=P13; /蜂鸣器,通过三极管9012驱动,端口低电平响/*/uchar code tab1="20 - - " /年显示的固定字符uchar code tab2=" : : " /时间显示的固定字符/延时函数,后面经常调用void delay(uint xms) /延时函数,有参函数uint x,y;for(x=xms;x>0;x-) for(y=1

46、10;y>0;y-);/*液晶写入指令函数与写入数据函数,以后可调用*/write_1602com(uchar com) /*液晶写入指令函数*rs=0; /数据/指令选择置为指令rw=0; /读写选择置为写P0=com; /送入数据delay(1);en=1; /拉高使能端,为制造有效的下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat) /*液晶写入数据函数*rs=1; /数据/指令选择置为数据rw=0; /读写选择置为写P0=dat; /送入数据delay(1);en=1; /en置高电平,为制造下降沿做

47、准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令lcd_init() /*液晶初始化函数*write_1602com(0x38); /设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c); /开显示不显示光标write_1602com(0x06); /整屏不移动,光标自动右移write_1602com(0x01); /清显示write_1602com(yh+1); /日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a<14;a+)write_1602dat(tab1a); /向液晶屏写日历显示的固定符号部分/delay(3);write_1602com(er+2); /时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a<8;a+)write_1602dat(tab2a)

温馨提示

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

评论

0/150

提交评论