作息时间控制器 1.docx

上传人:b****5 文档编号:6302960 上传时间:2023-01-05 格式:DOCX 页数:21 大小:298.49KB
下载 相关 举报
作息时间控制器 1.docx_第1页
第1页 / 共21页
作息时间控制器 1.docx_第2页
第2页 / 共21页
作息时间控制器 1.docx_第3页
第3页 / 共21页
作息时间控制器 1.docx_第4页
第4页 / 共21页
作息时间控制器 1.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

作息时间控制器 1.docx

《作息时间控制器 1.docx》由会员分享,可在线阅读,更多相关《作息时间控制器 1.docx(21页珍藏版)》请在冰豆网上搜索。

作息时间控制器 1.docx

作息时间控制器1

河南理工大学

单片机课程设计报告

 

作息时间控制器

 

姓名:

张春娟

学号:

320319332320

专业班级:

09级电气工程及其自动化

指导老师:

 张宏伟  

所在学院:

河南理工大学成人教育学院

 

2009年9月16日

摘要

本设计是基于AT89S52单片机的基本功能实现作息时间控制功能,采用了4位七段数码管,扫描键盘,蜂鸣器和相应的电路对当前时间以及定时时间的控制,并在设定的时间进行提醒。

本设计使用单片机内的定时器实现计时功能,利用按键分别控制切换当前时间和定时时间、小时+1、分钟+1以及关闭蜂鸣器。

试验采用了一个七段LED数码管显示时间,采用一个蜂鸣器进行到时提醒,一个发光二极管闪烁计秒。

本设计由2个30p的电容和一个11.0592MHz的晶振构成时钟电路,由一个按键和10uF电容构成上电加按钮复位,单片机、时钟电路和复位电路共同构成单片机最小系统。

数码管采用共阴极接法由P0口输出字形,P2口中的高四位输出段选。

P1.0~1.3接入按键对时间按进行操作,由P1.4连接发光二极管闪烁读秒,9013驱动蜂鸣器并由P1.5进行控制。

通过对硬件电路的设计和PROTEUS的仿真,本设计基本实现了:

1.使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED闪动作为秒计数表示。

2.可以设定作息时间,并进行到时提示。

3.能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。

4.可以设置现在的时间及显示定时设置时间。

由于单片机的集成度高、功能强、通用性好、体积小巧、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便,使单片机迅速得到了推广应用,所以学好单片机对我们以后的学习和工作有着至关重要的作用。

 

摘要1

1.概述3

1.1单片机的基本概念5

1.2设计任务及要求5

1.3设计思路5

2.系统总体方案及硬件设计6

2.1系统的总体设计方案6

2.2各模块功能介绍6

2.3各部分电路的硬件设计7

2.3.1时钟电路7

2.3.2复位电路8

2.3.3按键控制电路8

2.3.4读秒指示电路9

2.3.5提醒模块电路9

2.3.6显示模块电路10

3.软件设计11

3.1程序的总流程图11

3.2按键功能子程序流程图12

3.3参数计算12

4.PROTEUS仿真13

4.1仿真过程13

5.课程设计体会15

参考文献17

附录一程序18

附录二PROTEUS图24

 

1.概述

1.1单片机的基本概念

单片机是一种特殊的计算机,它是在一块半导体芯片上集成了CPU、存储器RAM、ROM以及输入输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。

单片机一词是早期SingleChipMicrocomputer(SCM)的直译,它忠实的反映了早期单片机的形态和本质。

随后,按照面向对象、突出控制功能的要求,在片内集成了许多外围电路及外设接口,如定时器/计数器、串行通信控制器等,部分单片机还集成有A/D、D/A装换器和PMW功能。

在硬件结构、指令系统和I/O等设计上有充分考虑了控制的需要,为控制提供了有效的手段,土坯了传统意义上的计算机结构,发展成Micro-controller的体系结构,因此,目前国外已普遍称之为微型控制器MCU(Micro-controllerUnit),并以此与微型处理器相区别。

