引脚序号 1 2 3 5~8 9 13 16 18、19 26 27 28 30、31 32~39 引脚名称 P1.0 P1.1 P1.2 P1.4~P1.7 RST P3.3 P3.6 XTAL1、XTAL2 P2.5 P2.6 P2.7 ALE、EA P0 作用及功能 DS1302时钟输入 时钟串行数据输入、输出端 时钟芯片复位端 按键设置 芯片复位端口 实现18B20温度的输入 接蜂鸣器,实现闹钟功能 外部晶振端口 实现1602数据和指令选择控制端 1602读写控制端 1602数据读写操作控制位 地址锁存端口,烧写程序的端口 输出数据,控制1602液晶屏的显示 3.2 LCD显示模块设计
1602液晶功耗较小可直接与单片机接口相接,电源直接与电源电路相接为+5V,对比度可调。本设计使用单片机的P0口和P2口与1602进行通信。另外1602有2行显示,每行显示的字符数为16个,可以用于显示字母、数字、符号等,并具有简单且功能较强的指令集,可以实现字符显示、移动、闪烁等功能。
1602液晶与单片机接口电路如图3-1所示:
3.3 时间计算模块设计
DS1302通过三根IO线实现与单片机的通信,依靠2、3脚外接的晶振与其内部的电容配合来产生时钟脉冲的。当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。因此32.768kHz晶振是造成DS1302工作不稳定的主要因素。因其功耗很小,当1脚的主电源超过8脚接的备用电源加0.2V时,由主电源对芯片供电;否则,有备用电源对芯片供电,所以即使电源掉电后通过3V的电池仍能维持芯片精确走时。
DS1302与单片机接口电路如图3-2所示:
图3-2 DS1302与单片机接口
3.4 实时环境温度检测模块
DS18B20通过单总线实现与单片机的通信,系统中的数据交换,控制都由这根线完成。在使用中DS18B20没有用到任何外围元件,可工作在 -15℃~+100℃内。
DS18B20与单片机接口电路如图3-3所示:
图3-3 DS18B20与单片机接口
3.5 报警模块
在本设计中蜂鸣器直接接在单片机P3.6上。报警模块采用单片机输出1.25KHZ的频率从而使蜂鸣器发出声音。
方波图如图3-4所示:
图3-4 方波图
3.6 设置模块
设置模块采用四个按键K1-K4与单片机P1.4、P1.5、P1.6、P1.7接口相接,其中K1为设置模块的选择位,K2是增加键,K3是减少键,K4为退出按键。
独立按键与单片机接口电路如图3-5所示:
图3-5 独立按键与单片机接口
3.7 电源接口部分
采用USB接口从电脑接到电源接口中,拨动开关可控制电路的接通和关闭,并用一个发光二极管作电源指示。
电源接口如图3-6所示:
图3-6 电源接口
四、 系统软件设计
软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。本系统采用具有编写灵活、移植方便、便于模块化设计的C语言编写,并通过Proteus软件进行仿真,完成各种实质性功能的设计。
4.1 主函数
主函数是程序功能总结显示的函数,其主要显示的是时间主要部分和当前实时时间,当按下按键2时1602显示当前温度状态,并延时5s,后返回当前时间显示状态;当闹钟功能打开,实时时间又和闹钟时间相等就会发出嘀嘀的响声并且在液晶屏上有相应的提示,此时按按键4退出;当进入设置状态完成后退出就回到当前时间显示状态。
主函数程序框图如图4-1所示:
图4-1 主函数程序框图
4.2设置模块
设置模块分时间设置、闹钟设置、最高温度报警设置。要先按下按键1才能进入设置模块,然后按下按键1进入设置时间模块;按键2进入最高温度报警模块;按键3进入设置闹钟模块,最后按下按键4退出当前状态。
设置步骤流程图如图4-2所示:
图4-2 设置步骤流程图
4.3 1602液晶屏
1602液晶屏是此设计的主要输出部分,有2行显示,每行16个字符,根据写入的位置而显示,当显示欢迎界面时是流动的,整个屏幕向右移动。
1602LCD流程图如图4-3所示:
图4-3 1602LCD流程图
4.4 软件原理图
软件原理图如附录图二所示:这个设计中,STC89C52RC主要功能是储存程序、根据程序的内容对各个端口进行判断并作出相应的处理;DS1302主要功能是控制年,月,日,时,分,秒的显示效果;LCD1602主要功能是将所要显示的显示出来;DS18B20主要功能是控制温度的显示效果。
通电后,进入欢迎界面,前后延时2.8s,,后显示当前实时时间,若按下按键1就进入调节状态,此时在按下按键1为设置时间状态,按下按键2为设置最大温度报警状态,按按键3为设置闹钟状态,按下按键4为退出调节状态;若按下按键2则是显示当前温度,5s后自动跳回显示当前实时时间。
五、 系统调试过程
系统调试共分为两大部分:一个是软件调试,另一个是硬件调试。其中软件仿真通过Protues实现;硬件部分现在Protel99SE上设计出硬件电路图,画出PCB图,然后再制造出实物。调试方法采用先分别调试各单元模块,调通后再进行整体调试的方法,以提高调试效率。
5.1软件调试
先根据仿真检测当中的元件是否符合电路的设计,在KeilC51写入程序并且修改至编
译正确,在将写好的程序入入到Protues软件单片机芯片上,进行仿真。
仿真结果如下所示:
图a : 显示实时时间 图b: 显示当前温度
图c : 当达到设置的最高温度 图d: 当达到设置的闹钟时间
图e : ,当进入调节状态 图f: 当调节时间
图g : 当调节最高温度 图h: 当调节闹钟
5.2硬件调试
根据仿真后的电路图进行做板,先用万用表检测各元器件是否正确,再焊接电路,完成后检查无误就将程序用单片机板下载到芯片上,后把芯片拔下插入实物板上,即可工作。上电后,拨动电源开关就进入欢迎界面 ,2.8s后进入当前实时时间状态,按下按键1进入调节状态,此时按下按键1为设置时间状态,按下按键2为设置最大温度报警状态,按按键3为设置闹钟状态,按下按键4为退出调节状态;在调节状态时按键2为对应增加键,按键3为对应减键,K4为退出按键;按下按键2后用手捏住DS18B20芯片,在液晶屏上显示的温度有明显的变化,所以判断芯片是良好的。
六、 结论
这次课程设计达到了预期的90%,有显示实时时间和实时温度,但是温度的显示不完全正确,在负数时有三个温度值显示错误,时间的设置逻辑比较啰嗦,没有做到简单化。例外还加了欢迎界面、闹钟功能、最高温度报警功能。下面从软件和硬件两个方面具体说明。