基于单片机的电子秒表的设计.docx

上传人:b****3 文档编号:10959148 上传时间:2023-05-28 格式:DOCX 页数:15 大小:34.95KB
下载 相关 举报
基于单片机的电子秒表的设计.docx_第1页
第1页 / 共15页
基于单片机的电子秒表的设计.docx_第2页
第2页 / 共15页
基于单片机的电子秒表的设计.docx_第3页
第3页 / 共15页
基于单片机的电子秒表的设计.docx_第4页
第4页 / 共15页
基于单片机的电子秒表的设计.docx_第5页
第5页 / 共15页
基于单片机的电子秒表的设计.docx_第6页
第6页 / 共15页
基于单片机的电子秒表的设计.docx_第7页
第7页 / 共15页
基于单片机的电子秒表的设计.docx_第8页
第8页 / 共15页
基于单片机的电子秒表的设计.docx_第9页
第9页 / 共15页
基于单片机的电子秒表的设计.docx_第10页
第10页 / 共15页
基于单片机的电子秒表的设计.docx_第11页
第11页 / 共15页
基于单片机的电子秒表的设计.docx_第12页
第12页 / 共15页
基于单片机的电子秒表的设计.docx_第13页
第13页 / 共15页
基于单片机的电子秒表的设计.docx_第14页
第14页 / 共15页
基于单片机的电子秒表的设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的电子秒表的设计.docx

《基于单片机的电子秒表的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子秒表的设计.docx(15页珍藏版)》请在冰点文库上搜索。

基于单片机的电子秒表的设计.docx

基于单片机的电子秒表的设计

电子秒表的设计

一、设计目的

掌握定时器使用方法,掌握单片机管理键盘、显示器的方法。

二、技术指标

1.6位LED:

5

9

5

9

9

9

1/10秒

1/100秒

2.按键启动、停止秒表计数。

三、设计方案

基本定时时间为100us。

中断10000次为1秒。

秒和分逢60进1。

1/1000秒不显示,做四舍五入处理。

参考实验十八电子钟程序。

设计任务

设计任务:

利用LAB6000单片机实验箱实现数字秒表设计

1.设计电子秒表,精度为0.01秒

2.具有启动、停止、清零功能

3.每到1秒蜂鸣提示,此功能可关闭。

基本定时时间为100us。

中断10000次为1秒。

秒和分逢60进1。

1/1000秒不显示,做四舍五入处理。

利用数码管扫描显示,将数据显示在数码管上。

程序是从左边开始显示,然后显示下一位,四位显示完后返回。

不断的循环扫描,由于扫描时间小于20ms,人眼有时间暂留现象,能看到同时亮。

还利用了键盘扫描程序,能够设置键盘按钮控制程序,本课程设计利用了15个按键,0~9十个数字输入按键,一个开始按键,一个暂停按键,一个复位清零按键,一个控制输入按键。

程序流程图

程序模块功能

1、主程序Start:

设置初始化,包括初值的设置,计数器的设置和中断的设置。

2、中断程序T0Int、T1Int:

分别实现正数计时和倒数计时功能。

3、数码管扫描及显示程序DisplayLED:

利用数码管扫描显示,将数据显示在数码管上。

4、键盘扫描及读键值程序TestKey、GetKey:

利用了键盘扫描程序,设置键盘按钮控制,一个开始按键,一个暂停按键,一个复位清零按键,一个控制输入按键。

程序清单

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

INequ08001h;键盘读入口

LEDBufequ60h;显示缓冲

Minuteequ40h

Secondequ41h

NSecondequ42h

MSecondequ43h

C100usequ44h

Tickequ100

T100usequ206

org0000h

ljmpStart

org000bh

ajmpt0int

org1bh

ajmpt1int

T0Int:

pushPSW

pushACC

decC100us

mova,C100us

jnzExit

movC100us,#Tick

incMsecond

mova,Msecond

cjnea,#10,Exit

movMsecond,#0

incNsecond

mova,Nsecond

cjnea,#10,Exit

movNsecond,#0

incSecond

mova,Second

cjnea,#60,Exit

movSecond,#0

incMinute

mova,Minute

cjnea,#60,Exit

movMinute,#0

popACC

popPSW

reti

T1Int:

pushPSW;恢卸?

倒数计时

pushACC

decC100us

mova,C100us

jnzExit

movC100us,#Tick

DECMsecond

mova,Msecond

cjnea,#0,Exit

movMsecond,#9

DECNsecond

mova,Nsecond

cjnea,#0,Exit

movNsecond,#9

DECSecond

mova,Second

cjnea,#0,Exit

JZWW

WW:

CLRTR1

SETBP1.0

movr4,#255

qq1:

calldisplayled

djnzr4,qq1

CLRP1.0

Exit:

popACC

popPSW

reti

Delay:

;延时子程序

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

LEDMAP:

;八段管显示码

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

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;关所有八段管

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管

movr6,#1