1987年以后,它又被一些大的半导体器件公司命名为嵌入式控制器(EmbeddedController)。

因采用嵌入技术,即在一片芯片上除了集成CPU外,还嵌入了RAM/ROM或各种I/O功能。

微型计算机的硬件部分是由CPU、存储器、定时器/计数器、并行输入/输出接口电路、中断控制器等大规模IC芯片安装在一个电路板上,加上键盘、显示器等构成的。

典型的单片机的结构如图1所示。

图1(a)AT89S52的PROTUES示意图1

图1(b)单片机的结构示意图

 

1.2设计任务及要求

(1)设计制作一个单片机数字钟及控制电路。

(2)使用4位七段显示器来显示现在的时间。

显示格式为“时分”,由LED闪动作为秒计数表示。

(3)可以设定作息时间,并进行到时提示。

(4)能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。

(5)可以设置现在的时间及显示定时设置时间。

1.3设计思路

本设计采用单片机的P0口作为字形输出口,由内部定时器/计数器T0作为计时器,以P2口作为段选,连接七段共阴数码管进行时间显示。

通过设置4个按钮分别实现对当前时间和定时时间的切换、对小时加一、对分钟加一以及关闭蜂鸣器的功能。

通过P1口连接蜂鸣器实现定时提醒的功能。

 

2.系统总体方案及硬件设计

2.1系统的总体设计方案

图2设计原理框图

本设计采用AT89S52单片机为核心,加上复位电路和时钟电路组成最小系统,在外部连接读秒指示、提醒模块、按键控制以及显示模块,共同实现作息时间控制的基本功能,如图2所示。

2.2各模块功能介绍

读秒指示由单片机输出端连接发光二极管组成,可以实现闪烁计秒功能,即两次闪烁之间间隔一秒。

提醒模块由单片机的输出端驱动蜂鸣器,实现到时提醒的功能。

其中由三极管驱动蜂鸣器,单片机的输出连接三极管的基极。

显示模块采用一个七段共阴数码管,由单片机的P0口输出字形,P2口输出段选信号,用以显示当前时间与定时时间。

按键控制部分使用了4各按键连接单片机的输出口,用以对当前时间和定时时间的切换、小时加一、分钟加一和关闭蜂鸣器。

2.3各部分电路的硬件设计

以下介绍各个部分的电路设计。

2.3.1时钟电路

单片机内部有一个用于构成振荡器的高增益反响放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上接外接时钟源即可构成时钟电路,如图3所示。

图3时钟电路

参数选取:

C1,C2对频率有微调作用,当外接晶振时,C1和C2通常选取10~30pF,当外接陶瓷振荡器时,C1和C2的典型值约为20~50pF。

振荡频率范围一般是1.2~12MHz

2.3.2复位电路

图4复位电路

复位电路采用上电+按钮电平复位,其中电阻的选取R1约为0.2k左右R2约为1k左右。

保证加载RST引脚上的高电平持续两个机器周期,才能使单片机有效地复位如图4所示。

2.3.3按键控制电路

图5按键控制电路

本设计中采用了4个按键进行控制,P1.0-P1.3置为低电平,当按键按下后,相应的端口变为高电平,单片机执行相应的动作。

按键一为时钟与当前时间的切换键,按键二位分钟加一,按键三为小时加一,按键四为蜂鸣器的关闭按钮。

如图5所示。

2.3.4读秒指示电路

图6读秒指示电路

由P1.4口连接发光二极管接地构成读秒指示电路,由程序实现P1.4端口每秒取反,即一秒输出高电平下一秒输出低电平依次循环,二极管亮一秒,暗一秒从而实现读秒功能。

2.3.5提醒模块电路

图7提醒模块电路

提醒模块如图7所示,其中三极管基极连接P1.5,当定时时间与当前时间相同时,P1.5由低电平变为高电平,蜂鸣器工作,实现到时提醒功能。

