基于单片机的秒表设计与实现课程设计报告.docx

上传人:b****7 文档编号:9454771 上传时间:2023-02-04 格式:DOCX 页数:18 大小:88.55KB
下载 相关 举报
基于单片机的秒表设计与实现课程设计报告.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

基于单片机的秒表设计与实现课程设计报告

基于单片机的秒表课程设计报告

一、设计题目

秒表系统设计——用AT89C51设计一个2位LED数码显示秒表”显示时间为00~99秒,每秒自动加一。

另设计一个开始”按键和一个复位”按键。

二、增加功能

增加一个暂停”按键和一个快加”按键(每10ms快速加一)

三、设计提要

本实验利用单片机的定时器/计数器定时和记数的原理,结合dvcc实验箱上的集成电路芯片8032、LED数码管以及实验箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确

地进行计时,数码管能够正确地显示时间。

其中本实验设计了四个开关按键:

其中一个按键按下去时以1秒加一开始计时,即秒表开始键(本实验中当开关从1变为0时开始计时),另一个按键按下去时暂停计时,使秒表停留在原先的计时(本实验中当相应开关从1变为0时即停止计时),第三个按键按下去时清0(本实验中当相应开关从1变为0时即停止计时),第四按键按下去则是以每10ms秒快速加一计时(本实验中当开关从1变为0时开始计时)。

本实验中开始时都要使各按键回到各初始位置,即都处于1状态。

三、课设目的

1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,

对单片机课程的应用进一步的了解

2、掌握定时器、外部中断的设置和编程原理。

3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

四、意义

该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、快加功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。

五、本人所做工作

根据相关的单片机材料,利用所学的单片机知识,结合DVCC系列

单片机微机仿真实验系统中的软件和硬件(集成电路芯片8032,七段数码管,开关电路及时钟信号电路,按键等),编写能够实现该项目的软件程序,最后将软、硬件有机的结合起来,进行有效的调试,达到完成该实验课程设计的目的要求。

六、实验内容

用AT89C51设计一个2位LED数码显示秒表”显示时间为00~99秒,每秒自动加一。

另设计一个开始”按键和一个复位”按键。

再增加一个暂停”按键和一个快加”按键(每10ms快速加一)。

按键说明:

按开始”按键,开始计数,数码管显示从00开始每秒自动加一;按复位”按键,系统清零,数码管显示00;按暂停”按键,系统暂停计数,数码管显示当时的计数;按快加”按键,系统每10ms快速加一,即数码显示管在原先的计数上快速加一。

七、设计思路及描述

该实验要求进行计时并在数码管上显示时间,则可利用DVCC系列

单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片

AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现开始”按键的功能;将P3.3做为外部中断1的入口地址,并实现清零”按键的功能;将P3.0做为数据信号DATA输入的入口地址;将P3.1做为时钟信号CLK输入的入口地址。

定时器T0作为每秒加一的定时器;定时器T1作为快加”键的定时器。

其中开始”按键当开关由1拨向0(由上向下拨)时开始计时;清零”按键当开关由1拨向0(由上向下拨)时数码管清零,此时若再拨开始”按键则又可重新开始计时。

九、实验疯程图

1、主程序流程图

2、加一子程序流程图“

 

5、数码呈示流程图

6、定时器TO子程序。

定时器TO入□地址R

貫初值/

调用加一子程序「

调用数码显示子程序「

R3V20H,重置循环次数卩

中断返回卩

 

你定时器T1子程序存

十、实验程序

***********************************************************

*******

;设计选题:

实验五-----秒表系统设计

;描述:

2位LED数码显示"秒表",显示时间为00~99秒,每秒自动加

1,

;一个"开始"键,一个"复位"键,一个"暂停"键,一个快加”键。

;调用子程序:

暂停键子程序,计时键子程序,清0键子程序,加一子程序

显示子程序,定时子程序

;所用特殊寄存器:

寄存器A,寄存器C

;所用中断:

外部中断INTO、INT1,定时器TO、T1

;实验作者:

吴呤--2号,方晓瑛--10号

***********************************************************

****************

**********************************************************

主程序

*

main:

movtcon,#05h

;主程序开始外部中断跳变模式

movtmod,#11h

;定时器0,1模式1

movie,#8fh

;开总中断冲断0,1,定时器0,1

movdptr,#tab

movr1,#00h

movr2,#00h

movr3,#40

;循环次数40

