- /*****************************************************
- 用IR2104加IRF3205MOS管做驱动板74HC00作逻辑驱动IR2104
- 功能:无线遥控智能小车
- 单片机;STC12C5608AD
- 晶振:12M
- 作者:苏义江
- 时间:2015-7-18
- 其他避障,循迹,超声波 后续
- ****************************************************/
- #include
- #define uchar unsigned char
- #define uint unsigned int
- ***it dir1 =P1^0;//左电机端口方向控制
- ***it dir2 =P1^1;//左电机端口方向控制
- ***it pwm1 =P1^2;//PWM输出
- ***it dir3 =P1^3;//右电机端口方向控制
- ***it dir4 =P1^4;//右电机端口方向控制
- ***it A = P2^0;//无线遥控A键
- ***it b1= P2^1;//无线遥控B键
- ***it C = P2^2;//无线遥控C键
- ***it D = P2^3;//无线遥控D键
- ***it qian =P3^0;//按键
- ***it hou =P3^1;//按键
- ***it zuo =P3^4;//按键
- ***it you =P3^5;//按键
- uchar t=0,pwm=0;//pwm是%0的占空比
- //t是计数器加1的全局变量
- void delayms(uint z);
- void tim0_init();//初始化
- void qianjin();
- void houtui();
- void zuozhuan();
- void youzhuan();
- void down();//停止子函数
- void wuxian();
- void wuxian()//无线函数
- {
- if(A==1 && b1!=1 && D!=1&& C!=1)//按下A键
- {
- qianjin();
- }
- if(b1==1 && A!=1 && C!=1&& D!=1)//按下B键
- {
- houtui();
- }
- if(C==1 && b1!=1 && D!=1&& A!=1)//按下C键
- {
- zuozhuan();
- }
- if(D==1 && A!=1 && C!=1&& b1!=1)//按下D键
- {
- youzhuan();
- }
- if(A==1 && b1==1)//同时按下A键和B键
- {
- down();
- }
- }
- void qianjin()
- {
- dir1=0;//方向
- dir2=1;//方向
- pwm1=10;//PWM
- dir3=0;//方向
- dir4=1;//方向
- pwm1=10;//PWM
- }
- void houtui()
- {
- dir1=1;//方向
- dir2=0;
- pwm1=10;//PWM
- dir3=1;
- dir4=0;
- pwm1=10;//PWM
- }
- void zuozhuan()
- {
- dir1=1;
- dir2=0;
- pwm1=10;
- dir3=0;
- dir4=1;
- pwm1=10;
- }
- void youzhuan()
- {
- dir1=0;
- dir2=1;
- pwm1=10;
- dir3=1;
- dir4=0;
- pwm1=10;
- }
- void down()//停止子函数
- {
- dir1=0;
- dir2=0;
- pwm1=0;
- dir3=0;
- dir4=0;
- }
- void main()
- {
- tim0_init();
- while(1)
- {
- wuxian();
- }
- }
- void delayms(uint z)
- {
- uint s,y;
- for(s=z;s>0;s--)
- for(y=410;y>0;y--);
- }
- void tim0_init()//初始化
- {
- TMOD=0X01;
- TH0=(65536-20)/256;//赋初值0.02MS中断100次是1MS就是1KHZ频率
- TL0=(65536-20)%256;//赋初值0.02MS
- ET0=1;
- EA=1;
- TR0=1;
- }
- void tim0() interrupt 1
- {
- TH0=(65536-20)/256;//赋初值0.02MS中断100次是1MS就是1KHZ频率
- TL0=(65536-20)%256;//赋初值0.02MS
- t++;
- if(t<=98)
- {
- pwm1=1;
- }
- else
- pwm1=0;
- if(t==100)
- {t=0;}
- }
|