APP下载

基于ATmega8的多功能定时器设计

2016-12-06吴新杰吕殿基

电子测试 2016年21期
关键词:液晶屏闹钟按键

吴新杰,吕殿基

(北京经济管理职业学院,北京,100102)

基于ATmega8的多功能定时器设计

吴新杰,吕殿基

(北京经济管理职业学院,北京,100102)

目前钟表和定时器的输入多采用五个按键,显示采用字段方式,操作繁琐,人机界面不友好。本文提出一种采用4×4键盘输入,128×64点阵液晶显示的多功能定时器,具有人机界面友好、使用方便灵活、便于功能拓展的优点。文中给出了系统设计方案和主要设计思路,经验证,这种设计确实可行。

ATmega8;单片机;定时器;相对定时;绝对定时

0 引言

钟表和定时器应用极为广泛,通常采用上下键、左右键和确认键五个按键作为输入,在调整时间时,需要反复按键选择功能,然后再逐一改变数值,操作繁琐。另外,显示屏多采用字段显示,虽然廉价可靠,但是人机界面不友好,不便于学习使用。

本文提出了采用4×4全数字键盘输入、128×64液晶点阵显示的设计方案,此方案具有输入简单,界面友好,便于扩展功能等优点。

1 系统结构

本系统由电源模块、单片机单元、显示单元、时钟模块、按键单元、继电器控制单元等组成,系统结构如图1所示。

系统采用ATmega8单片机作为核心控制器,通过模拟集成电路总线(IIC)连接数码管驱动及键盘控制芯片CH452,当有按键按下的时候,CH452触发ATmega8外部中断0(INT0),单片机对按键进行读取、处理。使用CH452的好处是可以扩展单片机输入输出端口,单片机不必时刻对键盘扫描,减少单片机工作量。因为CH452有V1和V2两个版本,V1版本不支持回送ACK信号,为了提高兼容性,使用ATmega8两个普通IO口模拟IIC总线。

液晶屏采用具有内置字库的ST7920驱动芯片128×64点阵液晶屏,通过ATmega8的TWI接口连接。TWI接口与IIC总线兼容,该总线同时连接DS3231时钟模块。DS3231时钟模块单独配备一枚CR2032纽扣电池,在主电源断电的情况下,DS3231仍然能准确计时,并能存储日期、星期和闹钟等信息。单片机通过地址识别液晶屏和DS3231,写入DS3231的地址为D0H,从DS3231读出信息的地址为D1H,向液晶屏写命令的地址是F8H,写数据的地址是FAH。

本系统采用无源蜂鸣器,由单片机PB1口输出约2200Hz的PWM波驱动发声,也可以更换为有源蜂鸣器,这样只需输出高电平就能令蜂鸣器发声。

单片机还通过两个三极管构成复合三级管的形式推动微型直流继电器,通过该继电器可以直接控制照明灯、电风扇等小电流用电设备,也可以用来控制交流接触器,以实现大功率设备的控制。

图1 系统框图

本系统还设计了液晶屏的背光控制电路,分为无、弱、强三档可调。系统使用5V电源,可以从USB口取电,也可以用手机充电器供电,使用方便。

由于系统使用了IIC总线方式连接周边芯片,节约了很多IO口资源,再加上CH452拓展的IO口,使得很容易拓展被控制的用电设备数量,最多可达70余个。

2 软件设计

主函数流程图如图2所示。单片机平时最主要的工作就是读取DS3231的闹钟匹配位、每秒钟刷新一次主屏幕、每秒钟检查一次定时器是否匹配。系统设计了两个闹钟,闹钟时间存储在DS3231中,由DS3231负责检查闹钟与当前时间是否匹配,如果匹配,则对应的寄存器匹配位置1。在响应闹钟之后,应该将DS3231的闹钟匹配位清零。定时器信息并没有存储在DS3231中,检查是否与当前时间匹配的工作也是由单片机完成的。

平时屏幕(主显示屏幕)显示的信息主要有日期、时间、星期和温度,激活的闹钟和定时器都在屏幕有提示,删除后,在屏幕上的提示消失。时间显示可以选择12小时或者24小时模式。

