4位共阳数码管,怎么用汇编语言让它显示16个数据?可以每组4个显示,

作者&投稿:慈急 (若有异议请与网页底部的电邮联系)
怎么用汇编语言实现,四位共阳数码管显示16个数据,可以每组4个显示,~

KEYVAL EQU 30HDAT EQU 33HSCANLED EQU 39HCLK EQU 77HDISD EQU 78HORG 0000HLJMP MAINORG 0003HLJMP EXTINT0ORG 000BHLJMP T0ISR ;50ms定时ORG 001BHLJMP T1ISR ;扫描显示ORG 0030HMAIN: MOV SP,#5FH MOV TMOD,#11H MOV TH0,#03CH MOV TL0,#0B0H MOV TH1,#0ECH MOV TL1,#078H MOV KEYVAL,#2 MOV 33H,#10H MOV 34H,#10H MOV 35H,#10H MOV 36H,#10H MOV CLK,#0 SETB IT0 SETB EX0 CLR TR0 CLR ET0 MOV R2,#0 MOV DISD,#0 SETB TR1 SETB ET1 SETB EALOOP: MOV A,KEYVALLOOP1: JNZ LOOP2 ;启动 SETB TR0 SETB ET0 SJMP LOOPLOOP2: DEC A JNZ LOOP3 ;暂停 CLR TR0 CLR ET0 SJMP LOOPLOOP3: DEC A JNZ LOOP ;清零 MOV 36H,#0 MOV 35H,#0 MOV 34H,#0 MOV 33H,#0 SJMP LOOPEXTINT0: PUSH ACC INC KEYVAL MOV A,KEYVAL CJNE A,#3,EXT00EXT00: JC EXT01 MOV KEYVAL,#0EXT01: POP ACC RETIT0ISR: PUSH ACC CLR TR0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 INC CLK MOV A,CLK CJNE A,#20,T0ISRE MOV CLK,#0 MOV DPTR,#DDAT MOV A,DISD PUSH ACC MOVC A,@A+DPTR MOV 33H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 34H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 35H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 36H,A POP ACC ADD A,#4 CJNE A,#16,CONTINCONTIN: JC CONTIN1 CLR ACONTIN1: MOV DISD,A
T0ISRE: POP ACC RETIT1ISR: PUSH ACC CLR TR1 MOV TH1,#0ECH MOV TL1,#78H SETB TR1 MOV DPTR,#LEDTABT100: MOV R0,#DAT MOV A,SCANLED ADD A,R0 MOV R0,A MOV A,SCANLED JNZ T101 MOV P2,#01H SJMP T1DIST101: DEC A JNZ T102 MOV P2,#02H SJMP T1DIST102: DEC A JNZ T103 MOV P2,#04H SJMP T1DIST103: MOV P2,#08HT1DIS: MOV A,@R0 MOVC A,@A+DPTR CPL A MOV P0,A INC SCANLED MOV A,SCANLED CJNE A,#4,T1END MOV SCANLED,#0T1END: POP ACC RETILEDTAB: DB 0FCH ;"0" 00H DB 60H ;"1" 01H DB 0DAH ;"2" 02H DB 0F2H ;"3" 03H DB 66H ;"4" 04H DB 0B6H ;"5" 05H DB 0BEH ;"6" 06H DB 0E0H ;"7" 07H DB 0FEH ;"8" 08H DB 0F6H ;"9" 09H DB 0EEH ;"A" 0AH DB 3EH ;"B" 0BH DB 9CH ;"C" 0CH DB 7AH ;"D" 0DH DB 9EH ;"E" 0EH DB 8EH ;"F" 0FH DB 00H ;" " 10HDDAT: DB 1,2,3,4 DB 5,6,7,8 DB 9,10,11,12 DB 13,14,15,0END

1、首先我们先打开keil。

2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管。

3、接着,我们加上一条循环语句。delay(5);//显示5毫秒P0=0XFF;//消影P0=smg[2];P1=0xbf;delay(5);P0=0XFF;P0=smg[3]。

