《定时器的设计论文》word版Word格式文档下载.docx

上传人:b****4 文档编号:16153828 上传时间:2022-11-21 格式:DOCX 页数:26 大小:513.68KB
下载 相关 举报
《定时器的设计论文》word版Word格式文档下载.docx_第1页
第1页 / 共26页
《定时器的设计论文》word版Word格式文档下载.docx_第2页
第2页 / 共26页
《定时器的设计论文》word版Word格式文档下载.docx_第3页
第3页 / 共26页
《定时器的设计论文》word版Word格式文档下载.docx_第4页
第4页 / 共26页
《定时器的设计论文》word版Word格式文档下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

《定时器的设计论文》word版Word格式文档下载.docx

《《定时器的设计论文》word版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《定时器的设计论文》word版Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。

《定时器的设计论文》word版Word格式文档下载.docx

本设计主要设计了一个基于AT89C2051单片机的数字定时器。

在LED数码管上显示要定时的时间,并通过多个控制键用来实现对时间初值的调节。

应用keil软件实现单片机定时器的程序设计,用Proteus中的ISIS软件实现仿真。

该方法仿真效果真实、准确,节省了硬件资源。

1.2设计的任务和要求

(1)定时时间的设置范围为1-99分,开机上电后的隐含值为10分,采用LED数码管显示,定时时间可任意设置。

(2)定时器控制一个交流220V、1A的用电设备,上电时不允许用电设备瞬间通电。

(3)定时时间设定后,启动计时,用电设备通电,同时显示器逐分倒计时。

其间,分个位数码管的小数点每秒闪亮一次;

计时到0分时,切断用电设备电源。

(4)计时误差:

100分误差<

±

10s。

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

2.1数字定时器设计方案论证

基于单片机的数字定时器的设计。

该设计组要由单片机及其电源电路、时钟电路、复位电路、按键电路、继电器驱动电路和LED显示电路等外围电路组成。

系统的模块原理图如下图2-1-1所示:

图2-1-1基于单片机的模块原理图

由图可知,此电路系统设计简单,单片机的外围电路设计简单,并且通过软件定时的方式能使电路定时较为精确,可靠性高。

单片机的芯片型号选择合理,也能使成本大大减小。

2.2系统总体设计

数字定时器的总体电路如图2-2-1,由于此设计要求实现功能不多,所需要的I/O口较少,所以控制器采用单片机AT89C2051。

AT89C2051具有低电压供电、功耗低和体积小等特点。

图2-2-1系统的总体电路图

系统的仿真图如下:

图2-2-2系统的仿真图

2.3系统模块

系统由单片机AT89C2051及其电源电路、时钟电路、复位电路、按键电路、继电器驱动电路和LED显示电路等外围电路组成。

2.3.1电源电路

稳压电路可由串联式直流稳压电路、开关稳压电路和三端稳压电路来实现。

其中三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。

因此采用三端稳压电路来得到单片机所需要的单一+5V电源。

三端稳压电源电路可由LM7805所构成的集成稳压电路来实现。

输出电压和最大输出电流由三端稳压器7805决定,如图2-3-1,电源电路将+12V的电压转换成了+5V的电压,最大输出为1A。

图2-3-1电源电路

在上图中,电解电容C4起到电源退藕,低频滤波的作用,用以消除电源中的低频交流干扰。

而电容C5用于抵消输入线较长时的电感效应,以防止电路中产生自激振荡,其容量较小,一般小于1uF。

电容C6用于消除输出电压中的高频噪声。

7805的管脚图和内部电路原理图如下图2-3-2所示:

图2-3-27805的管脚图和内部电路原理图

2.3.2时钟电路

单片机的时钟设计电路有两种方式,一种是内部时钟方式,一种是外部时钟方式。

外部时钟方式是使用外部振荡器产生的脉冲信号,常用于多片单片机同时工作,以便于多片单片机之间的同步。

而本次设计中只含有一个单片机系统,因此选用内部时钟方式。

单片机的内部时钟方式由引脚XTAL1和XTAL2外接石英晶体和微调电容组成的振荡电路所构成,石英晶体起选频作用。

如图2-3-3所示:

图2-3-3系统的时钟电路

MCS-51单片机内部由一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为51单片机的引脚XTAL1,输出为XTAL2。

如图所示,这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。

其中,电容通常取值为30pF左右,振荡器的频率选12MHz的石英晶体。

2.3.3复位电路

单片机在启动时都需要复位,复位使CPU和内部其他部件处于一个确定的初始状态,从这个状态开始工作。

单片机的复位引脚RST,高电平有效。

