08080定稿.docx

上传人:b****5 文档编号:7369727 上传时间:2023-01-23 格式:DOCX 页数:27 大小:642.83KB
下载 相关 举报
08080定稿.docx_第1页
第1页 / 共27页
08080定稿.docx_第2页
第2页 / 共27页
08080定稿.docx_第3页
第3页 / 共27页
08080定稿.docx_第4页
第4页 / 共27页
08080定稿.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

08080定稿.docx

《08080定稿.docx》由会员分享,可在线阅读,更多相关《08080定稿.docx(27页珍藏版)》请在冰豆网上搜索。

08080定稿.docx

08080定稿

 

赣南师院

物理与电子信息学院

课程设计报告书

 

姓名:

刘祖亮

班级:

08电信(本)

学号:

080802029

时间:

2010年12月

 

设计题目

基于AT89S52单片机实现的简易电子挂钟

设计要求

1.能在8个数码管上同时显示时、分、秒;

2.具备上电清零等功能;

3.通过四个按键能分别增减任意调节时和分;

4.采用24小时制。

设计过程

1.选题的意义分析

钟表作为一种定时工具被广泛的使用在生产生活的各方面。

人类最初依靠太阳的角度来进行定时,所以受天气的影响比较大,为了克服依靠自然现象定时的缺点人们发明的机器钟表,电子钟表一系列的定时工具。

而电子钟表具有价格便宜,质量轻,定时误差小等优点,被广泛的应用在生产,生活的各个方面。

由于电子钟的能提供精确定时又被广泛的运用在测量之中。

此电子钟采用单片机进行设计,8段数码通过单片机进行刷新显示。

其设计的产品除了单片机之外没有用到其他集成块,使其成本可以大大降低,而其便于维修。

成品可以被广泛的用于公共场所,匾额装饰,以及教学等方面。

本课程设计的实验目的是通过该实验掌握较简单程序的设计,能够独立完成用程序对AT89S52控制独立键盘和LED数码管的控制,完成电子钟的显示和时钟功能,独立编写程序明白电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼,通过这次设计实践能使自己的设计水平和对所学的知识的应用能力以及分析问题和解决问题的能力得到全面的提高。

2.设计原理及相关理论分析

本设计采用单片机AT89C52作为控制芯片,用C语言对其进行编程实现,利用单片机的定时器和中断功能,实现时钟的计时功能,利用独立按键实现调时、调分功能。

由于单片机的I/O端口不能直接驱动数码管,所以用74HC573作为驱动数码管的芯片,使数码管能以正常亮度显示,而没有用到74HC573的锁存功能。

由于C语言库函数繁多,所以我采用调用C语言库函数来解决多种运算类型,这样编程更简单,运行起来也更可靠。

3.设计整体方案

设计框架图如图1所示总共分为5小部分:

时间显示部分,键盘控制部分,单片机部分,电源部分。

本设计各部分由统一电源集中供电,外加被用电源确保主电源断电时备用电源及时供电避免时间的丢失.采用12MHZ晶振为单片机提供时钟。

显示部分采用容易购买的LED八段数码显示管,利用单片机输出高低电平实现数码管的刷新显示。

LED具有显示明亮,容易识别,价格便宜等优点,特别适合时间的显示。

;利用74HC573作为驱动数码管的芯片,使数码管能以正常亮度显示。

按键部分采用普通的按建开关,使用查询方式从而节约元件。

图1设计方案整体方框图

3.1控制器模块

3.1.1概述

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

3.1.2主要功能特性

  ·兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM

  ·32个双向I/O口·256x8bit内部RAM

  ·3个16位可编程定时/计数器中断·时钟频率0-24MHz

  ·2个串行中断·可编程UART串行通道

  ·2个外部中断源·共8个中断源

  ·2个读写中断口线·3级加密位

  ·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能

3.1.3AT89C52各引脚功能及管脚电压

图2AT89C52管脚图

AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

3.2输入模块

本设计要求能输入一个低电平信号,只要在程序中写入去抖程序,即可很容易实现调节电子钟的时分的作用,而且这种键盘的编程方法已很成熟。

3.3输出模块

