51单片机 汇编 4位数码管 共阴改共阳 程序

;=====显示程序=====
DISPLAY: MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码 输出
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#0feH
MOV P0,A
ACALL DELAY2
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#0fdH
MOV P0,A
ACALL DELAY2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#0fbH
MOV P0,A
ACALL DELAY2
RET
DAT1: DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
这是原来共阴的显示程序,请问改成共阳应该怎么改呢
电路需要改吗?希望可以给出具体的改法,程序也是。谢谢大家。好的会追加分数

DISPLAY: MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码 输出
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY2
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY2
RET
DAT1: DB 0ffh,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffH,8eH
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffH,8eH
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-22
程序上的改动就是把DAT1与DAT2后面的显示码按位取反即可。

51单片机 控制四位数码管 汇编程序
哦,,数码管 有共阳极,共阴极的,你是那一种 ;显示缓冲单元在72H—75H DISPLAY:MOV DPTR,#TAB CLR P3.3 MOV A,72H MOVC A,@A+DPTR LOP1:MOV P2,A LCALL DL1MS SETB P3.3 CLR P3.2 MOV A,73H MOVC A,@A+DPTR LOP2:MOV P2,A LCALL DL1MS SETB P3.2 CLR P3.1 MOV A,74...

急求4*4矩阵键盘控制数码管显示! 51单片机
共阳极数码管 如果是共阴极数码管则 display()里的P0=0xff;改为P0=0x00;P2=smg_we[a];改为P2=~smg_we[a];P0=dsp_code_ca[xianshi[a]];改为P0=~dsp_code_ca[xianshi[a]];即可 include<reg51.h> define uchar unsigned char define uint unsigned int uchar key_char,key_char0;u...

急求C51单片机12灯流水灯4位数码管控制程序啊,要求数码管跟灯都能亮...
Shmag_02 = 0; \/\/数码管位2显示开启 Shmag_03 = 0; \/\/数码管位3显示开启 Shmag_04 = 0; \/\/数码管位4显示开启 while(1) \/\/大循环 { Light_waterCmd(); \/\/一直循环点亮LED1---LED7;Shmag_waterCmd(); \/\/一直循环数码管显示0--F;} } ...

51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。
} 4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器...
用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。用proteus做的时钟 可以显示年月日时分秒 可调整时间 有图 \/ includereg52.h

...请哪位大神帮我把下面的单片机代码的共阴改为共阳的呀,我只有共阳的...
代码好改,问题是我感觉你的电路不太正确呀,数码管的位选怎么接了NPN的基极上了。程序改的时候,只要位选电平换过来,段码在原来基础上取反就可以了。比如下面:void display(){ led0=1;原来为0 bai=temp*100\/51\/100%10+10;P1=~ledmap[bai];delay(2);。。。} ...

请问四位共阳数码管的流程图最好带流程图的解释,我做的是关于51单片机的...
可以选择2个4位的数码管,这样只用2个I\/O端口。共阳的数码管每位只需一个三极管驱动,9014或者9015(这是pnp管,接法与9014相反)另外给你说一下(51系列单片机有4个I\/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输出驱动器和输入缓冲器...

单片机四位数码管显示中间一行字母
51单片机(四位数码管的显示)程序 基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管 上显示P ”个字符;2)等待按键,如按了任何一个键,则将这 4个字符清除, 改为显示0000”个字符(为数字的0)。E3最佳答案 下面这个程序是4x4距阵键盘丄ED数码管显示,一共可以到0-F...

使用51单片机,4个共阳数码管,每个数码管连接一个开关
单片机是单线程的,你做的按键应该是按下程序就在在那里一直等到你松开吧,而这个时候单片机就没有机会去做关于显示的事情了,你不想当数码管显示最好是在等待前把显示给关了

51单片机共阳极数码管显示程序里编码为什么会有共阴极的编码?_百度知 ...
你好!共阴和共阳的编码其实是通用的,用的时候,只要取反就行了 P0=~Data_[temp\/100];~就是取反了

相似回答