基于ATMega16单片机闹钟设计_毕业设计Word文档格式.docx
《基于ATMega16单片机闹钟设计_毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于ATMega16单片机闹钟设计_毕业设计Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
三.1 主流程图:
三.2 按键设置程序:
四 液晶屏驱动:
四.1 模块说明:
四.2 通信时序图 3
四.3 字符显示坐标 3
五 AVR定时器CTC模式介绍 3
六 系统调试 3
六.1 可以显示时间 3
六.2 调节时间 3
六.3 系统整体运行正常。
七 附录 3
七.1 电路总图 3
七.2 全部程序 3
摘要
本文主要讲述基于AVR单片机的数字电子闹钟,能够显示年月日时分秒,具备闰年平年补偿及闹铃功能。
时钟信号源采用单片机内部定时器中断实现,该系统原理简单,成本低廉,操作简单。
控制核心为Atmel公司的AVR高性能单片机,程序基于C语言开发,可读性强。
显示核心为字符液晶LCD1602,显示效果稳定。
输入模块为6个独立式按键,可操作性强,便于使用。
关键词:
AVR单片机、LCD1602、数字电子闹钟
错误!
超链接引用无效。
ThispapermainlydescribedthedigitalelectronicbasedonAVRmicrocontrollerabletodisplaywhenthealarmclock,dateofFebruaryalone,havealeapyearprovidescompensationandalarmfunction.Theclocksignalsourceadoptssinglechipinternaltimerinterruptachieve,thissystemtheoryissimple,lowcost,simpleoperation.AtmelcompanycontrolcorefortheAVRhigh-performancesinglechipmicrocomputerbasedonClanguage,programdevelopment,readable.ShowLCD1602coretocharactersLCDdisplayeffect,stable.Inputmoduleforsixindependenttypekey,themaneuverabilityisstrong,easytouse.
Keywords:
AVRmicrocontroller,LCD1602,digitalelectronicalarmclock
一系统构造
根据系统设计要求,本设计由电源模、用户设置键盘、报警模块、显示模块组成,形成实时时钟系统。
总体的框图如下:
AVR单片机
ATmega16L
用户输入按键
报警模块
显示模块
(LCD1602)
电源模块
方案论证
一.1单片机的的选择:
方案一:
使用功能较为简单的89C51单片机作为控制器,其优点是价格便宜。
但是功能相对较为简单,烧录比较复杂,不便于程序调试。
方案二:
使用功能齐全的ATMEGA16单片机作为控制器,内部资源多,价格相对51稍贵,程序烧录容易,便于系统调试。
根据我们设计的实际要求,我需要一个性能较高,稳定性好的单片机,我们选择了ATMEGA16单片机实现设计。
一.2时钟信号源;
方案一:
采用单片机内部定时器实现时钟,不需要外接芯片,成本较低,但是时间精度不高,时间掉电会丢失,只适合一般场合使用;
使用时钟芯片DS1302作为时钟源,该芯片断电后需要通过外接电池或者电容供电,因此电路相对比较复杂,成本也较高。
结合我们应用的实际情况,我们一般要求时钟精度不是很高,只用于一般使用,故选择成本较低的方案一实现。
一.3显示器
使用数码管扫描,显示效果一般,只能显示数字,显示效果单一,不易于使用。
使用LCD1602液晶显示,可以显示一些字符,显示效果较好,易于使用。
综上,我们考虑到用户的使用方便,选择用LCD1602作为显示终端。
一.4报警
通过使用语音芯片实现语音播报来实现报时和闹钟功能。
但是接口比较麻烦,同时需要录音和实现地址检索。
通过三极管控制蜂鸣器发出BEEP声报警,电路简单,价格便宜。
比较适合我们这个设计的应用。
二硬件电路:
二.1按键输入模块
使用六个按键设计,分别为闹钟/时钟切换键,设置键,修改切换键,加,减,确认。
人性化设计,将调节按键分开,使用加、减键分离,更加便于调试。
二.2控制器最小系统:
系统使用ATmega16L作为系统主控芯片,主要接受到按键设置信号。
对报警蜂鸣器和显示器做出相应控制。
单片机不断的扫描按键信息,通过LCD显示时钟和实现设置、闹钟的功能。
二.3显示模块:
使用1602液晶的4线控制方法,减少端口使用,提高硬件资源的充分利用。
偏置电压使用RP1对电源分压输入,可以对液晶对比度进行调节。
4线控制需要对一个字节的数据分两次写入液晶,所以在程序设计中每个字节需要使用2次传输完成。
二.4报警电路设置:
使用PNP三极管驱动蜂鸣器报警。
当单片机输出为低电平时,三级管导通,蜂鸣器发声报警。
这样设计的原因在于,AVR单片机在上电时的电平输出为高电平,这样可以防止在单片机上电时发出蜂鸣声。
三程序设计框图:
三.1主流程图:
三.2按键设置程序:
四液晶屏驱动:
四.1模块说明:
1602引脚说明
主要技术参数:
四.2通信时序图
读时序
写时序
4线式数据传送共分两次实现一个字节数据的传输。
时序参数
四.3字符显示坐标
五AVR定时器CTC模式介绍
CTC(比较匹配时清零定时器)模式
本设计的时间采用AVR单片机内部定时器0的CTC模式实现。
六系统调试
经过分阶段的调试,成功完成系统的调试。
六.1可以显示时间
六.2调节时间
六.3系统整体运行正常。
a.开机正常显示初始化时间2013年9月10号星期2,00:
00:
00闹铃关。
b.通过按键可以设置时间和闹钟。
c.闹钟响起时按下除功能键、设置键外其他键,闹钟停止。
d.显示信息正常。
七附录
七.1电路总图
七.2全部程序
#include<
iom16v.h>
#definebeePORTB.0
alcd.h>
#include<
delay.h>
ints,year;
intsec,min,hour,date,month,xuanze,flog,flog1,week;
intsec0,min0,hour0,bee_0,bee_turn;
unsignedcharkey,moshi;
unsignedcharkey_scan();
unsignedconstdate_run[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//闰年月份
unsignedconstdate_pin[12]={31,29,31,30,31,30,31,31,30,31,30,31};
//平年月份
unsignedcharleapyear(intyear1);
unsignedcharbee_clock();
interrupt[TIM0_COMP]voidtimer0_comp_isr(void)
{
unsignedchartemp,temp1,tt;
s++;
if(s==1000)
{
s=0;
sec++;
tt=bee_clock();
if(bee_turn)
{
if(tt==1)
{
bee=0;
bee_0=1;
}
}
if(bee_0>
0)
bee_0++;
if(bee_0==20)
{
bee=1;
bee_0=0;
}
if(sec==60)
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
temp=leapyear(year);
if(temp==0)
{
temp1=date_pin[month+1];
}
if(temp==1)
temp1=date_run[month+1];
date++;
week++;
if(week==8)
week=1;
if(date==temp1)
{
date=0;
month++;
if(month==13)
{
month=0;
year++;