实用标准文案精彩文档可实现功能:1可控制左右旋转2可控制停止转动3有测速功能,即时显示在液晶上4有速度档位选择,分五个档次,但不能精确控速5档位显示在液晶上用到的知识:1用外部中断检测电机送来的下降沿,在一定时间里统计脉冲个数,进行算出转速
2通过改变占空比可改变电机速度,占空比的改变可以通过改变定时器的重装初值来实现
3要想精确控制速度,还需要用自动控制理论里的PID算法,但参数难以选定,故在此设计中没有涉及
#include#defineucharunsignedchar#defineuintunsignedintsbitPW1=P1^0;sbitPW2=P1^1;//控制电机的两个输入sbitaccelerate=P0^2;//调速按键sbitstop=P0^3;//停止按键sbitleft=P0^4;//左转按键sbitright=P0^5;//右转按键实用标准文案精彩文档sbitdetect=P3^2;//检测脉冲sbitlcdrs=P0^0;sbitlcden=P0^1;#defineDaP2uinttemp;//保存检测到的电平数据以便比较uintcount;//用于计数uintaa,bb;//用于计数uintspeed;//用来计算转速uinta=25000;uintt0=25000,t1=25000;//初始时占空比为50%ucharflag=1;//此标志用于选择不同的装载初值uchardflag;//左右转标志ucharsflag=1;//用来标志速度档位#defineright_turnPW1=0;PW2=1//顺时针转动#defineleft_turnPW1=1;PW2=0//逆向转动#defineend_turnPW1=1;PW2=1//停转voidkeyscan();//键盘扫描voiddelay(ucharz);voidtime_init()