倒计时器说明书

发布时间:2015-04-14 23:00:43

课程设计说明书

目: 基于AT89S52单片机的数字倒计时器

院(系): 信息与通信学院

业: 电子信息工程

学生姓名:

号:

指导教师:

2014 1 2 20



随着时代的发展,单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便,价格低廉等优势,在市场上占有很大的份额,基友广阔的前景。其中AT89S52就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。

本设计详细介绍了基于AT89S52单片机的LED数字倒计时的设计,主要具有如下功能:LED数码管显示倒计时时间,通过按键可以对倒计时设定初值。时间显示小时,分钟和秒。用户可根据需要对其初值进行设置。

本文主要介绍用单片机内部的定时/计数器来实现倒计时器的方法,以单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个简单的倒计时器。本设计主要硬件电路有: 复位电路,按键电路,LED倒计时器原理图。其中主要硬件有AT89S52单片机,数码管,晶振,74HC573芯片,排针和按键等。

关键字:单片机;芯片;复位;晶振



Abstract

With the development of the times, the microcontroller used in electronic products more widely, especially in the 51 series microcontroller, because of its ease of use, low cost and other advantages, account for a large share of the market, based Friends of the broad prospects. AT89S52 which is 51 in the series a more mature model, it is fully compatible with 51 single-chip instruction.

The design details of LED digital countdown AT89S52 microcontroller-based design has the following main features: LED digital display countdown time, you can set the initial value of the countdown through the button. Time display hours, minutes and seconds. Users may need to be set to its initial value.

This paper describes the methods used MCU internal timer / counter to achieve countdown to the microcontroller AT89S52 chip and LED digital core, supplemented by the necessary circuitry to form a simple countdown timer. The main hardware circuit design are: reset circuit, key circuit, LED countdown timer schematic. The main hardware AT89S52 microcontroller, digital control, crystal, 74HC573 chip, pin and buttons and so on.

Keywords: microcontroller; chip; digital pipe; crystal



引言…………………………………………………………………………………………1

1 设计任务与要求………………………………………………………………………1

2 设计方案…………………………………………………………………………………1

3 主要元器件的分析及选用………………………………………………………2 3.1 2位数码管的显示 …………………………………………………………… 2 3.2单片机 AT89S52………………………………………………………………………2

3.3 集成块74HC573………………………………………………………………………3

4 硬件电路分析……………………………………………………………………………4 4.1 复位电路………………………………………………………………………………4

4.2 按键电路………………………………………………………………………………5

4.3 晶振电路………………………………………………………………………………5

4.4 LED倒计时器原理图…………………………………………………………………6

5 制作及调试过程…………………………………………………………………7

5.1 硬件制作及调试………………………………………………………………………7

5.2 软件调试………………………………………………………………………………8

6 总结………………………………………………………………………………………9

………………………………………………………………………………………10

参考文献……………………………………………………………………………………11 ………………………………………………………………………………………12



引言

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广,发展很快。单片机的体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性好,灵活性好,开发较为容易。

由于具有上述有点,在我国,单片机已广泛在工业自动化控制,自动检测,智能仪表仪器,家用电器,机电一体化设备等各方面。这次设计通过对它的学习,应用,以AT89S52芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示数字,是现代社会应用广泛的计时工具,在航天,工厂,医院,学校等事业单位。在人们的生活中也发挥着重要的作用。

本文主要介绍用单片机内部的定时/计数器来实现倒计时器的方法,以单片机AT89S52芯片和LED数码管为核心,系统包括2位共阴数码管HSN-5621AS显示电路,复位电路,按键电路,电源电路,晶振电路以及开关控制电路几部分,构成了一个简单的单片机倒计时器。该系统不仅具有硬件设计简单,工作稳定性,而且还具有价格低廉等特点。

1 设计任务与要求

本次设计的任务与要求是,使基于AT89S52单片机的LED数字倒计时器主要具有如下功能:

1LED数码管显示倒计时时间。

2)通过按键可以对倒计时设定初值。时间显示小时,分钟和秒。用户可根据

需要对其初值进行设置。

2 设计方案

利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒、的倒计时。该方案节省硬件成本,且能使读者在单片机方面有一个更深层次的了解。LED数字倒计时器以AT89S52单片机为核心,系统包括2位共阴数码管HSN-5621AS显示电路,复位电路,按键电路,电源电路,晶振电路以及开关控制电路几部分,LED数字倒计时器设计框图如下:

