简易数字钟.docx

上传人:b****6 文档编号:3396594 上传时间:2022-11-22 格式:DOCX 页数:18 大小:484.46KB
下载 相关 举报
简易数字钟.docx_第1页
第1页 / 共18页
简易数字钟.docx_第2页
第2页 / 共18页
简易数字钟.docx_第3页
第3页 / 共18页
简易数字钟.docx_第4页
第4页 / 共18页
简易数字钟.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

简易数字钟.docx

《简易数字钟.docx》由会员分享,可在线阅读,更多相关《简易数字钟.docx(18页珍藏版)》请在冰豆网上搜索。

简易数字钟.docx

简易数字钟

何衣工其會科信学院"

 

课程设计说明

(2012/2013

学年第

学期)

 

 

课程名称:

单片机应用

简易数字钟

 

设计周数:

设计成绩:

2013年6月26日

 

第一章

第二章

2.1

2.2

2.3

第三章

3.1

课程设计」目的***********************************3

^课程设计」任;***********************************3

^设计题目***************************************

原始数据及主要任务******************************

^技术要^求***************************************

^课程设计内^容***********************************3

案设***************************************

3.2CD4511芯片功能和使用方法************************

3.3MCS-51单片机定时器/计数器介*******************5

34纟综合电路设***********************************

35^单元电路设^计*************************************

3.5.1

辛键盘单.^元*************************************

3.5.2

码管显***********************************

3.5.3

时钟产生单^元**********************************

3.5.4

虫蜂鸣器电路单^元********************************

第四章

.原壬理和仿真************************************

3.6

丿原理I图和仿真*********************************

3.7

系统调**************************************

10

3.8

实习心得体**********************************

11

 

考文****************************************

^^录(c^语言程序)*******************************14

一、课程设计目的:

1.1综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验。

1.2学习AT89C51定时/计数器的原理及基本应用,掌握多位数码管动态显示方法以及芯片CD4511等的特点。

1.3掌握KeiluVision2的使用方法和PROTEU软件使用过程。

二、课程设计任务

2.1设计题目:

简易数字钟设计

2.2原始数据及任务:

采用AT89S51作为控制单元,实现简易数字钟设

计。

1、确定总体设计方案;2、设计键盘输入电路;3、设计显示电路;4、合理分配地址,编写系统程序;5、利用Protel设计硬件电路原理图和PCB图;6、软硬件联机调试。

2.3技术要求

设计一台以MCS-51为核心的简易数字钟。

四位数码管显示小时和分钟,中间的那个点来区分小时和分钟;每秒用LED闪烁一下;用了4个按键,一个是选择键,

一个是加键,一个确认键。

时间要精确,整点报时,声音间隔为一秒,并且可以调整时间调整位闪烁提示。

三、课程设计内容

3.1:

方案设计过程如下

根据题目要求利用Protel设计原理图,请老师检查是否有错误。

利用仿真软件Protus铺设电路,进行合理安排布局。

学习keil编程软件,按照功能要求进行编程。

在确认无误后,将程序加载到Protus进行仿真。

根据原理图进行硬件焊接电路板和检测。

单元器件选择主要器件如下:

STC90C52AD+片机

470欧电阻,1个;

(DIP40);4位共阴数码显示管,4个

300欧电阻,7个;NPN三极管4个

3.2CD4511简介说明和使用方法

简介:

CD4511是一片CMOSBC—锁存/7段译码/驱动器,用于驱动共阴

极LED(数码管)显示器的BCD码一七段码译码器。

具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMO电路能提供较大的拉电流。

可直接驱动共

阴LED数码管。

使用方法:

其中abcd为BCD码输入,a为最低位。

LT为灯测试端,

加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段

都被点亮,以检查显示器是否有故障。

BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。

另外CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。

LE是锁存控制端,高电平时锁存,低电平时传输数据。

a〜g是7段输出,可驱动共阴LED数码管。

另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示69这两个数时,字形不太美观,若要多位计数,只需将计数器级联,每级输出

接一只CD4511和LED数码管即可。

所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地。

限流电阻要根据电源电压来选取,电源电压

5V时可使用300Q的限流电阻。

其真值表如下图所示:

A,

JU

LE

LT

e

A

b

c

d

e

f

g

fl.

0

V

1

:

1

1

1

1

I

0

1

X

X

x

0

0

0

0

0

0

0

0

1

1

0

0

0

0

1

1

I

1

1

I

0

0

1

1

0

0

0

1

0

t

1

0

0

0

0

1

0

1

1

0

0

1

0

1

I

0

1

1

0

1

a

0

1

1

0

0

1

1

1

1

1

1

0

0

1

a

0

1

1

0

1

0

0

0

1

I

0

0

1

1

H

6

]

1

0

1

0

1

1

o

1

1

0

1

1

5

G

1

1

0

1

1

0

0

0

1

1

1

1

1

b

G

1

1

O

1

1

1

1

1

1

0

o

0

o

1

0

1

1

1

O

0

0

1

1

I

1

1

i

1

a

O

1

1

1

O

O

1

1

I

1

0

0

1

1

9

