您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > L298N-PWN调速程序
/*************************使用定时中断来实现调节PWM调加减10个控位档********************************功能:PWM调速、控制10个档位速度、可随时加速减速功能。作者:韦贤院校:广西师范大学专业:08电子信息工程**************************************************************************************************/#includereg52.h#includeLCD1602.hsbitKEY1=P1^0;sbitKEY2=P1^1;sbitKEY3=P1^2;sbitKEY4=P1^3;sbitKEY5=P1^4;sbitEC=P3^0;//小车使能接口1sbitEB=P3^1;//使能接口2sbitzuo1=P2^1;sbitzuo2=P2^2;sbityou1=P2^3;sbityou2=P2^4;unsignedcharCYCLE;//定义周期该数字X基准定时时间如果是10则周期是10x0.1msunsignedcharPWM_ON;//定义高电平时间unsignedcharPWM_Num;//定义档位#defineucharunsignedchar#defineuintunsignedint//==========宏定义P2口====================#defineDATA_PORTP0/**********************************延时子程序*****************************************/voiddelay(unsignedintcnt){while(--cnt);}/************************************************************************************/voidqianjin()//前进{zuo1=1;zuo2=0;you1=1;you2=0;}voidhoutui()//后退{zuo1=0;zuo2=1;you1=0;you2=1;}voidtingzhi()//停止{zuo1=0;zuo2=0;you1=0;you2=0;}/*********************************************************************************/voiddangwei(unsignedcharPWM_Num)//加速档位子程序{switch(PWM_Num){case0:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=9;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,0);//显示字符串break;//高电平时长case1:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=8;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,1);//显示字符串break;case2:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=7;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,2);//显示字符串break;case3:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=6;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,3);//显示字符串break;case4:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=5;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,4);//显示字符串break;case5:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=4;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,5);//显示字符串break;case6:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=3;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,6);//显示字符串break;case7:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=2;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,7);//显示字符串break;case8:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=1;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,8);//显示字符串break;case9:zuo1=1;zuo2=0;you1=1;you2=0;PWM_ON=0;Displaypstr(0,0,Speedthreshold);//显示字符串Displaypstr(11,1,9);//显示字符串break;default:break;}if(PWM_Num==10)PWM_Num=0;}/**************************************//********************************//*定时中断*//********************************/voidtim(void)interrupt1using1{staticunsignedcharcount;TH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时1mSif(count==PWM_ON){EC=1;//小车使能接口1EB=1;//使能接口2}count++;if(count==CYCLE){count=0;if(PWM_ON!=0)//如果左右时间是0保持原来状态EC=0;//小车使能接口1EB=0;//使能接口2}}/*键位加减速主函数开始*//**************************************/main(){Init_1602();//初始化液晶TMOD|=0x01;//定时器设置1msin12McrystalTH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时0.5mSIE=0x82;//打开中断TR0=1;CYCLE=10;//时间可以调整这个是10步调整周期10ms8位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,Allspeed);Displaypstr(4,1,----up);qianjin();}}if(!KEY4)//后退键{delay(25000);if(!KEY4){Init_1602();PWM_ON=0;Displaypstr(4,0,Allspeed);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调速程序
链接地址:https://www.777doc.com/doc-4307940 .html