标题:
单片机数码管程序乱跳怎么办?
[打印本页]
作者:
就不给他
时间:
2018-12-11 20:53
标题:
单片机数码管程序乱跳怎么办?
-5af3623003a90a6c.jpg
(57.56 KB, 下载次数: 24)
下载附件
2018-12-11 20:51 上传
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_DONGXI = P1^0;
sbit YELLOW_DONGXI = P1^1;
sbit GREEN_DONGXI = P1^2;
sbit RED_NANBEI = P1^3;
sbit YELLOW_NANBEI = P1^4;
sbit GREEN_NANBEI = P1^5;
sbit DXweixuan1= P1^6;
sbit DXweixuan2= P1^7;
sbit NBweixuan1= P3^0;
sbit NBweixuan2= P3^1;
uint aa,shi1,ge1,shi2,ge2;
uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z);
void display(uint shi1,uint ge1,uint shi2,uint ge2);
void init1();
void init2();
void init3();
void init4();
void init5();
void main()
{
P0=0xFF;
P1=0xFF;
P3=0xFF;
EA=1;
ET0=1;
TR0=0;
init1();
while(1)
{
init2();
init3();
init4();
init5();
}
}
void init1()
{
uint temp;
temp=5;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_DONGXI=0;
RED_NANBEI=0;
GREEN_DONGXI=1;
GREEN_NANBEI=1;
YELLOW_DONGXI=1;
YELLOW_NANBEI=1;
if(aa==20)//??20*50MS=1S
{
aa=0;
temp--;
shi1=shi2=temp/10;
ge1=ge2=temp%10;
}
if(temp==0)\
{temp=5;
break;
}
display(ge1,shi1,ge2,shi2);
}
}
void init2()
{
uint temp;
temp=55;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_DONGXI=1;
RED_NANBEI=0;
GREEN_DONGXI=0;
GREEN_NANBEI=1;
YELLOW_DONGXI=1;
YELLOW_NANBEI=1;
if(aa==20)//??20*50MS=1S
{
aa=0;
temp--;
shi1=(temp+5)/10;
ge1=(temp+5)%10;
shi2=temp/10;
ge2=temp%10;
}
if(temp==0)
{temp=55;
break;
}
display(ge1,shi1,ge2,shi2);
}
}
void init3()
{
uint temp;
temp=5;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_NANBEI=0;
GREEN_DONGXI=1;
if(aa==20)//??20*50MS=1S
{
aa=0;
temp--;
YELLOW_DONGXI=~YELLOW_DONGXI;
shi1=temp/10;
ge1=temp%10;
shi2=shi1;
ge2=ge1;
}
if(temp==0)
{
temp=5;
break;
}
display(ge1,shi1,ge2,shi2);
}
}
void init4()
{
uint temp;
temp=55;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_DONGXI=0;
RED_NANBEI=1;
YELLOW_DONGXI=1;
GREEN_NANBEI=0;
if(aa==20)
{
aa=0;
temp--;
shi1=temp/10;
shi2=(temp+5)/10;
ge1=temp%10;
ge2=(temp+5)%10;
}
if(temp==0)
{
temp=55;
break;
}
display(ge1,shi1,ge2,shi2);
}
}
void init5()
{
uint temp;
temp=5;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_NANBEI=1;
RED_DONGXI=0;
GREEN_DONGXI=1;
GREEN_NANBEI=1;
if(aa==20)
{
aa=0;
temp--;
YELLOW_NANBEI=~YELLOW_NANBEI;
shi1=temp/10;
shi2=shi1;
ge1=temp%10;
ge2=ge1;
}
if(temp==0)
{
temp=5;
break;
}
display(ge1,shi1,ge2,shi2);
}
}
void display(uint shi1,uint ge1,uint shi2,uint ge2)
{
DXweixuan1=1;
DXweixuan2=0;
NBweixuan1=0;
NBweixuan2=0;
P0=table[ge1];
delay(5);
DXweixuan1=0;
DXweixuan2=1;
NBweixuan1=0;
NBweixuan2=0;
P0=table[shi1];
delay(5);
DXweixuan1=0;
DXweixuan2=0;
NBweixuan1=1;
NBweixuan2=0;
P0=table[ge2];
delay(5);
DXweixuan1=0;
DXweixuan2=0;
NBweixuan1=0;
NBweixuan2=1;
P0=table[shi2];
delay(5);
}
void xtimer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void delay(unsigned char j)
{
unsigned char k;
unsigned int i;
for(;j>0;j--)
{
for(i=1250;i>0;i--)
{
for(k=180;k>0;k--);
}
}
}
复制代码
作者:
就不给他
时间:
2018-12-11 22:41
最后的void是不要的,请问有人知道这个数码管乱跳怎么解决吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1