《单片机课程设计之万年历、闹钟与温度显示设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之万年历、闹钟与温度显示设计.docx(34页珍藏版)》请在优知文库上搜索。
1、我们设计的数码管时钟温度显示系统是一个可以记录时间及温度的系统,该系统是由中央控制器、温度检测器、时钟系统、显示器及键盘部分组成。控制器采用单片机STC89C52,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用数码管作为显示器。单片机通过时钟芯片DS1302获取时间数据,对数据处理后显示时间;温度传感器采用DS18B20采集温度信号送给单片机处理,单片机把时间数据和温度数据送到数码管进行显示,键盘可以调时和温度查询。闹钟功能是通过按键设置闹钟的时间使蜂鸣器响。关键词:51单片机,ds1.302,ds1.8b20,闹钟,万年历摘要1一、任务分析与设计思路3二、整体设
2、计方案31、单片机的选择32、单片机的基本结构4三、数字钟的硬件设计41、总体电路设计42、晶振电路设计53、时钟芯片54、温度传感器55、复位电路设计66、数码管显示电路设计77、按键控制电路设计78、制作电路板89、元件清单9四、软件设计101、系统软件设计流程图102、按键控制子程序113、主程序124、时钟设置子程序125、定时器中断子程序与数码管显示程序137、温度传感器DS18B20主程序13五、调试与功能说明141、系统性能测试与功能说明142、系统时钟误差分析153、硬件调试154、软件调试问题及解决16六、心得体会16参考文献17一、任务分析与设计思路设计一个具有报时功能、停
3、电正常运行(来电无需校时)、带有年月日、时分秒以及温度显示、闹钟提醒功能的电子日历。电子万年历是日常生活中常见的小型电子产品,其形式多种多样,小到带有日期的电子腕表,大到公共场所悬挂的大型电子日历,此外,眼下我们还常能在宾馆、饭店等场所见到一种带有年、月、日、时、分、秒、星期甚至节气等信息的电子日历牌。电子日历的主要功能是给人们提供时间和日期信息,无论其形式如何,从外部都可分为显示和校准两部分。为使电子日历协调工作,整个系统从功能上可分为实时时钟、显示和键盘三个模块,分别完成时间和日期的计算以及人机交互的管理等。二、整体设计方案1、单片机的选择单片机是一种集成电路芯片,是采用超大规模集成电路技
4、术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调试电路电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。特性方面:STC89C52RC单片机,8K字节程序存储空间,512字节数据存储空间内带4K字节EEPROM存储空间,可直接使用串口下载。AT89S52单片机,8K字节程序存储空间,256字节数据存储空间,没有内带叫PROM存储空间。综合考虑选择STC89C52单片机作为本系统的单片机。2、单片机的基本结构STC89C52是一种低功耗、高性能CMo
5、S8位微控制器,具有8K在系统可编程F1.aSh存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程F1.ash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。具有晶振电路,复位电路,定时器等结构。三、数字钟的硬件设计图3-1总体电路设计根据方案的选择,数码管时钟温度系统由51单片机、时钟芯片DS1302、测温芯片DS1802、数码管显示电路、键盘电路组成,如图3-1所示。本系统采用C语言编写,控制器采用单片机STC89C52,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用八位数码管作为显示器。单片机通过时钟芯片DS1302获取时间
6、数据;通过温度传感器DS18B20采集温度信号送给单片机处理,并在数码管中显示出来,键盘可以切换界面,调时和温度查询与设置闹钟的功能。2、晶振电路设计单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。我们的数码管时钟温度显示系统采用的是12MHz的晶振,如图3-2所示。图3-3时钟芯片与单片机连接3、时钟芯片我们采用DS1302作为主要计时芯片,主要为了提高计时精度,更重要的就是DS1302可以在很小的后备电源下继续计时,并可编程选择充电电流来对后备电源进行充电,可以保证后备电源基
7、本不耗电。我们设计硬件电路时,采用一个纽扣电池进行对时钟芯片供电,达到断电后,时钟继续运行的目的。时钟芯片与单片机的连接如图3-3所示。4、温度传感器采用DS18B20作为温度检测的芯片,DS18B20温度传感器是美国DA1.1.AS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。由于DS18B20采用的是I-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对STC89C52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS
8、18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都5、复位电路设计由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持
9、续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。如图3-5所示。6、数码管显示电路设计数码管内部是由7个条形发光二极管与一个小圆点发光二极管组成,根据这八个二极管的亮暗组成不同的字符。本系统采用八位数码管作为显示模块,数码管相对其他1.CD类的显示器来说,成本比较低廉,省电。两个四位共阴056英寸的数码管作为显示屏。如图3-6所示。图3-6四位共阴数码管图3-7按键电路7、按键控制电路设计本系统采用四个按键作为键盘控制实现界面切换的功能,如图3
10、-7所示。能够实现界面切换、时间校正、闹钟设置等功能。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图3-8所示。抖动时间的长短与开关的机械特性有关,一般为5T0ms。故软件编程时需要注意消除抖动。抖动键盘稳定 后沿抖动图3-8按键抖动过程8、制作电路板制作电路板的过程如下:打印底稿(喷墨/激光打印胶片,或使用光绘菲林)曝光(太阳光30-180秒;紫外线灯4-5分钟)显影(专用显像剂)蚀刻(用热水化开的三氯化铁液体)钻孔(小电钻),焊接。如图3-9所示。图3-9腐蚀与钻孔9、元件清单我们设计的这个系统主要用到STC89C5
11、2单片机作为主控芯片,还有时钟芯片作为计算时间的芯片,温度测量的温度传感器DS18B20,并用数码管来显示,所以本系统用到的主要元件如表3-1.元器件数量元器件数量单片机1块电阻若干个DS13021块纽扣电池1个DS18B201块电容若干个741.S5731块蜂鸣器1个晶振(12M、按键若干个数码管2块表3-1元件清单四、软件设计1、系统软件设计流程图系统主程序首先对系统进行初始化,包括设置定时器、中断和端口;然后数码管显示省电模式。由于单片机没有停止指令,所以可以设计系统程序不断地循环执行上述显示效果。下图是系统的流程图。2、按键控制子程序本系统按键可以实现的数码管界面切换,系统时钟的校正、
12、闹钟的设定,按键的程序需要进行软件的消抖。按键功能如下图4-2所示。第1次按I匚ZC第。次按省电模式;数码管没显示,时间在跳动按键1.I第2次按第3次校数码管显示“年月日”;1401.10数码管显示“时分、温度”;12-3220第4次按翳置“时分”模式;数码管显示“12-32一”设置“月日”模式;数码管显示“一0110”第5次技设置“时分谭良按按旎4设置哪曲“时钟”加一回到第0次的“制电模式”设置时间的“分钟”加一设置“月日”模式硼慨置,数码管砺-OO-OOm设置的闹钟时,恸口一设置时间的“月”加一设置时间的“日”加一数码管显示“时分秒”;12-32-503、主程序主程序是系统运行的主要程序,
13、包括时钟芯片、温度传感器的读取以及数码管显示的程序。主程序开始时要对定时计数器进行初始化以及一些变量的初始化。其流程图如图4-2所示。图3-2主程序流程图4、时钟设置子程序时钟设置子程序主要是由时钟芯片DS1302计算时间并用数码管显示时间。时钟设计主要函数如下:voidread_rtcO(unsignedchari;for(i=0;i7;i+)timedatai=readds1.302byte(readaddi);_nop_();read_ds1.302_byte(read_add0);_nop_();tdi=time_datai16*10+time_datai%16;)15、定时器中断子程
14、序与数码管显示程序定时器的开启需要五个步骤:首先是设置定时计数器的工作模式与工作方式,这里设置为定时器模式0工作模式1。然后给定时器设置初值。接着是把总中断打开(EA=I);再接着是ETO=I;最后是把定时器打开(TRO=I)0其程序如下程序所示:voidinit()TMOD=OxOI;THO=(65536-1000)/256;T1.O=(65536-1000)%256;EA=I;ETO=I;TRO=I;1J7、温度传感器DS18B20主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每IS进行一次,流程图如图4一4。读出温度子程序的主要功能是读出RAM
15、中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。如图4-5所示。图4-4DS18B20主程序流程图图45读出温度子程序流程图五、调试与功能说明1、系统性能测试与功能说明先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。然后用万用表测试,通电检测,检查个芯片电压是否正常,检查无误后,可通电检查数码管亮度情况,一般情况下取背光电压为45.5V即可得到满意的效果。数码管时钟温度系统能够实现预想的功能:用DS1302进行时钟的运行;能够实现界面的切换;能够实现温度检测与显示功能;能够实现设置闹钟与关闭闹钟的功能;能够实现断电后时间继续运行的目的。2、系统时钟误差分析数码管时钟温度系统存在一定的时间误差,但误差非常小,可以忽略;即使由于时间的累计会照成较大的误差,我们可以通过按键去校正时间。