📄 youbing.txt
字号:
这个程序是帮同学做的课程设计。
我是个新手,程序写的很烂,这程序搞了将近一星期了,连LED显示部分调试也没通过
!!!LED显示有问题!!!
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key_add=P1^0;
sbit key_reduce=P1^1;
sbit key_begin=P1^2;
sbit RY_A=P1^3;
sbit RY_B=P1^4;
sbit RY_C=P1^5;
sbit p1_7=P1^7;
bit positive=0,wait1=0,wait2=0,negative=0,working=0;
uchar minute=25;
uchar code displaytable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint countpositive=0,countwait1=0,countwait2=0,countnegative=0,countminute=0;
void Delay10ms(uint delay10ms);
void Display(void);
void Minute_Add(void);
void Minute_Reduce(void);
void Revolve_Positive(void);
void Revolve_Wait1(void);
void Revolve_Wait2(void);
void Revolve_Negative(void);
void BZ_Work(void);
void Work_Over(void);
void Delay10ms(uint delay10ms)
{
uchar i=0;
for(;delay10ms>0;delay10ms--)
{
for(;i<124;i++)
{;}
}
}
void Display()!!问题程序!!tmp2取不到余!!显示个位一直为0,而且比十位亮很多!!
{
uchar tmp1,tmp2;
tmp1=minute/10;
tmp2=minute%10;
P0=displaytable[tmp1];
P2=0xfe;
Delay10ms(20);
P0=displaytable[tmp2];
P2=0xfd;
Delay10ms(20);
}
void Minute_Add()
{
if(key_add==0)
{
Delay10ms(1);
while(key_add==0)
{
minute++;
if(minute>=99)
{
minute=0;
}
Delay10ms(20);
}
}
}
void Minute_Reduce()
{
if(key_reduce==0)
{
Delay10ms(1);
while(key_reduce==0)
{
if(minute==0)
{
minute=99;
}
minute--;
Delay10ms(20);
}
}
}
void Time0() interrupt 1 using 1
{
TH0=(65536-15536)/256;
TL0=(65536-15536)%256;
countminute++;
if(countminute>=1400)
{
countminute=0;
minute--;
}
if(positive=1)
{
countpositive++;
}
else if (wait1==1)
{
countwait1++;
}
else if(wait2==1)
{
countwait2++;
}
else if(negative==1)
{
countnegative++;
}
Display();
}
void Revolve_Positive()
{
if(minute!=0)
{
positive=1;
RY_A=1;
RY_B=0;
RY_C=0;
if(countpositive>=400)
{
positive=0;
Revolve_Wait1();
}
}
}
void Revolve_Wait1()
{
if(minute!=0)
{
wait1=1;
RY_A=0;
if(countwait1>=200)
{
wait1=0;
Revolve_Negative();
}
}
}
void Revolve_Negative()
{
if(minute!=0)
{
negative=1;
RY_A=1;
RY_B=1;
RY_C=1;
if(countnegative>=400)
{
negative=0;
Revolve_Wait2();
}
}
}
void Revolve_Wait2()
{
if(minute!=0)
{
wait2=1;
RY_A=0;
if(countwait2>=200)
{
wait2=0;
Revolve_Positive();
}
}
}
void Time1() interrupt 3 using 2
{
TH1=236;
TL1=3;
p1_7=!p1_7;
}
void Work_Over()
{
if(minute==0)
{
RY_A=0;
}
}
void BZ_Work()
{
if(minute==0&&working)
{
TH1=236;
TL1=3;
TR1=1;ET1=1;
}
}
void main()
{
P0=0xff;
P2=0xff;
TMOD=0x01;
TH0=50000/256;
TL0=50000%256;
EA=1;
ET0=1;
IP=0X08;
TR0=1;
while(1)
{
if(key_begin==0)
{working=1;}
Minute_Add();
Minute_Reduce();
Revolve_Positive();
BZ_Work();
Work_Over();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -