基于P87LPC762单片机的电子计时牌设
扫描二维码
随时随地手机看文章
0 引言 随着电子信息技术的飞速发展,电子计时牌已成为电子设备发展的一个标志性功能。顾名思义,计时牌主要用来完成计时功能,即显示实时时钟的时间,这是计时牌的首要任务。但是,现代的电子计时牌也可以集成多种功能于一身,它不仅可以实时显示当前的具体时间,而且还可以显示年、月、日、星期。此外,还有许多特殊的计时牌,它们可以把安全生产天数、倒计时天数、工作环境温度、万年历等等都设计到其中,从而大大扩展了计时牌的应用范围。 1 系统设计原理 本设计采用飞利浦公司的p87lpc762做为微处理器,温度传感器芯片选用lm70,时钟芯片采用ds1302芯片,它们与单片机全部采用串行通信方式。该电子计时牌系统的硬件原理图如图1所示。图中,数据的串行输出显示分成三部分,分别为:安全天数与温度、年月日与星期、时钟数据。系统首先通过单片机读人温度传感器芯片lm70测得的二进制温度数据,然后进行处理计算以得出相应的bcd温度数据,最后与安全天数数据一同通过单片机扩展的串口送到数码管显示。同时通过单片机与时钟芯片ds1302的通信读入日历时钟数据,再把得到的年月日、星期数据通过单片机扩展的另一个串口输出送到数码管显示,同时把时钟数据通过单片机本身自带的串口输出送至显示。数据的设置与修改可通过与单片机相连的三个按键来完成。显示部分采用74hc164n串行输入并行输出移位寄存器来驱动数码管。秒信号和天气信号则采用发光二极管来显示。综上所述,本设计采用的串行通信方式可有效地节省硬件电路设计的空间,从而使设计更为简捷,具有一定的实用性。 2 温度检测 要完成环境温度的检测与显示,首先要用到温度传感器。本设计选用的是lm70温度传感器芯片,由于lm70采用的是 串行通信方式,因此只需三根线与单片机相连即可完成数据的读写。 温度传感芯片的作用就是测取外界的温度值。它首先是把通过热敏电阻从外界感应的模拟温度送入内部的a/d转换器,转换成相应的数字温度值(即二进制温度数据)存放到温度寄存器中,温度传感器lm70所测的温度可通过对其温度寄存器数据的读取来最终将其转化成相应的模拟数据,也就是把二进制数据转换成bcd码数据存放到单片机中。 这里需要注意的是,如果外界环境温度在零度以下(即负温度),那么,同相应温度值的正温度相比,转换后的温度寄存器数据d5~d15位则是正温度的补码。所以,在读出温度寄存器数据后,一定要判断数据的符号位,如果是负温度数据,则要先求补码才能最终将其转换成相应的正确温度值。 3 日历时钟数据的读取 3.1 写程序分析 首先来分析对ds1302的写程序。本设计设置计时的初始时间是2005年1月1日星期六1时0分0秒,即时钟芯片上电后即从这个时间开始走时。那么,要完成初始化时钟,就应当把初始时间写入ds1302芯片中去。图2所示是其写时钟数据流程图。 从图2所示的流程图可以看出,要想把时钟数据写入时钟芯片,首先要写入相应数据的地址,在写入一字节地址后,即可写入一字节相应的数据,依此类推。其具体步骤是首先写入时钟多字节控制寄存器,它的命令字格式如下: 当写入时钟芯片08eh时,同样还要写入允许写操作的命令字00h。写完这两个命令字后,就可以开始写入每个字节时钟数据的地址和相应的时钟数据了。这里需要注意的是:写秒数据地址为80h,分地址为82h,小时地址为84h,依次类推。也就是说,每写完一个字节数据的地址后,其地址应相应加2,以准备下一个字节地址的写入。整个程序可实现七个字节数据的写入,即写一次地址,写一次数据,直到循环计数值为0,便完成了时钟数据的写入。 写入一字节数据时,首先要置循环计数值(这里设为8),一共要串行输入8位数据,每次移入数据前,应先使数据再移一位到c,然后执行以下几条指令: 这几条指令的目的是为了给串行时钟端口输入一个时钟下降沿。只有在下降沿后,一位数据才能写人时钟芯片。这样,循环8次后,一字节的数据就写入到了时钟芯片。整个初始时钟数据写入后,就可以让ds1302自动运行并走时了。 3.2 读程序分析 读一字节子程序同写一字节子程序是一个道理,首先可设置循环计数值为8