单片机的应用扩展及编程
袖珍型电子日历及八路长时间定时控制器

🏠 首页 《无线电》杂志 2005年 🔗 第7期 🔗 第41页 分类:电脑·单片机·通信 🔗 周兴华 🔗

单片机电路有别于传统电路的特点是其软件优势,比如它能在保持电路性能特点的前提下大幅减少元件数量,降低成本,提高可靠性,尽量由软件来完成硬件的功能。笔者设计的袖珍型电子日历及八路长时间定时控制器,充分挖掘了单片机的潜在能力,外围不增加其他集成电路,整机小巧、低耗,性能稳定可靠。

电路概述

电路见图1,核心器件为AT89C52单片机,由它完成电子日历及八路长时间定时控制器的所有功能。电路中,按键S1~S6进行走时时间调整及八路定时时间的设定。4个共阴双位数码管模块DS1~DS4用作显示,其中DS2的小数点作秒点显示。三极管VT1~VT8驱动8个继电器K1~K8,可控制八路负载的定时作息。设计中考虑到单片机的每条I/O线可灌入20mA电流,因此使用P2口直接作8个高亮度数码管的位选通,而不增加三极管作驱动,这样可省下8个三极管。蜂鸣器用作定时提示,当定时到(负载得电工作或失电停止)时,蜂鸣器鸣响1分钟作提示。

图1
图1 🔍原图 (850×538)

软件设计思路及方案

由于该电路设计极为精简,因此丰富而复杂的功能只能由软件实现,这里简介一下软件的设计思路。

作为一个电子日历,其最主要的工作是走时。因此我们首先要建立一个时间基准源,由于AT89C52单片机在6MHz振荡频率时其定时器方式1的最大定时时间为125ms,因此我们取100ms为基准时间,即每100ms中断一次。在中断子程序中,令100ms单元变量累加(见图3)。为了扫描点亮8个数码管,我们另外使用定时器T1进行定时扫描刷新。T1的定时长度为2ms,即每2ms扫描点亮一位数码管,这样8位数码管循环点亮一遍需16ms,由于时间较短(小于人眼视觉暂留特性),故能稳定显示(见图4)。主程序负责判断是否有按键输入、定时到否及进行时间计算、定时输出控制等,为此还需建立一系列的子程序模块,如扫描按键、时间计算及转换、判断定时及输出等,在主程序的主循环中,依次调用这些模块,即可完成整个电子日历的显示及控制(见图2)。本制作完整的源程序及部分程序的详细注释见本期配刊光盘。

图2
图2 🔍原图 (283×361)
图3
图3 🔍原图 (283×343)
图4
图4 🔍原图 (283×416)

制作使用

由于元器件不多,整机可装在很小的印制板上。所有电阻均为1/16W,继电器使用5V超小型的,蜂鸣器为市售有源蜂鸣器,数码管为4个双位共阴高亮度型。该装置可嵌入到各种仪器、设备上使用,定时长度范围在1月内,共可控制八路独立的负载,当定时到时,蜂鸣器鸣响1分钟作提示。若使用过程中曾断过电,则显示屏会以1Hz速率闪烁,提示数据有误。考虑到八路继电器同时工作,因此供电的5V稳压电源电流不应小于1A。

详细的软件包见本期配刊光盘。本文的电路是笔者亲手实践过并调试成功的,具有很强的实用价值,读者基本上不用作修改或稍作调整后即可用于实际工作。

文/周兴华