两轮智能车pwm电机调速程序

上传人:wt****50 文档编号:33959271 上传时间:2018-02-19 格式:DOC 页数:5 大小:41.50KB
返回 下载 相关 举报
两轮智能车pwm电机调速程序_第1页
第1页 / 共5页
两轮智能车pwm电机调速程序_第2页
第2页 / 共5页
两轮智能车pwm电机调速程序_第3页
第3页 / 共5页
两轮智能车pwm电机调速程序_第4页
第4页 / 共5页
两轮智能车pwm电机调速程序_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《两轮智能车pwm电机调速程序》由会员分享,可在线阅读,更多相关《两轮智能车pwm电机调速程序(5页珍藏版)》请在金锄头文库上搜索。

1、/*晶振:11.0592,输出的 PWM 直接给 L298N 以驱动电机,通过调节(percent_l = 90;)等号后的数值,与(Sum 100)的比值,为占空比,如上取 90 比 100 则输出 PWM 波占空比为 9/10 的高电平,1/10 的低电平,低电平时间越长则速度越慢。要注意的是调节#define Sum 100 的值可以调节 PWM 的总周期,调节#define tim 200 的值可以调节定时器的定时周期。*/#include#define uchar unsigned char#define uint unsigned int#define MOTOR_C P1 /P1

2、 口作为电机的控制口。#define BACK 0xfa /后退,0b1111 1010#define FORWARD 0xf5 /前进,0b1111 0101#define Sum 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 timer

3、1_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; /(前进

4、)左轮占空比。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()

5、;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

6、; /右轮速度慢。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;/ percen

7、t_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 0;c-)for(b=23;b0;b-)for(a=13;a0;a-);*/void Delay100ms(unsigned int d) unsigned int a,b,c;for(c=d;c0;c-)for(b=60;b0;b-)for(a=130;a0;a-);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号