设计课题题目: 带温度计的万年历一、设计任务与要求1. 显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日);2. 可通过按键切换年、月、日及时、分、秒的显示状态;3. 可随时可以调校年、月、日或时、分、秒;4. 可每次增减一进行时间调节,也可快速增减进行时间调节;5.可显示环境温度。
二、系统设计方案方案一、用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS 公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点。
显示时间和温度使用数码管显示。
方案二、用主芯片为STC89C52的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,温度传感器使用 DS18B20。
显示时间和温度使用LCD1602显示。
方案一片内定时器会导致计时节拍的时间误差,当进行年、月、日的日历计时,定时中断误差扥积累就会很大。
使用片内定时器进行计时的时候,单片机始终要处于工作状态。
才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。
为了满足单片机系统的实时钟需求,本设计采用的是方案二,系统框图如图2-1所示。
图2-1三、单元电路分析与设计1. 原理分析 1.1主控制器单片机STC89C52 具有低电压供电和体积小等特点,如图3-1所示。
1.2晶振电路AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图3-2所示方式连接。
晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz 之间,电容C1、C2取值范围在5~30pF 之间。
根据实际情况,本设计晶振选择频率为12MHZ ,电容选择30pF 如图3-2。
经计算得单片机工作的机器周期为:12×(1÷12M )=1us 。
振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上。
时钟发生器是个二分频的触发器,它将振荡器的信号频率fosc 除以2,向CPU 提供两相时的时钟号。
1.3复位电路时钟电路工作后,芯片内部开始进行初始复位,如图3-3。
1.4 LCD 显示电路显示器是单片机常用的功能单元之一,显示器的工作是由单片机通过显示接口驱动的。
本设计采用的是LCD1602显示电路图如图3-4所示。
(1)LCD1602主要技术参数:显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W ×H)mm (2)广脚介绍D0—D7数据传送引脚,VSS 为接地线,VDD 为电源线,VEE 为 LCD 驱动电压调节,由此可以调节显示亮度。
RS 为寄存器选择信号,高电平选择数据寄存器,低电平选择指令寄存器。
RW 为读写控制信号,高电平读,低电平写。
EN 使能信号,读状态下高电平有效,写状态下下降沿有效。
RS 连接P2^0; 寄存器选择信号 RW 连接P2^1; 读写控制信号线 EN 连接P2^2; 使能信号线1.5温度感应电路DS18B20具有3引脚TO -92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D 转换精度,测温分辨率可达0.0625℃。
DS18B20的高速暂存存储器由9个字节组成,其分配如图3-5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
该电路能感应现场的温度并生成电信号传送给AT89C52,如图3-6所示。
1.6 DS1302DS1302内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O 线:复位(RST )、I/O 数据线、串行时钟(SCLK )。
DS1302时钟电路如图3-6所示。
(1)DS1302的主要特性:a) 实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力 b) 31* 8 位暂存数据存储RAMc) 串行I/O 口方式使得管脚数量最少 d) 宽范围工作电压:2.0~ 5.5V e) 工作电流2.0V 时,小于300nA f) 读/写时钟或RAM 数据时,有两种传送方式:单字节传送和多字节传送(字符组方式)(2)DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST )置为高电平且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK )的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。
时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。
1.7按键模块本设计需要的键盘比较少,使用软件消抖,加10k 的上拉电阻用来提高抗干扰能力。
如图3-7所示。
K1键: 在正常显示时间状态下每按一次K1键,依次修改秒、分、时、星期、日、月、年。
K2键:当K1键按下后,按下K2键时,对所校对的数字加一。
K3键:当K1键按下后,按下K2键时,对所校对的数字减一。
K4键:按下K4键后,跳出矫正模式,时间正常运行。
2. 仿真分析图3-81、主程序:main(){flag=1; //时钟停止标志LCD_Initial(); //液晶初始化Init_DS18B20( ) ; //DS18B20初始化Initial_DS1302(); //时钟芯片初始化up_flag=0;down_flag=0;done=0; //进入默认液晶显示while(1){while(done==1)keydone(); //进入调整模式while(done==0){show_time(); //液晶显示数据 flag=0;Setkey(); //扫描各功能键}}}2、主程序流程图3、按键扫描子程序流程图:五、系统测试与分析1、测试步骤如下:1) 将系统焊接完毕,通电,观察液晶屏是否有亮; 2) 按下复位键,时间和温度是否有显示;3) 与标准时间和温度对比,液晶屏上的时间和温度是否正确; 4) 测试按键模块,按下按键,相应功能是否能实现;5) 三天后,时间、温度与标准时间、温度对比,是否有误差。
2、测试结果1) 液晶屏显示时间和温度2) 测试按键模块功能3) 三天后时间和温度3、分析液晶屏有显示,时间可正常运行,按键可调整时间,显示模块、时钟模块、温度模块均正常,程序也正确。
根据三天后的显示结果,与标准时间和温度对比,没有误差。
用手触碰温度传感器,温度缓慢上升,手放开后,温度下降,说明温度模块没问题。
六、结论与心得1、实验结论(1)在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。
其次,时,分,秒显示用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。
最后,用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。
对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。
(2)在硬件上,选用DS1302,LCD1602相结合,首先DS1302内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作,这样读取数据简单。
其次,选用LCD1602进行显示时,数据位串行输入,接口连线少,低功耗,显示清晰。
并且本实验的电子钟即要实现时间的现实,还要实现日期的现实,所以若是运用数码管进行显示的话,就算运用动态显示,所占用的IO口多,并且所需的数码管个数多,硬件复杂。
(3)proteus是一个非常好用的仿真软件,其具有强大的电路原理图绘制功能,且可以实现模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、键盘、LCD系统仿真等多种功能;和keil联合使用时可以检测所编写的程序的正确与否。
将keil和proteus联合起来使用是实现电子设计制作的初步阶段,可避免在实际的硬件操作中因为电路原理图或向单片机烧录的程序有误而造成的难以修改的为题。
2、心得本次课程设计在老师的指导和同学的帮助下顺利完成。
本次设计的是一个带温度显示的电子时钟。
在本次试验中,感觉到自己单片机知识非常欠缺,编程方面很多知识不懂,在同学的帮助下,并借鉴了其他同学的部分程序,经过调试后在单片机上显示出最终结果,一个小型的带温度显示的万年历就做出来了。
通过本次设计,了解了时钟芯片、温度传感器的一些基本原理及用途,并学习了单片机中一些基本指令的运用,明白了写程序的困难及软件思维和逻辑思维能力的重要性,提高了自己思考问题的严谨性,并且体会到了团队合作的重要性,增强了解决困难的能力。
在此感谢老师在本次课程设计中的指导,使得本次设计顺利的完成。
七、参考文献[1] 徐爱钧. 彭秀华. 单片机高级语言C51应用程序设计[M],2000; [2] 瓮嘉民. 单片机应用开发技术—基于PROTEUS 仿真和C 语言编程[M],中国电力出版社,2009;[3] 李强. 51系列单片机应用软件编程技术[M],北京航空航天大学出版社,2009; [4] 郭天祥. 51单片机C 语言教程[M]. 电子工业出版社, 2009. [5] 孙惠芹. 单片机项目设计教程[M]. 电子工业出版社, 2009.八、附录。