movtlO,#2Ch

;置初值,定时25MS

movthO,#OCFh

movtl1,#78h

;置初值,定时10MS

movth1,#0ech

clrtrO

;关定时器

clrtr1

・**********************************************************

5

;暂停键K3,快加键K4程序

・**********************************************************

5

here:

jbp1.0,here

show:

clrtr1

clrtr0

kuaijia:

jbp1.2,kuaijia;等待P1.2为0快加

clrtrO

setbtri

here3:

jnbp1.2,here3

ajmphere

・**********************************************************

5

*

;外部中断INT0子程序-----计时按键K1子程序

・**********************************************************

5

*

zhongduan0:

setbtr0;计时按键

reti

・**********************************************************

5

*

;外部中断INT1子程序----复位按键K2子程序

・**********************************************************

5

*

zhongduan1:

clrtr0;复位按键

clrtr1

mov12h,#00hmov11h,#00h

movr1,#OOhmovr2,#00hreti

・**********************************************************

加一子程序

・**********************************************************

;加1子程序

jial:

incr1

movr1,#00hincr2cjner2,#0ah,loop

movr2,#00hmov11h,r2ret

・**********************************************************

显示子程序

movr0,#12h

Ioop5:

movr6,#08h;8位2进制数

mova,@rO

movea,@a+dptr

Ioop6:

rlca;循环左移

clrp3.1

movp3.0,c

setbp3.1

djnzr6,loop6

decr0

djnzr7,loop5

ret

・**********************************************************

5

*

;定时器TO子程序

・**********************************************************

5

*

yanshi:

movtl0,#2Ch;定时子程序

movth0,#0CFh

djnzr3,loop7

acallxianshi;调用显示子程序

movr3,#40

Ioop7:

reti

・**********************************************************

5

*

;定时器T1子程序

・**********************************************************

5

*

dingshi1:

movtl1,#78h;置初值,定时10MS

movth1,#0ech

clrtrO

setbtr1

mov12h,r1

mov11h,r2

jnbp1.0,show

acalljia1

acallxianshi

lop7:

reti

・**********************************************************

tab:

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

end

十一、课程设计心得体会

1、认真审题,看懂题目的要求!

选择适当的课题,不益太简单或者太难。

做到既能把课题完成又能锻炼自己的能力!

2、根据课题要求,复习相关的知识,查询相关的资料。

3、根据实验条件,找到适合的方案,找到需要的元器件及工具,准

备实验。

4、根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。

然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。

5、还要根据实验的实际情况,添加些额外程序来使系统更加的稳定,

如开关的消震荡(采用延迟)。

6、程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,

这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明

白易懂。

7、该实验的程序可以参考DVCC系列单片机微机仿真实验系统实验指导书中的串并转换实验,也可自己根据自己熟悉的方法来编程。

8在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。

9、这次的单片机课程设计重点是理论与实际的相结合。

不再只读书

了。

10、该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。

此设计完毕!

下面提供一个程序(供参考的)

;开机初始化

MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

MOVP0,#0FFH;使显示时间数码管熄灭

CLRF0

CLRF1

MOVDPTR,#NUMTAB;指定查表启始地址

;等待按键输入

;根据按键的输入判断执行什么功能

;按键1按下则执行功能1

MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

MOVP0,#0FFH;使显示时间数码管熄灭

START:

JBP3.6,START1循环判断开始按钮K1是否按下?

ACALLDELAY10;延时10毫秒触点消抖

JBP3.6,START如果是干扰就返回

JNBP3.6,$;等待按键松开

LJMPGN1

;按键2按下则执行功能2

START1:

JBP3.7,START循环判断开始按钮K2是否按下?

ACALLDELAY10;延时10毫秒触点消抖

JBP3.7,START1如果是干扰就返回

JNBP3.7,$

LJMPGN2

;数码管显示秒表时间的程序

GN1:

;先初始化

S1:

MOVA,#0

MOVTEMP,A

GOON1:

MOVR2,#2

JS1:

MOVR3,#250

TIME1:

MOVA,TEMP;将TEMP中的十六进制数转换成10进制

MOVB,#10;10进制/10=10进制

DIVAB

MOVB_BIT,A;十位在A

MOVA_BIT,B;个位在B

LCALLDPLOP1

;插入一段判断定时过程中是否有按键输入的程序段

C1:

JBP3.6,B1

ACALLDELAY10;延时10毫秒消抖