在时钟电路工作以后,当外部电路使得RST端出现两个机器周期以上的高电平,系统内部复位。

复位方式有两种:

上电复位和按钮复位。

复位电路工作原理如图2-3-4所示,VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;

几个毫秒后,C充满,10K电阻上电压为0,使得单片机进入工作状态。

工作期间,按下K,C放电,松开K,C又充电,在10K电阻上出现电压,使得单片机复位。

几个毫秒后,单片机进入工作状态。

2-3-4单片机的复位电路

2.3.4按键电路

由于本次设计要求实现对定时器进行预置定时时间的功能,所以在硬件电路中对单片机的两个I/O口外接两个按键,并通过软件来实现。

当外部控制按键K1和K2时,数码管上的预置数相应发生改变。

如图2-3-5所示:

图2-3-5按键电路图

2.3.5继电器及其驱动电路

为了使继电器能按要求正常工作,驱动电路如图2-3-6所示:

图2-3-6继电器及其驱动电路

在图中,当P3.4为高电平时,经过2K的电阻后,Q1的基极为高电平,Q1饱和导通,此时Q1的集电极为低电平,Q2截止,继电器J不工作;

当P3.4为低电平时,Q1截止,+12V的电源电压经过5.1K的电阻后,使得Q2基极的电压大于开启电压,则此时Q2导通,继电器J开始工作。

当Q2截止时,继电器释放磁片,二极管IN4001为了防止继电器此时产生的电流过大而击穿三极管Q2。

3.软件设计

3.1系统总体方案设计

本次课程设计采用的是proteus软件仿真,用Keil软件进行编译。

Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

软件部分由主程序,按键判断子程序,LED数码管显示子程序,倒计时子程序等组成。

3.2程序设计

3.2.1主程序

主程序的主要功能是调用按键判断子程序,负责预置时间的显示,读出并显示出正在计时的时间,判断T0和T1是否定时到一定时间,并相应对ss_flag1和ss_flag2赋值。

其程序流程图如图3-1所示:

图3-1主程序流程图

3.2.2按键判断子程序

按键判断子程序的功能是用来设置预置时间,当功能键按下一次后,再通过加键便可设置个位数;

当功能键按下两次后,再通过加键便可设置十位数。

其程序流程图如图3-2所示:

图3-2按键判断子程序

3.2.3LED数码管显示子程序

数码管显示子程序如图3-3所示:

图3-3LED数码管显示子程序

3.2.4倒计时子程序

倒计时子程序用于对用于对预置的时间进行倒计时,进入该程序后,每过1min的时间,数码管上的数值减1。

当数码管上的预置数减为0时,继电器开始工作。

其程序流程图如图3-4所示:

图3-4倒计时子程序

4实验仿真

进入proteus后,连接好电路,并将程序下载进去。

手动复位后,系统初始仿真图如图4-1所示:

图4-1复位后仿真电路图

当按下KS键一次时,数码管个位显示开始闪烁,此时再按下KAD键可以对定时时间的个位数进行设置,每按一次KAD键,个位数加一;

当再次按下KS键时,数码管十位显示开始闪烁,此时再按下KAD键可以对定时时间的十位数进行设置,每按一次KAD键,十位数加一;

当第三次按下KS键后,退出定时时间预置,数码管显示需要定时的时间。

如图4-2所示:

图4-2定时时间调试仿真

当定时时间减为0后,输出控制继电器位变为低电平,继电器通电,开始工作,如图4-3所示:

图4-3定时后继电器工作仿真图

5电路焊接与调试

5.1、电路板元件清单

名称

编号

个数

AT89C2051

U1

1

1805

U2

二位阴极八位数码管

U3

12M晶振

X1

继电器

RL1

发光二极管

L1

八位排阻

RP1

按键开关

K、KS、KAD

3

晶体管S9013

Q1、Q2

2

电阻

10KR1、R4、R5

2KR2

5.1KR3

电容

30PC1、C2

10UC3、C6

0.1UC4、C5

5.2、电路焊接

检测元器件是否可用,并记录元件的实际值。

按设计好的单元图连接好每个单元器件。

如图

经keil软件仿真后,调试好程序后,产生HEX文件。

在protues中按设计好的电路画好电路图,并将HEX文件下载到80C2051中,上电复位后可得结果如图所示:

将定时器设置为1min,如图所示:

5、误差分析

经测定,我们这组每一分钟与实际一分钟相差0.3s,我们从以下这些方面进行误差分析。

1定时程序中的定时误差,初始化程序中多余指令的执行误差;

2人机界面的访问误差(定时时间可能要再执行一些指令才能执行下面的指令);

3CPU的时钟误差,晶振误差

