您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页秒表的设计及调试

秒表的设计及调试

来源:五一七教育网


上机实验作业四:

题目:利用Protuse提供的显示电路和按键,设计一个手控计时器(秒表)。 要求:1. 显示出分、秒、1/100秒;

2. 设置计时/暂停按键S1和归零按键K0; 算法分析:

按一下S1键,进行计时状态(1)/暂停状态(0)的切换。 按一下K0键,置成暂停状态(0),计时器置0。 定义分、秒、1/100秒为MM,SS,NN。

MM,SS,NN是二进制数,要经代码转换才能进行显示。算法步骤:

第1步 初始化。 第2步 显示时间。

第3步 按下S1键则状态值取反。

第4步 按下K0键则状态值置0,计时器置0。 第5步 判别(状态值=0)则转到第7步。 第6步 进行计时。 第7步 转到第2步。 进一步细化:

第1步 1.1 (MM,SS,NN) 0

1.2 状态T0 ( 定义: T EQU 01H ) 1.3 (40H)~(42H) (MM, SS, NN)转换为BCD码;为BCD码再送到显示缓冲区) 第2步 2.1 显示时间。

第3步 3.1 判别S1=1则转到4.1(没有按下) 3.2 状态T取反

第4步 4.1判别K0=1则转到5.1(没有按下) 4.2状态T0

4.3 (MM,SS,NN)0

第5步 5.1 判别(状态T=0)则转到2.1

(把二进制数转换

第6步 6.1 延时10ms

6.2进行计时。 (NN+1≥100→ NN0, SS+1≥60→ SS0, MM+1

≥60→ MM0 )

If NN++≥100 then { NN0; SS++;

if SS++≥60 then { SS0; MM++; }

第7步 7.1转到1.3

流程图: ①~⑤为调试的步骤

if MM++≥60 then {MM0 }

} (2.1) 开始 ①初始化 ②代码转换 ①显示时间 ④ S1=1 Y N ④T取反 ⑤ K0=1 Y

N ⑤T=0,时间置0 ④Y T=0 N ③ 延时10ms ③计 时 编程调试步骤: ①:编写主程序

1. 编写主程序和显示子程序(范例程序:附在后面。) 主程序: ORG 0000H Main: LCALL ST ; 初始化子程序 Main1: LCALL DisLED ; 显示子程序 SJMP Main1 2. 输入并调试、运行通过。

②:添加把二进制数转换为BCD码并存到LED显示缓冲区的子程序。 先用EQU定义MM、SS、NN,然后在ST子程序中对其赋值。

1. 编写把MM、SS、NN(0~99)的二进制数转换为BCD码(参见P51页的【例3-51】)

并存入显示缓冲区(40H)~(42H)中的子程序BIN_BCD。 2. 加入到上面调试成功的程序中:

MM EQU 30H SS EQU 31H

NN EQU 32H

ORG 0000H

Main: LCALL ST ; MM0, SS0, NN0

Main1: LCALL BIN_BCD ; 例:MM=45=00101101B转换为BCD码01000101B

LCALL DisLED

SJMP Main1 BIN_BCD:

RET 3. 输入并调试、运行通过。

4. 修改ST子程序中的MM#9, SS#45, NN#86后再次运行通过。

③:添加计时子程序JISHI。 1. 编写JISHI子程序:

JISHI: INC NN MOV A, #100

CJNE A, NN, JSEND MOV NN, #0

INC SS

MOV A, #60

CJNE A, SS, JSEND MOV SS, #0 INC MM MOV A, #60

CJNE A, MM, JSEND MOV MM, #0

JSEND: RET 2. 加入到主程序中

Main: LCALL ST ;

Main1: LCALL BIN_BCD ; 二进制数转换为BCD码

LCALL DisLED

LCALL Delay10 ; 延时10ms LCALL JISHI ; 计时 SJMP Main1 3. 输入并调试、运行通过。

4. 修改DisLED子程序中的延时子程序Delay的时间约为1.667ms,再次运行通过。

④:添加S1键(计时/暂停键) 1. 加入到主程序中 T BIT 01H S1 EQU P3.1

Main:

LCALL ST ; 加入T0

Main1: LCALL BIN_BCD ; 二进制数转换为BCD码

LCALL DisLED

JB S1, Main2 CPL T JNB S1, $ Main2: JNB T, Main1 LCALL Delay10

LCALL JISHI ; 计时 SJMP Main1 2. 输入并调试、运行通过。 ⑤:添加K0键(归零键) 1. 加入到主程序中

T EQU 01H S1 EQU P3.1 K0 EQU P3.0

Main: LCALL ST Main1: LCALL BIN_BCD LCALL DisLED JB S1, Main2 CPL T JNB S1, $ Main2: JB K0, Main3 CLR T

MOV MM, #0 MOV SS, #0 MOV NN, #0 Main3: JNB T, Main1 LCALL Delay10

LCALL JISHI SJMP Main1 2. 输入并调试、运行通过。

;

; 二进制数转换为BCD码 ; 计时

范例程序:

ORG 0000H LJMP Main ORG 50H Main: LCALL ST

Main1: LCALL DisLED SJMP Main1

ST: MOV 40H, #00H ; 0 MOV MOV RET

DisLED: MOV MOV MOV MOV MOV MOV RET Delay10: MOV De1: MOV De2: DJNZ DJNZ RET END

41H, #00H 42H, #00H A, 42H P2, A A, 41H P1, A A, 40H P0,A

R3, #10 R4, #250 R4, De2 R3, De1 ; 0 ; 0

; 设 f = 6MHz ;

; 250*4us=1ms

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务