1 LED数字倒计时器设计框图

3 主要元器件的分析及选用

3.1 2LED数码管显示

本项目设计采用了2位共阴数码管HSN-5621AS显示电路,在设计2LED显示时,为了简化电路,降低成本,采用动态显示方式,6LED显示器共用一个8位的I/O2LED数码管的位选线分别由相应的P0.0~P0.5控制,而将相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。译码显示电路将“时”、“分”、“秒”显示数字进行校对调整。

2 2LED数码管显示

3.2 单片机AT89S52

AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash256字节RAM32 I/O 口线,看门狗定时器,2 个数据指针,三个16 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

AT89S52MCS—51系列完全兼容,它能以3V的超低电压工作,晶振时钟最高可达24MHZAT89S52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0P1P2P3.31引脚需要接高电位使单片机选用内部程序存储器。第9引脚是复位电路,要接一个上电手动复位电路;第40引脚为电源端VCC,接+5V电压,第20引脚为接地端VSS,通常VCCVSS引脚之间接0.1uF高频滤波电容。第18,19引脚之间接上一个12MHZ的晶振为单片机提供时钟信号。

3 AT89S52单片机

3.3 集成块74HC573

74HC573 是八数据锁存器,主要用于数码管,按键等的控制。它的八个锁存器都是透明的D型锁存器,当使能端(G)为高时,Q输出将随数据(D)输入而变,当使能端为低时,输出将锁存器在已建立的数据电平上。输出控制锁存器的内部工作,即老数据可以保存,甚至当输出被关闭时,新的数据也可以置入,这种电路可以驱动打电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口,特别是适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。它有20个引脚,1引脚为低电压激活芯片;2~9引脚是数据的输入脚从D0~D710引脚接GND11引脚是高电压激活芯片;12~19引脚是数据的输出脚;20引脚接VCC

4 集成块74HC573

4 硬件电路分析

4.1复位电路

复位是单片机的初始化操作,只需给AT89S52的复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可得单片机复位,复位时,PC初始化为0000H,使单片机从OUT单元开始执行程序。除了进入系统的正常初始化之外由于程序运行出错或操作错误而使系统处于死锁状态,为摆脱死锁状态,也需按复位键使得RST脚为高电平,使单片机重新启动。

5 复位电路原理图

4.2 按键电路

按键电路的按键功能说明:

1S开关用于控制总电路的启动。

2S1用于设置小时时间的开关。

3S2用于设置分钟时间的分钟

4.3 晶振电路

晶振与单片机的管脚XTAL0XTAL1构成的振荡电路中会产生谐波(也就是不希望存在的其它频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡的稳定性。为了电路的稳定性起见,ATMEL公司只是建议在晶振的两处管脚处接入两个10pf~50pf的瓷片电容接地来削弱谐波对电路的稳定性的影响,所以晶振所配的电容在10pf~50pf之间都是可以的,但是主流是接入两个33pf的瓷片电容,所以此次电路用33pf

6 晶振电路原理图

4.4 LED倒计时器原理图

7 LED倒计时器原理图1

8 LED倒计时器原理图2

5 制作及调试过程

5.1 硬件制作及调试

应用系统设计完成之后,要进行硬件调试和软件调试。软件调试可以利用开发及仿真系统进行,硬件的调试主要是把电路各种参数调整到符合设计要求。具体如下:

1)先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。

2)利用万用表或逻辑测试仪器,检查电路中的各个器件以及引脚是否连接正确,是否有短路故障。

3)先要将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口线路是否正常。

5.2 软件调试

软件部分使用汇编语言或C 语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。Keil C51 是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。软件部分主要分为以下几个步骤:

1)首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合,然后创建一个工程保存到文件夹中。

2)建立一个源程序文件,输入程序加入工程为并且工程选择目标器件(AT89S52;

3)工程项目设置软硬件调试环境,即设置晶振,建议初学者修改成12M,因12MHZ 方便计算指令时间。然后在Output 栏选中Create HEX File,使编译器输出单片机需要的HEX 文件。

4)工程项目创建和设置全部完成,点击保持并编译源文件;

(5) 源程序如果编译通过,表明语法正确,如果程序不能正常运行显示错误,这时需要我们修改程序错误的地方,还需要对其逻辑功能进行调试,程序没有错误就可使用PRDGISP把程序烧入到单片机中。

6 总结

