电子闹钟毕业设计.docx

上传人:b****9 文档编号:24994822 上传时间:2023-06-03 格式:DOCX 页数:31 大小:253.85KB
下载 相关 举报
电子闹钟毕业设计.docx_第1页
第1页 / 共31页
电子闹钟毕业设计.docx_第2页
第2页 / 共31页
电子闹钟毕业设计.docx_第3页
第3页 / 共31页
电子闹钟毕业设计.docx_第4页
第4页 / 共31页
电子闹钟毕业设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

电子闹钟毕业设计.docx

《电子闹钟毕业设计.docx》由会员分享,可在线阅读,更多相关《电子闹钟毕业设计.docx(31页珍藏版)》请在冰豆网上搜索。

电子闹钟毕业设计.docx

电子闹钟毕业设计

电子闹钟毕业设计

摘要:

本设计是以89C51单片机作为控制核心的闹铃系统。

本文大致可以分为三个章节,第一章节讲了用单片机来制作电子闹钟所带来的优势,还有电子闹钟在电子产品中未来的趋势以及本次设计所要实现的课题目标。

第二章节讲了设计的一些思路和该产品包含的一些硬件电路组成。

第三章节讲了各个软件模块之间的设计以及该产品的程序代码。

最后是一些结论体会部分和附录图。

关键词:

PC机;单片机89C51;串行通信;数码显示

 

第一章绪论

1.1引言

电子闹钟是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。

单片机电子闹钟是集电子技术、数字显示技术为一体的高产品,具有按时闹铃,显示清晰直观、走时准确等优点。

首先介绍设计电子闹钟所涉及的主要硬件和特性,然后说明软件设计的思路,程序结构及流程,并在测试软件上进行调试和修改,以完成电子闹钟的基本要求,即可以随意设定起始时间,有秒显示功能,有12/24世制选择,可以设定闹钟,停电时由电池供电等功能。

现代社会电子闹钟发挥着很大的作用,也是它存在和发展的一个重要方面,尤其是在代表集成电路技术的发展方面,通过不断提高电子闹钟的计时的精确度可以极大促进定时技术芯片的发展。

同时电子闹钟与其他嵌入式电子产品一样是微处理器的应用,通过电子闹钟的设计可以很好的掌握电子设计技术。

1.2闹钟的发展趋势

随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。

这些具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。

基于单片机的电子闹钟就是新一代的产品,能够实现远程控制等功能。

它功能强大、体积小、质量轻、灵活好用。

1.3本次设计所要实现的目标

设计一个电子闹钟

1)能随意设定走时起始时间

2)螚指示秒节奏,即秒指示

3)能通过PC机实现远程控制

4)时间预设,定时关机的功能

第二章系统总体设计

2.1系统总体设计思路

先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联调,最终实现一个完整的系统,并制成印刷线路板。

整个系统的设计步骤如下:

在单片机最小系统的基础上,完成按键电路和复位电路的设计。

完成显示电路、数字按键、复位电路。

具有3个功能按键:

1)在复位后的待机状态下,用于启动设定时间参数(对时或定闹);

2)在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于结束当前位的设定,当前设定位下移;

3)在设定最低位(分个位)的状态下,用于结束本次时间设定。

2)+1键,用于对当前设定位(编辑位)进行加1操作,根据正在编辑的当前位的含义(时十位、时个位、分十位、分个位)自动进行数据的上限和下限判断。

例如,对12小时制,小时的十位只能是0、1,如果当前值为0,则按+1键后为1,再按+1键则又回复到0。

把以上各个模块联结起来,整体调试功能。

2.2总体硬件组成框图

整个系统的原理框图如图2.1所示

图2.1系统原理框图

2.3AT89C51的简介

2.3.1AT89C51简介

AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.3.2引脚介绍

AT89C51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

图2.2为AT89C51引脚图

图2.2AT89C51引脚图

此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

主要功能特性:

·兼容MCS-51指令系统

·32个双向I/O口

·2个16位可编程定时/计数器

·全双工UART串行中断口线

·2个外部中断源

·中断唤醒省电模式

·看门狗(WDT)电路

·灵活的ISP字节和分页编程

·4k可反复擦写(>1000次)ISPFlashROM

·4.5-5.5V工作电压

