资源简介
这是一个用四个键进行调速与转弯的程序,它可以向前转,向后转,前进加速,后退减速等一系列操作。很实用
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit s4=P1^3;
sbit motor1=P2^0;
sbit motor2=P2^1;
sbit motor3=P2^2;
sbit motor4=P2^3;
uchar mazhi_duan[]={0x3f0x060x5b0x4f
0x660x6d0x7d0x230x1C
0x700x46};
void display(uchar duanl)
{
P0=mazhi_duan[duanl];
}
void delayl(uint n)
{
uint ij;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
void speed(uchar motoruchar speed)
{
if(motor==1)
{
speed=3;
motor1=1;
delayl(7);
motor1=0;
delayl(3);
}
if(motor==3)
{
speed=3;
motor3=1;
delayl(7);
motor3=0;
delayl(3);
}
}
uchar keyscan()
{
uchar temp;
P1=0x00;
temp=P1&0x0f;
if(temp!=0x00)
{
delayl(5);
temp=P1&0x0f;
if(temp!=0x00)
{
temp=P1&0x0f;
switch(temp)
{
case 0x01:temp=1;break;
case 0x02:temp=2;break;
case 0x04:temp=3;break;
case 0x08:temp=4;break;
case 0x05:temp=5;break;
case 0x09:temp=6;break;
case 0x06:temp=7;break;
case 0x0A:temp=8;break;
default:temp=0;break;
}
return temp;
}
else
return 0;
}
else
return 0;
}
/****************************************
说明:
第一,
*****************************************/
void main()
{
uchar keynumgo=0beh=0kk=0tempprep;
while(1)
{
keynum=keyscan();
switch(keynum)
{
case 1:display(7);P2=0x05;break;
case 2:P2=0x0A;display(8);break;
case 3:P2=0x04;speed(13);display(9);break;
case 4:P2=0x01;speed(33);display(10);break;
case 5:go=kk;go++;delayl(200);if(go>4)go=1;break;
case 6:go=kk;go--;delayl(200);if(go==0)go=4;break;
case 7:beh=kk;beh++;delayl(200);if(beh>4)beh=1;break;
case 8:beh=kk;beh--;delayl(200);if(beh==0)beh=4;break;
default:P2=0x00;break;
}
switch(go)
{
case 1:temp=1;kk=go;
while(temp)
{
display(4);
P2=0x05;delayl(9);
P2=0x00;delayl(1);
prep=keyscan();
if((prep==0)||(prep==1))
{
temp=0;
go=0;
}
}break;
case 2:temp=1;kk=go;
while(temp)
{
display(3);
P2=0x05;delayl(4);
P2=0x00;delayl(1);
prep=keyscan();
if((prep==0)||(prep==1))
{
temp=0;
go=0;
}
}break;
case 3:temp=1;kk=go;
while(temp)
{
display(2);
P2=0x05;delayl(7);
P2=0x00;delayl(3);
prep=keyscan();
if((prep==0)||(prep==1))
{
temp=0;
go=0;
}
}break;
case 4:temp=1;kk=go;
while(temp)
{
display(1);
P2=0x05;delayl(3);
P2=0x00;delayl(2);
prep=keyscan();
if((prep==0)||(prep==1))
{
temp=0;
go=0;
}
}break;
default:break;
}
switch(beh)
{
case 1:temp=1;kk=beh;
while(temp)
{
display(4);
P2=0x0A;delayl(9);
P2=0x00;delayl(1);
prep=keyscan();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 345 2010-10-07 09:03 汽车调速\1.plg
文件 3890 2010-10-07 09:03 汽车调速\1.c
文件 34 2010-10-07 09:03 汽车调速\1.lnp
文件 12195 2010-10-07 09:03 汽车调速\1.M51
文件 2812 2010-10-07 09:03 汽车调速\1.hex
....... 0 2010-10-06 11:48 汽车调速\1_Uv2.Bak
文件 2092 2010-10-06 17:51 汽车调速\1.Uv2
....... 973 2010-10-06 23:10 汽车调速\1_Opt.Bak
文件 973 2010-10-07 09:01 汽车调速\1.Opt
文件 12920 2010-10-07 09:03 汽车调速\1.LST
文件 11000 2010-10-07 09:03 汽车调速\1.OBJ
文件 9509 2010-10-07 09:03 汽车调速\1
目录 0 2010-10-06 11:48 汽车调速
----------- --------- ---------- ----- ----
56743 13
- 上一篇:北京车牌自编效果预览软件
- 下一篇:nRF24LE1双向通讯
评论
共有 条评论