考虑到输出的数字能清晰可见,而且同时显示时分秒,而且在比较远的距离都能看清楚,所有不考虑使用1602液晶来显示,用数码管来显示虽较硬件电路复杂,但能清晰美观的显示出0-9的数字,而且在比较远的距离都能看清楚,所有本设计选用两个四位七段数码管来显示,并且硬件电路设计简单,显示美观。

经过方案论证,最终确定的系统组成框图如图3-1所示。

其中单片机作为主控设备对采集输入信号后并进行处理,最后通过四位七段数码管输出给使用者。

该系统的结构框图如图3。

图3 系统输出模块框图图4时钟电路

4.硬件电路原理分析

4.1单片机时钟电路

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。

此电路采用12MHz的石英晶体。

时钟电路如图4。

4.2单片机复位电路

复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。

RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4

s才能完成复位操作。

复位操作有上电自动复位和按键手动复位两种方式。

上电自动复位是通过外部复位电路的电容充电来实现的。

按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。

在本设计中采用了按键电平复位方式,其复位电路如图5。

图5复位电路

4.3四位八段数码管显示电路

4.3.1四位共阴数码管3461工作特性

型号:

3461AS;引脚数:

12(6*2);极性:

共阴;尺寸:

3.0cm(L)*1.4cm(H)发光颜色:

红;亮度:

高亮;工作电压:

3-3.6V(小数点位2.0V);工作电流:

20mA

4.3.2四位共阴数码管3461内部结构

内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。

引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,图6中的数字与之一一对应。

图6四位共阴数码管3461内部结构图

4.3.3四位共阴数码管3461外部尺寸

图7四位共阴数码管3461外形尺寸

4.3.4四位共阴数码管管脚定义

对于四位一体数码管:

A--11;B--7;C--4;D--2;E--1;F--10;G--5;BIT1--6;BIT2--8;BIT3--9;BIT4--12;DP--3;

图8MCU与8段数码管的连接

图9四位共阴数码管AT1602与单片机接口电路

4.4驱动锁存电路

本系统采用74hc573作为驱动数码管显示电路,而没有使用其锁存功能。

4.4.174hc573特性

74hc573是高性能硅门CMOS器件,SL74HC573跟LS/AL573的管脚一样。

器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。

当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

×输出能直接接到CMOS,NMOS和TTL接口上

×操作电压范围:

2.0V~6.0V

×低输入电流:

1.0uA

×CMOS器件的高噪声抵抗特性

4.4.274hc573管脚介绍

图1074HC573管脚图

OE ̄

1

20

Vcc

1D—

2

19

—1Q

2D—

3

18

—2Q

3D—

4

17

—3Q

4D—

5

16

—4Q

5D—

6

15

—5Q

6D—

7

14

—6Q

7D—

8

13

—7Q

8D—

9

12

—8Q

GND

10

11

LE

1脚三态允许控制端低电平有效

1D~8D为数据输入端

1Q~8Q为数据输出端

74HC573引脚图

图1174HC573功能表

4.4.274hc573时序

图1274HC573时序图

4.5键盘电路

独立式键盘。

其电路图如图所示,这种键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。

所以本次设计采用这种独立式键盘。

其电路图如图。

图13 独立式键盘

5.软件设计

5.1程序流程图 

5.1.1主程序流程图

初始化:

定时器初始化、中断模式选择,附初值,开中断、时分秒初始化,主程序是系统的主要部分,它调用各个子程序,完成系统功能。

实现时分秒在数码管上的正确显示,并且具有较时功能。

处理子程序:

主要是判断是有有键按下,是对应的调时,调分的哪个键按下,判断之后,进入相应的处理程序,本系统使用的是case语句,来实现有键按下究竟是实行时加、时减,还是分加、分减。

图14系统程序总流程图

5.1.2显示子程序流程图

显示子程序的功能是将时分秒的变化在数码管上显示出来,采用的是动态扫描的方法,在程序中分别按‘秒、—、分、—、时’的格式送信号,这一这样在主程序循环调用显示子程序,就能把时分秒在数码管上显示出来,因为时间很短,肉眼是分辨不出数码管是一个一个在亮的,看起来是一直在显示。

图15显示子程序流程图图16按键处理子程序流程图

5.1.3按键处理子程序流程图

