【51单片机2位数码管跑马灯】2022-9-25
缘由数码管笔划跑马灯怎样实现? - 24小时必答区
#include "REG52.h"
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共阴0~F消隐减号
unsigned char code smpmddz[]={15,14,13,11,7,57,49,41,25,56};//2位数码管跑马灯
void smxs(unsigned char mz, unsigned char w)
{unsigned char Xd=0;P0=~0;P0=~smgduan[mz];P2=w;while(++Xd);
}
void smpmd(unsigned char mz, unsigned char w)
{unsigned char Xd=0;P0=~0;P0=~smpmddz[mz];P2=w;while(++Xd);
}
void main()
{unsigned char Xd=0,qh=0,ss=0,ys=170;unsigned int shu=0;while(1){if(++Xd==0){if(++ys==0){++ss;ys=220;}if(ss<5){smpmd(ss,2);smpmd(5,1);}else if(ss>5&&ss<10){smpmd(0,2);smpmd(ss,1);}if(ss>9) ss=0;}}
}
#include "REG52.h"
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共阴0~F消隐减号
unsigned char code smpmddz[]={15,14,13,11,7,49,41,25,56,57};//2位数码管跑马灯
void smxs(unsigned char mz, unsigned char w)
{unsigned char Xd=0;P0=~0;P0=~smgduan[mz];P2=w;while(++Xd);
}
void smpmd(unsigned char mz, unsigned char w)
{unsigned char Xd=0;P0=~0;P0=~smpmddz[mz];P2=w;while(++Xd);
}
void main()
{unsigned char Xd=0,qh=1,ss=1,ys=100,d=0;unsigned int shu=0;while(1){if(ss<5){if(d){smpmd(ss,2);smpmd(9,1);}else{smpmd(5-ss,2);smpmd(9,1);}}if(ss>4&&ss<9){if(d){smpmd(0,2);smpmd(ss,1);}else{smpmd(0,2);smpmd(13-ss,1);}}smxs(qh/10,4);smxs(qh%10,8);if(++ys==0){if(++ss>8){ss=1;if(++qh>4){d=~d;qh=1;}}ys=101;}}
}