欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
紅外遙控小車的單片機源程序,希望能幫到大家
[打印本頁]
作者:
咻咻修
時間:
2018-8-5 03:26
標題:
紅外遙控小車的單片機源程序,希望能幫到大家
最近偶然翻到以前的紅外小車程序,分享給大家,希望對大家有幫助。
單片機源程序如下:
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit IRIN=P3^2;
sbit PWM1=P1^4;
sbit PWM2=P1^5;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
u8 IrValue[6];
u8 Time;
void qianjin();
void houtui();
void zuozhuan();
void youzhuan();
void Time1Config();
u8 DisplayData[8];
u8 code smgduan[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X76};
#define L_go IN3=1;IN4=0 //×ó???°??
#define R_go IN1=1;IN2=0 //óò???°??
#define L_back IN3=0;IN4=1 //×ó??oóí?
#define R_back IN1=0;IN2=1 //óò??oóí?
#define L_stop IN3=0;IN4=0 //×ó??í£?1
#define R_stop IN1=0;IN2=0 //óò??í£?1
#define car_go L_go;R_go //D?3μ?°??
#define car_back L_back;R_back //D?3μoóí?
#define car_left R_stop;L_go //D?3μ×ó×a
#define car_right L_stop;R_go //D?3μóò×a
#define car_stop L_stop;R_stop //D?3μí£?1
unsigned char timer1;
void Delay(u16 i)
{
while(i--);
}
void DigDisplay() //switch case 語句
{
u8 i;
for(i=0;i<3;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
}
P0=DisplayData[2-i];
Delay(100);
P0=0x00;
}
}
void IrInit()
{
IT0=1;
EX0=1;
EA=1;
IRIN=1;
}
void qianjin()
{
while(1)
{
car_go;
if(timer1>100) //PWM周期為100*0.5ms
{
timer1=0;
}
if(timer1 < 50) //改變30這個值可以改變直流電機的速度
{
PWM2=1;
}
else
{
PWM2=0;
}
}
if(timer1 < 20)
{
PWM1=1;
}
else
{
PWM1=0;
}
if(IrValue[2]!=0x18) break;
}
}
void houtui()
{
while(1)
{
car_back;
if(timer1>100) //PWM周期為100*0.5ms
{
timer1=0;
}
if(timer1 < 40) //改變30這個值可以改變直流電機的速度
{
PWM1=1;
}
else
{
PWM1=0;
}
}
if(timer1 < 20)
{
PWM2=1;
}
else
{
PWM2=0;
}
if(IrValue[2]!=0x52) break;
}
}
void zuozhuan()
{
while(1)
{
car_left;
if(timer1>100) //PWM周期為100*0.5ms
{
timer1=0;
}
if(timer1 < 40) //改變30這個值可以改變直流電機的速度
{
PWM1=1;
}
else
{
PWM1=0;
}
}
if(timer1 < 20)
{
PWM2=1;
}
else
{
PWM2=0;
}
if(IrValue[2]!=0x08)
{
break;
}
}
}
void youzhuan()
{
while(1)
{
car_right;
if(timer1>100) //PWM周期為100*0.5ms
{
timer1=0;
}
if(timer1 < 40) //改變30這個值可以改變直流電機的速度
{
PWM1=1;
}
else
{
PWM1=0;
}
}
if(timer1 < 20)
{
PWM2=1;
}
else
{
PWM2=0;
}
if(IrValue[2]!=0x5a) break;
}
}
void main()
{
IrInit();
Time1Config();
while(1)
{
DisplayData[0] = smgduan[IrValue[2]/16];
DisplayData[1] = smgduan[IrValue[2]%16];
DisplayData[2] = smgduan[16];
DigDisplay();
switch(IrValue[2])
{
case 0x52 :qianjin();break;
case 0x18 :houtui();break;
case 0x45 :car_stop;break;
case 0x5a :zuozhuan();break;
case 0x08 :youzhuan();break;
}
}
}
void ReadIr() interrupt 0
{
u8 j,k;
u16 err;
Time=0;
Delay(700); //7ms
if(IRIN==0) //è·è?ê?·???μ??óê?μ??yè·μ?D?o?
{
err=1000; //1000*10us=10ms,3?1y?μ?÷?óê?μ?′í?óμ?D?o?
/*μ±á???ì??t???a??ê??-?·£?è?1?óDò???ì??t?a?ùμ?ê±oòì?3??-?·£??aμ?3ìDò3?′íμ?ê±
o?£?3ìDò?à?ú?aà?*/
while((IRIN==0)&&(err>0)) //μè′y?°??9msμ?μíμ???1yè¥
{
Delay(1);
err--;
}
if(IRIN==1) //è?1??yè·μèμ?9msμíμ???
{
err=500;
while((IRIN==1)&&(err>0)) //μè′y4.5msμ??eê???μ???1yè¥
{
Delay(1);
err--;
}
for(k=0;k<4;k++) //12óD4×éêy?Y
{
for(j=0;j<8;j++) //?óê?ò?×éêy?Y
{
err=60;
while((IRIN==0)&&(err>0))//μè′yD?o??°??μ?560usμíμ???1yè¥
{
Delay(1);
err--;
}
err=500;
while((IRIN==1)&&(err>0)) //??????μ???μ?ê±??3¤?è?£
{
Delay(10); //0.1ms
Time++;
err--;
if(Time>30)
{
return;
}
}
IrValue[k]>>=1; //k±íê?μú??×éêy?Y
if(Time>=8) //è?1???μ???3???′óóú565us£????′ê?1
{
IrValue[k]|=0x80;
}
Time=0; //ó?íêê±??òa??D??3?μ
}
}
}
if(IrValue[2]!=~IrValue[3])
{
return;
}
}
}
void Time1Config()
{
TMOD|= 0x10; //設置定時計數(shù)器工作方式1為定時器
//--定時器賦初始值,12MHZ下定時0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //開啟定時器1中斷
EA = 1;
TR1 = 1; //開啟定時器
}
void Time1(void) interrupt 3 //3 為定時器1的中斷號 1 定時器0的中斷號 0 外部中斷1 2 外部中斷2 4 串口中斷
{
TH1 = 0xFE; //重新賦初值
TL1 = 0x0C;
timer1++;
}
復制代碼
所有資料51hei提供下載:
遙控小車 - 副本.zip
(27.78 KB, 下載次數(shù): 17)
2018-8-5 03:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
hjj1019389748
時間:
2018-8-5 21:58
謝謝分享
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1