图8 AT24C02管脚
接口电路设计:AT24C02与AT89S52的接口电路如图9所示:其中A0、A1、A2、VSS端口接低电平(接地),VCC接高电平+5伏电压,WP、SCL、SDA分别与电片机的P1.4,P1.5,P1.6端口相接从而实现数据通信。
图9 AT24C02与MCU的接口电路
3. 软件设计
硬件是基础,软件是其灵魂。软件方面程序的编写的主要功能是完成对硬件的控制,来实现对时钟信号、键盘指令的处理以及温度的显示。使机器能够脱离人为控制,由程序来控制,实现动作的自动化,使本设计能够更加人性化。主程序来完成系统初始化、时钟信号的读取、键盘扫描任务、数据的显示。然后根据按下按键的键号来执行不同的功能。系统是利用按键来实现中断的,对于温度和时间,若系统在运行过程中停电,将实时值存入单片机的EEPROM,再次来电后不用重新设定,就能按原来值对温度进行检测且对时间进行调整,增强了芯片对温度和时间检测和控制能力。
3.1 系统软件程序流程图
AT89S52作为中央控制单元时刻与外围电路进行信息处理,DS1302时钟芯片进行时间信息的处理且数字式温度传感器DS18B20进行实时温度检测并将这些信息与单片机进行实时通信,然后传输到LCD1602液晶显示屏进行显示,独立按键作为输入模块,系统软件程序流程图如图10所示[10]。
图10 系统软件程序流程图
3.2 温度数据采集流程图
由于DS18B20单线通信功能是分时完成的,因此具有严格的时隙概念,故读\写时序对系统正常工作具有很大的重要性。系统对DS18B20的各种操作必须分步进行:初始化DS18B20—发ROM功能命令—发存储操作命令—数据处理。根据单总线操作协议,首先要对DS18B20进行初始化,而初始化有严格的时序控制,即总线控制器(TX)发出一个复位脉冲(至少480us的低电平),然后释放总线进入接收状态,总线由5.1K上拉电阻上拉为高电平,探测到I/O引脚上的上升沿后,DS18B20等待15us~60us后,然后发出一个存在脉冲(60us~240us的低电平信号)。温度模块流程图,如图11所示。
图11温度模块流程图
3.3 时间数据采集流程图
时钟芯片DS1302内部主要由RAM、控制逻辑、振荡器、实时时钟以及移位寄存器组成。为了对任意的一组数据传输进行初始化操作,需要用高电平对RST引脚进行处理并且将8位数据植入移位寄存器中去,该8位数据为提供地址和命令信息的数据,数据在是时钟信号的上升沿进行串行输入。不论数据传输发生在写周期还是读周期,也不论数据传输传送方式为单字节传送还是多字节传送,在一开始的8位中指定40个字节中的那个将被访问。在一开始的8个时钟周期把命令字植入移位寄存器这一操作完成之后,其它的时钟在读操作时输出数据,而在写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加最大可达248的数。时间模块流程图,如图12。
图12时间模块流程图
3. 4 按键识别及处理流程图
本设计中按键采用查询法识别按键,程序简单。本系统中含有四个调整按键,分别命名为SET、UP、DOWN、OUT/STOP。在主函数里面查询SET、OUT/STOP两个按键是否按下,UP、DOWN键的功能由SET键激活。这样设计可以减少CPU的工作量,OUT/STOP为多功能键,当SET键未被按下时,OUT/STOP为响铃停止功能,SET按下时OUT/STOP为退出调整模式的功能被激活。按键模块流程图如图13所示。
如图13 按键模块流程图
3.5 LCD液晶显示流程图
LCD的驱动包括初始化操作、写指令、写数据和显示模块的设定等操作。LCD1602有以下几个基本时序:读状态,RS=L,RW=H,E=H2;写指令,RS=L,RW=L,D0~D7=指令码,E=高脉冲;读数据,RS=H,RW=H,E=H;写数据,RS=H,RW=L,D0~D7=数据,E=高脉冲。驱动函数是根据这几个基本时序来完成的[11]。显示模块流程图如图14所示。 52单片机电子万年历设计+流程图+设计仿真图(5):http://www.youerw.com/zidonghua/lunwen_639.html