你的程序有点小问题首先你要注意下 if(i=4)这条语句有问题c语言里a = b;是一个赋值语句,你要表达的是等于 必须用 ==即 if(i == 4)
if(i=4)
i=0;你这两条语句放这里也没啥实际用
再就是你要的动态显示 显示的数字有飞入的感觉还是你想要 1234 全亮 再有全不亮 循环
还有你给的程序貌似不能显示不了1234的
#include<reg52h>
#define uchar unsigned char
uchar code du[]={0xf9,0xa4,0xb0,0x99}; //1,2,3,4
uchar code we[]={0x01,0x02,0x04,0x08}; //位选
delay(uchar);
void main()
{ while(1)
{
uchar i;
for(i=0;i<4;i++)
{
//if(i==4)
//i=0;
//P2=0;
//P0=1;
P2=we[i];
P0=du[i];
delay(22);
}
}
}
delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
#include<reg51h>
#define uchar unsigned char
bit flag=1;
uchar j,k;
uchar code tab[]={
0x06,/1/
0x5B,/2/
0x4F,/3/
0x66,/4/
0x6D,/5/
0x7D,/6/
0x07,/7/
0x7F,/8/
};
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
void delay(unsigned int ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void disp()
{
if(flag)
k=0;
else
k=4;
P0=tab[k+0];
P2_0=0;
delay(1);
P2_0=1;
P0=tab[k+1];
P2_1=0;
delay(2);
P2_1=1;
P0=tab[k+2];
P2_2=0;
delay(2);
P2_2=1;
P0=tab[k+3];
P2_3=0;
delay(2);
P2_3=1;
}
void t0init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
t0init();
while(1)
disp();
}
void t0int() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==40)
{
j=0;
flag=!flag;
}
}
程序如下
#include<reg52h>
sbit k1=P3^2;
bit dis;//显示标志位
unsigned char code ledtab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char ledbuf[]={1,2,3,4};
void delay(unsigned char x)
{
unsigned int j;
while(x--)
for(j=400;j>0;j--);
}
void display()
{
unsigned char j,ledbit=1;
for(j=0;j<4;j++)
{
P0=ledbit;
P2=ledtab[ledbuf[j]];
delay(1);
ledbit<<=1;
}
P0=0;//关掉显示
}
void main()
{
while(1)
{
if(dis==0)
display();
if(k1==0)
{
delay(10);
if(k1==0)
{
dis=!dis;
while(k1==0);
}
}
}
}
仿真图
#include <reg52h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff
};
uchar code dis_bet[]={7,3,1,4};
uchar code dis_pos[]={0x01,0x02,0x04,0x08};
void DelayMS(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
void main()
{
uchar i;
for(i=0;i<4;i++)
{
P3=~dis_pos[i];
P2=~DSY_CODE[dis_bet[i]];
DelayMS(5);
}
}
以上就是关于单片机程序,这个可以实现动态显示1234吗全部的内容,包括:单片机程序,这个可以实现动态显示1234吗、请c语言高手帮忙,写一个程序,51单片机显示1234,2S后显示5678 ,一直循环!、求单个按键控制数码管显示(动态)1234的程序,或者帮我改下下面这段数码管的代码程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)