下图是8位共阴数码管组成的显示电路,程序是对这个仿真图的。include
数码管段选连接到单片机P0口,位选连接到P2口 ORG 0000h MAIN:CALL DISPLAY AJMP MAIN DISPLAY:MOV R0,#0 MOV R1,#0x01 MOV DPTR,#TAB LOOP:INC R0 MOV A,R0 MOVC A,@A+DPTR MOV P0,#0 ;消隐 MOV P0,A
1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2
Led_Cont_Port =0xDF;delay();Led_Cont_Port =0xFF;Led_Port =Led_Table[7];Led_Cont_Port =0xBF;delay();Led_Cont_Port =0xFF;Led_Port =Led_Table[8];Led_Cont_Port =0x7F;delay();} }
采用共阴极LED数码管51单片机P1口输数据:ORG 0000H JMP MAIN ORG 0100H MAIN:MOV DPTR,#TAB MOV R1,#00H DISP:MOV A,R1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R1 CJNE R1,#0AH,DISP SJMP TAB: DB 3
设计一款单片机控制系统,实现8只共阴极LED数码管同时显示“12345678”。
就应该先画仿真图,或用实物开发板来显示,应该给开发板的原理图才好写程序。最先,至于倒计时就非常简单了,定义一个计时变量,作减法计数即可,每减一个数都送数码管显示出来。如下面仿真图,是两位倒计时的例子。
为使数码管的不同段显示不同的字符,需要点亮和熄灭不同段的LED灯,才可以实现。对于共阴极数码管来说,只需要给高电平LED灯就会被点亮,对应的断码就会亮起。给低电平相应的断码就会熄灭。以显示“0”为例 只需要给“
编写程序,使数码管显示从0到200的数字,并在达到200时停止。一种实现方法是使用一个计数器变量,在每次循环中增加计数器的值并将其显示在数码管上,然后在计数器达到200时停止循环。在程序中添加控制LED灯的代码,使其在
2、使用display函数来选通不同的数码管,并发送对应的段码,实现动态显示效果。在main函数中,使用一个无限循环来不断调用display函数,实现连续的动态显示。3、增加一个索引变量index,用于控制循环显示学号后四位的顺序。当
如何让keil支持数码管动态显示?
是要用单片机AT89C51设计动态数码管显示电路,用单片机的两个并行口P0和P2可接一个8位一体的共阴数码管,P0口输出段码,P2口输出位码,仿真图如下。
1、首先我们先打开keil。2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管。3、接着,我们加上一条
51单片机:数码管的动态显示 51单片机,用三个7段共阴极数码管动态显示0~99,每隔0.5s刷新一次数字。用keil与Proteus联合仿真 硬件设计 以AT89C51单片机为核心,包括74HC573锁存器,三个7段共阴极数码管。1.74HC573锁存器:
AT89C51数码管动态显示,用8位一体共阳数码管。仿真图和效果如下 程序如下 include
AT89C51数码管动态显示
是两位共阳数码管,用二位一体的共阳数码管,段控直接连到P0口,位控直接用P2口,把电阻,总线,三极管统统去掉。还有就是显示时,要先输出位选码,后输出段选码。否则,就是你说的情况。你看看下面的仿真图,那简单,
这个显示的设置方法如下:1、打开Proteus软件,选择“ISISSchematicCapture”模式,然后从元件库中拖拽一个8位共阳数码管和一个计数器(例如74HC161)到画布上。2、连接8位共阳数码管的引脚和计数器的引脚。3、双击时钟信号源
proteus里面可以新建一个C或者ASM文件 然后编译运行 楼主可以下载个Proteus使用文档看下 网上很多没有我传你 建议最好是KEIL和Proteus进行联调 效果相当好 可以单步或者连续运行 便于编程。
proteus8位数码管和51芯片接的方法:1、首先,确定您使用的是通用型I/O口驱动的8位数码管,该数码管需要连续的8个I/O口来控制。例如,可以使用P2口(P2、0~P2、7)来控制。2、将数码管的8个引脚分别连接到51单片机的
1、打开proteus软件。2、这里用到74HC573锁存器,直接用P0口连接锁存器。3、可以实现位选,也可以位选,大大节省了IO,这里记得加上上拉电阻,否则不显示。4、选用6位共阴数码管。5、把位选和段选的线连接对应好。6、
最简单的仿真图如下,用的是8位一体的共阴数码管。数码管的名称见下图中的元件列表。
proteus中八位数码管的动态显示仿真图该怎么连接
这事用ARM7做的,如果你要单片机得就更这一样!仿真图对元件的要求就是要选有仿真的,不要选没有仿真的元件,有没有仿真在你选元件的时候的右上角 ,出现NO simulator model 就没有仿真!!P0口最好加上拉电阻
#include "reg51.h" #define uchar unsigned char uchar display_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar time[8]={2,0,1,2,1,1,4,5}; //uchar time[3]={0,0,0}; void delay(void) { uchar i; for(i=250;i>0;i--); } void display() { P2=0x80; P0=display_code[time[0]]; delay(); P2=0x00; P2=0x40; P0=display_code[time[1]]; delay(); P2=0x00; P2=0x20; P0=display_code[time[2]]; delay(); P2=0x00; P2=0x10; P0=display_code[time[3]]; delay(); P2=0x00; P2=0x08; P0=display_code[time[4]]; delay(); P2=0x00; P2=0x04; P0=display_code[time[5]]; delay(); P2=0x00; P2=0x02; P0=display_code[time[6]]; delay(); P2=0x00; P2=0x01; P0=display_code[time[7]]; delay(); P2=0x00; } void main(void) { uchar i; while(1) { for(i=0;i<100;i++) { display(); } } }
TIM EQU 30H CNTA EQU 31H CNTB EQU 32H ORG 00H LJMP START ORG 0BH LJMP T0X ORG 30H START: MOV TIM,#00H MOV CNTA,#00H MOV CNTB,#00H MOV TMOD,#01H MOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ T0X: MOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 MOV DPTR,#TAB MOV A,CNTA MOVC A,@A+DPTR MOV P3,A MOV DPTR,#DIGIT MOV A,CNTB MOV B,#8 MUL AB ADD A,CNTA MOVC A,@A+DPTR MOV P1,A INC CNTA MOV A,CNTA CJNE A,#8,NEXT MOV CNTA,#00H NEXT: INC TIM MOV A,TIM CJNE A,#250,NEX MOV TIM,#00H INC CNTB MOV A,CNTB CJNE A,#10,NEX MOV CNTB,#00H NEX: RETI TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H DB 00H,00H,00H,00H,21H,7FH,01H,00H DB 00H,00H,27H,45H,45H,45H,39H,00H DB 00H,00H,22H,49H,49H,49H,36H,00H DB 00H,00H,0CH,14H,24H,7FH,04H,00H DB 00H,00H,72H,51H,51H,51H,4EH,00H DB 00H,00H,3EH,49H,49H,49H,26H,00H DB 00H,00H,40H,40H,40H,4FH,70H,00H DB 00H,00H,36H,49H,49H,49H,36H,00H DB 00H,00H,32H,49H,49H,49H,3EH,00H END
采用共阴极LED数码管51单片机P1口输数据:ORG 0000H JMP MAIN ORG 0100H MAIN:MOV DPTR,#TAB MOV R1,#00H DISP:MOV A,R1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R1 CJNE R1,#0AH,DISP SJMP $ TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDELAY: MOV R4,#2 DELAY100MS:MOV R5,#200 DELAY5MS: MOV R6,#250 LOOP: DJNZ R6,LOOP DJNZ R5,DELAY5MS DJNZ R4,DELAY100MS RET
#include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void show(); void delay(); void main() { while(1) show(); } void show() { unsigned char i; for(i=0;i<8;++i) { P0=table[i+1]; P2=~(0x01<<i); delay(); P2=0xFF; } } void delay() { int i=100; while(i--); }