4、最后,我们把先前定义的延时语句delayms写好。

5、最后,点击这里进行编译,生成一个hex文件。

6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以点亮动态数码管了。

KEYVAL EQU 30H
DAT  EQU 33H
SCANLED EQU 39H
CLK  EQU 77H
DISD EQU 78H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXTINT0
ORG 000BH
LJMP T0ISR ;50ms定时
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
  MOV SP,#5FH
  MOV TMOD,#11H
  MOV TH0,#03CH
  MOV TL0,#0B0H
  MOV TH1,#0ECH
  MOV TL1,#078H
  MOV KEYVAL,#2
  MOV 33H,#10H
  MOV 34H,#10H
  MOV 35H,#10H
  MOV 36H,#10H
  MOV CLK,#0
  SETB IT0
  SETB EX0
  CLR TR0
  CLR ET0
  MOV R2,#0
  MOV DISD,#0
  SETB TR1
  SETB ET1
  SETB EA
LOOP:
  MOV A,KEYVAL
LOOP1:
  JNZ LOOP2 ;启动
  SETB TR0
  SETB ET0
  SJMP LOOP
LOOP2:
  DEC A
  JNZ LOOP3 ;暂停
  CLR TR0
  CLR ET0
  SJMP LOOP
LOOP3:
  DEC A
  JNZ LOOP ;清零
  MOV 36H,#0
  MOV 35H,#0
  MOV 34H,#0
  MOV 33H,#0
  SJMP LOOP
EXTINT0:
  PUSH ACC
  INC KEYVAL
  MOV A,KEYVAL
  CJNE A,#3,EXT00
EXT00:
  JC EXT01
  MOV KEYVAL,#0
EXT01:
  POP ACC
  RETI
T0ISR:
  PUSH ACC
  CLR TR0
  MOV TH0,#3CH
  MOV TL0,#0B0H
  SETB TR0
  INC CLK
  MOV A,CLK
  CJNE A,#20,T0ISRE
  MOV CLK,#0
  MOV DPTR,#DDAT
  MOV A,DISD
  PUSH ACC
  MOVC A,@A+DPTR
  MOV 33H,A
  POP ACC
  PUSH ACC
  INC DPTR
  MOVC A,@A+DPTR
  MOV 34H,A
  POP ACC
  PUSH ACC
  INC DPTR
  MOVC A,@A+DPTR
  MOV 35H,A
  POP ACC
  PUSH ACC
  INC DPTR
  MOVC A,@A+DPTR
  MOV 36H,A
  POP ACC
  ADD A,#4
  CJNE A,#16,CONTIN
CONTIN:
  JC CONTIN1
  CLR A
CONTIN1:
  MOV DISD,A

T0ISRE:
  POP ACC
  RETI
T1ISR:
  PUSH ACC
  CLR TR1
  MOV TH1,#0ECH
  MOV TL1,#78H
  SETB TR1
  MOV DPTR,#LEDTAB
T100:
  MOV R0,#DAT
  MOV A,SCANLED
  ADD A,R0
  MOV R0,A
  MOV A,SCANLED
  JNZ T101
  MOV P2,#01H
  SJMP T1DIS
T101:
  DEC A
  JNZ T102
  MOV P2,#02H
  SJMP T1DIS
T102:
  DEC A
  JNZ T103
  MOV P2,#04H
  SJMP T1DIS
T103:
  MOV P2,#08H
T1DIS:
  MOV A,@R0
  MOVC A,@A+DPTR
  CPL A
  MOV P0,A
  INC SCANLED
  MOV A,SCANLED
  CJNE A,#4,T1END
  MOV SCANLED,#0
T1END:
  POP ACC
  RETI
LEDTAB: DB 0FCH ;"0" 00H
  DB 60H ;"1" 01H
  DB 0DAH ;"2" 02H
  DB 0F2H ;"3" 03H
  DB 66H ;"4" 04H
  DB 0B6H ;"5" 05H
  DB 0BEH ;"6" 06H
  DB 0E0H ;"7" 07H
  DB 0FEH ;"8" 08H
  DB 0F6H ;"9" 09H
  DB 0EEH ;"A" 0AH
  DB 3EH ;"B" 0BH
  DB 9CH ;"C" 0CH
  DB 7AH ;"D" 0DH
  DB 9EH ;"E" 0EH
  DB 8EH ;"F" 0FH
  DB 00H ;" " 10H