JBP3.6,C1

JNBP3.6,$;等待按键松开

CPLF0

ZT1:

;MOVP3,#0FFH对P3口初始化,设置为高电平,用于按键输

JBP3.6,$;循环判断开始按钮K1是否按下?

ACALLDELAY10;延时10毫秒触点消抖

JBP3.6,ZT1;如果是干扰就返回

JNBP3.6,$;等待按键松开

LCALLDPLOP1

B1:

JBP3.7,LOOP1

ACALLDELAY10;延时10毫秒消抖

JBP3.7,B1

JNBP3.7,$;等待按键松开

AJMPOVER

LOOP1:

DJNZR3,TIME1;2毫秒循环执行250次,时间约0.5秒

DJNZR2,JS1;循环执行2次时间为1秒钟

INCTEMP;满一秒钟对时间加1

MOVA,TEMP

CLRC

SUBBA,#60

JNZGOON1;判断TEMP的数值是否为60?

不为60循环

ACALLOVER

RET

GN2:

MOVA,#14H;设定倒计时的时间20S

MOVTEMP,A

;数码管显示倒计时时间的程序

;初始化

MOVP3,#0FFH对P3口初始化,设置为高电平,用于按键输入

MOVP0,#14H;使显示时间为设定的倒计时时间

GOON2:

MOVR2,#2

JS2:

MOVR3,#250

TIME2:

MOVA,TEMP;将TEMP中的十六进制数转换成10进制

MOVB,#10;10进制/10=10进制

DIVAB

MOVB_BIT,A;十位在A

MOVA_BIT,B;个位在B

MOVDPTR,#NUMTAB;指定查表启始地址

DPLOP2:

MOVA,A_BIT;取个位数

MOVCA,@A+DPTR;查个位数的7段代码

MOVP0,A;送出个位的7段代码

CLRP2.5;开个位显示

ACALLDELY1;显示1毫秒

SETBP2.5;关闭个位显示,防止鬼影

MOVA,B_BIT;取十位数

MOVCA,@A+DPTR;查十位数的7段代码

MOVP0,A;送出十位的7段代码

CLRP2.6;开十位显示

ACALLDELY1;显示1毫秒

SETBP2.6;关闭十位显示,防止鬼影

;插入一段判断定时过程中是否有按键输入的程序段

C2:

JBP3.6,B2

ACALLDELAY10;延时10毫秒消抖

JBP3.6,C2

JNBP3.6,$;等待按键松开

ZT2:

MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输

JBP3.6,$;循环判断开始按钮K1是否按下?

ACALLDELAY10;延时10毫秒触点消抖

JBP3.6,ZT2;如果是干扰就返回

JNBP3.6,$;等待按键松开

B2:

JBP3.7,LOOP2

ACALLDELAY10;延时10毫秒消抖

JBP3.7,B1

JNBP3.7,$;等待按键松开

AJMPOVER

LOOP2:

DJNZR3,TIME2;2毫秒循环执行250次,时间约0.5秒

DJNZR2,JS2;循环执行2次,时间为1秒钟

DECTEMP;满一秒钟对时间减1

MOVA,TEMP

JNZGOON2;判断TEMP的数值是否为0?

不为0循环

ACALLOVER

RET

;结束定时

OVER:

AJMPSTART;退到开机初始化状态

;1毫秒延时子程序

DELY1:

MOVR4,#2

D1:

MOVR5,#248

DJNZR5,$

DJNZR4,D1

RET

;10毫秒延时子程序

DELAY10:

MOVR4,#20

D2:

M0VR5,#248

DJNZR5,$

DJNZR4,D2

RET

;实验板上的两位一体的数码管0〜9各数字的显示代码

NUMTAB:

DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H

DPL0P1:

MOVA,A_BIT;取个位数

MOVCA,@A+DPTR;查个位数的7段代码

MOVP0,A;送出个位的7段代码

CLRP2.5;开个位显示

ACALLDELY1;显示1毫秒

SETBP2.5;关闭个位显示,防止鬼影

MOVA,B_BIT;取十位数

MOVCA,@A+DPTR;查十位数的7段代码

MOVP0,A;送出十位的7段代码

CLRP2.6;开十位显示

ACALLDELY1;显示1毫秒

SETBP2.6;关闭十位显示,防止鬼影

RET

END

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

当前位置:首页 > 解决方案 > 其它

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

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