基于单片机的多功能电子万年历设计
行数据传输,使用P1.7与DS18B20的I/O口连接加一个上拉电阻,Vcc1接电源,Vcc2接地。
DS18B20的测温原理
低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。
表2 DS1302的日历、时间寄存器
图5 DS18B20温度采集
显示模块的设计
本次设计采用的是LED动态显示方式,由于PROTEUS内没有LED,故用LCD代替LED进行仿真,与主控制芯片AT89C52相连。如图6所示。
系统的软件设计
图6 LED动态扫描显示
图7 主程序流程图
主程序流程框图
Keil C与Proteus的联调与测试结果
Proteus7.6是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件等),使用Proteus7.6和Keil C可以像使用仿真器一样调试程序。
Proteus的工作过程
运行Proteus的ISIS程序后,进入该仿真软件的主界面如图8所示。在工作前,要设置view菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices窗口中选择电路所需的元件,放置元件并调整其相对位置、元件参数设置、元器件间连线、编写程序;在source菜单的Define code generation tools菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/remove source files命令下,加入单片机硬件电路的对应程序;通过debug菜单的相应命令仿真程序和电路的运行情况。
图8 Proteus的启动界面
Proteus软件所提供的调试手段
Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。
软件和硬件结合的应用系统
软件和硬件的结合,就是一个单片机的应用系统了。在这一阶段,硬件电路的设计已经不是最为关键的了,而软件系统的设计、调试和运行才是实验的主要内容。因此可以以建议性的意见给出具体的硬件电路,并提出该电路所需要完成的具体工作,进行软件的设计和调试。
Keil C的介绍
keil C的运行界面
运行Keil C后的运行界面如图9所示。
图9 keil C的运行界面
Keil C与proteus联调测试
1、安装keil与proteus7.6;
2、打开proteus,画出相应电路。在proteus的tools菜单中选中use remote debug monitor;
3、在keil中编写MCU的程序;
4、进入keil的project菜单option for target '工程名'。在DEBUG选项中右栏上部的下拉菜选中Proteus VSM Monitor-51 Driver;
5、在keil中进行debug,同时在proteus中查看直观的结果,LCD显示;
6、把keil里的文件编译后输出hex的文件,在proteus中把单片机的加载程序文件换成keil中的hex文件,然后运行。
运行结果
结果显示
由图1整体电路框图可知,LED显示结果,如图10所示。
图10 结果显示
调节显示
日期和时间的修改由4个按键构成。键P0为调节;P2^0,模式切换键(向左移)向左移;键P2^1,加法按钮;键P2^2,减法按钮;键P2^3,立刻跳出调整模式按钮。
按动PO时秒闪烁进入调节系统,如图11所示。
按动P2^0向左移,对分进行调节,如图12所示。
按动P2^1向左移,对时进行加调节,如图13所示。
图11 秒调节
图12 分调节
图13 时加调节
图14所示,是未调之前的显示,按动P2^2向左移,对年进行减调节,如图15所示
按动P2^3向左移,退出调节恢复如图16所示。
图14 未调之前显示
图15 年减调节
图16 退出调节系统
总结
本文设计了一个多功能的电子万年历。电路是由AT89S52单片机为控制核心,与时钟芯片DS1
- 基于单片机的可测温式电子万年历(03-02)
- 1602液晶万年历源程序-带温度、背光、灰度 数字(11-30)
- 用51写的带键控带温度的万年历在LCD12864上显示(11-29)
- 点阵万年历(带时间、年月日星期调整及闹钟功能)C程序(11-29)
- c51实现万年历、温度与闹钟功能程序(11-18)
- 基于PIC16F877A的万年历程序(11-13)