时间:2024-05-20
毛玮英
摘 要 在忙碌的生活中,我们必须合理的规划时间才能完成繁多杂乱的任务。这时如果有一个小巧方便并且功能多样化的电子钟,来在规定的时间里提醒主人就再好不过了。本次运用单片机与数字电路的相关知识对硬件的功能和软件的编写流程进行详细的介绍,来实现多功能电子时钟的设计。
关键词 51系列单片机;DS1302时钟芯片;LED显示屏
中图分类号 TN99 文献标识码 A 文章编号 1674-6708(2016)160-0146-02
如何才能实现电子时钟的多功能?即保证时间日期、闹钟正常工作的情况下,又添加了温度测量、播放音乐以及分别有按键校时和红外遥控校时等功能。
1 硬件设备
1.1 多功能电子时钟的原理图
1.2 单片机
本次使用的是89c52单片机,在用单片机完成后续的功能前,必须要有电源电路,晶振电路,复位电路。本次电源电路接到5V的电源上。晶振电路采用无源晶振。复位电路采用手动复位。
1.3 显示模块
在原理图中起到显示功能的器件有LED点阵、数码管、1602液晶,最后还有LED小灯作装饰。
首先LED小灯即发光二极管在此设计中用来装饰电子钟。在闹钟定时到后,8个LED小灯实现了流水灯的效果。在选取二极管时要注意,它的正向导通电压是1.8V~2.2V之间,工作电流一般在1mA~20mA之间。所以当电流过大则会出现烧坏的危险。
LED数码管其实就是由a、b、c、d、e、f、g、dp这8段即8个LED小灯组成。它分为共阴极和共阳极两种。如果是共阳极,则可通过控制阴极的高低电平来实现对数码管上数字的显示。
LED点阵其实就是多个LED小灯的组合。本次用的8*8的点阵即为64个小灯组成。LED点阵显示屏作为一种现代电子媒体,具有灵活、高亮度、寿命长、数字化等特点。
1602液晶可以显示两行,每行16个字符。它的工作电压是4.4V~5.5V,工作电流为20MA。
1.4 数字逻辑电路74HC138和74HC245
如何利用单片机的P0端口有条不紊的既控制数码管的显示又控制点阵显示屏和小灯呢?除了在软件上的编程外,还需要结合硬件模块来实现。这就用到了74HC138和74HC245。
74HC245起到了双向电流缓冲器的作用。若LED小灯等直接接在单片机上,很明显超出了单片机所能承受的电流值50mA。所以将它接在数码管,LED小灯和单片机之间。它的作用就是电流缓冲,它自身可以承受8条支路的64mA,并且在其中间起电流缓冲作用,减小了单片机IO口的输入电流。
74HC138也称为38译码器。它的主要功能是解决单片机IO口不够用的问题。单片机的IO口总共有32个,但如果都将引脚直接连在IO口上,很明显仅仅只能用32个。而74HC138有3个输入端,8个输出端。每个输入端都可能有两种状态0或者是1。通过排列组合的知识可以看出3个输入端不同状态的组合后共有八种不同的排列。所以通过3个输入端的状态的不同,选择不用的输出。这样就从需要8个IO口减到了3个。并且,本次设计用了两个74HC138以此来实现对不同显示器件的控制。
1.5 DS1302时钟模块
DS1302是DALLAS公司推出的一款涓流充电时钟芯片,可以提供秒、分、时、日期、月、年等信息。并且具有软件自动调整的能力。可以选择12小时制或24小时制。DS1302的工作电压在2.0V~5.5V之间,并且功耗很低,工作在2.0V的时候,工作电流小于300NA。它有两个电源输入,一个是主电源另外一个是备用电源。时钟芯片DS1302有3根线,分别是使能线CE、数据线I/O、时钟线SCLK。
1.6 温度传感器DS18B20
DS18B20是美信公司的一款温度传感器。单片机使用1-wire总线协议和DS18B20进行通信,最后将温度读出。本次温度值将通过1602液晶显示出来。
1.7 红外校时和按键校时
按键校时即直接利用按键来改变在液晶上的时间日期等信息,但时钟挂在墙上后再想进行校时,还利用按键校时就太麻烦了。如果可以利用遥控器对其校时就再方便不过了。所以,红外遥控器即通过使用38K载波对输入信号进行调制,并使用NEC红外通信协议使得单片机系统具有远距离控制器件的功能。
2 软件设计
上述的硬件按功能可分为显示模块、时钟模块、按键模块、红外模块、温度测试模块等。编程其实就是根据原理图中的各个器件的连接来实现不同功能,将功能在软件层实现,可简化硬件的复杂度。故本次的程序也是模块化编程,来实现各个功能。
由于全部的程序无法在此显示,故只介绍程序的整体思路和定时部分的时间如何分配。
2.1 程序模块化流程
从主程序开始,初始各功能模块。然后判断是否2s上电延时是否到,未到则等待,到2s则刷新显示内容。接着进入主循环执行按键驱动和红外接收驱动,再判断200ms定时延时是否到,未到则执行2s定时判断。到了则执行流水灯和刷新当前时间,以及监控闹钟。判断2s定时是否到,到了则执行温度刷新,未到则返回主循环。
2.2 定时器的分配及定时器的优先级
LED点阵或是数码管何时显示需要定时器来定时,按键的不断扫描也需要定时器定时扫描,并且红外遥控器按键也需要定时器定时。52单片机除了定时器0和定时器1之外,还有一个定时器2。按键扫描每1mA~2mA扫描一次,用定时器0来完成。
红外遥控按键通信的数据码第一个字节是8组560us的载波加上560us的空闲即用户码0x00,第二个字节是8组的560us的载波加上1.68ms的空闲即用户反码0xff,接下来就是键码和简码反码也就是通过按键输入的不同的按键值。并且在数据码前要加上引导码9ms的载波加上4.5ms的空闲,在数据码后加上560us的载波停止位。用定时器1来完成。
按照常理可知红外按键与直接按键不会同时使用,故可将定时器0和1设为同一优先级,而将定时器2设为高于0和1的优先级。
3 软件的调试
先调试显示功能程序,若无误后可继续调试DS1302程序,将其结果显示在液晶上可判断是否有误,无误则接着调试按键程序,通过不同的按键选择数值观察液晶显示上是否一致,温度与红外程序的调试可通过手温和按键来测试。闹钟程序即为到时间后蜂鸣器是否响来测试。
4 软件仿真或板子制作
可利用protus软件进行仿真或制作PCB板子后印制等工序,将程序添加到单片机中来完成功能的实现。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!