单片机流水灯+数码管实验

单片机实验实现以下功能:单灯亮灭流水灯,所有的灯逐个亮和灭;两灯亮灭流水灯;单灯逐一亮后再灭;对流水灯的作业进行计时,以上每行的运行时间为1s,并把计时的结果用四段数码管显示,求程序代码!
有没有图片呢 这样看有点不明白 端口的定义什么的 最好是protuse的仿真截图 谢谢

额,程序之前没仿真过,有点错误,现在可以了

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

unsigned a=0,b=0,counter=0;

unsigned char SEG1[ ] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

unsigned char SEG2[ ] = {0x03,0x06,0x0C,0x18,0x30,0x60,0x0C,0x81};

unsigned char SEG3[ ] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned char SEG4[ ] = {0x01,0x02,0x04,0x08,0x30,0x60,0x0C,0x81};

sbit P31 = P3^1;

sbit P30 = P3^0;

void Timer0Init(void) interrupt 3 //定时器1

{

   counter++;

   if(counter==2000)   //定时器定时250us,故4000次中断就表示1秒钟到达 

    {

counter=0;

a++;

b++;

if(a==8) a=0;

if(b==256)b=0;

EA=1; 

}

}

void init()

  TMOD = 0x20; 

    EA=1;

   TH1=6;

   TL1=6; 

   TR1=1;

   ET1=1;

}

void disp()

{

   if (P30==0&&P31==0) {P1 = SEG1 [a];}

   if (P30==1&&P31==0) {P1 = SEG2 [a];}

   if (P30==0&&P31==1) {P1 = SEG3 [a];}

   if (P30==1&&P31==1) {P1 = SEG4 [a];}

   P2=b;

}

 main()

 

 init();

while(1)

{

 disp();

    

 }

 }

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答