基于无线通信的教室同步时钟
2017-10-30蔡燕玲
蔡燕玲
摘要:历来校园打铃系统在校园时间控制管理方面起主要作用,随着校园任务多样化及人性化发展,所有教室能有时钟并使这些时钟的时间同步,将对校园教学及秩序管理起重要作用。应用单片机及无线通信技术设计的同步时钟系统,可在不影响教室其它设备及布线的基础上,实现多教室时钟显示同步时间。
关键词:单片机;时钟;nRF24L01+
中图分类号:TP319 文献标识码:A 文章编号:1007-9416(2017)08-0016-02
1 引言
校园日常活动中会遇到两个问题。一个是作为全国统一考试的考场,特别是四六级考试时,考生在不同的时间段有不同的任务,理论上所有考生应同步进行。但因各考室采用的石英钟未能完全同步,室外广播的效果有时不太好,实际操作中会出现偏差。另一个就是在教学管理中对上下课时间要求严格,不准提前下课,学校的打铃系统不稳定时教师将自行决定,易造成管理中的麻烦。如果每间教室的时钟都能同步,就能很好地解决一些问题,由此设计了教室同步时钟。
2 设计思路
每间教室的时间要同步,其时钟的信号来源必须是同一个。可以从教室电脑获取网络标准时间,前提是电脑必须打开并联网,多了一层操作,特别作为考场时是不允许的。这里的设计采用单片机应用技术的方法,可以在不牵扯教室其它设备的基础上实现时钟同步。
2.1 总体框图
整个设计由一个主时钟模块和多个从时钟模块构成。标准时钟作为主时钟,各间教室的时钟作为从时钟。由主时钟模块通过无线传输方式发送标准时间信号,各从时钟模块同时接收并显示时间。同步时钟系统结构图如图1所示。
2.2 主时钟模块设计
主时钟模块的作用是提供标准时间,由单片机、时钟芯片ds1302、6位数码管显示器和无线收发nRF24L01+模块组成。
2.2.1 时钟产生
为了保证时间的准确性,采用时钟芯片作为标准时钟的来源。DS1302[1]是美国DALLAS公司推出的一种串行接口实时时钟芯片,计时准确,工作电压范围宽(2.5-5.5V),功耗低,芯片自身还具有对备份电池进行涓流充电功能,可有效延长备份电池的使用寿命。芯片采用3线串行通信方式与单片机连接,在以单片机为主控芯片控制RST、SCLK信号的基础上从I/O引脚传送数据信号。芯片内部有可编程的日历时钟寄存器和31个字节的静态RAM,每次传送数据前需向DS1302写入一个命令字以确定是选择RAM操作还是时钟操作、是读操作还是写操作。DS1302芯片有年星期月日时分秒寄存器,此处只用到时分秒三个寄存器,其寄存器地址分别为时80H(写)和81H(读)、分82H(写)和83H(读)、秒84H(写)和85H(读),对应函数是:
写:
Write1302(0x80,秒值); //向秒寄存器写入秒的值
Write1302(0x82,分值); //向寄存器写入分的值
Write1302(0x84,时值); //向寄存器写入小时的值
读:
ReadValue = Read1302(0x81); //从秒寄存器读秒值
ReadValue = Read1302(0x83); //从分寄存器读分值
ReadValue = Read1302(0x85); //从小时寄存器读小时的值
电路设计中外接三个按键,用以调节时分秒的值,从而校准时间。
2.2.2 时钟显示
主时钟模块可以考虑液晶显示或数码管显示,若时间设定之后大部分时间不使用这个时钟,可采用液晶显示,此处假设作为主考室的时钟,为了方便众人观察需采用LED数码管显示。
MAX7219[1]是7段共阴极LED显示驅动器,采用三线串行方式与单片机接口,其片内含有的段译码器、扫描电路、字段字位存储器等可以减轻单片机负担,且可通过引脚V+与ISET之间所接的外部电阻来控制显示亮度。
单片机通过MAX7219驱动数码管显示,显示函数为:
DisplayChar(uchar digit,uchar character); //在指定数位上显示指定字符
例如“DisplayChar(0x03,'8');”表示在数码管第5位显示字符8。
图2为主时钟模块的标准时钟电路及仿真结果。
2.2.3 时钟参数发送
从DS1302读取当前“时分秒”数据,通过无线收发nRF24L01+模块进行发送。
nRF24L01+[2]是Nordic公司出品的一种2.4GHz ISM波段的通信芯片,工作频率范围是2.400GHz-2.525GHz,支持的空中数据速率有250kbps、1Mkbps和2Mkbps,使用电源1.9-3.6V并有两种电源节能模式适于超低功率的设计,通过配置寄存器值可工作在掉电、待机、发射和接收模式。
芯片有20个引脚,其中6个引脚与单片机连接,其余接固定元件,电路如图3所示。
主时钟模块上的nRF24L01+设置为发送模式,发送“时分秒”三个字节的数据:
TX_Mode();// 配置为发送模式
Write_Buffer(Write_TX_PLD,TX_Buffer,TX_PLD_ Width);//写发送的数据及数据长度。
2.3 从时钟模块设计
在主时钟模块电路的基础上去掉时钟芯片,就构成从时钟模块电路。
为了接收主时钟模块发送来的时间参数,需把从时钟模块上的nRF24L01+设置为接收模式并设置与主时钟模块上nRF24L01+相同的频道、地址、数据速率和数据宽度,由函数Read_Buffer(Read_RX_PLD,RX_Buffer,TX_PLD_Width)接收,并把接收到的时间参数处理后送数码管,显示出与主时钟模块同步的时间。
3 结语
此设计仅限于实验室模型,实际应用中需考虑多种因素。例如考虑信号传播距离需增大发射功率、考虑数据传输时延需在程序中修正时间参数等技术问题,以及时钟显示部分应选用时间格式的数码管等人性化方面的考虑等。
参考文献
[1]徐爱钧,彭秀华,编著.Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践[M].北京:电子工业出版社,2006.
[2]刘晓红,何永洪.基于nRF2401的无线数据通信系统[J].电视技术,2008,(S1):72-73+81.endprint