本子程序主要是检测是否有调时的按键输入,并判断是调时还是调分,并且一些效果处理语句组成。

6.调试与测试结果分析

6.1系统总的原理图

图17电子钟系统原理图

6.2硬件调试

(1)把电路板焊好后,先通过检查电路板表面检查是否有漏焊、错焊、接触不良等;

(2)编写检测程序逐个点亮数码管,检查数码显示部分是否有硬件问题;

(3)编写检测程序检测矩阵扫描是否有硬件问题。

6.3程序调试

重点就是这个部分,很多程序就是在调试过程中慢慢完善,先前所完成的程序部分只能算一个基本框架,当然,这一切是建立在硬件没用问题的基础上

程序在进行调试时,可以像硬件一样使用分模块调试,这样可以最迅捷的找出问题所在,不受其他模块的影响

在硬件调试时,一开始时51芯片不工作,经过反复检查后发现原来51芯片的31脚(/EA/VPP)必须接入高电平才能使单片机在读取程序时优先访问内部程序存储器,否则只访问外部程序存储器,而我们的程序是在内部的,故芯片不工作,我们随即在31脚外接VCC和限流电阻,在解决了这个后,硬件OK了,在测试的时候黄老师说的板子线太乱,然后我就拿回去把板子重新布置了,果然美观多了.开始的时候还因为没驱动芯片直接用单片机驱动数码管虽然亮度很暗,后来在焊上74HC作为驱动电路,果然效果好多了,为什么会出现这个焊驱动呢,因为我在protues做仿真时,没有发现亮度很暗,由此让我懂得了软件调试和硬件还是有差别的。

软件调试时问题就比较多了,很多都是小问题,大多是因为在编写程序时一些地方不够注意或笔误引起的,在这里就不过多解释,少部分是一些难以解决的大问题,一开始的程序在protues调试时,每按一下调节按键时显示都会闪一下,但通过去抖程序后,问题得到了很好的解决。

7.心得体会

从这次课题设计任务中,我学习到了很多,经过个人的努力,黄老师的精心指导,还有和在网上找到的一些资料,主要让我掌握了数码管的编程方法,掌握了独立式扫描的编程方法,这也是编程必须掌握的知识。

当然调试的时候你也是一个重点,也让我收获良多,这其中就分硬件和软件两部分,硬件虽没有焊接问题,但是板子的美观问题不是很好,让我懂得了什么都不仅要有内在的东西,外在功夫也是要的。

通过此次单片机课程设计,在黄老师严格按照毕业论文的要求的情况下,做的时间比较久,但还是学到了很东西,为明年的毕业论文打下了基础。

本次试验的程序是自己独立设计完成的,虽然是比较简单的电子钟程序,但是要美一步都安自己的思路来走通的话也不是那么容易的,让我对单片机和我们的专业有了更深的了解和兴趣。

其中最重要,最麻烦,也是学到和掌握的东西最多的地方就是软件调试了,这样你出现问题是你才能根据问题改变程序内容而达到目的。

我们出问题最多的也是这个地方,这证明了我们对程序的掌握还有欠缺,不能熟悉的掌握和运用程序,所以导致我们不能很快很好的完成课题任务。

当然也还有很多细节方面和人工的失误问题,我们几个第一次的配合还是不能很好的进行。

程序编写上也出现了很多细节的错误,并不能把程序依次性就编写好,这也浪费了我们很多的时间,这主要也是我们没有把这方面的知识学扎实。

所以我们要把一次课题设计好,不但要学习好课堂的知识,而且要注意各方面的细节。

这次课题设计使我们各方面都得到了一定的锻炼。

参考文献

[1]李全利,仲伟峰,徐军著.单片机原理及应用[M].北京:

清华大学社,2006.

[2]何立民著.单片机高级教程[M].北京:

北京航空航天大学出版社,2000.

[3]谭浩强著.程序设计与开发技术[M].北京:

清华大学出版社,1991.

[4]钟富昭著.8051单片机典型模块设计与应用[M].北京:

人民邮电出版,2007.

[5]于永,戴佳,常江著.51单片机C语言常用模块与综合系统设计实例精讲[M].北京:

电子工业出版社,2007.

 

