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,以便为读取一个8位字节数据做准备,然后在串行时钟下降沿从P0.2端口读取一位时钟数据到C,以进行带进位的累加器循环右移,这样,循环8次后,即完成了一个字节时钟数据的读取。其结果存放到累加器ACC中。具体读取一字节数据的程序如下:
3.3 安全生产天数的计算
本系统中的一项功能就是显示当前的安全生产天数。要得出安全生产天数值,首先应在单片机的内存单元中设定好安全生产天数的起点日期,同时设定一个基准时间,这样就可以计算出设置的安全生产天数起点日期到这个基准时间的天数,也就是起点的累计天数。然后,当每次读取时钟芯片日历时钟数据时,系统就会计算出当前读到的日期到基准时间的天数,也就是当前日期的累计天数,两个累计天数之差即是要显示的安全生产天数。
4 实时监控系统的设计
本系统的主程序用于完成数据的初始化以及T0定时器的设置等,其它任务均放到定时中断程序中来执行。图3所示为其中断服务程序流程图。中断服务程序首先要判断是否有按键按下,即是否进人数据设置状态?如果不是在设置状态,就要从时钟芯片读取要显示的数据,以及把每一项显示缓冲区的数据送数码管显示。如果是在设置状态下,则设置每0.25 s刷新显示一次数据。
若在设置状态下,则意味着有按键按下,那么就要读取相应的按键。本设计中如果按键在设置状态下,不进行相应的数据调整操作,则保存设置的数据,并退出设置状态。读键时,首先读出其键码并保存。然后判断键码稳定否,如果不稳定,说明按键已经响应,则不进行数据调整。如果键码稳定,则再判断是否是调整键,如果是调整键,则调整修改指针,即每按一次调整键,修改指针加一,并进行下一项数据的修改。修改指针一般从安全天数的千、百、十、个到年、
5 数据的显示
本设计中采用16片8位串行输入/并行输出74HC164N和数码管来进行串行移位显示。所用数码管是共阳极的8段数码管。由于分成三组输出来显示数据,因此,设计时把安全生产天数和温度显示部分的74HC164N时钟线连在一起接到单片机的P0.5,而把年月日星期显示部分的74HC164N时钟线连在一起接到单片机的P0.7,另外,把时钟显示部分的74HC164N时钟线连在一起接到单片机的P1.0。
6 结束语
本设计在完成过程中进行了多次的试验,尤其是在对温度的读取方面,得到了很多老师的指导,在此一并感谢。
上一篇:PIC单片机在汽车电动车窗控制器中的应用
下一篇:飞思卡尔 i.MX 系列处理器助力打造全新智能汽车
推荐阅读最新更新时间:2024-03-16 12:29
设计资源 培训 开发板 精华推荐
- 我国科学家建立生成式模型为医学AI训练提供技术支持
- Diodes 推出符合车用标准的电流分流监测器,通过高精度电压感测快速检测系统故障
- Power Integrations面向800V汽车应用推出新型宽爬电距离开关IC
- 打破台积电垄断!联电夺下高通先进封装订单
- Ampere 年度展望:2025年重塑IT格局的四大关键趋势
- 存储巨头铠侠正式挂牌上市:首日股价上涨超10%
- Vishay 推出新款精密薄膜MELF电阻,可减少系统元器件数量,节省空间,简化设计并降低成本
- 芯原推出新一代高性能Vitality架构GPU IP系列 支持DirectX 12和先进的计算能力
- NXP 2.5亿美元收购Aviva,但车载SerDes领域依然处于战国时期
- 应对 AI 时代的云工作负载,开发者正加速向 Arm 架构迁移