3V的电子万年历设计及总体方案(2.1系统)

本设计是基于51系列的单片机进行的电子万年历设计,采用八位数码管显示年月日时分秒及温度信息,具有可调整日期和时间功能。二、系统概述及总体方案2.1系统概述本电子万年历采用单片机控制技术和数码管显示方案,可以很好的完成万年历和实时温度显示。

2、代码管理; 微控制器。 2、系统概述及总体方案 2.1 系统概述 该电子万年历采用单片机控制技术和数码管显示方案,可以完美地完成万年历和实时温度显示。 可对年、月、日、日、时、分、秒进行计时,还具有闰年补偿等多种功能。 数字电子万年历采用直观的数字显示,可同时显示年、月、日、工作日、时、分、秒和温度等信息,还具有时间校准等功能。 2.2 总体方案 2.2.1 单片机芯片:采用AT89S52,片上ROM全部为Flash ROM; 可在3V超低电压下工作; 它也与MCS-51系列单片机完全相同。 芯片内部存储器为8KB ROM存储空间。 它具有89C51的功能,并具有在线编程可擦除技术。 在调试电路时,由于

3、当程序错误修改或程序新功能需要烧入程序时,无需多次拔插芯片,不会损坏芯片。 因此选择AT89S52作为主控系统。 2.2.2 时钟芯片:采用DS1302时钟芯片来实现时钟。 DS1302芯片是一款高性能时钟芯片,可以自动调整秒、分、时、日、周、月、年和闰年补偿年数,并采用高精度、1位RAM作为时钟芯片。数据暂存区。 工作电压在2.5V至5.5V范围内,2.5V时功耗小于300nA。 而同组的同学已经申请了Maxim的这款芯片。 ,所以本设计采用该芯片。 2.2.3 温度测量传感器:温度测量可以使用热敏电阻加模数转换来获取电压,然后将测量到的电压发送给单片机,单片机对其进行处理以获得温度值。但是,这种方法是实施起来复杂

4、复杂,难以达到高精度,因此本设计中未采用该方法。 DS18B20是一款数字温度传感器,只需一根线即可连接到单片机的IO,将测量到的温度以数字形式传输给单片机,使用方便; 其测温误差为+-0.5度,可以达到更好的效果。 精度足以满足日常应用。 这种芯片应用广泛,因此本设计也采用了这种测温方法。 3.系统硬件设计 3.1. 总体方案框图 多数码管显示 AT89C52 时钟模块(DS1302) 温度检测模块(DS18B20) 总体方案框图 3.2. 时钟模块设计 DS1302通过三线接口与单片机通信。 由于DS1302的功能功耗很小,即使在关闭电源后,DS1302仍然可以通过3V纽扣电池保持准确的走时。 3.2.1 DS130

5. 2 特性介绍 DS1302 是美国DALLAS 公司推出的高性能、低功耗实时时钟芯片,外加31 字节静态RAM。 它采用SPI三线接口与CPU通信,可以突发模式一次传输多个时钟。 时钟信号和 RAM 数据的字节。 实时时钟可以提供秒、分、时、日、星期、月和年,可以自动调整一个月和31天的长度,并具有闰年补偿功能。 工作电压宽达2.55.5V。 采用双电源供电(主电源和备用电源),可设置备用电源充电模式,提供对备用电源进行涓流充电的能力。 3.2.2 DS1302 引脚介绍 各引脚功能为: 1. Vcc2:5V 电源。 当Vcc2Vcc1+0.2V时,Vcc2给DS1302供电。 当Vcc2+Vcc1时,Vcc1给DS供电。

6、1302电源。 2 3. X1、X2 为外部晶振引脚(32.768KHZ 晶振)。 4. 接地(GND)。 5. CE/RST:复位引脚。 6. I/O:数据输入输出端口。 7. SCLK:串行时钟,输入。 8、Vcc1:备用电池端; 3.2.3 DS1302 与单片机接口电路图 DS1302 与单片机接口电路图 3.3. 实时环境温度采集模块DS18B20通过单总线与单片机通信。 每个DS18B20都有唯一的序列号,可以方便地实现网络检测。 3.3.1 单总线简介 1、单总线只有一根数据线,系统中所有的数据交换和控制都是由这根线完成。 2、单总线通常需要外接4.7K10K左右的上拉电阻,这样当总线空闲时,其状态

