单片机程序,这个可以实现动态显示1234吗

单片机程序,这个可以实现动态显示1234吗,第1张

你的程序有点小问题首先你要注意下 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的程序,或者帮我改下下面这段数码管的代码程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10636961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存