第二章 系统的硬件设计与实现
1602通过D0~D7的8位数据端传输数据和指令。显示模式设置(初始化)00111000[0x38]设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:(初始化) 00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)。000001NS N=1(读或写一个字符后地址指针加1并且光标加1),N=0(读或写一个字符后地址指针减1并且光标减1),S=1且N=1(当写一个字符后,整屏显示左移),S=0当写一个字符后,整屏显示不移动。数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)。其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
2.3.8 DS1302工作原理及说明
(1) 时钟芯片DS1302的工作原理
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图7所示。图6为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 (2) DS1302的控制字
DS1302的控制字如表2-4所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
- 16 -
第二章 系统的硬件设计与实现
表2-4 DS1302的控制字
RAM CK RD 1 A4 A3 A2 A1 A0 WR (3) 数据输入输出
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图2-10所示:
图2-10 DS1302读与写的时序图
(4)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2-5。
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下
- 17 -
第二章 系统的硬件设计与实现
的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
表2-5 DS1302的日历、时间寄存器
写寄存器 80H 82H 84H 读寄 存器 81H 83H 85H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CH 12/24 0 10 秒 10分 10 AM/PM 时 秒 分 时 86H 88H 8AH 8CH 8EH 87H 89H 8BH 8DH 8FH 0 0 0 0 0 0 年 10日 0 0 10月 0 0 日 月 星期 年 WP 0 0 0 0 0 0 0 2.3.9 电源电路
为加强其实用性能,本系统采用家用220V交流电源供电,采用LM7805稳压管输出5V电压为温度采集模块、单片机及LCD液晶显示屏供电。电路图如图2-11所示:
图2-11 电源电路
- 18 -
第二章 系统的硬件设计与实现
2.3.10 系统硬件电路
本次仿真使用软件Protues7.0,该软件元件库丰富,元件封装要求相对简单且参数调整方便,除此之外,程序还可进行动态调试。系统仿真电路见附录二所示。
- 19 -
第三章 系统的软件设计
第三章 系统的软件设计
3.1 程序流程框图
开初始化读、写时间日期和温度分离时间日期温度显示显示子程序日期时间修改子程序闰月子程序返回
图3-1 主程序流程图
主程序流程如上图所示。由于LCD1602,DS18B20,DS1302,MAX6675的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。
由于在硬件电路方面上设计了时间调整按键和开关,因此应有对应的时间调整程序。时间调整程序的流程图如图3-2所示。
- 20 -