单片机数字时钟设计十九.docx

上传人:b****9 文档编号:26284799 上传时间:2023-06-17 格式:DOCX 页数:21 大小:142.30KB
下载 相关 举报
单片机数字时钟设计十九.docx_第1页
第1页 / 共21页
单片机数字时钟设计十九.docx_第2页
第2页 / 共21页
单片机数字时钟设计十九.docx_第3页
第3页 / 共21页
单片机数字时钟设计十九.docx_第4页
第4页 / 共21页
单片机数字时钟设计十九.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机数字时钟设计十九.docx

《单片机数字时钟设计十九.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟设计十九.docx(21页珍藏版)》请在冰豆网上搜索。

单片机数字时钟设计十九.docx

单片机数字时钟设计十九

单片机数字时钟设计

系统方案设计及确定

P0接七段数码管的段选,P2口接数码管的位选。

按键T接P1.0-P1.3口,通过按键的不同操作,实现设计的要求:

(1)无按键按下:

实现正常的时钟显示

(2) T0键按下,进入省电模式,再按一下T0则恢复正常时钟显示

(3)按下T1启动秒表,进入秒表后按下T2暂停秒表,再按下T3则恢复正常时钟显示。

(4)在时钟正常显示下,按T3键进入时间的调整设定。

系统硬件设计

3.1AT89S51最小系统设计

AT89S51最小系统包括时钟电路和复位电路。

时钟电路硬件设计 

89C51是8位CPU,具有片内振荡器和时钟电路,2个16位的定时器/计数器,5个中断源,两个中断优先级,它的时钟信号通常用内部振荡方式得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

内部振荡方式的外部电路电容器Col,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。

晶振频率的典型值为12MHZ,然而我们本次课程设计用的是11.0592Hz

所以我们可以利用51自带的定时器来设计时钟,选用定时器0,让它工作在方式1,然后给他置初值4C00H,即定时器每走50MS就会加1,让它循环20定时器就会溢出,发出中断请求。

CPU响应中断后,就会往响应的秒单元加1,接着定时器0循环工作,每溢出一次就会发一次中断请求,CPU每响应一次秒单元就会加1,当秒单元到60的时候,分单元就会加1同时秒单元清零。

同理,当分单元到60后时单元加1,分单元清零,时单元到24时清零。

这就是基本的时钟设计

 

复位电路硬件设计

复位电路的基本功能是:

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

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

图1所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。

但解决不了电源毛刺(A点)和电源缓慢下降(电池电压不足)等问题而且调整RC常数改变延时会令驱动能力变差。

左边的电路为高电平复位有效  右边为低电平Sm为手动复位开关  Ch可避免高频谐波对电路的干扰 

图1   复位电路 

键盘、显示电路硬件设

键盘电路硬件设计

键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。

一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点因此被广泛应用于单片机系统

 

 

按钮开关的抖动问题

 

 

组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。

在下图中,当开

关S未被按下时,P1。

0输入为高电平,S闭合后,P1。

0输入为低电平。

由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,P1。

0输入端的波形如图2所示。

这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。

前面我们讲到中断时曾有个问题,就是说按钮有时灵,有时不灵,其实就是这个原因,你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。

 

 

为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:

硬件办法和软件办法。

单片机中常用软件法,因此,对于硬件办法我们不介绍。

软件法其实很简单,就是在单片机获得P1。

0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1。

0口,如果仍为低,说明S1的确按下了,这实际上是避开了按钮按下时的抖动时间。

