当前位置:新励学网 > 秒知问答 > 单片机驱动数码管显示问题

单片机驱动数码管显示问题

发表时间:2024-07-19 14:20:08 来源:网友投稿

前不久刚弄的类似显示程序,调整了下给你,看看有用不。电路图是4位显示的,程序已经改成了2位显示。

;单片机内存分配申明!

TEMPER_LEQU28H;用于保存计数值

A_BITEQU20H;数码管个位数存放内存位置

B_BITEQU21H;数码管十位数存放内存位置

ORG0000H

LJMPMAIN

ORG0040H

MAIN:

MOVSP,60H

MOVA,#00H

MOVP2,A

STAR:

MOVTEMPER_L,#0;初始化计数器,从0开始

stlop:

ACALLDISPLAY;调用显示子程序

INCTEMPER_L;对计数器加1

MOVA,TEMPER_L

CJNEA,#100,NEXT;判断计数器是否满100?

MOVTEMPER_L,#0;满100就清零

NEXT:LJMPstlop;不满就循环执行

DISPLAY:

MOVA,TEMPER_L

MOVB,#10;10进制/10=10进制

DIVAB

MOVB_BIT,A;十位在a

MOVA_BIT,B;个位在b

MOVDPTR,#NUMTAB;指定查表启始地址

DPL1:MOVR7,#250;显示250次,数越小,显示频率越高,递增的越快。

DPLOP:MOVA,A_BIT;取个位数

MOVCA,@A+DPTR;查个位数的7段代码

MOVP0,A;送出个位的7段代码

SETBP2.3;开个位显示

ACALLD1MS;显示1ms

CLRP2.3

MOVA,B_BIT;取十位数

MOVCA,@A+DPTR;查十位数的7段代码

MOVP0,A;送出十位的7段代码

SETBP2.2;开十位显示

ACALLD1MS;显示1ms

CLRP2.2

DJNZR7,DPLOP;250次没完循环

RET

;1MS延时(按12MHZ算)

D1MS:MOVR5,#80

DJNZR5,$

RET

;7段数码管0~9数字的共阳显示代码

NUMTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

END

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!