7、水平高。 3.3.2 DS18B20 的特点介绍 1. DS18B20 单线数字温度传感器又称“一线器件”,具有独特的优点: 2. 使用单总线接口连接微处理器时,只需一个端口需要线来实现微处理控制器和DS18B20之间的双向通信。 单总线具有经济性好、抗干扰能力强、适合恶劣环境下的现场测温、使用方便等优点。 它允许用户轻松构建传感器网络,并为测量系统的构建引入新概念。 3、测量温度范围宽,测量精度高。 DS18B20的测量范围为-55+125; 在-10℃+85℃范围内,精度为0.5℃。 4、使用过程中无需外接元件。 5.支持多点联网功能。 可以并联多个DS18B20。

8、一根单线可实现多点测温。 6、灵活的供电方式 DS18B20可以通过内部寄生电路从数据线获取电源。 因此,当数据线上的时序满足一定要求时,可以不外接电源,使得系统结构更加简单、可靠。 7. 可配置测量参数。 DS18B20的测量分辨率可以通过程序设置为912位。 8、负电压特性:当电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 9、掉电保护功能 DS18B20内部含有一个EEPROM,在系统掉电后仍能保存分辨率和报警温度设置。 10、DS18B20体积更小,适用电压更宽,更经济,可选更小的封装,电压适用范围更宽。 适合构建自己的经济型测温系统,因此也是

9、深受设计师青睐。 3.3.3 DS18B20 引脚介绍 DS18B20 引脚排列: 1. GND 为电源地。 2、DQ为数字信号输入输出端。 3、VCC为外部电源输入端,寄生电源接线方式接地。 3.3.4 DS18B20 与单片机连接图 3.4. 显示模块设计 3.4.1 数码管显示 为了满足生活的实际需要,我们选用多个数码管作为显示模块,利用74HC595的移位特性,将需要显示的数据通过串口传输给单片机。微控制器。 74HC595移位芯片驱动多个数码管。 数码管显示电路 3.4.2 74HC595 芯片简介 74HC595 是硅结构的 CMOS 器件,兼容低压 TTL 电路,符合 JEDEC 标准。 74HC595是一个8位移位寄存器

10.装置并具有记忆、三态输出功能。 移位寄存器和存储器是独立的时钟。 数据在SHcp的上升沿输入到移位寄存器,在STcp的上升沿输入到存储寄存器。 如果两个时钟连接在一起,移位寄存器总是比存储寄存器领先一个脉冲。 移位寄存器具有串行移位输入(Ds)、串行输出(Q7)和异步低电平复位。 存储寄存器具有并行 8 位、三态总线输出。 当使用OE使能(低电平)时,将存储寄存器中的数据输出到总线。 具有高阻抗关断状态的 8 位串行输入/输出或并行输出移位寄存器。 三个状态。 将8位串行输入数转换为8位并行输出数。 比如你控制8位数码管,就不会出现闪烁。 3.4.3 74HC595芯片8位串行特点

11、输入/8位串行或并行输出存储状态寄存器、三态输出寄存器(三态输出:具有高电平、低电平、高阻三种输出状态的门电路。)可直接清除100MHz移频。 数码管驱动电路 4.系统软件设计 软件设计是本设计的关键。 软件程序编写的质量直接影响系统的良好运行。 由于该程序涉及的模块较多,因此程序编写也采用了模块化设计。 C语言具有编写灵活、移植方便、便于模块化设计的特点,因此本系统的软件采用C51编写。 4.1. 主程序流程图设计 本设计的主程序流程图如下图所示。 启动开机动画 DS1302 写入时间 读取 DS1302 时间 农历时间转换 读取温度值 更新万年历数据 主程序流程图 4.2 显示 程序流程图设计 显示程序

