51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。

作者&投稿:严冯 (若有异议请与网页底部的电邮联系)
51单片机问题。。编写4个LED数码管同时循环显示0—9的数字 的程序。 用C语言写。。~

#include
//-----------------------------------------------
void delay(unsigned int i) //延时
{
unsigned char j;
while(i--) for(j = 0; j < 115; j++);
}
//-----------------------------------------------
void main(void)
{
unsigned char n1;
unsigned char code SEG[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4
0x92, 0x82, 0xf8, 0x80, 0x90};//5-9
while(1) {
P0 = SEG[n1]; //P0口,外接共阳数码管的段选端
delay(2000);
n1++; if(n1 > 9) n1 = 0;
}
}

4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

假设8个数码管公共端均接地,同时显示1-9
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*显示0-9*/
DelayMS(200);
}
}
下面程序从左到右显示
#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};

void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}

void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}

#include<reg51.h>
//-----------------------------------------------
void delay(unsigned int i) //延时
{
unsigned char j;
while(i--) for(j = 0; j < 115; j++);
}
//-----------------------------------------------
void main(void)
{
unsigned char n1;
unsigned char code SEG[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4
0x92, 0x82, 0xf8, 0x80, 0x90};//5-9
while(1) {
P0 = SEG[n1]; //P0口,外接共阳数码管的段选端
delay(2000);
n1++; if(n1 > 9) n1 = 0;
}
}

4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

#include<reg51.h>

#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
uchar time,scanled,tiao;
uchar disdat[6]="201803";
void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void t0isr() interrupt 1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
tiao++;
tiao%=10;
}
}

void t1isr() interrupt 3 //显示
{
TH1=0xec;
TL1=0x78;
P2=1<<scanled;
P0=~ledtab[tiao];
scanled++;
scanled%=4;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(1);
}



川汇区18048246240: 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序. -
东野怪兰百: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 uchar time,scanled,tiao; uchar disdat[6]="201803"; void delay(unsigned int x) {unsigned int i,j;for(i=0;i<x;i++)...

川汇区18048246240: 51单片机问题 编写4个LED数码管循环显示2008的程序. 用C语言写.. -
东野怪兰百: #include<reg51.h> //----------------------------------------------- void delay(unsigned int i) //延时 {unsigned char j;while(i--) for(j = 0; j < 115; j++); } //----------------------------------------------- void main(void) {unsigned char n1;unsigned char code SEG[] = {0xc0, ...

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

川汇区18048246240: 51单片机用C语言如何写四个数码管的流水灯程序? -
东野怪兰百: 用个移位处理就行了 set(void) {static char cnt = 0;P1 = 0x01 << cnt; cnt ++;if (cnt == 4) {cnt = 0; } }

川汇区18048246240: 51单片机如何用汇编语言让4个共阴数码管同时显示1234 P3口是片选 P0是段选 -
东野怪兰百: 可以用proteus仿真来实现,用四位一体的共阴数码管.仿真图和显示效果如下图. 汇编程序

川汇区18048246240: 求解读51单片机用四个按键独立控制四个led的c程序 -
东野怪兰百: #include<reg51.h> //k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数 {while(x--); //延时数减一 }void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED{switch(d){case 14: P1^=(1<<0); break; //k1 键按下了case 13:...

川汇区18048246240: 求由51单片机控制4x4键盘输入,4个数码管(采用动态扫描)显示 C语言编程思路! -
东野怪兰百: 可以这样写,先计算按了几下了,按下若小于4次,让四个段选端前几个端导通,按下数超过或等于4次你就可以用扫屏的方式来显示就好了.比如第一下按的是8你就可以设置if和else语句组合啊!先有个数组d[]={0xf7;0xfb;0xfd;0xfe}//段选,按了几下设为变量uint a//无符号字符型,if(a<4){if(a=1)P2=d[a-2];P1=data[8];delay();········if(a-1){··········}if(a-2){··········}};else(············)太多了我就不写了.

川汇区18048246240: 51单片机驱动四位LED数码管
东野怪兰百: ULN2803是反相器,还要接VCC电源,要加上拉电阻,造成不配对.如果你电路知识不好,最好不代替,可能数码管有辉映,同时也注意数码管是共阴,共阳的问题,连接时要加电阻限流,可先用0.47K.根据情况增,减. 比较麻烦的,

川汇区18048246240: (51单片机)找一个电子时钟的(C语言)程序,用LED灯做秒表,四个数码管做时 - 分.急急急! -
东野怪兰百: 有XS128的//延时控制 void delay(void) { int m,n; for(m=14000;m;m--){ for(n=1000;n;n--){} } } void LED(void) { PORTB=0XFE; delay(); PORTB=0XFC; delay(); PORTB=0XF8; delay(); PORTB=0XF0; delay(); PORTB=0XE0; delay(); PORTB=0XC0; ...

川汇区18048246240: 哪位高手帮帮忙帮我编个程序,用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的引脚 } }希望对你有帮助

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