6、结论总结

这次所做的定时器的设计,我们只是从设计上刚刚满足老师所提出的要求,要求是定时器范围1-99分,开机上电后的隐含值为10分,采用LED数码管显示,定时时间可以任意设置。

定时时间设定后,启动及时,用电设备通电,数码管开始逐分倒计时。

在其中,个位小数点每秒闪亮一个来回;

计时到0分时,切断用电设备。

我们的软件设计是运用top-down的方法,将每个地方模块化、函数化进行设计,最后将软硬件结合,形成所要求的定时器。

课程设计体会

通过对这次对数字定时器的设计,让我了解了设计电路的程序,也让我了解了关于数字定时器的原理与设计理念。

从这次的课程设计中,让我更加明白了对待设计要本着认真、严谨的态度,把每个细节、原理都弄通透,并且要多分析各种应用电路图并进行比较,这样才能提高电子设计能力。

在这次的设计过程中也遇到了许多的障碍和问题,比如调试程序的时候出现许多的错误,但是通过查阅资料和认真的发现错误之后,得到了改正,最后得到了预期的结果。

通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

今后为了提高自己的电子设计能力,要多进行实际动手操作,要充分利用图书、期刊、网络等各种渠道了解新器件、新技术等。

参考文献

[1]康华光,陈大钦,张林.电子技术基础模拟部分(第五版)[M].高等教育出版社.2006.103-108

[2]余发山.单片机原理及应用技术[M].中国矿业大学出版社,2003.31-32

[3]51单片机学习网

[4]康华光,陈大钦,张林.电子技术基础数字部分(第五版)[M].高等教育出版社.2006.103-108

[5]沈亚钧.基于单片机的数字频率计设计[J].山西电子技术,2012,05:

14-17.

[6]曾美云.基于单片机数字时钟系统的设计[J].科技信息,2011,18:

530-532.

[7]朱振华.单片机控制智能定时器[J].中小企业管理与科技,2009,12:

279-280.

[8]张友德.单片微型机原理、应用与实践[M].复旦大学出版社.2006.

[9]陈明荧.8051单片机课程设计[M].清华大学出版社.2004.

[10]谢维成,杨加国.单片机原理与应用及C51程序设计(第二版)[M].清华大学出版社.2009:

127-132.

附件源程序代码

#include<

reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

ucharsec,num,tt,min_sw,min_gw,ss,ss_flag1,ss_flag2;

sbitks=P3^2;

//功能键

sbitkad=P3^3;

//加键

sbitop=P3^4;

//输出控制继电器

sbitgw=P3^0;

//数码管十位

sbitsw=P3^1;

//数码管个位

sbitdd=P1^7;

ucharcodetable[]={

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

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

0x7f,0x6f,};

/************延时函数***********/

voiddelay(uintz)

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=100;

y>

y--);

}

/**********定时器0中断服务程序********/

voidtime0()interrupt1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

tt++;

/**********定时器1中断服务程序********/

voidtime1()interrupt3

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

ss++;

/**********倒计时子函数************/

voidcountdown()

sec++;

if(sec==60)

{

sec=0;

if(min_gw==0)

if(min_sw==0)

TR0=0;

TR1=0;

op=0;

}

else

min_sw--;

min_gw=9;

else{min_gw--;

}

/**************LED数码管显示子程序************/

voiddisplay()

{if(num==0)

if(ss_flag2==1)

{sw=1;

gw=1;

P1=table[min_sw];

sw=0;

delay(5);

sw=1;

P1=table[min_gw];

dd=1;

gw=0;

}

if(ss_flag2==0)

{

if(num==1)

{if(ss_flag1==1)

if(ss_flag1==0)

if(num==2)

{if(ss_flag1==1)

if(ss_flag1==0)

if(num==3)

{if(ss_flag2==1)

/*************按键判断子程序***************/

voidkeypress()

if(ks==0)

{

delay(10);

if(ks==0)

num++;

if(num==3)

{

num=0;

TR1=1;

}

if(num==1)

TR1=0;

if(num==2)

if(num==0)

while(!

ks);

if(kad==0)

if(kad==0)

min_gw++;

if(min_gw==10)

min_gw=0;

min_sw++;

if(min_sw==10)

min_sw=0;

kad);

/**********初始化**************/

voidinit()

{op=1;

sw=1;

gw=1;

num=0;

min_sw=1;

min_gw=0;

tt=0;

ss=0;

TMOD=0x11;

TH0=(65536-5000)/256;

EA=1;

ET0=1;

//开定时器中断

ET1=1;

IT0=0;

//外部中断低电平有效

IT1=0;

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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