51單片機 L298N驅動直流電機并進行調速
電路原理圖如下:
0.png (67.51 KB, 下載次數: 42)
下載附件
2018-12-25 21:44 上傳
單片機源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar pwm,num;
- sbit EN=P1^0;
- sbit IN1=P1^1;
- sbit IN2=P1^2;
- sbit key_zhengzhuan=P3^0;
- sbit key_fanzhuan=P3^1;
- sbit key_jiasu=P3^2;
- sbit key_jiansu=P3^3;
- sbit led_jiashu=P1^3;
- sbit led_jianshu=P1^4;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void init()
- {
- TMOD=0x02;
- TH0=210;
- TL0=210;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void key_control()
- {
- if(key_zhengzhuan==0)
- {
- delay(5);
- if(key_zhengzhuan==0)
- {
- // EN=0;
- IN1=1;
- IN2=0;
- }
- }
- if(key_fanzhuan==0)
- {
- delay(5);
- if(key_fanzhuan==0)
- {
- // EN=1;
- IN1=0;
- IN2=1;
- }
- }
- if(key_jiasu==0)
- {
- delay(5);
- if(key_jiasu==0)
- {
- if(pwm<250)
- {
- pwm++;
- }
- }
- }
- if(key_jiansu==0)
- {
- delay(5);
- if(key_jiansu==0)
- {
- if(pwm>0)
- {
- pwm--;
- }
- }
- }
- }
- void main()
- {
- init();
- pwm=30;
- while(1)
- {
- key_control();
- }
- }
- void T0_time() interrupt 1
- {
- num++;
- if(num==250)
- num=0;
- if(num<pwm)
- EN=1;
- else
- EN=0;
- }
復制代碼
|