在实物中,我们将vcc1与一颗3V的钮扣电池相连,从而实现时钟实时更新功能。
SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
DS1302有下列几组寄存器:
DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如下图3-4所示。
图3-4各寄存器详情
DS1302的控制字如图3-5所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
图3-5DS1302控制字
DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。
传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。
但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。
3.2.2温度传感器模块
采用新型可编程温度传感器DS18B20进行温度检测,具有抗干扰能力强、温度采集精度高、不需要复杂的调理电路和AD转换电路等特点,只要将DS18B20的I/O口直接与单片机的I/O相连接即可读取数字温度。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20技术性能描述:
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
测温范围-55℃~+125℃,固有测温分辨率0.5℃。
其管脚图如图3-6(a),其仿真图如图3-6(b)所示。
(a)(b)
图3-6DS18B20管脚图及其温度检测模块仿真图
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
其时序图如下图3-7:
图3-7DS1302复位时序图
DS18B20温度值格式表如下,其中S表示符号位。
以下是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
图3-8DS18B20温度值格式
DS18B20中的温度传感器完成对温度的测量,用16位二进制形式表达,举例如下:
图3-9DS18B20温度值16位二进制形式表达
另外DS18B20的ROM指令表详见附表1,RAM指令表详见附表2。
3.2.3LCD显示数据模块
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。
Lm016l的引脚图如图3-10(a)其仿真图如图3-10(b)。
(a)(b)
图3-10LCD1602引脚图及其显示模块仿真图
其中各引脚功能如下表所示:
表3-1lm016l引脚功能图
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7—14
DB0-DB7
双向数据总线7位(其中DB7即最高位,也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
其寄存器选择控制表如下表3-2所示:
表3-2lm016l寄存器选择控制表
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏等)
0
1
都busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
3.2.4串口数据传输显示模块
串行接口SerialInterface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
RS-232也称标准串口,最常用的一种串行通讯接口。
采取不平衡传输方式,即所谓单端通讯。
由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。
所以RS-232适合本地设备之间的通信。
这里我们通过AT89C52的串行传输口TXD,RXD,将温度,时间数据通过MAX232传输到PC上并通过VB界面显示时间温度描绘温度/时间曲线。
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
MAX232引脚图如图3-11(a)硬件设置如图3-11(b),VB显示界面如图3-12。
(a)(b)
图3-11MAX232引脚图及其MAX32仿真图
图3-12单片机温度检测记录系统(vb)
如图3-11(a)与3-11(b)所示,其各引脚功能介绍如下:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
3.3发挥部分的设计与实现
发挥部分包含两个部分。
首先是年月日时分秒及其温度报警上限功能设置,另外还有串口数据传输部分的实现。
3.3.1年月日时分秒,温度报警上限设置功能
年月日时分秒及其温度报警上限功能设置有两种方法,包括硬件按键设置以及红外遥控设置。
3.3.1.1硬件按钮部分
硬件按钮部分设置如图3-13所示,key1:
为功能设置进入按钮,key2:
为功能切换按钮如图3-14,3-15,3-16,3-17,3-18,3-19,3-20,所示。
key3:
为加一功能按键。
key4:
为减一功能按键。
在这一部分中,4个按键按下key1即可进入年设置模式,通过key3与key4键进行加一减一操作。
设置完年份之后,再按下key2即可进入月份设置操作,继续按下则能相继出现日,时,分,秒及温度上限的设置操作,同理,key3与key4对数值设置进行加减。
图3-13硬件按钮设置图3-14设置年份图3-15设置月份
图3-16设置日期图3-17设置小时图3-18设置分钟
图3-19设置秒图3-20设置温度
3.3.1.2红外遥控设置模块
人的眼睛能看到的是可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,红光的波长范围为0.62μm~0.7μm,比红光波长还长的光叫红外线。
红外线遥控器就是利用波长0.76μm~1.5μm之间的近红外线来传送控制信号的。
红外线的特点是不干扰其他电器设备工作,也不会影响周边环境。
调试简单,若对发射信号进行编码,可实现多路红外遥控功能。
红外线发射和接收:
红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组成。
遥控专用集成电路(采用AT89S52单片机)是发射系统的核心部分,其内部由振荡电路、定时电路、扫描信号发生器、键输入编码器、指令译码器、用户码转换器、数码调制电路及缓冲放大器等组成。
它能产生键位扫描脉冲信号,并能译出按键的键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由38KHZ的载波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。
在红外接收器中,采用光电转换器(光电二极管),将接收到的红外光指令信号转换成相应的电信号。
由于技术原因与制作成本,红外遥控发射器是利用现成的电视遥控器。
接收器将接收到的红外频率数据传输到单片机中,进行处理识别红外控制的按键,从而进行时间温度的设置。
3.3.2按键传输串口数据
如下图3-18为串口传输的按键。
四个按键分别对应的功能如下:
Key3:
单次按键传输串口数据,即每触发一次传输一次即时的时间温度数据。
Key4:
触发一次连续传输即时的串口数据。
Key2:
停止串口数据传输按钮。
图3-18按键传输串口数据功能键
4系统软件设计
主函数开始先进行LCD初始化,时钟芯片初始化,串口初始化,之后通过时间,温度处理函数读取时间,温度的数值,判断是否有按键被按下,如果没有运行时间显示函数,温度显示函数,温度报警函数;如果按键被按下,则进入功能设置函数调节时间和温度上限。
总体程序流程图如图4-1所示。
图4-1总体程序流程图
主程序可见附录程序1。
4.1温度传感器流程图
将DS18B20首先要将温度传感器内存初始化,逐字读取传感器RAM中的的温度数据,并将数据转化为十进制的浮点型数据,返回温度值。
其流程图如下:
图4-2温度传感器流程图
温度传感器程序见附录程序2。
4.2时钟芯片流程图
判断时间显示是否正确如果不正确外部电路可从新设置时钟之后进入流程
(1),如果时间显示正确,
(1)读取芯片内部RAM中的提取年、月、日、时、分、秒数据,并将年、月、日、时、分、秒值返回。
图4-3时钟芯片流程图
时钟芯片程序见附录程序3。
4.3红外控制程序流程图
初始化红外接收管,判断是否接收到红外信号,无则结束,有则判断红外信号是否为有用信号,如有有用信号则返回相应的值。
图4-4红外控制程序流程图
红外控制程序见附录程序4。
5测试结果
如上图为我们所搭的实物图,接通电源后,各个模块均正常工作,LCD显示时间温度正常,串口数据正常传送到PC中显示存储。
另外发挥部分的红外遥控器,绿灯为红外遥控的指示灯,在控制时能够正常发亮,显示屏上数据也能随之而变,说明红外遥控器能够正常控制各个功能按钮。
如下图为单片机温度检测记录系统的VB界面,其显示时间温度正常,温度/时间曲线描绘正确,如下图所示。
图5-2温度/时间曲线图
6系统电路存在的不足和改进的方向
电路存在不足之处在于时间温度的串口传输是通过有线进行的,灵活性与局限性较大,如果主系统与从系统距离较大,便使用起来更不方便,改进之处在于,不使用有线传输数据,而是使用无线传输数据,使用功率较大的无线接受发器还可以传送百米甚至几百米以上的距离,在软件方面对无线设置协议便可解决因距离过大而产生的数据出错。
另外,可以考虑同时实现本地存储与异地存储的结合使用。
困为如果要存储在电脑上,虽然美观而且使用方便,但是其功耗及延时将会比存储在本地上要多得多。
所以,这也将是一个改进的方向。
7参考文献
[1]林立.单片机原理及应用——基于Proteus和KeilC.北京:
电子工业出版社,2010
[2]刘炳文.VisualBasic程序设计教程(第四版).北京:
清华大学出版社,2009
[3]