跪求:用Proteus和keil做一个数码管仿真。谢谢。。在线等。

要求:程序用单片机汇编语言,用89c51的芯片,显示六位数,070409。数据不要求循环显示。
发到[email protected]
收到后追加悬赏!

只要显示070409? 

 ORG 00H

 AJMP MAIN

 ORG 30H

MAIN: LCALL DISP

 MOV 20H,#0

 MOV 21H,#4

 MOV 22H,#0

 MOV 23H,#7

 MOV 24H,#0

 MOV 25H,#9

 AJMP MAIN

DISP: MOV A,20H  

 ACALL SEG7

 MOV P0,A

 CLR P2.0

 ACALL DLY

 SETB P2.0

 MOV A,21H  

 ACALL SEG7

 MOV P0,A

 CLR P2.1

 ACALL DLY

 SETB P2.1

 MOV A,22H 

 ACALL SEG7

 MOV P0,A

 CLR P2.2

 ACALL DLY

 SETB P2.2

 MOV A,23H 

 ACALL SEG7

 MOV P0,A

 CLR P2.3

 ACALL DLY

 SETB P2.3

 MOV A,24H 

 ACALL SEG7

 MOV P0,A

 CLR P2.4

 ACALL DLY

 SETB P2.4

 MOV A,25H 

 ACALL SEG7

 MOV P0,A

 CLR P2.5

 ACALL DLY

 SETB P2.5

 RET 

DLY: MOV R7,#2

D1: MOV R6,#40

 DJNZ R6,$

 DJNZ R7,D1

 RET

SEG7: INC A

 MOVC A,@A+PC

 RET

     DB        03FH;0

        DB        006H;1

        DB        05BH;2

        DB        04FH;3

        DB        066H;4

        DB        06DH;5

        DB        07DH;6

        DB        007H;7

        DB        07FH;8

        DB        06FH;9

 END

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-17
主要编一个display程序,首先搞清楚数码管的显示问题,
数字对应数码管显示控制转换字节(共阴编码)
显示--HGFE,DCBA--编码
0 --0011,1111--0x3F;
1 --0000,0110--0x06;
2 --0101,1011--0x5B;
3 --0100,1111--0x4F;
4 --0110,0110--0x66;
5 --0110,1101--0x6D;
6 --0111,1101--0x7D;
7 --0000,0111--0x07;
8 --0111,1111--0x7F;
9 --0110,1111--0x6F;
共阳为编码取反即可,
接线为高低端口对应接法。

备注:第一脚的识别很简单,看管脚的底部,有一个方块型的就是第一脚。或者正面(就是显示那面)朝你,左下角第一个为第一脚。
第2个回答  2010-05-17
我的QQ是1059812331你加我,我们好好研究一下单片机把。我也是学习单片机的。
相似回答