avr或51单片机pwm控制小车左右电机并调速.doc
《avr或51单片机pwm控制小车左右电机并调速.doc》由会员分享,可在线阅读,更多相关《avr或51单片机pwm控制小车左右电机并调速.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、avr或51单片机pwm控制小车左右电机并调速,红外对管检测的程序 / Crystal: 8.0000Mhz #include #include #define uchar unsigned char #define uint unsigned int uint discrepancy=0; /function declaration void port_init(void); void motor(uchar index, uchar speed);/input PWM wave void sensor_state(void);/get the running condition void
2、revise_to_line(void );/0=run forward,1=left,2=right,3=sever left,4=sever right void delayms(uint MS) ; /call this routine to initialize all peripherals调用这个例程初始化所有外设void init_devices0(void) /stop errant interrupts until set up CLI(); /disable all interrupts timer0_init(); MCUCR = 0x00; GICR = 0x00; T
3、IMSK = 0x02; /timer interrupt sources SEI(); /re-enable interrupts /all peripherals are now initialized /initialize T/C1 void timer1_init(void) TCCR1B = 0x00;/停止定时器 TIMSK |= 0x00;/中断允许 TCNT1H = 0x00; TCNT1L = 0x00;/初始值 OCR1AH = 0x00; OCR1AL = 0xF0;/匹配A值 OCR1BH = 0x00; OCR1BL = 0xF0;/匹配B值 ICR1H = 0xF
4、F; ICR1L = 0xFF;/输入捕捉匹配值 TCCR1A = 0xA1; TCCR1B = 0x01;/启动定时器 /call this routine to initialize all peripherals void init_devices1(void) CLI(); /禁止所有中断 timer1_init( ); MCUCR = 0x00; MCUCSR = 0x80;/禁止JTAG GICR = 0x00; SEI();/开全局中断 /PWM 调速,通过改变占空比,周期性地开闭使能端,调节电机的有效电压。/use PD4,PD5 to output PWM,speed(025
5、5) void motor(uchar index, uchar speed) if(index=1) OCR1AH = 0x00; OCR1AL =speed; if(index=2) OCR1BH = 0x00; OCR1BL =speed; /delay time by ms void delayms(uint MS) uint i,j; for( i=0;iMS;i+) for(j=0;j1141;j+); /1141是在8MHz晶振下 /port initial void port_init( ) DDRA = 0x00;/input running state DDRB = 0xF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- avr 51 单片机 pwm 控制 小车 左右 电机 调速
限制150内