DDAT:
  DB 1,2,3,4
  DB 5,6,7,8
  DB 9,10,11,12
  DB 13,14,15,0
END    




4位共阳数码管,怎么用汇编语言让它显示16个数据?可以每组4个显示,
KEYVAL EQU 30HDAT EQU 33HSCANLED EQU 39HCLK EQU 77HDISD EQU 78HORG 0000HLJMP MAINORG 0003HLJMP EXTINT0ORG 000BHLJMP T0ISR ;50ms定时ORG 001BHLJMP T1ISR ;扫描显示ORG 0030HMAIN: MOV SP,#5FH MOV TMOD,#11H MOV TH0,#03CH MOV TL0,#0B0H MOV TH1,#0ECH ...

求四位共阳数码管接法,接在单片机上。。。
不知道您使用的是什么单片机,告诉你使用89C51的接法。用200欧姆的电阻串联在数码管的笔画引脚上然后直接接在P0引脚就可以了,共阳极引脚直接接5V,对P0写0就可以点亮了,而且电流不至于烧毁数码管。动态显示 需要在共阳极上接PNP三极管,三极管基极串联1K电阻接单片机口,低电平有效。希望我的回答对您有...

共阳数码管怎么控制???
共阳数码管内部的LED发光二极管的阳(正)极接在一起引出,使用时这个公共阳极要接高电位(一般是正电源)端,其余各段引出端接低电平有效的器件的对应输出端,如ADC7107等。保证哪段有低电平哪段能亮就行。

一位共阳数码管怎样接线
把万用表打到二极管档,然后一个一个试验,找到一个公用的阳极,剩下确定A,B,C,D,E,F,G,小数点是哪根就好了~!

单片机 关于 1位 共阳 数码管 接法
10个脚中有两个脚是连通的,为数码管的共阳极,实际只用一端就行,其他的包括小数点在内的8个段位和单片机的8个IO对应相连,如果用每个段位引脚都单独加限流电阻的接法,则无论什么情况下,显示的亮度均不变,如果用只在共阳极加1个限流电阻的接法,则显示1时最亮,显示8时最暗,两种接法均可。

一位共阳的数码管,要他显示5,不包括小数点,那么给他的数据是多少 a 0...
0x92,七段码数码管,要显示5,必须点亮段码a,c,d,f,g,因为是共阳极0点亮,h为小数点位,a~h从低到高,所以,显示5为 二进制 1001 0010 即 0x92。数码管最上端的段码为a,顺时针一圈段码分别为a,b,c,d,e,f,中间为g,小数点为h ...

同STC89C52接4位八段共阳数码管,如何接上拉电阻???求指教
这个简单,我给你提供两种方法。第一种: 共阳把数码管位选接地,把8位段选接单片机IO,在单片机IO上面选择5K上拉电阻就可以了。第二种: 直接用74HC245来驱动,或者74HC138、164 都可以。

求四位共阳数码管接法,接在单片机上。。。
不知道您使用的是什么单片机,告诉你使用89C51的接法。用200欧姆的电阻串联在数码管的笔画引脚上然后直接接在P0引脚就可以了,共阳极引脚直接接5V,对P0写0就可以点亮了,而且电流不至于烧毁数码管。动态显示 需要在共阳极上接PNP三极管,三极管基极串联1K电阻接单片机口,低电平有效。希望我的回答对您有...

2位7段共阳数码管如何使用?应如何和单片机进行连接。
其中有8根引脚接单片机数据总线P0,如果端口足够的话,任意一个数据口都可以。有两根是位选控制信号线,这两根分别接单片机一个引脚(与另外8根不同)。具体是哪几根引脚要看你数码管型号。上网搜吧!