·时钟频率0-33MHz

·128x8bit内部RAM

·低功耗空闲和省电模式

·3级加密位

·软件设置空闲和省电功能

·双数据寄存器指针

2.4系统功能的确定

2.4.1基本功能

系统具有时间、日期、三路定时功能,并可以对时间、日期、定时进行设定,有定时提示音。

要求计时精度尽量提高。

显示格式为:

时间:

“时”(第1、2位)、“分”(第3、4位)、“秒”(第5、6位);

日期:

“年”(第1、2位,如2007年显示为07)、“月”(第3、4位)、“日”(第5、6位);

定时:

“时”(第1、2位)、“分”(第3、4位)、“状态标志”(第5、6位)。

键盘及数码管排列如图2.3所示。

2.4.2扩展功能

该系统可以增加温度传感器,实现温度测量,以实时显示温度,用1、2位数码管显示;还可以增加湿度传感器,实现湿度测量,以实时显示湿度,用5、6位数码管显示。

多路定时器功能也可扩展为对多种家电等电气产品的自动控制,比如电饭煲等;也可利用温度对某些电气产品进行自动控制,比如空调等;还可利用湿度传感器对湿度进行调节。

如图2.3所示。

图2.3系统功能图

2.5时钟电路

实验板的时钟振荡源电路如图2.4所示。

其中JT为11.0592MHz的晶振,改变两电容CB的值即可对此晶振频率进行调节。

该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。

图2.4时钟电路

2.6复位电路

如图2.5所示为实验板的复位电路,当RESET信号为低电平时,实验板为工作状态,当RESET信号为高电平时,实验板为复位或下载程序状态。

由于AT89S52具有ISP的功能,即可以通过并口线直接将程序下载到单片机内,因此,AT89S52具有两种状态,下载程序状态和运行状态。

该复位电路能实现上电自动复位,也能手动复位,一般复位时RESET应保持20毫秒以上高电平,此复位时间由接地电容控制。

图2.5复位电路

2.7键盘电路

如图2.6所示为阵列按键电路,各设置及转换信号由此电路输入,实验板提供了16个按键,由P1口经SN74F244(驱动芯片)输出扩展成4×4的阵列按键,P1.0~P1.3为行线,P1.4~P1.7为列线。

SN74F244有一片选信号线

,当此口线为低电平时,A1~A4与Y1~Y4接通,反之,A1~A4与Y1~Y4断开。

此键盘用扫描工作方式,若有键按下,则相应位端口被拉低为低电平,由于本系统只用了4个按键,所以只需对4个按键进行扫描。

