久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2920|回復: 1
打印 上一主題 下一主題
收起左側

L298N驅動實例

[復制鏈接]
跳轉到指定樓層
樓主
ID:192571 發表于 2017-4-23 09:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
(1)
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit INPUT1 = P1^0; //控制口
sbit INPUT2 = P1^1;
sbit INPUT3 = P1^2;
sbit INPUT4 = P1^3;
sbit ENA   = P1^4; //產生PWM
sbit ENB   = P1^5;
uint MA=0,MB=0;
uint SpeedA=20;//50%占空比
uint SpeedB=20;
void delay(uint z) {
         uintx,y;
         for(x=z;x>0;x--)
                   for(y=125;y>0;y--);
}
            
void main(void)
{
         delay(1000)      ;
         delay(1000)      ;
         INPUT1=1;
         INPUT2=0;
         INPUT3=1;
         INPUT4=0;
         TH0= 0xF4;
         TL0= 0x48;
         TH1= 0xF4;
         TL1= 0x48;
         TMOD= 0x11;
         TR0= 1;
         TR1= 1;
         ET0= 1;
         ET1= 1;
         EA  = 1;   
         while(1){}
}               
void time0_int() interrupt 1 using 1
{
         TR0=0;                                 
         TH0=0xF4;
         TL0=0x48;
         MA++;                                                     
         if(MA<SpeedA){
           ENA = 1;
         }
         elseENA = 0;
         if(MA== 40){
           MA = 0;
         }
         TR0= 1;
}
void time1_int() interrupt 3 using 1
{
         TR1=0;
         TH1=0xF4;
         TL1=0x48;
         MB=MB+ 1;
         if(MB< SpeedB){
           ENB=1;
         }
         elseENB = 0;
         if(MB== 40){
           MB = 0;
         }
         TR1= 1;
}
(2)
#include <reg52.h>
sbit KEY1 = P3^1;
sbit PWM = P1^5;
unsigned char CYCLE; //定義周期 該數字X基準定時時間 如果是10 則周期是10 x0.1ms
unsigned char PWM_ON ;//定義高電平時間
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
unsigned char PWM_Num;//定義檔位
TMOD |=0x01;//定時器設置 1ms in12M crystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS
IE= 0x82; //打開中斷
TR0=1;
CYCLE = 10;// 時間可以調整 這個是10步調整 周期10ms 8PWM就是256
while(1)
  {
if(!KEY1)
  {
  delay(10000);
  if(!KEY1)
    {
     PWM_Num++;
           if(PWM_Num==4)PWM_Num=0;
      switch(PWM_Num){
      case 0:P1=0xFE;PWM_ON=0;break;//高電平時長
      case 1:P1=0xFD;PWM_ON=4;break;
      case 2:P1=0xFB;PWM_ON=6;break;
      case 3:P1=0xF7;PWM_ON=8;break;
      default:break;
    }
   }
  }
}
}
/********************************/
/*     定時中斷                */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS
if (count==PWM_ON)
    {
    PWM = 1; //燈滅
    }
count++;
if(count == CYCLE)
    {
   count=0;
         if(PWM_ON!=0)//如果左右時間是0 保持原來狀態
            PWM = 0;//燈亮
    }
}
(3)
/***************電子電機驅動模塊直流電機控制程序**************************/
#include <reg52.h>
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
unsigned int pwm_H;
unsigned int pwm_L;
/***********初始函數函數**********************************/
/*日期:201222 */
/*版本號 V1.2*/
/*說明:初始化系統,調用速度設置函數前請先初始化*/
void InitSpeed()
{
TMOD=0X01;
TL0=0;
TH0=0;
TR0=1;
ET0=1;
EA=1;
}
/***********速度設置函數**********************************/
/*日期:201222 */
/*版本號 V1.2*/
/*說明:0-1000級速度,值越高速度越快*/
void SetSpeed(unsigned int num)
{  
if(num<1000)
{
pwm_L=65535-num;
pwm_H=65536-(1001-num);
}
else return ;
}
/***********速度設置函數**********************************/
/*日期:201222 */
/*版本號 V1.2*/
/*說明:左轉設置函數*/
void TurnLeft()
{  
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
/***********速度設置函數**********************************/
/*日期:201222 */
/*版本號 V1.2*/
/*說明:右轉設置函數*/
void TurnRight()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
/************電機使能*********************************/
/*日期:201222 */
/*版本號 V1.2*/
/*說明:右轉設置函數*/
void MotorGo()
{
EN1=0;
EN2=0;
}
void main()
{
InitSpeed();
TurnRight();
MotorGo();
SetSpeed(999);
  while(1);
}
/*******定時器0中斷服務程序*************/
void Timer0() interrupt 1 using 1
{
                 static char stepFlag;
                   TR0=0;
                   if(stepFlag==1)
                   {
                  
                   TL0=pwm_H;
       TH0=pwm_H>>8;
                   EN1=0;      //電機1不使能
                   EN2=0;      //電機2不使能
                   stepFlag=0;
                   }
                   else
                   {  
             TL0=pwm_L;
       TH0=pwm_L>>8;  
                  EN1=1;     //電機1使能
                   EN2=1;      //電機2使能
                   stepFlag=1;
                   }
                   TR0=1;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:751649 發表于 2021-4-11 11:24 | 只看該作者
用你的程序,電機只有嗡嗡聲音,不轉動啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区福利视频 | 91精品欧美久久久久久久 | 免费在线观看一区二区 | 亚洲精品免费在线观看 | 国产精品夜色一区二区三区 | 欧美啪啪| 午夜男人免费视频 | www久久国产 | 中文欧美日韩 | 91伊人| 在线视频国产一区 | 国产乱码精品一区二区三区忘忧草 | 成人一区二区三区在线观看 | 99欧美精品 | 欧美99| 91精品国产91久久久久福利 | 亚洲欧美男人天堂 | 中文字幕 在线观看 | 亚洲乱码一区二区三区在线观看 | 中文字幕亚洲视频 | 少妇特黄a一区二区三区88av | 亚洲精品国产电影 | 亚洲一区二区视频 | 久久国产香蕉 | 欧美天堂 | 亚洲二区视频 | 亚洲欧美在线免费观看 | 在线观看国产 | 91 视频网站 | 人人99 | 亚洲欧美综合精品久久成人 | 91干b| 欧美一区二区免费电影 | 国产精品一区视频 | 在线观看视频一区 | 国产高清免费在线 | 午夜精品久久久久久久久久久久久 | 国产一级在线观看 | 国产综合久久久久久鬼色 | 日韩中文一区 | 免费黄色大片 |