2位7段共阳数码管如何使用?应如何和单片机进行连接。
嘿嘿 可以按照下面的图 进行连接 一个接在P0口、一个接在P2口上,分别为7段数码管提供段形,采用共阴极的数码管,数码管的3、8引脚都接地,即公地。 送高电平可以点亮相应的各段。为静态显示方式。呵呵 满意 就选满意回答

琼山区19830809906: AT89C51单片机怎么用汇编语言让4个数码管同时显示1234? -
储皇依大: 1、首先我们先打开keil. 2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管. 3、接着,我们加上一条循环语句.delay(5);//显示5...

琼山区19830809906: 汇编语言点亮一个数码管怎么写 -
储皇依大: org 0 mov a,#data ;data要显示的数字 add a,#5 ;修正 movc a,@a+dptr ;查段码 mov p1,a ;p1接数码管段选线 sjmp $ tab:db …… ;共阳或共阴段码表 end

琼山区19830809906: 用汇编语言编写一个能显示4位数码的电路,并用8循环显示8遍 -
储皇依大: 51的单片机不会!PIC单片机用汇编语言可以实现!简单说说!动态扫描四位数码管,每一位点亮2毫秒,轮流显示,由于人眼视觉延迟,所以感觉不到数码管闪烁,就像同时亮的一样!延时可以用软件延时,也可以用定时器延时!至于循环显示,是不是将四位数码管点亮后,关闭几秒钟,然后再次点亮,如此反复,设定一个计数寄存器,累加或递减均可!如果增加一个模拟输入端,可以做成市面上的四位数显表!作为电压或电流信号终端显示器!

琼山区19830809906: 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 ...

琼山区19830809906: 怎么用单片机汇编语言数码管静态显示1234?? -
储皇依大: 这是四位数码管,是动态扫描显示电路,不叫静态显示电路. 但,确实可以显示出1234,那也是动态扫描显示的结果,与静态显示是不同的. 汇编语言写程序有点费劲哪,有偿代写.

琼山区19830809906: 如何让数码管显示,用汇编语言,不是c语言,谢谢,速求 -
储皇依大: 共阴:ORG 0000H MOV P1,#3FH ;段选 MOV P2,#0FEH 位选 END

琼山区19830809906: 51单片机如何用汇编语言让4个共阴数码管同时显示1234 P3口是片选 P0是段选 -
储皇依大: 可以用proteus仿真来实现,用四位一体的共阴数码管.仿真图和显示效果如下图. 汇编程序

琼山区19830809906: 哪位高手帮帮忙帮我编个程序,用8051单片机控制4位LED共阳数码管.. -
储皇依大: #include<reg52.h> sbit KEY=P3^3; //定义按键输入端口 sbit LED=P1^2; //定义led输出端口,一个四个都是一样的定义方法 void main (void) {KEY=1; //按键输入端口电平置高 while (1) //主循环{ if(!KEY) //如果检测到低电平,说明按键按下LED=0;elseLED=1; //这里使用if判断,如果按键按下led点亮,否则熄灭//如果需要四个亮就写LED1=1;LED2=1,LED3=1;LED4=1;不过上面得先定义好这四个led的引脚 } }希望对你有帮助

琼山区19830809906: 用单片机控制四位数码管显示“2009 ”的汇编程序 -
储皇依大: 要程序,不如学会了 程序也得配合硬件,一般是扫描的动态显示的吧,8位数据口,4位选择线.注意,共阴共阳,送数据的码对应为明码暗码 把数据和选择口都设成输出 段码显示做张表,查询

琼山区19830809906: 51单片机怎么控制四位数码管,有没有汇编程序?我只能控制两位!求详解! -
储皇依大: display:;显示子程序 mov dptr,#numtab;送数据表 mov a,a_bit;送个位 movc a,@a+dptr;查表 mov p1,a;送p0显示 30 setb p3.7;选中第一个数码管 lcall d1ms;显示1ms cpl p3.7;关显示 mov a,b_bit;送10位数据 35 movc a,@a+dptr;查...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网