LED数字倒计时器实验报告Word文件下载.docx

上传人:b****5 文档编号:20807586 上传时间:2023-01-25 格式:DOCX 页数:13 大小:295.56KB
下载 相关 举报
LED数字倒计时器实验报告Word文件下载.docx_第1页
第1页 / 共13页
LED数字倒计时器实验报告Word文件下载.docx_第2页
第2页 / 共13页
LED数字倒计时器实验报告Word文件下载.docx_第3页
第3页 / 共13页
LED数字倒计时器实验报告Word文件下载.docx_第4页
第4页 / 共13页
LED数字倒计时器实验报告Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

LED数字倒计时器实验报告Word文件下载.docx

《LED数字倒计时器实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《LED数字倒计时器实验报告Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

LED数字倒计时器实验报告Word文件下载.docx

60之间,用户可根据需要对其进行设置,设置成功后复位初始值为成功设定值。

二、框图设计

2.1LED数字倒计时器主要由AT89C51单片机、晶振电路、复位电路、按键电路、数码管电路、蜂鸣电路组成(如图2.1)。

图2.1LED数字倒计时器系统设计框图

2.2晶振电路分析

1)晶振电路原理:

晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。

当电路中的激励电信号和晶振的标称频率相同时,电路就能输出信号强大,频率稳定的正弦波。

整形电路再将正弦波变成方波送到数字电路中供其使用。

2)晶振电路的特点:

晶振是石英振荡器的简称,英文名为Crystal,晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。

它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。

由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。

图2.2晶振电路原理图

2.3复位电路的分析

1)复位电路的原理:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

RC复位电路可以实现上述基本功能,但解决不了电源毛刺和电源缓慢下降(电池电压不足)等问题,而且调整RC常数改变延时会令驱动能力变差。

左边的电路为高电平复位有效,右边为低电平有效,复位按键为手动复位开关,电容可避免高频谐波对电路的干扰。

2)复位电路的作用:

复位电路是为确保微机系统中电路稳定可靠工作必不可少的一部分,复位电路的第一功能是上电复位。

一般微机电路正常工作需要供电电源为5V±

5%,即4.75~5.25V。

由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

图2.3复位电路原理图

2.4按键电路的分析

1)按键电路的原理:

按键B1/B2/B3/B4断开时,P1.0/P1.1/P1.2/P1.3输入为高电平;

按键B1/B2/B3/B4闭合后,P1.0/P1.1/P1.2/P1.3输入为低电平。

每按一次按键,就会有一次低电平,单片机就会对低电平计数,从而来调节定时时间。

由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,这种抖动对于计算机来说,是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级。

你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了,所以必须运用延时程序消除按键的抖动。

2)按键电路的作用:

每次复位之后,三个两位数码管全部都会显示为0,而与P1.0相接的按钮B1,每次按下一次,就会产生一次低电平,单片机就会计数一次,从而调节倒计时的小时时间,B2则调节分钟,B3则调节秒钟,与这三个按键分别控制数码管的显示倒计时的小时、分钟、秒。

与这三个按键不同的是,按键B3的作用是开始倒计时。

这些按键的功能都是通过编程来控制的。

图2.4按键电路原理图

2.5数码管电路的分析

1)数码管电路的组成:

a)六位数码管:

分别显示小时,分钟和秒钟。

b)含有八个电阻带电源的排阻:

分别与三个数字显示的数码管并联,电源给数码管提供电压,电阻的作用是保护数码管不被烧坏。

c)将PO口的八位与数码管和排阻连载一起的导线,将P2口的六位分别与六位数码管的六个位选引脚接在一起。

2)数码管电路的原理:

7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。

当发光二极管导通时,相应的一个点或一个笔画发光。

控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。

发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管。

共阳极

2.6蜂鸣电路的分析

1)蜂鸣电路的组成:

两个阻值为一千欧姆的电阻,一个阻值为100欧姆的电阻,一个蜂鸣器,一个三极管,一个接地,以及导线。

2)蜂鸣电路的原理:

蜂鸣电路是利用I/O定时翻转电平产生驱动波形对蜂鸣器进行驱动。

在程序上,可以使用TIMER0来定时,将TIMER0的预分频设置为/1,选择TIMER0的始终为系统时钟(主振荡器时钟/4),通过按键可以在TIMER0的载入/计数寄存器内调节设置时间,就能将TIMER0的中断设置设置为倒计时时间,当需要I/O口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0中断的时候对该I/O口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O口的电平设置为低电平即可。

不鸣叫时将I/O口的输出电平设置为低电平是为了防止漏电。

图2.6蜂鸣电路原理图

三、LED数字倒计时器软件设计

3.1LED数字倒计时器的程序流程图

3.1LED数字倒计时器的C语言程序编码

#include<

reg51.h>

