在构建程序结构的时候,考虑到几个部分的特点,一般情况如下:
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)