标题:
51单片机的车库入口升降杆系统程序没有按预期效果运行
[打印本页]
作者:
9838775
时间:
2019-5-15 18:49
标题:
51单片机的车库入口升降杆系统程序没有按预期效果运行
第一次编了这么一段关于51单片机控制直流电机正反转并对进出车辆进行计数的程序,从刚开始写到现在已经改了好多次但是这回问题是实物现在对电机控制基本没问题,但计数部分数码管没办法按预期效果正常示数,甚至除了一开始的00以外都不会显示正常的数字,想请教一下该怎么去修改。
具体单片机程序如下
typedef unsigned int u16;
sbit X=P1^0;
sbit Y=P1^1;
sbit in3=P1^2;
sbit in4=P1^3;
sbit xingcheng1=P1^4;
sbit xingcheng2=P1^5;
sbit led=P1^6;
sbit gs=P0^0;
sbit gg=P0^1;
u8 i;
u8 k;
u16 sum;
u8 code smgduan[]={0xde,0x88,0x5d,0x9d,0x8b,0x97,0xd7,0x8c,
0xdf,0x9f};
unsigned int g,s;
void delay(u16 z)
{
while(z--);
}
void main()
{
i=2;
k=1;
sum=0;
while(1)
{
s=sum/10;
g=sum%10;
P2=smgduan[g];
gg=0;
gs=1;
delay(77);
P2=smgduan[s];
gs=0;
gg=1;
delay(77);
if((X==0||Y==0)&&X!=Y)
{
in3=1;in4=0;
k++;
if(xingcheng1==0&&k==2)
{
in3=0;in4=0;
k=1;
}
if(X==0&&Y==1)
{
i--;
}
if(X==1&&Y==0)
{
i++;
}
if(X!=Y)
{
switch(i)
{
case(1):
{
if(X==1&&Y==0)
{
sum++;break;
}
}
case(3):
{
if(X==0&&Y==1)
{
sum--;break;
}
}
}
}
if(X==1&&Y==1)
{
in3=0;in4=1;
k--;
if(xingcheng2==0&&k==0)
{
in3=0;in4=0;
k=1;
}
}
if(sum<=20)
led=0;
if(sum>=20)
led=1;
}
i=2;
}
}
复制代码
作者:
9838775
时间:
2019-5-15 18:51
X Y 和 xingcheng1 xingcheng2实物中现在用红外避障模块代替,数码管数字0-9也是自己按照焊接的引脚进行编码的!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1