作息时间控制器 1Word格式文档下载.docx
- 文档编号:19577742
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:21
- 大小:292.57KB
作息时间控制器 1Word格式文档下载.docx
《作息时间控制器 1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《作息时间控制器 1Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
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示意图13D
图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<
reg51.h>
absacc.h>
#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;
//显示小时的个位
P2=0xfb;
P0=dispcode[minite/10];
//显示分的十位
P2=0xf7;
P0=(dispcode[minite%10])|0X80;
//显示分的个位
}
if(flag1==1)
P0=dispcode[hour1/10];
P0=(dispcode[(hour1%10)])|0X80;
P0=dispcode[minite1/10];
P0=(dispcode[minite1%10])|0X80;
}
/*******************************/
/*键盘扫描子程序*/
voidkeyscan(void)
if(P1_0==1)//切换定时与时钟
delay(80);
if(P1_0==1)
{
dodelay(3);
while(P1_0!
=0);
flag1=!
flag1;
if(P1_1==1)//对分调整
if(P1_1==1)
dodelay(4);
while(P1_1!
if(flag1==0)
{
minite++;
if(minite==60)
{minite=0;
}
{
minite1++;
if(minite1==60)
{minite1=0;
if(P1_2==1)//对小时调整
if(P1_2==1)
while(P1_2!
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
//预置计数初值
EA=1;
ET0=1;
TR0=1;
while
(1)
keyscan();
//按键扫描
time_pro();
//时间处理
display();
//显示时间
speaker();
附录二PROTEUS图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作息时间控制器 作息 时间 控制器