12、使用单片机的串口工作模式0,TXD作为74HC595的时钟信号,RXD作为移位数据信号,通过串口将数据发送到数码管显示。 流程图如下图所示。 开始初始化串口,向串口发送一字节数据。 发送的字节数加上一个字节还小于21? 5、软件仿真 5.1. 软件调试流程 1、仿真:打开KEIL 2,进入编写的源程序,编译程序。 借助软件检查错误并反复修改。 知道编译正确后运行。 确保没有错误,然后保存正确的源程序。 保存时给它起个名字,以便以后加载程序时方便找到。 2、打开PROTEUS软件,绘制单片机电子万年历的具体操作电路图。 3、检查所画的电路运行图,确保没有错误,然后将原理图加载到PROTEUS下的KEIL中。

13、2下的源程序。 4、加载完成后,点击电路图框下的Start按钮进行仿真。 软件调试一般包括块调试和在线调试两个阶段。 程序的块调试一般在单片机开发设备上进行。 可以根据调整后的程序功能块的入口参数的初始值编译出专用程序段,并与调整后的程序功能块一起在开发设备上运行。 也可以配合相应的硬件电路独立运行某个程序功能块,然后检查其是否正确。 如果执行结果与预期不一致,可以通过单步运行或设置断点的方式找出原因并纠正,直到执行结果正确。 此时,程序功能块已经调试完毕,可以删除附加的程序段。 其他程序功能块也可按此方法进行调试。 程序在线调试是将调试好的程序功能块按照总体结构连接成完整的程序,并在开发好的硬件电路上运行,从而完成测试过程

14、程序整体运行及其与硬件电路配合的完整性、正确性。 联调时,可能存在某些分支上的程序和功能块受条件限制,无法获取相应的输入参数。 这时调试器就应该为模拟调试创造条件。 联调时如发现硬件问题,应及时纠正,直至单片机系统所有软硬件调试成功。 系统调试完成后,将进行一段时间的试运行,测试系统的稳定性和抗干扰能力,验证系统功能是否满足设计要求并达到预期效果。 5.2. 仿真结果通过在KEIL2下编译源程序,纠正了很多错误,然后运行,保证了源程序的正确性。 然后根据原理图选择正确合理的电气元件,画出正确的电路图,加载源程序并运行,成功实现了单片机的“年”“月”“日”“温度”芯片数字万年历。

15.显示“周”、“时”、“分”、“秒”以及农历月份和日期。 这款数字万年历的显示效果如下图所示。 数字万年历操作图 六、总结与体验 数字万年历是日常生活中随处可见的电子产品。 随着电子技术的不断更新,数字万年历已经进入千家万户。 它集日历、时钟、温度计于一体,是一款非常实用、方便的家庭小家电。 我很高兴在本次专业课程设计中被分配到数字万年历设计的课题。 在查阅了资料,了解了数字万年历的基本功能和原理后,我开始根据不同的模块寻找合适的芯片。 基于AT89C52单片机,采用DS1320时钟芯片。 通过运行系统并添加DS18B20温度传感器芯片,就可以实现万年历的基本功能,并用发光二极管显示结果。原理并不难,但需要

16、要实现万年历的基本功能,必须了解这些模块的基本原理,还必须搭配严谨的程序,这样才能真正实现。 经过一个多星期的学习,我慢慢了解了各个模块之间的基本联系。 在课程设计的过程中,很多知识都是通过查阅文献或者询问同学得到的,这让我认识到自己的很多不足,很多知识还需要进一步提升。 想要学习某些知识,就必须通过实践来学习,这样才能融会贯通,真正掌握它。 最后感谢刘旺军老师的指导和同学们的帮助。 7、附录源程序代码:#include1302.h #include18b20.hsbit CLT = P32; /74HC595数据更新控制口/*DS1302实时时钟芯片的寄存器位置*/#defin

17. e SECOND 0x80 #define MINUTE 0x82#define HOUR 0x84 #define DAY 0x86#define MONTH 0x88#define WEEK 0x8A#define YEAR 0x8C int sec,min,hour,mon,day,week,year;/counter;/秒,分、时、日、月、周、年/*共阴极数码管驱动代码*/unsigned char code SEG_TAB10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,;/*Boot动画显示驱动代码*/unsigned ch