2.3.6显示模块电路

图8显示模块电路

显示模块由排阻和七段共阴数码管组成,采用动态显示,当要显示信息时,由P0口输出字形段码的低电平,P2口仅一位输出低电平,其余输出高电平,将要显示的字符在LED上显示出来。

在这种显示电路中,一个字位一个字位地轮流点亮各LED,每一个字位停留1ms左右,由于人的视觉暂留,不会察觉有闪烁现象。

这种显示电路简化了硬件线路,降低了成本。

 

3.软件设计

3.1程序的总流程图

图9程序总流程图

3.2按键功能子程序流程图

该程序除了包括按键功能子程序外,还包括蜂鸣器子程序、显示程序以及延时程序等。

按键功能的流程图如图10所示。

图10按键功能程序流程图

3.3参数计算

计时部分采用了计时器T0,方式一,50ms中断一次,中断20次即为1s,计数器初值的计算应为

 

4.PROTEUS仿真

4.1仿真过程

做好电路与程序后,通过编译软件编译后倒入单片机中即可进行仿真(由于软件问题并未在图中做出复位)。

第一步,图中发光二极管闪烁发光,未到定时时间,三极管基极为低电平,蜂鸣器不工作。

如图11所示。

第二步,测试各个按键功能,小时加一、分钟加一以及切换当前时间和定时时间均无问题。

第三步,图中已到定时时间,发光二极管闪烁,三极管基极为高电平,蜂鸣器工作。

如图12所示。

第四步,由于蜂鸣器开启之后未增加关闭功能,防止使用者未听到蜂鸣器提醒或无视其存在,故增加一按键关闭蜂鸣器,关闭之后三极管基极为低电平,蜂鸣器停止工作。

如图13所示。

图11仿真过程1

图12仿真过程2

图13仿真过程3

5.课程设计体会

两个星期的课程设计结束了,从中我们学到了很多东西且感悟良多,体会到了课本联系实际,学以至用,设计思想,实际动手能力都有所提高.作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。

初学单片机时觉得它深奥难懂,枯燥无味,通过课程设计我们体会到了编程的灵活性并对它产生了浓厚的兴趣.以前所学过的知识,都得到了充分的利用。

课程设计从设计电路到调试结束,我们失败很多次也修改很多次,可谓是屡败屡战,可我们并未气馁,我们坚持到了最后,虽然最后做出的电路板虽然不太让人满意,但总算完成了,总算看到我们的成果了,总算可以高兴一番了.

要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

在焊接每个元件的时候一定要注意各个输入、输出引脚,因为每个引脚都是不一样的,只要让各个引脚互相对应,才能得出正确的结果,否则,出现任何一点小的误差就会对整个系统造成毁灭性的打击。

这次课程设计使我懂得了同学间的团结合作,懂得了理论联系实际,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是正确的理论,从而提高自己实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,并决心在以后的学习中加以改正,努力练习,提高自己的动手能力。

在老师的辛勤的指导下,最后我们顺利地完成了这次的课程设计.看见到课本所学知识得以应用,心中满是欢喜,满是激动.这次课程设计让我的实际动手能力得到了大大的锻炼,让我解决实际问题的能力得到了大大的提高,并对本专业的课程充满了浓厚的兴趣,及对以后的学习充满了信心,决定在以后的学习生活中加强练习,端正心态,迎接新的挑战.

 

参考文献

[1]余发山著.单片机原理及应用技术江苏:

中国矿业大学出版社.2003.97-118

[2]康华光.数字电子技术.        北京:

高等教育出版社,2003

[3]陈伟人编著。

MSC-51系列单片机实用子程序集锦.    北京:

清华大学出版社,1993

 

附录一程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

/*七段共阴管显示定义*/

ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,

0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};

/*定义并初始化变量*/

ucharseconde=0;

ucharminite=0;

ucharhour=0;

ucharmstcnt=0;

ucharflag;

ucharhour1=0;

ucharminite1=1;