附录1程序清单

/*本实验图单片机的定时器和中断实现简易的电子钟*/

#include

#defineuncharunsignedchar

#defineunintunsignedint

sbitle=P3^5;

charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uncharshi,fen,miao,count,key2;

voiddisplay(unchar,unchar,unchar);

unsignedcharGetkey(void);

voiddelay(unchartime)

{intx,y;

for(y=time;y>0;y--)

for(x=110;x>0;x--);

}

/*定时器中断*/

voidtimer0(void)interrupt1using1

{TH0=-(50000/256);

TL0=-(50000%256);

count++;

}

voidmain()

{

TMOD=0X01;

TH0=-(50000/256);

TL0=-(50000%256);

EA=1;

ET0=1;

TR0=1;

shi=0;

fen=0;

miao=0;

count=0;

while

(1)

{

if(count==20)

{count=0;

if(miao==59)

{if(fen==59)

{miao=0;

fen=0;

shi++;

if(shi==24)

{miao=0;

fen=0;

shi=0;}

}

else{miao=0;fen++;}}

elsemiao++;

}

key2=Getkey();

switch(key2)

{

case1:

shi++;

if(shi==24)

{

shi=0;

}

break;

case2:

fen++;

if(fen==60)

{

fen=0;

}

break;

case3:

fen--;

if(fen==(-1))

{

fen=59;

}

break;

case4:

shi--;

if(shi==(-1))

shi=23;

default:

break;

}

display(shi,fen,miao);

}

}

/*显示子程序*/

voiddisplay(unchara,uncharb,uncharc)

{P1=0xfe;

le=1;

P2=led_mod[a/10];

le=0;

delay

(1);

P1=0xfd;

le=1;

P2=led_mod[a%10];

le=0;

delay

(1);

P1=0xfb;

le=1;

P2=0x40;

le=0;

delay

(1);

P1=0xf7;

le=1;

P2=led_mod[b/10];

le=0;

delay

(1);

P1=0xef;

le=1;

P2=led_mod[b%10];

le=0;

delay

(1);

P1=0xdf;

le=1;

P2=0x40;

le=0;

delay

(1);

P1=0xbf;

le=1;

P2=led_mod[c/10];

le=0;

delay

(1);

P1=0x7f;

le=1;

P2=led_mod[c%10];

le=0;

delay

(1)

}

/*时钟调节子程序*/

unsignedcharbool;//bool是否松键的标志

unsignedcharGetkey(void)

{

unsignedchartemp,key=0;

P3=(P3&0xff)|0xc3;

if((P3&0xff)!

=((P3&0xff)|0xc3))//有键按下

{

//delay01s();

if(((P3&0xff)!

=((P3&0xff)|0xc3))&&(bool==0))//有键按下

{

temp=~(P3|0x3c);

if(temp==0x01)key=1;

elseif(temp==0x02)key=2;

elseif(temp==0x40)key=3;

elseif(temp==0x80)key=4;

bool=1;

}

}

if(((P3&0xff)==((P3&0xff)|0xc3))&&(bool==1))

{

bool=0;

}

returnkey;//返回1~16键值

}

 

附录2软件仿真截图

图18软件仿真截图

附录3实物

图19实物图

赣南师范学院2010—2011学年第二学期

《单片机与接口技术》课程设计

行政班级08电信(本)学号080802029姓名刘祖亮

论文题目:

基于AT89S52单片机实现的简易电子挂钟

论文要求:

1.能在8个数码管上同时显示时、分、秒;

2.具备上电清零等功能;

3.通过四个按键能分别增减任意调节时和分;

4.采用24小时制。

教师评语:

本课程设计运用单片机AT89C52实现了简易电子挂钟的设计,选题体现了课程培养目标。

论文中对相关理论的论述、硬件结构和软件的分析说明也比较到位。

本设计经检测实现了全部功能。

论文格式规范,功能程序论述到位。

刘祖亮同学在设计的整个过程,态度还算认真,有一定的钻研精神。

本设计难度中等,基本无创新。

本课程设计成绩评定为:

教师签字:

年月日

选课班级08电信(本)任课教师黄隆胜成绩

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

当前位置:首页 > 农林牧渔 > 林学

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

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