8255键盘显示实验显示程序中延时函数起什么作用?如何调节数码块亮度

8255键盘显示实验显示程序中延时函数起什么作用?如何调节数码块亮度,第1张

写程序之前一定要先从系统的级别构建一下程序的结构。

你的程序中,有数码管扫描显示、按键扫描、RTC三部分。

在构建程序结构的时候,考虑到几个部分的特点,一般情况如下:

1、如果时间显示到秒,应在100ms左右读一次RTC。

2、为了保证显示不删,应在20ms以内完成一次显示刷新,假设你用了20个数码管显示日期和时间。

3、按键是随机的,需要检测,一般按键按下的时间不小于50ms,可以考虑在10ms检测一次按键。

程序可以定义一个1ms的定时器,设置几个变量对定时器进派和行计数。

每个1ms定时到时,自加对定时器的计数,并更新数码管显示,20ms更新完20个数码尘搜盯管。

每到10ms检测一次按键,记录状态,与上次状态进行比较,如果连续两次或三次检测到按键按下,设置按键动作的标记,并确定如何更改显示,改变显存。

如果不在设置状态,每100ms读一次RTC的值,将值更新到显存。

如果数码管需要调整亮度,可以将1ms定时器改为100us,分给每个数码管的1ms内,改变其点亮的时间,就可以调出十种亮度。

用这种架构做这个程序,处理器负担很轻,对所有的外设漏坦的响应一样迅速。你会感到51单片机还是能干很多活的。

51单片机怎样誉升用键盘控制数码管显示的方法。

如下参考:

1.首先,编写代码并点亮数码管。

2.在编写源代码之后,确保原始代码是正确的。

3.确认代码正确后,进入下一步,就是在这一行代码(箭头所指)中,删除这四个单词。

4.然后如图所示,四个单颤仿词已被删除,只要修改相应的代码编号即可。

5.表示数字0的代码在这里进行了更改,如图所示。

6、最后写代码,将生成的十六进制文件写进单茄虚纤片机应答,数码管显示的数字变为0。

可以实现,写好了,测试通过可以,加了些注释,帮助你看,不懂可以留言,帮你解答...希望可以帮到你,

ASSUME CS:CODE,DS:DATA,SS:STACK

DATA SEGMENT

MESSAGE DB 'Please input a number?','$'

STR1 DB 0DH,0AH,'houyongtao080702211',0DH,0AH,'$'

STR2 DB 0DH,0AH,'112207080oatgnoyuoh',0DH,0AH,'$'

DAT_A DB 100

DB ?

DB 100 DUP(0)

DATA ENDS

STACK SEGMENT

STA DB 100 DUP(?)

STACK ENDS

CODE SEGMENT

START:

MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV SP,100

L: LEA DX,MESSAGE

MOV AH,09H

INT 21H

LEA DX,DAT_A

MOV AH,0AH

INT 21H

判断数据的合法性,不合法退出------------------------

LEA BX,DS:[DAT_A+2]

L0: MOV AL,DS:[BX]

INC BX

CMP AL,0DH 输入数值后跟的是个回车0D

JZ L3

CMP AL,'0'

JL OVER

CMP AL,'9'

JA OVER

JMP L0

L3: LEA SI,DS:[DAT_A+2] 从DX指向枝禅的单元读入

CALL ASCTDEC 调用ASCII码转换为十进制数

MOV DS:[BX],AX

TEST AX,1 判断该单元内的数字的最低位,为0,则是偶数

JZ L1 为偶数

JNZ L2

L1: LEA DX,STR2

MOV AH,09

INT 21H

JMP L

L2: LEA DX,STR1

MOV AH,09

INT 21H

JMP L

OVER:

MOV AH,4CH

INT 21H

ASCII转十进制数子程序-----------------------------------------

ASCTDEC:

PUSH BX

PUSH CX

PUSH DX

MOV AX,0 存放转换结果

MOV DL,DS:[SI]

ASCTDEC_L3:

AND DL,0FH 利用数字ASCII码与十进制的关系:ASCII低四位就是十进制数

MOV DH,0

ADD AX,DX

INC SI

MOV DL,DS:[SI]

CMP DL,'0'

JL ASCTDEC_L2

CMP DL,'9'滑搏

JG ASCTDEC_L2

CALL MUL10 调用乘10的子程猛让尘序

JMP ASCTDEC_L3

ASCTDEC_L2:

POP DX

POP CX

POP BX

RET

乘10的子程序----------------------------------------------

MUL10: MOV BX,AX

SHL AX,1 乘2

SHL AX,1 再乘2

ADD AX,BX 加上原来的数,相当于乘以5

SHL AX,1 再来乘2,总共乘了10

RET

CODE ENDS

END START


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12452723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存