扫描时,先置P3.3口为高电平,向P1口送0EFH(MOVP1,#0EFH),再置P3.3口为低电平,读P1口(MOVA,P1),最后判断P1口低4位哪位是低电平,若某位为低电平,则相应按键被按下,如P1.0为低电平(ACC.0=0),则K1键被按下。

图2.6阵列按键

2.8数码显示电路

如图2.7所示为数码显示电路,实验板使用了6个共阳数码管,P0口为段码信号线,B1~B6为位控线,是P1口经SN74F573(反向驱动芯片,即输入为高电平,则输出为低电平,反之则输出为高电平,该芯片也有一片选信号C,当此信号为高电平时有效)反向得到,再由B1~B6控制晶体管Q1~Q6,以达到控制每位数码管的目的。

系统采用动态显示,先向P0口送第一位数码管需要显示的段码值,再给P1口送0FEH,延时1毫秒使第一位数码管显示,又向P0口送第二位数码管需要显示的段码值,P1口送0FDH,延时1毫秒,使第二位数码管显示。

依次递推,直到最后一位数码管,然后再循环。

改变延时时长可以调节数码管显示的亮度,由于单片机执行速度很快(微秒级),所以看上去数码管一直亮着。

图2.7数码显示电路

第三章系统软件设计

3.1数据单元分配

数据存储单元分配如表3.1所示:

表3.1数据存储单元分配

项目

存储单元

30H

31H

32H

33H

34H

35H

项目

定时1:

开关

定时1:

定时1:

定时2:

开关

定时2:

定时2:

存储单元

36H

37H

38H

39H

3AH

3BH

项目

定时3:

开关

定时3:

定时3:

存显示首地址

堆栈起始单元

存储单元

3CH

3DH

3EH

3FH

50H

标志位单元(20H)分配如表3.2所示:

表3.2标志位单元(20H)分配

位单元

项目

位单元

项目

01H

1、2位数码管闪烁标志位

08H

定时1显示标志位

02H

09H

定时2显示标志位

03H

3、4位数码管闪烁标志位

0AH

定时3显示标志位

04H

0BH

定时1响铃标志位

05H

5、6位数码管显示标志位

0CH

定时2响铃标志位

06H

0DH

定时3响铃标志位

07H

日期显示标志位

0EH

总响铃标志位

3.2时钟程序设计步骤

系统采用模块化结构,主程序只需调用各个子程序模块即可实现相应功能。

其模块结构图如图3.1所示。

图3.1模块结构图

3.3计时子程序模块的实现

当T0中断时,执行本程序,因T0设为50毫秒中断,故中断20次为1秒。

中断程序分别有20次计数(1秒),60次计数(1分),60次计数(1小时),24次计数(1天),28、29、30、31次计数(1个月),12次计数(1年)。

当前位到设定数值时写0或1,下一位加1。

由于本世纪是21世纪,年位前两位是4的倍数,故判断闰年时只需对年的后两位进行计算,能被4整除为闰年,否则为平年,年位只进行加1,大于99时又重新开始。

计时中断流程图如图3.2所示。

图3.2计时子程序流程图图3.3显示子程序流程图

3.4时钟设定子程序模块的实现

当设定时间时,断开T0中断,秒单元清0,进入时、分单元设定。

设定好后重装T0初值,开T0中断。

流程图如图3.4所示。

图3.4时钟设定子程序流程图

3.5程序说明

3.5.1定时器初值计算

因定时器工作于方式1,需要50ms的中断,所以计数初值:

χ=216-t×fosc/12=65536-50×10-3×11.0592×106/12=19456

表示成十六进制为χ=4C00H,故(TH0)=4CH,(TL0)=00H。

3.5.2程序初始化

程序初始化时,清相应内存单元(20H~4FH共48个单元),送时间(00时00分00秒)、日期(07年10月01日)初值,送定时器T0、T1初值,TH0=TH1=4CH,TL0=TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。

3.5.3误差分析及校正

当T0中断时,需重装定时初值,且要加上从断开T0中断到允许T0中断共有13个周期,以减小误差,故理论重装定时初值为(TH0)=4CH,(TL0)=13H。

但该外接晶振电路的晶振频率可调,可能出现误差,所以实际不是这个值。

经调试,当定时初值为(TH0)=4CH,(TL0)=06H时,24小时约慢2秒,所以每当计时24小时之后,给秒单元(30H)送02H,使秒累加时从2加起,24小时就少加2秒,即可使时间得到校正。

3.5.4实现闪动设定

闪动可选用段码送00H实现,也可禁止当前位显示,选通位送0实现。

本设计选用后者实现闪动,用定时器T1进行控制。

3.5.5实现连续加1

先判断键是否松开,若松开,则只执行一次加1程序段,进行单次加1;若未松开则连续执行加1程序段,实现连续加1。

每执行一次加1程序段就调用显示子程序进行延时,以对调节速度进行控制。

本系统以5Hz的速度连续加1,这样能快速对时间、日期、定时进行设定。

3.6实现方式

该时钟程序的功能模块先后实现的顺序为:

主程序→时间模块→显示模块→键盘模块→时间设定及其显示模块→日期及其显示模块→日期设定及其显示模块→定时及其显示模块→定时设定及其显示模块→定时提示音及与显示相冲突的协调模块。

每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功能,再编写下一模块程序。

在与主程序衔接时,主程序和各子程序也需作相应的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对不同内容进行显示。

3.7源程序设计

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P1^0;

sbitwela=P1^1;

sbitkey1=P2^0;

sbitkey2=P2^1;

sbitkey3=P2^3;

sbitkey4=P2^3;

sbitkey5=P2^4;

uchartemp,tt,sec,min,hour;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

voidinit();

voidkeyscan();

voidcounter();

voiddelay(uintz);

voidmain()

{init();

wela=1;

P0=0xfe;

temp=P0;

wela=0;

dula=1;

P0=0x3f;

dula=0;

while

(1)

{

wela=1;

P0=temp;

wela=0;

if(temp==0xfe)//11111110

{

dula=1;

P0=table[sec%10];

dula=0;

}

if(temp==0xfd)//11111101

{

dula=1;

P0=table[sec/10];

dula=0;

}

if(temp==0xfb)//11111011

{

dula=1;

P0=0x40;

dula=0;

}

 

if(temp==0xf7)//11110111

{

dula=1;

P0=table[min%10];

dula=0;

}

if(temp==0xef)//11101111

{

dula=1;

P0=table[min/10];

dula=0;

}

if(temp==0xdf)//11011111

{

dula=1;

P0=0x40;

dula=0;

}

if(temp==0xbf)//10111111

{

dula=1;

P0=table[hour%10];

dula=0;

}

if(temp==0x7f)//01111111

{

dula=1;

P0=table[hour/10];

dula=0;

}

delay

(2);

temp=_crol_(temp,1);

if(temp==0xff)

temp=0xfe;

keyscan();

counter();

}

}

voiddelay(uintz)//延时子函数

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidinit()//系统初始化

{tt=0;

wela=0;

dula=0;

EA=1;

ET0=1;

TR0=1;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

voidtimer0()interrupt1//定时器0中断

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}

voidcounter()//计时子函数

{

if(tt==20)

{

tt=0;

sec++;

}

if(sec==60)

{

sec=0;

min++;

}

if(min==60)

{

min=0;

hour++;

}

if(hour==24)

hour=0;

}

voidkeyscan()//键盘扫描

{

if(key1==1)

{

delay(5);

if(key1==1)

{

TR0=0;

}

while(key1);

delay(5);

while(key1);

}

if(key2==1)

{

delay(5);

if(key2==1)

{

sec++;

}

while(key2);

delay(5);

while(key2);

}

if(key3==1)

{

delay(5);

if(key3==1)

{

min++;

}

while(key3);

delay(5);

while(key3);

}

if(key4==1)

{

delay(5);

if(key4==1)

{

hour++;

}

while(key4);

delay(5);

while(key4);

}

if(key5==1)

{

delay(5);

if(key5==1)

{

TR0=1;

}

while(key5);

delay(5);

while(key5);

}

}

 

结论与体会

在此次电子闹钟设计过程中,在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计、操作中更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法,了解了电路的开发和制作及课程设计报告的编写。

加深了对相关理论知识及专业知识的掌握度,增强了自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻的体会到了理论联系实际的重要性。

最后,我通过此次单片机课程设计不仅仅将我们一学期在单片机课程上的所学很好的应用到了实际设计中,更是将理论知识应用到了实践中,这才是真正的学习,不仅仅是读万卷书更要行万里路,讲知识与实践有机的结合。

十分感谢指导老师为我们提供了这次单片机课程设计的机会,他在我们设计期间给了我们很多帮助。

我也通过此次毕业设计,更清晰更实际的接触到了单片机,以后如果再次利用单片机来做程序,估计已不在像第一次那样陌生了。

再次感谢所有帮助过我并给我鼓励的老师和同学,谢谢你们!

 

主要参考材料:

[1]蒋辉平.《单片机原理与应用设计》.北京:

北京航空航天大学出版社,2007

[2]李鸿等.《单片机原理及应用》.长沙:

湖南大学出版社,2004

[3]楼然苗,李光飞.《单片机课程设计指导》.北京:

北京航空航天出版社,2007

[4]KennethA.Reek.《C和指针》.北京:

人民邮电出版社,2008

[5]李捷,陈典涛等.《一种应用单片机电子闹钟的设计与制作设计》[J],农机化研究,2005

[6]陈明荧.《8051单片机课程设计实训教材》.北京:

清华大学出版社,2004

[7]胡汉才.《单片机原理及其接口技术》.北京:

清华大学出版社,1995

[8]徐淑华,程退安,姚万生.《单片机微型机原理及应用》.哈尔滨工业大学出版,1994

[9]丁元杰.《单片机原理与应用》.机械工业出版社出版,2003

[10]朱定华.《单片机原理及接口技术》.电子工业出版社出版,2004

 

附录1:

系统原理图

附录2:

PCB图

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1