新建项目,做好准备。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)//死循环效果{}。用两个计数器实现,一个计数器作为个位计数,另一个为
1、新建项目,做好准备。2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) //死循环效果{} 。6、dk = 1;//打
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DELL:MOV R7,#250;yanshi,SHIZHONG:1WEIMIAO,YUEWEI1s DEL1:MOV R6,#200 DEL2:MOV R5,#10 DEL3:DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 END
这是四位数的秒计数器,用四位一体共阴数码管显示,P0口输出段码,P2口输出位码。用定时器定时器50ms,采用中断方式,中断20次为1秒,显示数字加1。
单片机,使用汇编语言使led数码管每隔1秒轮流显示数字0000-9999,这个怎么样做呀?
原因可能是连接的方法不太对,你可以参考下述连接方式,检查一下你的电路。方法1:用8050的三极管做开关电路,三极管的基极接p2.0,然后用集电极通过led接5v电源,发射极通过220欧姆电阻接地。执行setb p2.0 指令可以点亮led
快速有多快,慢速有多慢
主要程序如下:uchar table[8]={1,3,5,7,2,4,6,8};//要显示的数字 uchar qiduan_tab[10]={};//七段码 while(1){ for(i=0;i<5;i++)//先显示1357,第二次显示3572 第三次显示5724 { for(j=0
include
用单片机控制4位LED数码显示,先从左到右慢速动态扫描显示数字“1357”,“2468”,然后在从
通过输入开关控制指令关闭和开启显示屏。根据CSDN博客显示,51单片机连接电脑后,通过输入开关控制指令关闭和开启显示屏。51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中
如果是你自己画电路板的话,要提前查好芯片的封装,电阻电容的封装设计原理图,然后再画PCB。Altium.Designer是protel的升级版,本人觉得Altium.Designer好用。你的液晶显示,我想应该是1602的,资料多的很,如果需要我发给你。
液晶显示器有字符型,如1602,这个液晶显示器目前是统一的,引脚和命令字都 是统一的。接线如下图所示 另一种是点阵型的,可以显示图形和汉字,用得比较多的是12864。但是,这种液晶显示器的型号很多,引脚和命令字都不统一
这个只能控制1602液晶的显示,不能控制背光的关闭与开启。要关闭或开启背光,请直接控制背光源。引脚A(有时标成BLA)是背光源正极;引脚K(有时标成BLK)是背光源负极;这两个引脚任意一个接一支三极管就能控制背光的开关了
解决方法:1.单片机更换为5V的单片机;2.液晶更换为3.3V的液晶;3.将单片机管脚高电平抬高至5V。原因说明:我们现在所用的绝大多数的可编程芯片(这里面包含了你的单片机和液晶驱动芯片)均为CMOS芯片。5V供电的液晶屏,内部
单片机控制液晶屏显示
51单片机用一个按键,定义一个位变量,或一个8位的变量,按一下键变量为1,再按一下变量为0。然后显示时,再根据变量值来决定显示内容,变量为1,显示123456,变量为0显示321456。
在单片机上显示 五位 显示1 2 3 4 5 共阴的 但是电路很关键 看你怎么接 原理搞清楚。include
EN=0; //EN置低电平(根据表8-6,写指令时,EN为高脉冲,//就是让EN从0到1发生正跳变,所以应先置"0"_nop_();_nop_(); //空操作两个机器周期,给硬件反应时间 P0=dictate; //将数据送入P0口,
disdat[1]=i+1;disdat[2]=i+2;disdat[3]=i+3;disdat[4]=i+4;disdat[5]=i+5;i++;i%=3;}void t1isr() interrupt 3//显示{TH1=0xec;TL1=0x78;switch(scanled){case 0:P2=0x01;P0=~ledtab[dis
多位数码管无法实现静态显示,物理上它们就存在冲突。除非每一位显示的内容都相同……如果执着于用静态显示,可以用6个1位数码管,缺点是需要大量的管脚来控制(可以用串扩并方案或地址映射扩展方案,成本上得不偿失)。
下面这个程序可以.1、3、5、7亮就是01010101,0是亮,1是不亮.转成十六进制就是0x55,我也是刚问过这样的问题,人家回答是:晕,这样问题也来网上问.现在懂了,虽然我还是菜鸟,但可告诉你,include
数码管显示,无非两种显示方式,一种是静态显示,每个管有独立的显示总线,一种就是动态扫描,显示总线是公用的,利用人眼0.1S视觉保留,0.1S内逐步显示每个管就OK了
单片机接了6块LED显示器,如何让其显示123456?
1、由于单片机IO口的驱动能力有限,在单片机和数码管中间增加了缓冲器 这样可以有效的保护单片机,提高了驱动能力。2、接法:四位数码管有四个选择端,保证统一时间只A-G字段,只对一个数码管有效。3、点亮数码管,通过选取
display(1,2,3,4);//主程序始终调用数码管显示子程序 } } void display(uchar a,uchar b,uchar c,uchar d){ P2=0xef;P0=table[a];//给第一个数码管送"a"delay(1);//延时1ms P2=0xdf;P0=table[b];//
include
主要程序如下:uchar table[8]={1,3,5,7,2,4,6,8};//要显示的数字 uchar qiduan_tab[10]={};//七段码 while(1){ for(i=0;i<5;i++)//先显示1357,第二次显示3572 第三次显示5724 { for(j=0
用单片机控制4位LED数码管显示,先从左至右慢速动态扫描显示数字13572468 大佬求告知
setb p2.6;关闭十位显示,防止鬼影 djnz r1,dplop ;循环执行250次 djnz r0,dpl1 ;循环执行250X4=1000次 ret ;2+2X80=162微秒,延时按12MHZ计算 D1MS: MOV R7,#80 DJNZ R7,RET ;实验板上的7段数码管0~9数字
一、设置延时函数 延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:void delay(){ uinti,j;for(i=100;i>0;i--)for(j=1000;j>0;j--);} 二、设置数码管
0x92,0x82,0xF8,0x80,0x90 }数组中的10个值依次赋给P2,依次显示0--9的数字,即当led = 0时,P2接受0xC0,对应数码显示0,当led = 1时,P2接受LED_CODE[1]=0xF9,对应显示1,依次类推,从而显示0--9。
一位数码管循环显示1-9的汇编程序 ORG 00H :单片机启动地址 START:MOV R2,#0 ;要显示的第一个数为0 MOV R5,#10 ;要循环显示的次数10次 MAIN:MOV DPTR,#TAB ;显示编码表格首地址 MOV A,R2 ;取要显示的数
采用共阴极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:
1、新建项目,做好准备。2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) //死循环效果{} 。6、dk = 1;//打
1、小建议,釆用STC的51芯片替代AT的,釆用595替代164。2、新建项目,做好准备。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)//死循环效
单片机如何控制LED数码管循环显示数字0至9
首先你要明确这是要在实验板上实现呢?还是只是画个仿真来实现呢? 那要仿真,首先你要画个仿真图,仿真图也不会画吗? 如果没有实验板,也没有仿真图,写了程序也没有用,那怎么执行程序呢?你好!是滚动显示吗
数码管显示,无非两种显示方式,一种是静态显示,每个管有独立的显示总线,一种就是动态扫描,显示总线是公用的,利用人眼0.1S视觉保留,0.1S内逐步显示每个管就OK了
8位数码管动态显示,单片机直接片选,先显示201903,再显示abcdef,再显示123456,用C语言编程 ,重复循环,仿真试试。 #include #define uchar unsigned char // 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; void delay(uchar z) { uchar i,j; for(i=0;i<120;i++) for(j=0;j<z;j++); } void main() { uchar k; while(1) { for(k=0;k<50;k++) { P0=0xff; P2=LED7Code[0]; P0=0xfe; delay(5); P0=0xff; P2=LED7Code[0]; P0=0xfd; delay(5); P0=0xff; P2=LED7Code[2]; P0=0xfb; delay(5); P0=0xff; P2=LED7Code[0]; P0=0xf7; delay(5); P0=0xff; P2=LED7Code[1]; P0=0xef; delay(5); P0=0xff; P2=LED7Code[9]; P0=0xdf; delay(5); P0=0xff; P2=LED7Code[0]; P0=0xbf; delay(5); P0=0xff; P2=LED7Code[3]; P0=0x7f; delay(5); } for(k=0;k<50;k++) { P0=0xff; P2=LED7Code[0]; P0=0xfe; delay(5); P0=0xff; P2=LED7Code[0]; P0=0xfd; delay(5); P0=0xff; P2=LED7Code[10]; P0=0xfb; delay(5); P0=0xff; P2=LED7Code[11]; P0=0xf7; delay(5); P0=0xff; P2=LED7Code[12]; P0=0xef; delay(5); P0=0xff; P2=LED7Code[13]; P0=0xdf; delay(5); P0=0xff; P2=LED7Code[14]; P0=0xbf; delay(5); P0=0xff; P2=LED7Code[15]; P0=0x7f; delay(5); } for(k=0;k<50;k++) { P0=0xff; P2=LED7Code[0]; P0=0xfe; delay(5); P0=0xff; P2=LED7Code[0]; P0=0xfd; delay(5); P0=0xff; P2=LED7Code[1]; P0=0xfb; delay(5); P0=0xff; P2=LED7Code[2]; P0=0xf7; delay(5); P0=0xff; P2=LED7Code[3]; P0=0xef; delay(5); P0=0xff; P2=LED7Code[4]; P0=0xdf; delay(5); P0=0xff; P2=LED7Code[5]; P0=0xbf; delay(5); P0=0xff; P2=LED7Code[6]; P0=0x7f; delay(5); } } }
首先你要明确这是要在实验板上实现呢?还是只是画个仿真来实现呢? 那要仿真,首先你要画个仿真图,仿真图也不会画吗? 如果没有实验板,也没有仿真图,写了程序也没有用,那怎么执行程序呢?
写出程序,楼主怎么测试? 还是应该先设计电路。
ORG 0000H MOV DPTR,#TAB MOV P0,#0FFH LOP: LOOP0:MOV 20H,#9 MOV R0,#10 LOOP1:MOV A,20H; 9-0 MOVC A,@A+DPTR MOV P0,A DEC 20H CALL DELL;YANSHI DJNZ R0,LOOP1 MOV 20H,#0;0-9 MOV R0,#10 LOOP2:MOV A,20H; 0-9 MOVC A,@A+DPTR MOV P0,A INC 20H CALL DELL;YANSHI DJNZ R0,LOOP2 AJMP LOP TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DELL:MOV R7,#250;yanshi,SHIZHONG:1WEIMIAO,YUEWEI1s DEL1:MOV R6,#200 DEL2:MOV R5,#10 DEL3:DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 END
首先告诉你,AT89C51已基本上没人用了,代替它的是AT89S51。 共阳数码管,OK,单片机设计多数使用共阳数码管。 单片机控制四位数码管显示0000-9999 我给你提供一个每秒自动加1的四位数码管循环显示0000~9999的程序。 D0 equ 0c0h ; 11000000B D1 equ 0F9h ; 11111001B D2 equ 0A4h ; 10100100B D3 equ 0B0h ; 10110000B D4 equ 99h ; 10011001B D5 equ 92h ; 10010010B D6 equ 82h ; 10000010B D7 equ 0F8h ; 11111000B D8 equ 80h ; 10000000B D9 equ 90h ; 10010000B org 0000h jmp start org 0030h start: mov dptr,#data0 mov r2,#0 mov r3,#0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; next: call display inc r2 cjne r2,#100,next mov r2,#0 inc r3 cjne r3,#100,next mov r3,#0 jmp next display: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov r4,#250 lpr4: mov p2,#0ffh mov a,r3 mov b,#10 div ab movc a,@a+dptr mov p0,a clr p2.0 call t1ms mov p2,#0ffh mov a,b movc a,@a+dptr mov p0,a clr p2.1 call t1ms mov p2,#0ffh mov a,r2 mov b,#10 div ab movc a,@a+dptr mov p0,a clr p2.2 call t1ms mov p2,#0ffh mov a,b movc a,@a+dptr mov p0,a clr p2.3 call t1ms djnz r4,lpr4 ret data0: db d0,d1,d2,d3,d4,d5,d6,d7,d8,d9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; t1ms: mov r7,#250 djnz r7,$ mov r7,#250 djnz r7,$ ret jmp $ end