ATmega8中使用了两个中断:外部中断0(INT0)由CH452触发,中断服务程序读取按键代码;外部中断1(INT1)由DS3231触发,每秒触发一次,中断服务程序置位秒标记。秒标记用于主屏幕刷新和闹钟定时器处理。

在主显示屏幕情况下,按下键盘的任意按键都会进入到一级菜单界面,然后等待十秒钟,如果在这期间没有按键按下,屏幕会自动回到主显示屏幕;如果按下一级菜单界面中提示的按键,则进入二级菜单界面。

在二级菜单界面同样会等待十秒钟,如无按键操作就会自动返回主显示屏幕。如果按下二级菜单界面中提示的按键则执行对应功能(如对时间或日期的加1、减1等操作),或者进入三级菜单界面(如直接输入日期、时间,或者闹钟、定时等功能)。

在三级菜单界面会有输入格式提示、当前输入内容、输入检查结果提示等显示内容。输入错误会有错误提示,输入被拒绝并自动返回主显示屏幕;输入正确内容会被接收,之后也会自动返回主显示屏幕。

除中断服务程序外,主要的子函数有:延时子函数、读DS3231子函数、写DS3231子函数、写液晶屏子函数、写CH452子函数、读CH452子函数、键值转换子函数、时间相加运算子函数、检查输入的日期是否合法子函数、检查输入的时间是否合法子函数、检查输入的星期是否合法子函数、12小时/24小时模式转换子函数和各级菜单按键输入管理子函数等。

时间相加运算子函数主要用于完成相对定时功能,比如倒计时功能:用键盘输入时分秒信息后,将自动在当前时间加上输入的时间,从而实现了相对定时功能;再比如定时器功能:输入继电器吸合的绝对时间后,再输入吸合的持续时间,若干小时分钟秒钟,输入完成后,程序将自动在吸合的绝对时间之后再加上吸合的持续时间,从而完成相对定时。

图2 主函数流程图

3 实际测试

通过对实际系统测试,可以确认其能够实现预定功能,计时精度±0.432秒/天,测量气温精度为±3°C,实现了三级菜单输入界面,能够实现倒计时和定时通断电等相对定时功能,具有年月日、星期、温度、时间的显示功能,时间可以选择12小时或者24小时模式。继电器工作正常,可以对小功率用电设备进行通断电控制,具备较多的备用端口。

4 结论

本系统仅用一片8位单片机ATmega8实现了良好的人机界面,易于进行输入、校时、定时和闹钟等操作。由于菜单系统较为复杂,8位单片机实现确实较为吃力,尤其是ATmega8程序存储空间较小,若要在本系统基础之上再增加功能,建议使用ATmega16以上的兼容单片机。

[1]吴新杰. AVR单片机项目教程——基于C语言(第2版)[M].北京:北京航空航天大学出版社, 2013

[2]许洋洋. 多功能工业定时器设计[J]. 自动化技术与应用,2015年第34卷第5期,108-110

Design of multi function timer based on ATmega8

Wu Xinjie,Lv Dianji
(Beijing Institute of Economic Management,Beijing,100102)

At present,the clock and the timer input uses five keys,the display uses the seven segment digital tube,the operation is tedious,the man-machine interface is not friendly.This paper presents a multi function timer with 4×4 keyboard input,128×64 dot matrix LCD display.It has the advantages of friendly man-machine interface,convenient and flexible use, and easy to expand.The system design scheme and main design ideas are given in this paper.

ATmega8;MCU;Timer;relative timing;absolute timing

吴新杰(1972-)男,汉族,河北迁安,硕士,讲师,研究方向:电子信息与通信工程

吕殿基(1972-)男,汉族,山东青岛,硕士,副教授,研究方向:电子信息与通信工程

猜你喜欢

液晶屏闹钟按键
多彩创意闹钟
基于有限状态机的按键检测程序设计
基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计
天然闹钟
小闹钟的提醒
能帮我设个闹钟不等四则
按键消抖在单片机和FPGA实验教学中的应用
一种消除液晶屏高温MURA的工艺研究
基于单片机的点餐系统硬件设计
一种多方向导光按键结构设计