而在检测到按钮释放后(P1。

0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。

不过一般情况下,我们常常不对按钮释放的后沿进行处理,实践证明,也能满足一定的要求。

当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。

显示电路硬件设计

四个数码管在系统中可以作为时钟显示、计数显示、遥控码显示等各种显示电路,电路如图2.10所示。

数码管是LED的一种集成,将LED通过一定的形式安排在相应的位置就构成了数码管,当相应的段码和位码协同操作,于是就产生了数码的显示。

在系统中,采用四位一体的集成数码显示器,内部结构为共阳方式。

在整体的数码管显示电路中,由P0口为数码管提供相应的段码,分别为a、b、c、d、e、f、g、dp,组成显示相应数码的字段;由P2口的高四位构成四位数码管的位选信号端,分别确定让哪个位的数码管进行点亮操作。

电路结构中,共阳端的电源由三极管S8550来进行控制,当连接P2口的基极信号端接收到单片机的低电平信号时就导通,于是数码管的位选端得到5V电源,提供数码管的显示操作。

 

系统软件设计

系统主程序设计

ORG0000H

LJMPMAIN

ORG0003H

ORG000BH

LJMPit0p

ORG001BH

LJMPINT1P

main:

movsp,#60H

MOVR2,#00H

movr0,#7fh

mova,#00h

x0:

mov@r0,a

djnzr0,x0

movtmod,#11h

mov20h,#14h

movth0,#4ch

movtl0,#00h

mov42h,#05h

mov41h,#59h

mov40h,#40h

MOVTH1,#0DCH

MOVTL1,#00H

MOV33H,#0AH

setbet0

setbet1

setbea

setbtr0

SAVE2:

CJNER2,#00H,SAVE3

SJMPled

led:

lcalldisplay

SAVE3:

JNBP1.1,MIAOBIAO

JNBP1.0,SAVE

JNBP1.3,SETT

sjmpSAVE2

系统主程序流程图

系统软件设计内存分配及芯片地址介绍

由于时钟显示采用的是动态扫描方式,若不用显示缓冲区,不但程序处理会复杂,还会造成显示的闪烁。

在此在单片机内部RAM中设置了8个显示缓冲区单元,显示缓冲区与数码显示的对应关系如下表所示。

每个显示缓冲区单元存放两个压缩BCD吗,分别对应相应计时单位的十位、个位。

40H~42H

时钟显示缓冲区,从低到高依次为秒的低四位、秒的高四位、分的低四位、分的高四位、时的低四位、时的高四位

30H~32H

秒表显示缓冲区,从低到高依次为10毫秒的低四位、10毫秒的高四位、秒的低四位、秒的高四位、分的低四位、分的高四位

4.2定时器的设计

时钟计时的关键是秒信号的产生,秒是时钟的最小计时单位,而采用单片机的定时器/计数器T0进行定时,在晶振为11.0592MHz的条件下,定时器0在方式1下的最大定时时间只能达到65536us。

为了达到定时1s的目的,因此采用T0定时50ms计数20次为1s的方法产生秒信号。

T0定时功能是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生1个计数脉冲,即每经过1个机器周期的时间,计数器加1。

如果采用的是11.0592MHz晶体,则计数频率为0.9216MHz,即每过0.9216us的时间计数器加1。

这样根据计数值计算出定时时间,也可根据定时时间的要求计算出计数器的初值。

在设计中,T0每50ms中断1次,则根据公式

计数初值=2的n次方-定时时间/机器周期

可得计数初值=4C00H

计时方法的实现:

每1s产生1次中断,在中断程序中将显示缓冲区的秒单元数值加1,并根据时间的进位关系进行从秒到分、分到时的计时。

4.3秒表的设计

当在主程序中查询到P1.1按下后启动秒表,查询P1.3的状态,若按下则退出秒表子程序进入时钟显示状态,若未按下则查询P1.1的状态,P1.1若未按下则查询P1.2的状态,若按下则启动秒表开始计时,若P1.2未按下又调显示,继续判断P1.3的状态,P1.3是高电平则查询P1.3,若P1.3是低电平,则秒表归零,若p1.3是高电平则查询P1.2,若P1.2是低电平则秒表暂停。

查询按键时,会调用延时子程序延时,为了防止程序紊乱,进入主程序的校时或闹钟设定。

4.4其他主要子程序的设计

1.省电子程序

SAVE:

JNBP1.0,SAVE

CJNER2,#00H,SAVE1

MOV43H,#00H

MOVP0,43H

INCR2

AJMPSAVE2

SAVE1:

DECR2

AJMPSAVE2

2.秒表子程序

MIAOBIAO1:

MOV30H,#00H

MOV31H,#00H

MOV32H,#00H

SETBTR1

LED3:

LCALLDISPLAY2

JNBP1.3,BACK

JBP1.1,PAUSE

AJMPLED3

PAUSE:

JBP1.2,LED3

CLRTR1

AJMPLED3

BACK:

CLRTR1

RET

INT1P:

PUSHPSW

PUSHACC

CLRET1

CLRTR1

MOVTL1,#00H

MOVTH1,#0DCH

SETBTR1

DJNZ33H,RETURN1

MOV33H,#0AH

MOVA,#01H

ADDA,30H

DAA

MOV30H,A

CJNEA,#99H,RETURN1

MOV30H,#00H

MOVA,#01H

ADDA,31H

DAA

MOV31H,A

CJNEA,#60H,RETURN1

MOV31H,#00H

MOVA,#01H

ADDA,32H

DAA

MOV32H,A

CJNEA,#60H,RETURN1

MOV32H,#00H

RETURN1:

POPACC

POPPSW

SETBET1

RETI

DISPLAY2:

movr1,#30h

movr3,#01h

movdptr,#TAB

DISPLAY3:

MOVA,R3

movp2,A

mova,@r1

anla,#0FH

movca,@a+dptr

movp0,a

lcalldl1ms

movp2,#00h

movp0,#00h

mova,r3

RLa

movr3,a

movp2,A

mova,@r1

swapa

anla,#0FH

movca,@a+dptr

movp0,a

lcalldl1ms

movp2,#00h

movp0,#00h

mova,r3

jbacc.5,ld2

RLa

movr3,a

incr1

ajmpDISPLAY3

ld2:

ret

3.报警子程序

RING:

MOVA,42H

DAA

MOVR3,A

XIANG:

CLRP1.7

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

SETBP1.7

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

LCALLdisplay

LCALLDELAY1S

LCALLdisplay

DJNZR3,XIANG

RET

4.时间调整子程序

SETT:

MOVR3,#00H

MOVR4,#12H

MOV42H,R4

MOV41H,R3

SETH1:

JBP1.1,SETH3

MOVA,#01H

ADDA,42H

CJNEA,#24H,SETH2

MOVA,#00H

SETH2:

MOV42H,A

SETH3:

LCALLdisplay

JNBP1.3,SETT1

SETM1:

JBP1.2,SETM3

MOVA,#01H

ADDA,41H

CJNEA,#60H,SETM2

MOVA,#00H

SETM2:

MOV41H,A

SETM3:

LCALLdisplay

JNBP1.3,SETT1

AJMPSETH1

SETT1:

MOV42H,R4

MOV41H,R3

OUT:

RET

5.显示子程序

display:

movr1,#40h

movr3,#01h

movdptr,#TAB

display1:

MOVA,R3

movp2,A

mova,@r1

anla,#0FH

movca,@a+dptr

movp0,a

lcalldl1ms

movp2,#00h

movp0,#00h

mova,r3

RLa

movr3,a

movp2,A

mova,@r1

swapa

anla,#0FH

movca,@a+dptr

movp0,a

lcalldl1ms

movp2,#00h

movp0,#00h

mova,r3

jbacc.5,ld1

RLa

movr3,a

incr1

ajmpdisplay1

ld1:

ret

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H

6.定时器0中断子程序

it0p:

pushpsw

pushacc

movth0,#4ch

movtl0,#06h

djnz20h,return

mov20h,#14h

mova,#01h

adda,40h

daa

mov40h,a

cjnea,#60h,return

mov40h,#00h

mova,#01h

adda,41h

daa

mov41h,a

cjnea,#60h,return

mov41h,#00h

mova,#01h

adda,42h

daa

mov42h,a

LCALLRING

cjnea,#24h,return

mov42h,#00h

return:

popacc

poppsw

reti

7.1毫秒延时子程序

dl1ms:

MOVR6,#9H

YL1:

MOVR7,#19H

DJNZR7,$

DJNZR6,YL1

RET

8.100毫秒延时子程序

TIME100MS:

MOVR3,#0B4H

LOOP5:

MOVR4,#0FFH

LOOP6:

DJNZR4,LOOP6

DJNZR3,LOOP5

RET

9.1秒延时子程序

TIME1S:

MOVR1,#0AH

TIME_1S:

CALLTIME100MS

DJNZR1,TIME_1S

RET

系统调试

1.调试所用工具及调试步骤

调试所用工具:

伟福仿真机,PC机,+5V电源,接口连线,硬件电路板。

调试步骤:

1.将伟福仿真机和PC机相连

2.将伟福仿真机和硬件电路板相连并接上+5V电源

3.编译源程序,并修改程序

4.全速执行程序,观察硬件的工作情况,若不能正常工作则可通过设置断点单步或跟踪执行程序,观察程序的调用、中断或跳转是否正确或逻辑是否正确,不正确的话再仔细分析程序错误的原因并进行修改再按上述方法进一步调试,到实现所要求的功能为止。

2.调试过程

将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多时平时的实验遇到过的,例如:

输入的分号格式不正确,零和字母O弄混淆了等等,幸好这些错误在平时的实验中遇到了,所以改错误很容易,但同时也说明了,平时的错误现在还在换,证明错误我还没有完全的改正,这点我以后一定要注意了。

争起错误换了两次就不能在换了。

除了常见的错误外,还有几条错误时我从来没有遇到过的,如:

LJMP跳转指令跳不回指定的位置,是因为跳转的长度大于LJMP跳转的长度,最后只好设置跳转两次后才能跳到指定的位置。

最后在老师和同学的帮助下,我把我程序中的错误一个一个的改过来,从而也调试成功,得出预期的效果。

程设计总结

这次课程设计根据课题要求,复习了这学期所学的单片机内容,通过查询相关的资料,简要知道了虽然老师上课讲过,但并非听懂了的8155芯片的有关知识。

根据课程设计的要求和自己通过参考有关资料拟的方案,写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序,达到能够实现所要求的功能的目的。

在写程序时,在每条指令后都写好注释,以便在程序出错的检查过程中可以更容易查找得到。

 这次的单片机课程设计重点是理论与实际的相结合,不单单只是书上的一条条分离的指令。

通过这次设计让我更系统的了解了个个指令以及单片机的扩展内容,为这次的期末考试有了进一步的准备。

参考文献

徐惠民、安德宁.单片微型计算机原理接口与应用.第1版.北京:

北京邮电大学出版社,1996

何立民.从Cygnal80C51F看8位单片机发展之路.单片机与嵌入式系统应用,2002年,第5期:

P5~8

夏继强.单片机实验与实践教程.北京:

北京航空航天大学出版社,2001

陈志强胡辉.单片机应用系统设计实践指南.自编教材

肖洪兵.单片机应用技术.自编教材

目录

课程设计目的1

系统方案设计及确定1

系统硬件设计1

3.1AT89S51最小系统设计1

时钟电路硬件设计2

复位电路硬件设计3

键盘、显示电路硬件设3

键盘电路硬件设计3

显示电路硬件设计5

系统软件设计6

系统主程序设计6

系统主程序流程图7

系统软件设计内存分配及芯片地址介绍9

4.2定时器的设计9

4.3秒表的设计9

4.4其他主要子程序的设计10

1.省电子程序10

2.秒表子程序10

3.报警子程序12

4.时间调整子程序12

5.显示子程序13

6.定时器0中断子程序14

7.1毫秒延时子程序15

8.100毫秒延时子程序15

9.1秒延时子程序15

系统调试15

1.调试所用工具及调试步骤15

2.调试过程16

程设计总结16

参考文献16

 

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

当前位置:首页 > 外语学习 > 法语学习

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

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