callDelay

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

ret

TestKey:

movdptr,#OUTBIT

mova,#0;

movx@dptr,a;输出线置为0

movdptr,#IN

movxa,@dptr;读入键状态

cpla

anla,#0fh;高四位不用

ret

KeyTable:

;键码定义

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

GetKey:

movdptr,#OUTBIT

movP2,dph

movr0,#Low(IN)

movr1,#00100000b

movr2,#6

KLoop:

mova,r1;找出键所在列

cpla

movx@dptr,a

cpla

rra

movr1,a;下一列

movxa,@r0

cpla

anla,#0fh

jnzGoon1;该列有键入

djnzr2,KLoop

movr2,#0ffh;没有键按下,返回0ffh

sjmpExit1

Goon1:

movr1,a;键值=列X4+行

mova,r2

deca

rla

rla

movr2,a;r2=(r2-1)*4

mova,r1;r1中为读入的行值

movr1,#4

LoopC:

rrca;移位找出所在行

jcExit1

incr2;r2=r2+行值

djnzr1,LoopC

Exit1:

mova,r2;取出键码

movdptr,#KeyTable

movca,@a+dptr

movr2,a

WaitRelease:

movdptr,#OUTBIT;等键释放

clra

movx@dptr,a

movr6,#10

callDelay

callTestKey

jnzWaitRelease

mova,r2

ret

ToLED:

movdptr,#LEDMap

movca,@a+dptr

ret

Start:

movLEDBuf,#3fh

movLEDBuf+1,#0bfh

movLEDBuf+2,#3fh

movLEDBuf+3,#0bfh

movLEDBuf+4,#3fh

movLEDBuf+5,#3fh

movTMOD,#00100010b;模式2,定时器

movTH0,#T100us

movTL0,#T100us

movTH1,#T100us

movTL1,#T100us

movIE,#10001010b;EA=1,IT0=1

movMinute,#0

movSecond,#0

movNSecond,#0

movMSecond,#0

movC100us,#Tick

clrp1.0

MLoop:

callDisplayLED

callloopd

callTestkey

jzMLoop

callGetkey

cjnea,#11h,L0

callss

ajmpMloop

l0:

cjnea,#15h,L1

setbTR0

L1:

cjnea,#16h,L2

clrTR0

clrc

mova,C100us

subba,#50

jcL4

ljmpMLoop

L2:

cjnea,#0ffh,L3

movMinute,#0

movSecond,#0

movNSecond,#0

movMSecond,#0

movC100us,#Tick

ljmpMLoop

L4:

ljmpNLoop

L3:

ljmpMLoop

NLoop:

incMsecond

mova,Msecond

cjnea,#10,MLoop

movMsecond,#0

incNsecond

mova,Nsecond

cjnea,#10,MLoop

movNsecond,#0

incSecond

mova,Second

cjnea,#60,MLoop

movSecond,#0

incMinute

mova,Minute

cjnea,#60,MLoop

movMinute,#0

ret

Loopd:

mova,Minute

movb,#10

divab

callToLED

movLEDBuf,a

mova,b

callToLED

orla,#80h

movLEDBuf+1,a

mova,Second

movb,#10

divab

callToLED

movLEDBuf+2,a

mova,b

callToLED

orla,#80h

movLEDBuf+3,a

mova,NSecond

callToLED

movLEDBuf+4,a

mova,MSecond

callToLED

movLEDBuf+5,a

RET

DLOOP:

callDisplayLED

callloopd

callTestkey

jzDLoop

callGetkey

CJNEA,#15H,l000

setbTR1

L000:

cjnea,#16h,L222

clrTR1

clrc

mova,C100us

subba,#50

jcL444

ljmpDLoop

L222:

cjnea,#0ffh,L333

movMinute,#00

movSecond,#00

movNsecond,#0

movMSecond,#0

movC100us,#Tick

ljmpstart

L444:

ljmpELoop

L333:

ljmpDLoop

ELoop:

decMsecond

mova,Msecond

cjnea,#0,DLoop

movMsecond,#9

decNsecond

mova,Nsecond

cjnea,#0,DLoop

movNsecond,#9

decSecond

mova,Second

cjnea,#00,DLoop

ret

ss:

calltestkey

jzss

callgetkey

movledbuf+2,a

calltoled

ss1:

calltestkey

jzss1

callgetkey

movledbuf+3,a

calltoled

MOVA,LEDBUF+2

MOVB,#10

MULAB

ADDA,LEDBUF+3

movMinute,#0

MOVSECOND,A

movNSecond,#9

movMSecond,#9

movC100us,#Tick

qq:

calldisplayled

callDLOOP

ret

end

硬件资源分配表

存储单元、寄存器

用途

备注

8002H

位控制口

8004H

段控制口

8001H

键盘读入口

60H

显示缓冲

数码管显示

40~44H

数据存放区

分别存放分、秒、1/10秒、1/100秒所对应数据

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2