单片机用汇编写两个数码管显示0到99循环的程序

单片机用汇编写两个数码管显示0到99循环的程序,第1张

1、新建项目,做好准备。

2、数码管段选表。

3、延时函数。

4、uchar i变量i;wk = 1打开位选,P0 = 0xf71111 0111第4位数码管显示,wk = 0关闭位选。

5、while(1) //死循环效果{} 。

6、dk = 1 //打开段选,P0 = leddata[i],dk = 0 //关闭段选,delay(100)//延时效果。

7、选择效果,限制i值的循环范围。

一位数码管循环显示1-9的汇编程序

ORG

00H

:单片机启动地址

START:MOV

R2,#0

;要显示的第一个数为0

MOV

R5,#10

;要循环显示的次数10次

MAIN:

MOV

DPTR,#TAB

;显示编码表格首地址

MOV

A,R2

取要显示的数在R2种

MOVC

A,@A+DPTR

;查表

求要显示的数的编码

MOV

P3,A

;送P3口驱动7段数码管显示

INC

R2

;修改要显示的下一个数

LCALL

DELAY

调用延时子程序(稳定显示)

DJNZ

R5,MAIN

;循环显示次数减1

不等于0

继续显示

JMP

START

;从新转主程序

开始新一轮的显示

DELAY:MOV

R0,#5

;延时子程序

DELAY0:MOV

R7,#200

DELAY1:MOV

R6,#250

DJNZ

R6,$

DJNZ

R7,DELAY1

DJNZ

R0,DELAY0

RET

TAB:DB

DB

0C0H,

0F9H,

0A4H,0B0H,99H,92H,82H,0F8H,

DB

80H,

90H,;0~9的显示编码表格

END

;结束汇编、

ORG

0000H

SJMP

MAIN

ORG

030H

MAIN:

MOV

R1,#00H

MOV

A,R1

D1:

ANL

A,#0FH

MOV

DPTR,#TAB

MOVC

A,@A+DPTR

查表

MOV

P0,A

P0口输出,显示数字

ACALL

DELAY

INC

R1

MOV

A,R1

A加1

CJNE

A,#10,D1

判断A是否到达10

LJMP

MAIN

当A达到10跳回主函数,重新赋值为0

DELAY:

MOV

R2,#05H

延时

D2:

MOV

R3,#0FFH

D3:

MOV

R4,#0FFH

DJNZ

R4,$

DJNZ

R3,D3

DJNZ

R2,D2

RET

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

数值1到9的共阳极编码

END

补充说明两点:

1、程序下载到目标板之后,注意一下晶振频率,如果显示效果不佳,可以通过修改延时参数,调节刷新频率。

2、这里采用的是共阳极编码二极管(公共端已经接VCC了),下载程序前,请注意自己到网上找编码,代替倒数第二行代码。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存