ucharflag1;

ucharflag2;

ucharcount;

 

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

sbitP1_3=P1^3;

sbitP1_4=P1^4;

sbitP1_5=P1^5;

/*函数声明*/

voiddelay(uchark);//延时子程序

voidtime_pro();//时间处理子程序

voiddisplay();//显示子程序

voidkeyscan();//键盘扫描子程序

voidspeaker();//蜂鸣器

 

/*****************************/

/*延时子程序*/

/****************************/

voiddelay(uchark)

{

ucharj;

while((k--)!

=0)

{

for(j=0;j<125;j++)

{;}

}

}

/**************************/

/*时间处理子程序*/

/**************************/

voidtime_pro(void)

{

if(seconde==60)//秒钟设为60进制

{seconde=0;

minite++;

if(minite==60)//分钟设为60进制

{minite=0;

hour++;

if(hour==24)//时钟设为24进制

{hour=0;}

}

}

}

/*****************************/

/*显示子程序*/

/*****************************/

voiddisplay(void)

{

if(flag1==0)

{

P2=0xfe;

P0=dispcode[hour/10];//显示小时的十位

delay(4);

P2=0xfd;

P0=(dispcode[(hour%10)])|0X80;//显示小时的个位

delay(4);

P2=0xfb;

P0=dispcode[minite/10];//显示分的十位

delay(4);

P2=0xf7;

P0=(dispcode[minite%10])|0X80;//显示分的个位

delay(4);

}

if(flag1==1)

{

P2=0xfe;

P0=dispcode[hour1/10];//显示小时的十位

delay(4);

P2=0xfd;

P0=(dispcode[(hour1%10)])|0X80;//显示小时的个位

delay(4);

P2=0xfb;

P0=dispcode[minite1/10];//显示分的十位

delay(4);

P2=0xf7;

P0=(dispcode[minite1%10])|0X80;//显示分的个位

delay(4);

}

}

/*******************************/

/*键盘扫描子程序*/

/*******************************/

voidkeyscan(void)

{

if(P1_0==1)//切换定时与时钟

{

delay(80);

if(P1_0==1)

{

dodelay(3);

while(P1_0!

=0);

flag1=!

flag1;

}

}

if(P1_1==1)//对分调整

{

delay(80);

if(P1_1==1)

{

dodelay(4);

while(P1_1!

=0);

if(flag1==0)

{

minite++;

if(minite==60)

{minite=0;}

}

if(flag1==1)

{

minite1++;

if(minite1==60)

{minite1=0;}

}

}

}

if(P1_2==1)//对小时调整

{

delay(80);

if(P1_2==1)

{

dodelay(4);

while(P1_2!

=0);

if(flag1==0)

{

hour++;

if(hour==24)

hour=0;

}

if(flag1==1)

{

hour1++;

if(hour1==24)

hour1=0;

}

}

}

if(P1_3==1)//蜂鸣器动作的条件

flag2=!

flag2;

}

 

voidtimer0(void)interrupt1using0//定时器0方式1,50ms中断一次

{

TH0=0x3c;

TL0=0xb0;

mstcnt++;

if(mstcnt==20)

{

seconde++;

P1_4=!

P1_4;//led闪烁

mstcnt=0;//计数器清零

}

}

/**************************/

/*蜂鸣器*/

/**************************/

voidspeaker(void)

{

if(minite1==minite&hour1==hour)

if(flag2==0)

P1_5=1;

elseP1_5=0;

}

 

/**************************/

/*主函数*/

/**************************/

voidmain(void)

{P1=0x00;//初始化p1口,全设为0

TMOD=1;//time0为定时器,方式1

TH0=0x3c;//预置计数初值

TL0=0xb0;

EA=1;

ET0=1;

TR0=1;

while

(1)

{

keyscan();//按键扫描

time_pro();//时间处理

display();//显示时间

speaker();//蜂鸣器

}

}

 

附录二PROTEUS图

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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