数码管动态显示 汇编

【问】

ORG 0000H

LJMP MAIN

ORG 000BH

AJMP TT0

ORG 0300H

MAIN:MOV R3,#0FEH ;字位保存在R3

MOV TMOD ,#00H ;工作方式0

MOV TH0,#00H

MOV TL0,#00H

SETB EA

SETB ET0

SETB TR0;启动T0

SJMP $;等待

TT0:CLR TR0

MOV TH0,#00H

MOV TL0,#00H

LCALL KEY;调用键盘子程序

LCALL DISPLAY;调用显示子函数

SETB TR0

RETI

//-----------------------------------------------------------------------------------

KEY:MOV A,P1

ANL A,#80H;P1口与1000 0000相与

JZ KEY1

MOV A,P1

ANL A,#0FH

MOV 30H,A ;字形的操作

MOV A,P1 ;检测按钮是否已经放开

ANL A,#80H

JNZ KEY1

MOVA,R3 ;字位的操作

RL A ;右移

MOV R3,A   

MOV 70H,A

KEY1:RET

DISPLAY:

MOV A,30H;30H的内容为

MOV DPTR,#TAB;

MOVC A,@A+DPTR;

MOV P0,A;送字形

MOV A,70H

MOV P2,A ;送字位

LCALL DELAY1MS

RET

DELAY1MS:   

    MOV R7,#01H

DL1:

    MOV R6,#8EH

DL0:

    MOV R5,#02H

    DJNZ R5,$

    DJNZ R6,DL0

    DJNZ R7,DL1

    RET

TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,67H

DB 77H,7cH,39H,5eH,79H,71H

END

现在的问题是,想让数码管第一次按下的键值现在在最左边,第八次按下的键值显示在最右边,以此类推,数码管是共阴极的,我真心不知道到怎么在动态显示的同时还把位选移到下一位。希望大家帮忙看看,谢谢了。

【答】

可以实现的。

当先后按下《1、3、0、8、d、A》,显示如下图:

程序见:http://www.eeskill.com/article/id/50630。

永不止步步 发表于01-30 14:17 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:306117个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号