18. ar码F_TAB7=0x01,0x03,0x07,0x0f,0x1F,0x3F; /*万年历初始化数据表*/unsigned char Display_TAB21=0x7D,0x5B,0x3F,0x06, /农历月日 0x05, /weekday: – 7 0x3F ,0x06, /温度:一、十 – 100x3F,0x3F, /秒:一、十 – 000x3F,0x3F,/分钟:一、十 – 000x3F,0x06,/小时:一、十 – 100x6F,0x3F,/日:数字,十 – 090x5B,0x06,/月:数字,十 – 120x5B ,0x06,0x3F,0x5B, /年:数、十、百、千 – 2012 年;

19. /*/ /名称:Uart_Send/描述:串口发送万年历数据显示/调用:主函数调用/输入:p:指向数据地址/输出:无/返回:无/*/void Uart_Send(char * p) 字符 i=0;CLT = 0; for(i=0;i21;i+)SBUF = *p+;while(!TI);TI = 0;CLT = 1;/*/ /名称:延迟/描述:延迟 函数/调用:延迟调用/输入:无/输出:无/返回:无/*/void Delay1(int n)while(n-

20.); /*/ /名称:Uart_Send/描述:串口发送万年历数据显示/调用:主函数调用/输入:无/输出:无/返回:无/*/void Start_Flash(char *p) char i= 0, n=0;for(n=0;n7;n+)CLT = 0; for(i=0;i21;i+)SBUF = *p;while(!TI);TI = 0;CLT = 1;p+ ;延迟 1(30000); /*/ /名称:写入/说明:将显示初始值写入DS1302内部寄存器/Calls:延时呼叫/输入:无/O

21. 输出:无/返回:无/*/void Write_DS1302(void)Write_1302(SECOND,0x00);Write_1302(MINUTE,0x37);Write_1302(HOUR,0x18);Write_1302(DAY,0x24);Write_1302(MONTH,0x12) );/Write_1302(周,0x07);Write_1302(年,0x12); /*/ /名称:Read_DS1302/说明:从 DS1302 内部寄存器读取要显示的初始值/Calls:延迟呼叫/输入:无/输出:无/Re

22.转:None/*/void Read_DS1302(void)sec=Read_1302(SECOND);Display_TAB7=SEG_TABsec;Display_TAB8=SEG_TABsec/16;Delay(100);min=Read_1302(MINUTE);Display_TAB9=SEG_TABmin;Display_TAB10=SEG_TABmin/ 16;延迟(100);小时=Read_1302(小时);Display_TAB11=SEG_TAB小时;Display_TAB12=SEG_TAB小时/16;延迟(100);天

23. =Read_1302(DAY);Display_TAB13=SEG_TABday;Display_TAB14=SEG_TABday/16;延迟(100);mon=Read_1302(MONTH);Display_TAB15=SEG_TABmon;Display_TAB16=SEG_TABmon/16;延迟(100);/week=Read_1302( WEEK);Display_TAB4=SEG_TABweek;延迟(100);year=Read_1302(YEAR);Display_TAB17=SEG_TAByear;Display_TAB18=SEG_

24. TAByear/16;Delay(100);void main(void)ReadTemperature();Write_DS1302();Read_DS1302();Conversion();Start_Flash(F_TAB);while(1)Uart_Send(Display_TAB);ReadTemperature(); Read_DS1302();转换(); 8.参考文献1徐立子. 微型计算机原理与应用M.机械工业出版社。 20022刘乐山。 微机接口技术与应用M.华中科技大学出版社。 2000年3月邹凤兴. 计算机硬件技术基础实验教程M.高等教育出版社。 20004周佩玲。 16位微机原理接口及其应用M.中国科学技术大学出版社。 2000 5 吴秀清. 微机原理与接口技术M.中国科学技术出版社.20016邓亚平。 微机接口技术硕士。清华大学出版社。 20017王英旭。 微控制器原理与应用M.机械工业出版社。 20018周航慈. 微控制器应用设计技术 M. 北京航空航天大学出版社。 20029谢伊人。 单片机实用技术问答M.人民邮电出版社。 2002 9. 电路原理图

单片机

打造智能小车的核心部件树莓派SD卡派教程

2024-2-7 14:05:06

单片机

“嵌入式系统”和“单片机”有什么区别?

2024-2-7 15:08:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索