首页 L298N PWN调速程序

L298N PWN调速程序

举报
开通vip

L298N PWN调速程序/*************************使用定时中断来实现调节PWM调加减10个控位档******************************** 功能:PWM调速、控制10个档位速度、可随时加速减速功能。 作者:韦贤 院校:广西师范大学 专业:08电子信息工程 ********************************************************** ****************************************/ #include #...

L298N PWN调速程序
/*************************使用定时中断来实现调节PWM调加减10个控位档******************************** 功能:PWM调速、控制10个档位速度、可随时加速减速功能。 作者:韦贤 院校:广西师范大学 专业:08电子信息 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 ********************************************************** ****************************************/ #include #include "LCD1602.h" sbit KEY1 = P1^0; sbit KEY2 = P1^1; sbit KEY3 = P1^2; sbit KEY4 = P1^3; sbit KEY5 = P1^4; sbit EC=P3^0; // 小车使能接口1 sbit EB=P3^1; //使能接口2 sbit zuo1 = P2^1; sbit zuo2 = P2^2; sbit you1 = P2^3; sbit you2 = P2^4; unsigned char CYCLE; //定义周期该数字X基准定时时间如果是 10 则周期是10 x 0.1ms unsigned char PWM_ON ;//定义高电平时间 unsigned char PWM_Num;//定义档位 #define uchar unsigned char #define uint unsigned int //==========宏定义P2口==================== #define DATA_PORT P0 /**********************************延时子程序*****************************************/ void delay(unsigned int cnt) { while(--cnt); } /********************************************************* ***************************/ void qianjin() //前进 { zuo1=1; zuo2=0; you1=1; you2=0; } void houtui() //后退 { zuo1=0; zuo2=1; you1=0; you2=1; } void tingzhi() //停止 { zuo1=0; zuo2=0; you1=0; you2=0; } /********************************************************* ************************/ void dangwei(unsigned char PWM_Num) //加速档位子程序{ switch(PWM_Num){ case 0: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=9; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"0"); //显示字符串 break;//高电平时长 case 1: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=8; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"1"); //显示字符串 break; case 2: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=7; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"2"); //显示字符串 break; case 3: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=6; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"3"); //显示字符串 break; case 4: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=5; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"4"); //显示字符串 break; case 5: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=4; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"5"); //显示字符串 break; case 6: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=3; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"6"); //显示字符串 break; case 7: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=2; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"7"); //显示字符串 break; case 8: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=1; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"8"); //显示字符串 break; case 9: zuo1=1; zuo2=0; you1=1; you2=0; PWM_ON=0; Displaypstr(0,0,"Speed threshold"); //显示字符串 Displaypstr(11,1,"9"); //显示字符串 break; default:break; } if(PWM_Num==10)PWM_Num=0; } /**************************************/ /********************************/ /* 定时中断 */ /********************************/ void tim(void) interrupt 1 using 1 { static unsigned char count; TH0=(65536-1000)/256; TL0=(65536-1000)%256;//定时1mS if (count==PWM_ON) { EC=1; // 小车使能接口1 EB=1; //使能接口2 } count++; if(count == CYCLE) { count=0; if(PWM_ON!=0) //如果左右时间是0 保持原来状态 EC=0; // 小车使能接口1 EB=0; //使能接口2 } } /* 键位加减速主 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数开始 */ /**************************************/ main() { Init_1602(); //初始化液晶 TMOD |=0x01;//定时器设置 1ms in 12M crystal TH0=(65536-1000)/256; TL0=(65536-1000)%256;//定时0.5mS IE= 0x82; //打开中断 TR0=1; CYCLE =10;// 时间可以调整这个是10步调整周期10ms 8位PWM就是256步 Displaypstr(0,0," Author:WeiXian"); Displaypstr(0,1," PWN "); while(1) { if(!KEY1)//加速键 { delay(25000); if(!KEY1) { Init_1602(); PWM_Num++; Displaypstr(4,1,"-->>"); //显示字符串 dangwei(PWM_Num); } } if(!KEY2) //减速键 { delay(25000); if(!KEY2) { Init_1602(); PWM_Num--; Displaypstr(5,1,"<<--"); //显示字符串 dangwei(PWM_Num); } } if(!KEY3) // 前进键 { delay(25000); if(!KEY3) { Init_1602(); PWM_ON=0; Displaypstr(2,0," All speed"); Displaypstr(4,1," ----up"); qianjin(); } } if(!KEY4) //后退键 { delay(25000); if(!KEY4) { Init_1602(); PWM_ON=0; Displaypstr(4,0," All speed"); Displaypstr(3,1," ----down"); houtui(); } } if(!KEY5) //停止键 { delay(25000); if(!KEY5) { Init_1602(); PWM_ON=0; Displaypstr(4,0," speed"); Displaypstr(3,1," ----STOP"); tingzhi(); } } } }
本文档为【L298N PWN调速程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:0
分类:工学
上传时间:2019-06-03
浏览量:35