王 红
基于51单片机的多功能电子时钟时间校对功能的设计
王红
摘要:单片机开发板主要由STC89C52RC单片机、DS1302时钟芯片、LCD1602字符液晶显示器等部件构成。本文主要研究了单片机对DS1302的读写操作以及对1602液晶的控制。最终,可实现4×4矩阵按键和红外两种方式实现时间和日期的调整。
关键词:51单片机;keil;多功能电子钟;时间校对;红外遥控
单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型计算机,与计算机相比,单片机只缺少了I/O设备。它的体积小、质量轻、价格便宜,为学习、应用和开发提供了便利条件,在工业控制领域有广泛应用。本实验的目的是单片机如何实现对DS1302的读写操作,使LCD1602液晶显示年月日、星期和时分秒的功能,以及如何通过4×4矩阵按键和红外遥控实现时间和日期的调整。
一、设计基础
单片机的主要内部资源有Flash—程序存储空间、RAM—数据存储空间、SFR—特殊功能寄存器。Flash用于存储程序,可重复擦写且容量大,对于单片机来说,Flash的最大意义是断电后数据不会丢失,功能类似于计算机的硬盘。RAM用于存储程序运行期间产生的和需要用到的一些数据,功能类似于计算机的内存。SFR单片机有很多功能,每个功能都对应着一个或者多个SFR,用户通过对SFR的读写来实现单片机的各种功能。
二、按键校对时间功能的设计
(一)独立按键
常用的按键电路有两种形式:独立式按键和矩阵式按键[1]。独立式按键就是它们各自与独立的输入线相连接。输入线接到单片机的IO口上,以K1为例。K1未按下时,KeyIn1由上拉电阻与+5V相连,此时KeyIn1为高电平。K1按下时,KeyIn1由K1接地,其由原来的高电平变为低电平。CPU可通过检测KeyIn1的电平来判断K1键的状态。
目前绝大多数单片机的IO口都是使用MOS管而非三极管。当内部输出是高电平时,经过一个反向器变为低电平,NPN三极管不会导通,单片机IO口从内部来看,由于上拉电阻R的存在,所以是一个高电平。当外部没有按键按下将电平拉低的话,VCC也是+5v,它们之间有两个电阻但是没有压差,就不会有电流,线上所有位置都是高电平,此时就可以正常读取按键状态。当内部输出是低电平时,经过一个反相器变为高电平,NPN三极管导通,单片机内部IO口就是低电平,此时外部虽然也有上拉电阻的存在,但是两个电阻是并联关系,不论按键是否按下,单片机IO口上输入单片机内部的状态都是低电平,因此无法正常读取按键状态。以此为结论,具有上拉的准双向IO口,如果正常读取外部信号的状态就必须保证自己内部输出的是1,如果是0,则无论外部信号是1还是0,这个引脚读进来的都是0。
(二)矩阵按键
做一个系统设计,假如需要多个按键就会占用大量IO口,就要用到矩阵按键。在独立按键中需要掌握如何编写一个独立按键的程序。
(三)按键消抖
通常按键所用的开关都是机械弹性开关,当机械触电断开闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定接通,此时就会引起一连串的抖动。抖动时间是由按键的机械特性决定的,一般会在10ms以内。为了确保程序对按键的一次闭合或者一次断开只响应一次,必须进行按键的消抖处理。
按键消抖可分为硬件消抖和软件消抖。硬件消抖是在按键上并联一个电容。利用电容的充放电特性对抖动过程中产生的电压毛刺进行平滑处理,但这种方式在实际应用中增加了成本和电路复杂度,所以当检测到按键状态变化后,先等待10ms左右的延时时间,让抖动消失后再进行一次按键状态检测,如果与刚才测试到的状态相同,就可以确认按键已经稳定动作了,利用消抖程序消抖。所以本文采用了软件消抖的方法。当CPU检测到按键状态发生变化后,延时10ms后再对改按键状态进行检测,假如仍为按下状态,就调用相应的按键处理程序。
(四)按键时间的校对
校对用两种方法实现,应用程序和安装如时间同步、时间校准器等时间校对软件[2]。
三、红外遥控校对时间
(一)红外遥控技术
红外遥控技术是将红外线作为载体的遥控方式[3],利用红外线来进行点对点的通信。红外遥控技术利用波长为0.76um-1.5um之间的近红外线来传递控制信号,它具备以下特点:①对环境的影响很小。②有很强的保密性和隐蔽性。③有很好的中远距离操控能力,便于各个方面的使用。④红外线遥控设备结构简单、易于制作、造价低廉、抗干扰能力强、可靠性高。⑤工作电压低,功耗小,外围电路简单等优点,也使其广泛应用于日常生活中。
(二)红外装置的简单发射接收原理
红外装置发的发射接收原理[4]为发射电路通过红外发光二级管发射出经过调制的红外光波;接收电路由红外接收装置(由二极管、三极管或硅光电池组成)接收并将红外发光二极管发射出的红外光波转换为相对应的电信号,再由放大器处理输出基带信号。
(三)NEC协议红外遥控器
红外遥控协议有很多,本文所用遥控器选用的NEC协议。NEC协议的数据格式包括了引导码、用户码、用户码反码、按键键码、键码反码和停止位。停止位一般不进行判断,它主要是起隔离作用,而将用户码和键码取反的作用是为了加强数据的正确性。NEC的每一位数据本身都需要进行编码,在编码完成后再进行载波调剂。所以对于遥控器来说,不同的按键,就是键码和键码反码的区分,用户码的道理也是一样的。因此可以通过单片机程序,将当前的按键码的键码解析出来。
(四)红外遥控校对时间程序的编译
进行红外控制,我们使用两个文件来执行:Infrared.c和Main.c文件。Infrared.c文件主要用来检测红外通信,当发生外部中断被检测出来时,能够进入外部中断进行调整,可以通过定时器1定时,首先进行对引导码的判断,然后对数据码的每个位逐位获取到高低电平的时间,从而可以得知每一位是0还是1,最终解出数据码。Main.c文件的主要功能是把红外遥控器发射出的用户码和键码的信息获取并传送到数码管且显示出来,通过定时器T0中的1ms中断进行对数码管的动态刷新,从而实现时间的校对。
四、结论
本文介绍了一款STC89C52RC单片机控制的多功能电子时钟。本文的研究重点是如何通过4×4矩阵按键和红外遥控分别实现时间和日期的调整。该时钟成本低,功耗小,操作简单,可作为民用电子日历的基础部分,具有较高的使用价值和可扩展性。(作者单位:山东协和学院)
参考文献:
[1]宋雪松.手把手教你学51单片机(C语言版)[M].北京:清华大学出版社,2014.
[2]姜赫.基于51单片机的电子时钟设计[J].数字化用户,2013(30):98.
[3]林伟,张浩,陈杰,等.基于51单片机的智能温控电扇设计[J].数字技术与应用,2014(6):9.
[4]董玉龙,王杰,管冰岩,等.基于51单片机的温湿度监测与控制系统[J].科学导报,2014(7):165.
作者简介:王红(1982-),女,山东德州人,副教授,研究方向:嵌入式、物联网。
项目基金:山东省青少年教育科学规划课题(编号:16AJY056)。