电子闹钟毕业设计毕业设计.docx

上传人:b****7 文档编号:15396125 上传时间:2023-07-04 格式:DOCX 页数:23 大小:246.52KB
下载 相关 举报
电子闹钟毕业设计毕业设计.docx_第1页
第1页 / 共23页
电子闹钟毕业设计毕业设计.docx_第2页
第2页 / 共23页
电子闹钟毕业设计毕业设计.docx_第3页
第3页 / 共23页
电子闹钟毕业设计毕业设计.docx_第4页
第4页 / 共23页
电子闹钟毕业设计毕业设计.docx_第5页
第5页 / 共23页
电子闹钟毕业设计毕业设计.docx_第6页
第6页 / 共23页
电子闹钟毕业设计毕业设计.docx_第7页
第7页 / 共23页
电子闹钟毕业设计毕业设计.docx_第8页
第8页 / 共23页
电子闹钟毕业设计毕业设计.docx_第9页
第9页 / 共23页
电子闹钟毕业设计毕业设计.docx_第10页
第10页 / 共23页
电子闹钟毕业设计毕业设计.docx_第11页
第11页 / 共23页
电子闹钟毕业设计毕业设计.docx_第12页
第12页 / 共23页
电子闹钟毕业设计毕业设计.docx_第13页
第13页 / 共23页
电子闹钟毕业设计毕业设计.docx_第14页
第14页 / 共23页
电子闹钟毕业设计毕业设计.docx_第15页
第15页 / 共23页
电子闹钟毕业设计毕业设计.docx_第16页
第16页 / 共23页
电子闹钟毕业设计毕业设计.docx_第17页
第17页 / 共23页
电子闹钟毕业设计毕业设计.docx_第18页
第18页 / 共23页
电子闹钟毕业设计毕业设计.docx_第19页
第19页 / 共23页
电子闹钟毕业设计毕业设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子闹钟毕业设计毕业设计.docx

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

电子闹钟毕业设计毕业设计.docx

电子闹钟毕业设计毕业设计

摘要:

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

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

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

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

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

关键词:

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

 

总体硬件组成框图2

计时子程序模块的实现9

第一章绪论

引言

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

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

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

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

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

闹钟的发展趋势

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

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

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

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

本次设计所要实现的目标

设计一个电子闹钟

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

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

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

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

第二章系统总体设计

系统总体设计思路

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

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

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

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

具有3个功能按键:

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

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

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

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

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

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

总体硬件组成框图

系统原理框图

AT89C51的简介

AT89C51简介

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

引脚介绍

AT89C51具有如下特点:

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

AT89C51引脚图

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

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

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

主要功能特性:

·兼容MCS-51指令系统

·32个双向I/O口

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

·全双工UART串行中断口线

·2个外部中断源

·中断唤醒省电模式

·看门狗(WDT)电路

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

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

·

·时钟频率0-33MHz

·128x8bit内部RAM

·低功耗空闲和省电模式

·3级加密位

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

·双数据寄存器指针

系统功能的确定

基本功能

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

要求计时精度尽量提高。

显示格式为:

时间:

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

日期:

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

定时:

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

扩展功能

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

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

系统功能图

时钟电路

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

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

时钟电路

复位电路

,当RESET信号为低电平时,实验板为工作状态,当RESET信号为高电平时,实验板为复位或下载程序状态。

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

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

复位电路

键盘电路

,各设置及转换信号由此电路输入,实验板提供了16个按键,由P1口经SN74F244(驱动芯片)输出扩展成4×4的阵列按键,~,~。

SN74F244有一片选信号线

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

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

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

阵列按键

数码显示电路

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

系统采用动态显示,先向P0口送第一位数码管需要显示的段码值,再给P1口送0FEH,延时1毫秒使第一位数码管显示,又向P0口送第二位数码管需要显示的段码值,P1口送0FDH,延时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):

标志位单元(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

总响铃标志位

时钟程序设计步骤

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

模块结构图

计时子程序模块的实现

当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时又重新开始。

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

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

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

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

时钟设定子程序流程图

程序说明

定时器初值计算

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

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

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

程序初始化

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

误差分析及校正

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

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

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

实现闪动设定

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

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

实现连续加1

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

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

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

实现方式

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

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

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

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

源程序设计

#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]Kenneth.《C和指针》.北京:

人民邮电出版社,2008

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

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

清华大学出版社,2004

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

清华大学出版社,1995

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

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

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

 

附录1:

系统原理图

附录2:

PCB图

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2