3.3MCS-51单片机内部定时器/计数器中断系统简介

用定时/计数器TO,工作于定时,采用方式1,对6MHZ勺系统时钟进行定时计数,形成定时时间50ms计1200次分计数器自增1,时计数器加到24则时计数器清0。

然后把分、时计数器分成十位和个位放到4个数码管的显示缓冲区,

通过数码管显示出来。

在处理过程中加上了按键判断程序,能对按键处理。

3.4综合电路设计

本系统共有两部分构成,即硬件部分与软件部分。

其中硬件部分由电源

序等组成。

其原理框图如下图

硕件设订模块丈现:

 

341键盘单元

键盘设计如下图所示(P0口需要通过上拉电阻接到+5V电源,这

其中12个键的功能分配如下

S1:

选择键S2:

加键S3:

减键S4:

确认键

采用扫描控制端口P0的值来确定有没有键按下,按下的是那个键。

342数码管显示

我们采用共阴数码管显示共4个,段选端接P2口,位选段接P1口,具体接法如下:

g^

■NtKJ

Jt

—i夫

t£?

.一

.■■.II

11

数码管位选端由P1口高四位的4个端口控制,分别通过NPN接到数码管的

公共端,其接法如上图:

数码管显示是单片机中应用最为广泛的一种显示方式之一,

共阴极数码管0到9十个数的代码如下:

{0x3f,0x06,0x5b,0x4f,0x66

0x6d,0x7d,0x07,0x7f,0x6f};

343时钟产生单元

51单片机的时钟信号通常用两种电路形式得到:

内部振荡方式

和外部振荡方式。

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振

器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大

器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

内部

振荡方式的外部电路如下图所示。

图中,电容器C起稳定振荡频率、快速起振的作用,其电容值

 

般在5-3OpF。

晶振频率的典型值为12MH2采用6MHZ的情况也比

较多。

内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。

外部振荡方式是把外部已有的时钟信号引入单片机内。

这种方式适

用来使单片机的时钟与外部信号保持同步。

344蜂鸣器电路单元:

如图下所示

vcg|

R23

U2

BELL

第四章原理和仿真

3.5Protel系统原理图如下:

•1卄?

[I-I:

J

vm

20

4

T-4+"彳一”卜卜斗卜■■幷丁-J——

■—"-^"-Tip-n—[―V■r7»~|."'.——R^-B—.■■卜■-|~"■"""—'1

■!

II:

IIJ■■丄—ij—_1;i半

■»!

tswsaws

~~]I11I1I1i1j{!

i'「n厂」1―111一」-J厂」1"一1!

一!

1〒L

1.-J:

7^

F〒坤m廿持W

I!

越卜1

-1占丄…:

•丄卜,JIF

丄叩

1严1

II

G1

UTJPt?

TTGI¥IT心□F-

RiOWi"TW酋:

C^h:

UU1.!

FTTm]iiiTTST卫刊丄K■JCi;

T.NJK.tjcx

k:

:

AichJA_i

N-JO;KJX;=

nag曲Jul

KAAil札1M

风SjQJF;0At

WE心li-

R.・Q»l£

Pl:

r\J

h二g?

!

-:

>:

J祇»L>

;!

ff

1——I—_«1——L

IrIIIi

.J

1I4J

2

.J.

DIIISJ

rIL

R

fl

□3

JhlTIIlT

-I

.tjt—一

 

Protus仿真图如下:

硬件调试时可先检查面包板及焊接的质量情况,在检查无误后可通电检查

LED显示器的点亮状况。

若亮度不理想,可以调整P3口的电阻大小,一般情况

F取200Q电阻即可获得满意的亮度效果。

硬件调试是利用基本测试仪器(万用表等),检查用户系统硬件

第一步:

目测。

检查外部的各种元件或者是电路是否有断点。

第二步:

用万用表测试。

先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。

第三步:

加电检测。

给板加电,检测所有插座或是器件的电源端是否符合要求的值

第四步:

联机检查。

因为只有用单片机开发系统才能完成对用户系统的调试。

动态调试:

是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。

动态调试的一般方法是由近及远、由分到合。

由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。

当各块电路无故障后,将各电路逐块加入系统中,

在对各块电路功能及各电路间可能存在的相互联系进行调试。

由分到合的调试既告完成。

由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。

调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。

软件调试:

软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。

可以利用仿真器加以调试,对系统单个单元进行调试,当单元电路成功后,在对整个程序调试,最后在用CPU芯片调试。

通过软硬结合的方式对电路板进行硬件调试,硬件没错误之后,开始进行软件编程,直到整个功能实现,并进行优化。

3.7课程设计心得体会和收获:

我经过这两个星期单片机课程设计的学习,我们组从画原理图。

到的Protus

仿真图修改,再到程序的编写和电路板的焊接都主要是我自己解决的,,错了向老师和同学们请教然后再次去修改。

在这个过程中我不仅加深了对单片机理论的理解,懂得了更多理论的知识,而且我还学会了将理论知识更好的运用到实际当中去。

课程设计是对我们能力的训练,随着科学技术的不断发展,单片机已运用

广泛。

在生活当中可谓是无所不在,小到遥控器、手机,大到电脑等家用电器,可以说跟我们的生活息息相关。

因此作为二十一世纪的大学生来说掌握单片机的开发及时是十分重要的。

回想两个星期的课程设计,真的是感慨颇多,从刚刚开始的容易上手到后面的摸不着方向,通过查询资料请教老师解决了所有的问题。

通过这次的课程设计,让我懂得了理论与实际的结合时非常重要的,只有结合起来才能得出想要的结论,从理论当中得出结论,从而提高自己的实际动手能力和独立思考能力。

在设计的过程中发现自己的不足之处,对以前所学的知识理解的不够深刻,掌握的不

够不够牢固,比如对单片机的汇编语言不能理解,不懂得一些元件的运用等等。

课程设计结束后,一定要把自己以前没学有车的重新温过一次。

在设计中遇到的许多的问题,都在老师的帮助下和同学的指导下完成了,让我体会到了团队合作的重要性,同时也感谢同学和老师对我的指导。

参考文献

《电力电子技术基础》(第五版)康华光主编高等教育出版社。

《单片机原理及应用》张毅刚主编高等教育出版社。

《电路设计与制版Protel99入门与提高》老虎工作室编制。

《PROTEU入门实用教程》第2版周润景蔡雨恬编著机

《单片机10天征服你》郭天祥哈尔滨工程大学录制。

 

2013

生:

专业班级:

号:

周艳强

10级自动化1023

100412330

年6月28日星期五

 

附录:

C语言实验程序如下

#includevreg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90};

uchart0,t1,min,hour,function,a0,a1,a2,a3;

bitshan;

voiddelay(uintcount);

ucharkeychuli();

ucharkey();

voiddisplay(uchar,uchar,uchar,uchar);

voidsend();

voidini();

voidchuli();

//***************^主函***************************

voidmain()

ini();

while

(1)

{display(16,16,16,17);

{TR0=1;function=1;shan=0;

while

(1)

send();//送数

}}}}

voidini()

//定时50ms中断一次

TMOD=0x01,TH0=0x3c,TL0=0xb0;TH1=0x3c,TL1=0xb0;

EA=1,ET0=1,TR0=0;ET1=1;TR1=0;

//**************

键值处理程序*************************

voidchuli(){switch(key())

{case0:

break;

case1:

//当按键k1按下后

{function++;//判断按下的次数

switch(function)

{case1:

TR0=1;TR1=0;shan=0;break;//

一次条秒同时闪烁

case2:

//两次调分同时闪烁

case3:

//三次调分同时闪烁

case4:

TR0=0;TR1=1;shan=1;break;//四次跳出调整状态时钟继续走时

case5:

function=1;TR0=1;TR1=0;shan=0;break;

//轮流循环

}}

break;

case2:

//k2

键上调

 

{switch(function)

}}

break;

switch(function)

{

case1:

break;

case2:

min--;

if(min==255)min=59;break;

case3:

hour--;

if(hour==255)hour=23;break;

 

}}

break;

}}

 

//*************

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

voidtimerO()interrupt1using3

TH0=0x3c,TL0=0xb0;

to++;

if(t0==1200)

t0=0;

min++;

if(min==60)min=0;

hour++;

{if(hour==24)

hour=0;}}

}}

//*************

定时器1的中数服务程序,对

shan取反,以使灯闪烁***************

 

voidtimer1()interrupt3using2

TH0=0x3c,TL0=0xb0;

t1++;

if(t1==40)

t1=0;

shan=〜shan;

ucharkeychuli()

{uchark;

 

k=P1;

//P1口内容送K

k=~k;

//取反

 

//返回键值

//屏蔽高4位,如果扫描8键,屏蔽该句。

return(k);

//***函数原型:

key();功能:

键盘扫描函数,函数返回值即键值。

ucharkey()

 

send();

display(a0,a1,a2,a3);

display(a0,a1,a2,a3);

 

keyzhii=keyzhi;

 

send();

display(a0,a1,a2,a3);

display(a0,a1,a2,a3);

keyzhi=keychuli();

 

keyzhi=keyzhii;

//按键释放后恢复按键键值

 

return(keyzhi);

//返回按键键值

//***************

显示了稈^序****************************

voiddisplay(uchara3,uchara2,uchara1,ucharaO)

P2=table[a3];P1=0x10;delay

(1);P2=table[a2];

P1=0x20;delay

(1);P2=table[a1];P1=0x40;

//******************

delay

(1);P2=table[a0];P1=0x80;delay

(1);

将数送至缓冲单元,当shan的标志位为1时,再根据此时的此时的功能标示,对该

位熄灭******

voidsend()

a0=min%10;

a1=min/10;

a2=hour%10;

a3=hour/10;

if(shan==1)

{switch(function)

 

case2:

a0=16,a1=16;break;

case3:

a2=16,a3=16;break;

}}}

//***********

延时子程序基数为1毫秒*******************

voiddelay(uintcount)

uintj;

while(count--!

=0)

for(j=0;j<80;j++);

}}

 

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

当前位置:首页 > 小学教育 > 语文

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

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