本次课设让我学到了很多的东西,刚刚开始接触接单片机的时候完全是一头雾水,什么的不懂,不懂倒计时器原理,不懂怎样制作,不知道怎样改程序烧程序这些。后来通过查阅资料和问同学才弄懂了制作单片机的方法。

本次课设使用的单片机是AT89S52,要做好单片机设计,首先要对AT89S52单片机的基础知识有有一定了解。要知道他的工作方式以及各个管脚的定义。如:它有4个八位的并行双向I/O端口,分别记作P0P1P2P3,31引脚需要接高电位使单片机选用内部程序存储器。第9引脚是复位电路,要接一个上电手动复位电路;第40引脚为电源端VCC,接+5V电压,第20引脚为接地端VSS,通常VCCVSS引脚之间接0.1uF高频滤波电容。第18,19引脚之间接上一个12MHZ的晶振为单片机提供时钟信号。知道了这些还要知道实现倒计时的工作原理。它由复位电路、晶振电路、按键电路,六位数码管显示电路组成;以及涉及到得元器件有哪些,如AT89S574H573、数码管等等。74HC573是一个锁存器,起到了锁存数据作用。当一个数据来时,先锁存起来数码管亮,要等下一个数据来之前这个数据不会消失。知道了整体布局就是做板,烧程序的部分。当然程序调试才最重要的一部分,要懂程序还要会改程序,给它的管脚定义一一对应,不然就无法调试成功。以及实现相关功能的程序。在调试的是也到了很多的问题,当时没有显示结果,不知道是板出了问题还是程序出了问题,后来通过慢慢的尝试,一步一步的来,先检查板是否有短路的地方,硬件部分没有问题。那就是程序的问题,后又慢慢的改才得以成功。

这次实验也让我摆脱了单纯的理论知识学习状态,通过与实际设计结合运用我综合所学的专业基础知识提高了解决实际工程问题的能力,同时也提高了我的查阅资料,设计规范,电脑的使用等其他专业能力的水平,让我对单片机这方面的知识有了一个整体性的了解,对实验的整体布局能力也得到了提高。不仅懂得了如何取舍,怎样布局,也让我也在本次学习中学到了丰富的经验,并且对学习有了一个新的认识,学习不能仅仅局限于学术方面,对于实际应用也要有一定的了解。

总体来讲,这次实验让我对大学所学的知识做了一个充分的整合,弥补了我大学知识的断层。使知识完整的展现在了我的脑海中,让我对所学的知识有了更深一个层次的了解,同时也希望我能在日后的工作中,不断完善自我,取长补短,积累经验,让自己达到一个更高的层次。

在本次试验中,我特别感谢学校与老师培养了我,通过有关老师的指导和督促,使我的综合能力得到一个跨越式的提高,没有他们的培养我也不可能完成本次实验。同时也感谢我身边的朋友与同学,感谢他们能陪我一起学习,一起进步,同时也让我明白许多人生道理,感谢他们对于此次设计以及平时生活中对我的帮助。生活并不一定会一帆风顺,但我会在的生活中再接再厉,让自己的综合能力达到一个新的层次。不辜负学校与老师们的期望。

感谢的父母,父母是我人生的第一个导师,没有他们孜孜不倦的教育和在我背后默默无闻的付出与支持,不辞辛苦,就没有我的今天,是父母教会了我人生的道理。在这里我讲想他们表达我最崇高的敬意。

当然在本次实验中我参考了大量的资料,在此,我由衷的感谢学术界的前辈们!

参考文献

[1]徐爱钧等.单片机原理实用教程——基于Proteus虚拟仿真(第二版).北京:电子工业出版社,2009.

[2]孙育才.MCS-51系列单片微型计算机及应用(第三版).南京:东南大学出版社,1997.

[3]徐爱钧,彭秀华.单片机高级语言C51应用程序设计.北京:电子工业出版社,1998.

[4]高峰.单片微机应用系统设计及实际技术.北京:机械工业出版社,2004.

[5]李刚,林凌. 8051兼容的高性能,高数单片机——C8051FXXX.北京:北京航天航空大学出版社,2001

[6]余永权.ATMEL89系列单片机应用技术.北京.北京航空航天大学出版社,2005.

[7]马忠梅等.单片机C语言应用程序设计.北京:北京航空航天大学出版社,2005.

[8]林立等.单片机原理及应用——基于ProteusKileC.北京:电子工业出版社,2009.

[9]李群芳,肖看.单片机原理接口与应用(第二版).北京:清华大学出版社,2010.

