谁有51单片机控制直流电机正反转和调速的电路和程序
#includesbit K1 =P0^0; //PWM值增加键sbit K2 =P0^1; //PWM值减少键sbit pwm=P1^0;sbit pwm1=P1^2;unsigned char PWM=0x7f ; //赋初值/*********************************************************/void delayms(unsigned char ms) // 延时子程序{ unsigned char i ; while(ms--) { for(i=0 ; i ;...全部
#includesbit K1 =P0^0; //PWM值增加键sbit K2 =P0^1; //PWM值减少键sbit pwm=P1^0;sbit pwm1=P1^2;unsigned char PWM=0x7f ; //赋初值/*********************************************************/void delayms(unsigned char ms) // 延时子程序{ unsigned char i ; while(ms--) { for(i=0 ; i ; }}/*********************************************************/void main(){ TMOD=0x21; //timer1为8位定时器,timer0为16位定时器方式1 TH0=0xfe; //1ms延时常数 TL0=0x66; //频率调节 TH1=PWM; //脉宽调节 TL1=0; //每次定时器中断,TL1会自动装载 EA=1; ET0=1; ET1=1; TR0=1; while(1) { do{ if(PWM!=0xff) { PWM ; delayms(10); } }while(K1==0); do{ if(PWM!=0x01) { PWM-- ; delayms(10); } }while(K2==0); }}/*********************************************************/void timer0() interrupt 1 //定时器0中断服务程序 (频率){ TR1=0; //先把定时器1关掉 TH0=0xfe; //1ms延时常数 TL0=0x66; //频率调节 TH1=PWM; TR1=1; pwm=0; //启动输出 pwm1=0; //启动输出}/*********************************************************/void timer1() interrupt 3 //定时器1中断服务程序 (脉宽){ TR1=0 ; pwm=1 ; //结束输出 pwm1=1 ; //结束输出}/*********************************************************/。
收起