两轮智能车pwm电机调速程序.doc_第1页
两轮智能车pwm电机调速程序.doc_第2页
两轮智能车pwm电机调速程序.doc_第3页
两轮智能车pwm电机调速程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*晶振:11.0592,输出的PWM直接给L298N以驱动电机,通过调节(percent_l = 90;)等号后的数值,与(Sum 100)的比值,为占空比,如上取90比100则输出PWM波占空比为9/10的高电平,1/10的低电平,低电平时间越长则速度越慢。要注意的是调节#defineSum 100的值可以调节PWM的总周期,调节#define tim 200的值可以调节定时器的定时周期。*/#include#define uchar unsigned char#define uint unsigned int#define MOTOR_C P1 /P1口作为电机的控制口。#define BACK 0xfa /后退,0b1111 1010#define FORWARD 0xf5 /前进,0b1111 0101#defineSum 100/总周期,为100倍的定时器时间大约27ms#define tim 200/初值数 200约270ussbit PWM_L = P10; /左电机前进sbit PWM_R = P12; /右电机前进sbit PWM_HL = P11;/左电机后退sbit PWM_HR = P13;/右电机后退void timer0_init( void ); /定时器0初始化函数。void timer1_init( void );/定时器1初始化函数。void right( void ); /前进右转弯函数。void left( void ); /前进左转弯函数。void forward( void ); /前进函数。void hright(void);/后退右转函数。void hleft(void);/后退左转函数。void back(void);/后退函数。void stop(void);/停止void Delayms();/延时1msvoid Delay100ms(unsigned int d); /延时100msuchar percent_l = 0; /(前进)左轮占空比。uchar percent_r = 0; /(前进)右轮占空比。uchar percent_hl = 0;/(后退)左轮占空比。uchar percent_hr = 0;/(后退)右轮占空比。uchar run_time = 0; /车轮运行一步的时间。void main( void )timer0_init();timer1_init();MOTOR_C=0x00;while(1)left();Delay100ms(10);right();Delay100ms(10);back();Delay100ms(10);forward();Delay100ms(10);stop();void timer0_init( void ) TMOD = 0X11; TH0 = (65536 - tim) / 256; TL0 = (65536 - tim) % 256; EA = 1; /开总中断。 ET0 = 1; /开定时器0中断。 TR0 = 1; /启动定时器0。void timer1_init( void ) TH1 = (65536 - tim) / 256; TL1 = (65536 - tim) % 256; ET1=1;TR1=1;/*前进方向*/void right( void ) percent_l = 90; /左轮速度快,最好去50以上 percent_r = 0; /右轮速度慢。percent_hl = 0; percent_hr = 0;void left( void ) percent_l =0; /左轮速度慢。 percent_r = 90; /右轮速度快。percent_hl = 0; percent_hr = 0;void forward( void ) percent_l = 99; /左轮同速度。 percent_r = 99; /右轮同速度。percent_hl = 0; percent_hr = 0;/*后退方向*/void hright(void )/percent_hr = 90;/percent_hl = 0;/percent_r = 0;/percent_l = 0;/void hleft( void )/percent_hr = 0;/percent_hl = 90;/percent_r = 0;/percent_l = 0;/void back( void )percent_hl = 99; percent_hr = 99;percent_l = 0;percent_r = 0;void stop( void ) percent_l = 0; /左轮零速度。 percent_r = 0; /右轮零速度。percent_hl = 0; percent_hr = 0;/*中断服务*/void timer_0 ( void ) interrupt 1 using 1 static uchar temp = 0; /中断次数计数。 TR0 = 0; if(temp Sum) /关总中断,屏蔽其他中断。 if(temp percent_l) PWM_L = 1; /左电机高电平。 else PWM_L = 0; /左电机低电平。 if(temp percent_r) PWM_R = 1; /右电机高电平。 else PWM_R = 0; /右电机低电平。 else temp=0;temp +;TH0 = (65536 - tim) / 256; TL0 = (65536 - tim) % 256; /实现计数。 TR0 = 1; /开总中断。void timer1 ( void ) interrupt 3 using 2static uchar temp1 = 0;TR1 = 0; /关总中断,屏蔽其他中断。if(temp1 Sum) if(temp1 percent_hl) PWM_HL = 1; /左电机高电平。 else PWM_HL = 0; /左电机低电平。 if(temp1 0;c-)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论