[10]陈光东,赵性初.单片微型计算机原理与接口技术.武汉:华中科技大学出版社,1999.

附录一:LED倒计时器PCB

附录二:程序清单

#include

#define uchar unsigned char /*宏定义 */

#define uint unsigned int /*宏定义 */

uchar hour,hour_h,hour_l; /*定义小时,小时的高位,小时的低位*/

uchar min,min_h,min_l; /**/

uchar sec,sec_h,sec_l; /**/

uchar int_num; /*定时溢出作用标号*/

sbit k1=P1^0; /*定义了 p1.2为分增1键,用在调时中断里*/

sbit k2=P1^1; /*定义了 p1.3为时增1键,用在调时中断里*/

void delay(uchar time); /*延时子函数声明*/

void display(); /*显示子函数声明*/

void inter_init(); /*定时器初始化子函数声明*/

void time24();

/****专用数码管显示表***/

uchar code duma[]={0xfD,0x0D,0xdB,0xf3,0x67,0xb7,0xbF,0xe1,0xfF,0xf7};

uchar code wema[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

//---------------------延时子函数--------------------------------

void delay(uchar time) /*延时子函数*/

{

uchar time_1;

for (;time>0;time--)

for (time_1=100;time_1>0;time_1--);

}

//---------------------初始化T0函数--------------------------

void time0(void) interrupt 1 /*定时器T0服务子程序*/

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

int_num++;

}

//---------------------定时器函数--------------------------

void inter_init() /*定时器初始化子函数*/

{

EA=1; /*开总中断*/

EX0=1; /*开外部中断0*/

ET0=1; /*打开定时器T0*/

TMOD=0x01; /*工作方式1*/

TCON = 0x00; /*触发方式*/

IP = 0x01; /*中断优先级别,T0优先*/

TH0=(65535-50000)/256; /*置初值,大约50ms一个中断 */

TL0=(65535-50000)%256;

TR0=1; /*置位TR0,启动定时器0*/

}

//---------------------24小时时间自加 --------------------------

void time24() /*时间递增*/

{

if(int_num==20) /*值满20,大约就是一秒的时间。*/

{ /* 其值设为2,则定时时间快10倍,可做毫秒计时*/

int_num=0;

sec--; /*秒值加1*/

if(sec==0) /*如果秒值满60,就归0*/

{

sec=59;

min--; /*分值减1*/

if(min==-1)

{

min=59;

hour--; /*时值减1*/

if(hour==0)

{

hour=24; /*0时回到24*/

}

}

}

}

}

void key(void) //按键调整子函数

{

if(k1==0)

{

EA=0;

delay(10);

if(k1==0)

{

min++;

while(!k1);

if(min==60)

{

min=0;

}

}

}

if(k2==0)

{

EA=0;

delay(10);

if(k2==0)

{

hour++;

while(!k2);

if(hour==24)

{

hour=0;

}

}

}

EA=1;

}

//---------------------数码管显示子函数-------------------------------------

void display() /*数码管显示子函数*/

{

sec_h=sec/10; /*求出秒高位需要显示的字符*/

sec_l=sec%10; /*求出秒低位需要显示的字符*/

min_h=min/10;

min_l=min%10;

hour_h=hour/10;

hour_l=hour%10;

P2=duma[sec_h]; /*显示秒高位*/

P0=wema[4];

delay(10);

key();

P2=duma[sec_l]; /*显示秒低位*/

P0=wema[5];

delay(10);

P2=duma[min_h]; /**/

P0=wema[2];

delay(10);

P2=duma[min_l]; /*显示分低位*/

P0=wema[3];

delay(10);

P2=duma[hour_h]; /**/

P0=wema[0];

delay(10);

P2=duma[hour_l]; /*显示时低位*/

P0=wema[1];

delay(10);

}

//---------------------主函数--------------------------------

void main()

{

inter_init(); /*定时器初始化*/

hour=12; /*自定义一个初值,方便快速观察翻转状态(可修改)*/

min=59;

sec=59;

while(1)

{

time24(); /*分开时间,分别显示字符*/

display(); /*调用显示函数来显示*/

}

}

附录三:元件清单

元件名称

型号

数量/

单片

AT89S52

1

晶振

12MHz

1

电容

30pF

2

电解电容

10uF/25V

1

电阻

10kΩ

1

按键

轻触

2

数码管

HSN-5621AS

3

集成块

74HC573

2

排阻

A102J

1

开关

S

1

倒计时器说明书

相关推荐