sbitkh=P1^0;

//定义kh为与P1.0相连接的按键B1

sbitkm=P1^1;

//定义km为与P1.1相连接的按键B2

sbitks=P1^2;

//定义ks为与P1.2相连接的按键B3

sbitst=P1^3;

//定义st为与P1.3相连接的按键B4

sbitb=P3^7;

//定义b为P3.7

unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//LED数码管从0到F的显示

unsignedchari=0,hour=0,minute=0,second=0;

//定义无符号的变量并赋初值

voiddelayms(unsignedintx)

{

unsignedchara=160;

//定义无符号变量a的值为160,指延时时间为160个及其周期乘以x,160可以为180、200等,自己设置

while(x--)

{

while(a--);

a=160;

}

}//定义延时程序的延时时间为160个及其周期乘以x,避免按键抖动的影响

main()

TH0=(65536-50000)/256;

//设置定时时间对高八位赋值,50000是50000个机器周期,0.05秒

TL0=(65536-50000)%256;

//设置定时时间对低八位赋值,50000是50000个机器周期,0.05秒

TMOD=1;

//定时器模式

TR0=0;

//停止计时

ET0=1;

//开定时器中断

EA=1;

//开总中断

while

(1)

{

P0=table[hour/10];

//显示小时的十位

P2=~32;

//对数码管进行位选和段选,选中显示小时的十位

delayms

(1);

//延时以便于显示

P2=0xff;

//重新给P2口一个高电平,避免误操作

P0=table[hour%10];

//显示小时的个位

P2=~16;

//对数码管位选和片选,选中显示小时的个位

P0=table[minute/10];

//显示分钟的十位

P2=~8;

//对数码管进行位选和段选,选中显示分钟的十位

P0=table[minute%10];

//显示分钟的个位

P2=~4;

//对数码管进行位选和段选,选中显示分钟的个位

P0=table[second/10];

//显示秒钟的十位

P2=~2;

//对数码管进行位选和段选,选中显示秒钟的十位

P0=table[second%10];

//对数码管进行位选和段选,选中显示秒钟的个位

P2=~1;

if(!

kh)//如果小时按键B1按下

{

delayms(200);

//延时200乘以160个机器周期,避免按键抖动的影响

hour++;

//定时时间的小时加一

if(hour>

23)//因为是无符号的变量,减到0之后,再减就会变成ff,大于23

hour=23;

}

elseif(!

km)//如果分钟按键B2按下

minute++;

定时时间的分钟加一

if(minute>

59)//因为是无符号的变量,减到0之后,再减就会变成ff,大于23

59

minute=59;

ks)//如果秒按键B3按下

second++;

定时时间的秒钟加一

if(second>

59)//因为是无符号的变量,减到0之后,再减就会变成ff,大于59

second=59;

st)//开始按加按下

TR0=1;

//开始计时

if(TR0==1&

&

hour==0&

minute==0&

second<

3)//如果在最后2秒

b=!

b;

//开报警

}

}

voidt0()interrupt1//定义中断服务程序

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++;

//控制变量i自加

if(i>

=20)//定时满20次是1秒,即50000个机器周期为一秒

{

i=0;

second--;

//秒减一

if(second>

{

//秒为59

minute--;

//分钟减一

if(minute>

{

minute=59;

//因为是无符号的变量,减到0之后,再减就会变成ff,大于59

hour--;

//小时减一

if(hour>

23)//因为是无符号的变量,减到0之后,再减就会变成ff,大于59,如果小时减过0说明计时结束

{

hour=0;

minute=0;

second=0;

TR0=0;

}

}

}

}

四、LED数字倒计时器仿真图

五、LED数字倒计时器元件清单

元件名称

型号

数量/个

用途

单片机

AT89C51

1

控制核心

晶振

12MHz

晶振电路

电容

30pF

2

电解电容

22μF/10V

复位电路

电阻

10kΩ

按键

5

按键电路和复位电路

数码管

共阳

6

显示器

三极管

2N5088

蜂鸣器

喇叭

8Ω/0.5W

1kΩ

100Ω

330Ω

8

排阻

电源

+5V/0.5A

提供+5V

六、总结

关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等。

在这次实验中遇到的具体的问题:

在proteus中设计好原理图,并运行后发现,数字倒计时器的复位功能无效,经过与组员之间的反复讨论和检验,终于发现问题的症结所在:

复位电路的线路连接错误,其中两条线路交叉,中间少一个节点。

除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。

从这课程设计中,我学会了怎样用你c语言编程来控制单片机,这是以前没学到的东西,此外,还要查阅许多的资料来填补知识的空缺,比如说软件的使用等。

最后老师的提问让我们对单片机有了更为深入、更加清晰的了解。

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

当前位置:首页 > 法律文书 > 判决书

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

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