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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2864|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)PWM調(diào)速L298芯片控制兩選一直流電機(jī)正反運(yùn)轉(zhuǎn)的項(xiàng)目工程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  1. #include"reg52.h"//單片機(jī)頭文件
  2. #define uchar unsigned char//宏定義,用uchar表示unsigned char,叫無(wú)符號(hào)字符型數(shù)據(jù)類(lèi)型,取值范圍為:0到255。
  3. #define uint unsigned int//宏定義,用uint表示unsigned int,叫無(wú)符號(hào)整數(shù)型數(shù)據(jù)類(lèi)型,取值范圍為:0到65535。
  4. sbit qitingjian=P1^0;//位定義啟停鍵
  5. sbit zhengzhuan=P1^1;//位定義正轉(zhuǎn)鍵
  6. sbit fanzhuan=P1^2;//位定義反轉(zhuǎn)鍵
  7. sbit jiasujian=P1^3;//位定義加速鍵
  8. sbit jiansujian=P1^4;//位定義減速鍵
  9. sbit xuanze=P1^5;//位定義選擇鍵
  10. sbit IN1=P2^0;//位定義L298M芯片IN1端口
  11. sbit IN2=P2^1;//位定義L298M芯片IN2端口
  12. sbit IN3=P2^2;//位定義L298M芯片IN3端口
  13. sbit IN4=P2^3;//位定義L298M芯片IN4端口
  14. sbit ENA=P2^4;//位定義L298M芯片使能端ENA
  15. sbit ENB=P2^5;//位定義L298M芯片使能端ENB
  16. //sbit duan=P3^0;//位定義L298M芯片控制端IN1
  17. //sbit wei=P3^1;//位定義L298M芯片控制端IN2
  18. sbit qitingled=P3^4;//位定義啟停指示燈
  19. sbit zhengzhuanled=P3^5;//位定義正轉(zhuǎn)指示燈
  20. sbit fanzhuanled=P3^6;//位定義反轉(zhuǎn)指示燈
  21. sbit xuanzeled=P3^7;//位定義選擇指示燈
  22. uchar xuanzenum;//選擇次數(shù)變量
  23. uchar motor1flag;//電機(jī)1啟動(dòng)標(biāo)志位變量
  24. uchar motor2flag;//電機(jī)2啟動(dòng)標(biāo)志位變量
  25. uchar motor1_pwm_flag;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量
  26. uchar motor2_pwm_flag;//電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量
  27. //sbit waibuzhongduanling=P3^2; //外部中斷0端口
  28. //uint qian,bai,shi,ge,zhuansu;//數(shù)碼管千位變量、百位變量、十位變量、個(gè)位變量以及轉(zhuǎn)速變量
  29. //uint maichongcount,Time0num,Time1num,pwm,qitingnum,zhengzhuanflag,fanzhuanflag;//脈沖計(jì)數(shù)變量、定時(shí)器0定時(shí)計(jì)數(shù)變量、定時(shí)器1定時(shí)計(jì)數(shù)變量、脈沖寬度調(diào)制變量、啟停鍵按下數(shù)次變量、正轉(zhuǎn)標(biāo)志位變量、反轉(zhuǎn)標(biāo)志位變量
  30. uint Time0num,pwm,qitingnum,zhengzhuanflag,fanzhuanflag;//定時(shí)器0定時(shí)計(jì)數(shù)變量、脈沖寬度調(diào)制變量、啟停鍵按下數(shù)次變量、正轉(zhuǎn)標(biāo)志位變量、反轉(zhuǎn)標(biāo)志位變量
  31. //uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x40,0x7c,0x39,0x5e,0x79,0x71,0x00};//共陰數(shù)碼管段碼,高電平點(diǎn)亮段碼,低電平熄滅段碼。
  32. //uchar code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//共陰數(shù)碼管位碼,低電平點(diǎn)亮位碼,高電平熄滅位碼。
  33. //void delay(uint jishi);//毫秒延時(shí)函數(shù)
  34. //void TimerInit();//定時(shí)器初始化函數(shù)
  35. //void Time0();//定時(shí)器0定時(shí)函數(shù)
  36. //void Time1();//定時(shí)器1定時(shí)函數(shù)
  37. //void KeyScan();//按鍵掃描函數(shù)
  38. //void waibuzhongduanlingjishu();//外部中斷0計(jì)數(shù)函數(shù)
  39. //void shumaguandisplay(uint qian,uint bai,uint shi,uint ge);//數(shù)碼管顯示函數(shù)
  40. //void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge);//數(shù)碼管無(wú)顯示函數(shù)
  41.   void delay(uint jishi)//延時(shí)函數(shù)
  42. {
  43.    uint i,j;
  44.    for(i=jishi;i>0;i--)
  45.     for(j=110;j>0;j--);
  46.   }
  47.   void TimerInit()//定時(shí)器初始化函數(shù)
  48. {
  49.    TMOD=0x01;//設(shè)定定時(shí)器為定時(shí)器0和定時(shí)器1,工作模式都為1。
  50.    TH0=(65536-1000)/256;//TH0裝初值為65536-1000=64536,即定時(shí)1000微妙,相當(dāng)于1毫秒。
  51.    TL0=(65536-1000)%256;//TL0裝初值為65536-1000=64536
  52. // TH1=(65536-50000)/256;//TH1裝初值為65536-50000=15536,即定時(shí)50000微妙,相當(dāng)于50毫秒。
  53. // TL1=(65536-50000)%256;//TL1裝初值為65536-50000=15536
  54.    EA=1;//全局中斷允許
  55.    ET0=1;//打開(kāi)定時(shí)器0中斷允許
  56.    TR0=0;//關(guān)定時(shí)器0      
  57. // EX0=1;//開(kāi)外部中斷0允許
  58. // IT0=1;//設(shè)置外部中斷0下降觸發(fā)中斷
  59. // ET1=1;//打開(kāi)定時(shí)器1中斷允許
  60. // TR1=1;//開(kāi)定時(shí)器1
  61. }
  62.   void Time0() interrupt 1//定時(shí)器0定時(shí)函數(shù),每1毫秒產(chǎn)生PWM波一次。
  63. {      
  64.    TH0=(65536-1000)/256;//TH0重裝初值為65536-1000=64536,即定時(shí)1000微妙,相當(dāng)于1毫秒。
  65.    TL0=(65536-1000)%256;//TH0重裝初值為65536-1000=64536
  66.    Time0num++;//定時(shí)器0定時(shí)計(jì)數(shù)變量先賦值再自加
  67.    if(motor1_pwm_flag==1&&motor2_pwm_flag==0)
  68. {
  69.     if(Time0num==20)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量是否大于等于20,PWM波完整周期為20ms,定時(shí)器0定時(shí)計(jì)數(shù)變量Time0num數(shù)值越大,電機(jī)運(yùn)轉(zhuǎn)越快。
  70.   {
  71.      Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量等于0
  72.     }
  73.     if(Time0num<pwm)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量還否小于脈沖寬度調(diào)制變量      
  74.   {                              
  75.      ENA=1;//L298M芯片使能端ENA置高電平,電機(jī)運(yùn)轉(zhuǎn)。
  76. //   zhuansuled=0;//開(kāi)轉(zhuǎn)速指示燈
  77.     }
  78.     else
  79.   {
  80.      ENA=0;//L298M芯片使能端ENA置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  81. //   zhuansuled=1;//關(guān)轉(zhuǎn)速指示燈
  82.     }
  83.    }
  84.    if(motor1_pwm_flag==0&&motor2_pwm_flag==1)
  85. {
  86.     if(Time0num==20)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量是否大于等于20,PWM波完整周期為20ms,定時(shí)器0定時(shí)計(jì)數(shù)變量Time0num數(shù)值越大,電機(jī)運(yùn)轉(zhuǎn)越快。
  87.    {
  88.      Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量等于0
  89.     }
  90.     if(Time0num<pwm)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量還否小于脈沖寬度調(diào)制變量      
  91.    {                              
  92.      ENB=1;//L298M芯片使能端ENA置高電平,電機(jī)運(yùn)轉(zhuǎn)。
  93. //   zhuansuled=0;//開(kāi)轉(zhuǎn)速指示燈
  94.     }
  95.     else
  96.    {
  97.      ENB=0;//L298M芯片使能端ENA置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  98. //   zhuansuled=1;//關(guān)轉(zhuǎn)速指示燈
  99.     }
  100.    }
  101. }
  102. //  void Time1() interrupt 3//定時(shí)器1定時(shí)函數(shù),定時(shí)50ms,采集電機(jī)轉(zhuǎn)速。      
  103. //{      
  104. //   TH1=(65536-50000)/256;//TH1裝初值為65536-50000=15536,即定時(shí)50000微妙,相當(dāng)于50毫秒。
  105. //   TL1=(65536-50000)%256;//TH1裝初值為65536-50000=15536
  106. //   Time1num++;//定時(shí)器1定時(shí)計(jì)數(shù)變量先賦值再自加
  107. //   if(Time1num==20)//判斷定時(shí)器1定時(shí)計(jì)數(shù)變量是否等于20,即每1秒測(cè)速一次。
  108. //  {      
  109. //    Time1num=0;//定時(shí)器1定時(shí)計(jì)數(shù)變量等于0
  110. //    EX0=0;//關(guān)外部中斷0
  111. //    zhuansu=55*maichongcount/24;//電機(jī)轉(zhuǎn)速=每分鐘X脈沖計(jì)數(shù)變量/每轉(zhuǎn)一圈需要的脈沖個(gè)數(shù),即55*maichongcount/24,其中的55表示55秒,為什么不是一分鐘60秒?由于Protues仿真電路圖中的MOTOR-ENCODER仿真件存在誤差,為了讓MOTOR-ENCODER仿真件顯示的轉(zhuǎn)速達(dá)到數(shù)碼管顯示轉(zhuǎn)速的效果,進(jìn)行了一定秒數(shù)的修改,不過(guò)實(shí)際運(yùn)用要以一分鐘60秒為準(zhǔn),maichongcount為單片機(jī)從外部中斷0端口處獲取MOTOR-ENCODER仿真件旋轉(zhuǎn)生產(chǎn)的脈沖計(jì)數(shù)變量,24為MOTOR-ENCODER仿真件每旋轉(zhuǎn)一圈產(chǎn)生的脈沖個(gè)數(shù)。
  112. //    qian=zhuansu/1000;//數(shù)碼管千位顯示
  113. //    bai=zhuansu%1000/100;//數(shù)碼管百位顯示
  114. //    shi=zhuansu%100/10;//數(shù)碼管十位顯示
  115. //    ge=zhuansu%10;//數(shù)碼管個(gè)位顯示
  116. //    maichongcount=0;//脈沖計(jì)數(shù)變量歸零
  117. //    EX0=1;//開(kāi)外部中斷0
  118. //   }
  119. //}
  120. //  void waibuzhongduanlingjishu() interrupt 0  using 1//外部中斷0計(jì)數(shù)函數(shù),外部脈沖計(jì)數(shù)。
  121. //{
  122. //   maichongcount++ ;//脈沖計(jì)數(shù)變量先賦值再自加
  123. //  }
  124.   void KeyScan()//按鍵掃描函數(shù)
  125. {
  126.    if(qitingjian==0)//判斷啟停鍵是否按下
  127. {
  128. //  shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  129.     delay(5);
  130.     if(qitingjian==0)//再次判斷啟停鍵是否按下
  131.   {
  132. //   shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)
  133.      qitingnum++;//啟停鍵按下數(shù)次變量先賦值再加加
  134.      qitingled=0;//開(kāi)啟停指示燈
  135.      while(!qitingjian);//啟停鍵釋放
  136.      if(qitingnum==2)//判斷啟停鍵按下數(shù)次變量是否為2
  137.     {
  138.       TR0=0;
  139.       qitingnum=0;//啟停鍵按下數(shù)次變量歸零
  140.       xuanzenum=0;//選擇次數(shù)變量清0
  141.       Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量清0
  142.       pwm=0;//脈沖寬度調(diào)制變量清0
  143.       qitingled=1;//關(guān)啟停指示燈
  144.       zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
  145.       fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
  146.       xuanzeled=1;//關(guān)選擇指示燈
  147.       zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
  148.       fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
  149.       motor1flag=0;//電機(jī)1啟動(dòng)標(biāo)志位變量置0
  150.       motor2flag=0;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
  151.       motor1_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量
  152.       motor2_pwm_flag=0;//電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量
  153.       IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  154.       IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  155.       IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  156.       IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  157. //    shumaguannodisplay(qian,bai,shi,ge);//數(shù)碼管無(wú)顯示函數(shù)
  158.      }
  159.     }
  160.    }
  161.    if(qitingnum==1)//判斷啟停鍵是否第一次按下
  162. {     
  163.     if(xuanze==0)//判斷選擇鍵是否第一次按下
  164.   {
  165.         delay(5);
  166.      if(xuanze==0)//再次判斷選擇鍵是否按下
  167.    {
  168.       TR0=1;
  169.       xuanzeled=0;//選擇指示燈
  170.       xuanzenum++;//選擇次數(shù)變量自加
  171.       motor1flag=1;//電機(jī)1啟動(dòng)標(biāo)志位變量置1
  172.       motor2flag=0;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
  173.       motor1_pwm_flag=1;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1
  174.       motor2_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置0
  175.       zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
  176.       fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
  177.       IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  178.       IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  179.       while(!xuanze);//選擇鍵釋放
  180.      }
  181.     }
  182.      if(xuanzenum==2)//判斷選擇次數(shù)變量是否為2
  183.    {  
  184. //    TR0=0;
  185. //    Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量清0
  186. //    pwm=0;//脈沖寬度調(diào)制變量清0
  187.       xuanzenum=0;//選擇次數(shù)變量清0
  188.       motor1flag=0;//電機(jī)1啟動(dòng)標(biāo)志位變量置1
  189.       motor2flag=1;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
  190.       motor1_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置0
  191.       motor2_pwm_flag=1;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1
  192.       xuanzeled=1;//關(guān)選擇指示燈
  193.       zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
  194.       fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
  195.       zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
  196.       fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
  197.       IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  198.       IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  199.      }     
  200.      if(motor1flag==1&&motor2flag==0&&motor1_pwm_flag==1)//判斷電機(jī)1啟動(dòng)標(biāo)志位變量是否置1,電機(jī)2啟動(dòng)標(biāo)志位變量是否置0 ,電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1,此處為電機(jī)1正反轉(zhuǎn)。
  201.    {
  202.       if(zhengzhuan==0)//判斷是否按下正轉(zhuǎn)鍵
  203.     {
  204. //     shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  205.        delay(5);
  206.        if(zhengzhuan==0)//再次判斷是否按下正轉(zhuǎn)
  207.      {
  208. //      shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  209.         zhengzhuanled=0;//開(kāi)正轉(zhuǎn)指示燈
  210.         fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
  211.         zhengzhuanflag=1;//正轉(zhuǎn)標(biāo)志位變量為1
  212.         fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
  213.         IN1=0;//L298N芯片控制端IN1置高電平
  214.         IN2=1;//L298N芯片控制端IN2置低電平
  215.         while(!zhengzhuan);//正轉(zhuǎn)鍵釋放
  216.        }
  217.       }
  218.       if(fanzhuan==0)//判斷是否按下反轉(zhuǎn)鍵
  219.     {
  220. //     shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  221.        delay(5);
  222.        if(fanzhuan==0)//再次判斷是否按下反轉(zhuǎn)鍵
  223.      {
  224. //      shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  225.         zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
  226.         fanzhuanled=0;//開(kāi)反轉(zhuǎn)指示燈
  227.         zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
  228.         fanzhuanflag=1;//反轉(zhuǎn)標(biāo)志位變量為1
  229.         IN1=1;//L298N芯片控制端IN1置低電平
  230.         IN2=0;//L298N芯片控制端IN2置高電平
  231.         while(!fanzhuan);//反轉(zhuǎn)鍵釋放
  232.        }
  233.       }
  234.      }
  235.      if(motor1flag==0&&motor2flag==1&&motor2_pwm_flag==1)//判斷電機(jī)1啟動(dòng)標(biāo)志位變量是否置0,電機(jī)2啟動(dòng)標(biāo)志位變量是否置1 ,電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量置1,此處為電機(jī)2正反轉(zhuǎn)。
  236.    {
  237.       if(zhengzhuan==0)//判斷是否按下正轉(zhuǎn)鍵
  238.     {
  239. //     shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  240.        delay(5);
  241.        if(zhengzhuan==0)//再次判斷是否按下正轉(zhuǎn)
  242.      {
  243. //      shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  244.         zhengzhuanled=0;//開(kāi)正轉(zhuǎn)指示燈
  245.         fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
  246.         zhengzhuanflag=1;//正轉(zhuǎn)標(biāo)志位變量為1
  247.         fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
  248.         IN3=0;//L298N芯片控制端IN3置高電平
  249.         IN4=1;//L298N芯片控制端IN4置低電平
  250.         while(!zhengzhuan);//正轉(zhuǎn)鍵釋放
  251.        }
  252.       }
  253.       if(fanzhuan==0)//判斷是否按下反轉(zhuǎn)鍵
  254.     {
  255. //      shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  256.        delay(5);
  257.        if(fanzhuan==0)//再次判斷是否按下反轉(zhuǎn)鍵
  258.      {
  259. //      shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  260.         zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
  261.         fanzhuanled=0;//開(kāi)反轉(zhuǎn)指示燈
  262.         zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
  263.         fanzhuanflag=1;//反轉(zhuǎn)標(biāo)志位變量為1
  264.         IN3=1;//L298N芯片控制端IN3置低電平
  265.         IN4=0;//L298N芯片控制端IN4置高電平
  266.         while(!fanzhuan);//反轉(zhuǎn)鍵釋放
  267.        }
  268.       }
  269.      }
  270.      if(zhengzhuanflag==1||fanzhuanflag==1)//判斷電機(jī)是否為正轉(zhuǎn)或反轉(zhuǎn)
  271.    {
  272.      if(jiasujian==0)//判斷是否按下加速鍵
  273.     {
  274. //   shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  275.       delay(5);
  276.       if(jiasujian==0)//再次判斷是否按下加速鍵
  277.      {
  278. //     shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  279.        if(pwm < 20)//判斷脈沖寬度調(diào)制變量是否小于20
  280.        pwm++;//脈沖寬度調(diào)制變量先賦值再加加
  281.        if(pwm >= 20)//判斷脈沖寬度調(diào)制變量是否大于等于20
  282.        pwm = 19;//脈沖寬度調(diào)制變量等于20
  283.        while(!jiasujian);//加速鍵釋放                                 
  284.       }
  285.      }
  286.      if(jiansujian==0) //判斷是否按下減速鍵
  287.     {
  288. //    shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  289.       delay(5);
  290.       if(jiansujian==0)//再次判斷是否按下減鍵
  291.      {
  292. //     shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
  293.        if(pwm > 0)//判斷脈沖寬度調(diào)制變量是否大于0
  294.        pwm--;//脈沖寬度調(diào)制變量先賦值再減減
  295.        if(pwm <= 0)//判斷脈沖寬度調(diào)制變量是否小于等于0
  296.        pwm = 0;//脈沖寬度調(diào)制變量等于0
  297.        while(!jiansujian);//減速鍵釋放
  298.       }
  299.      }
  300.     }
  301.    }
  302.   }
  303. //  void shumaguandisplay(uint qian,uint bai,uint shi,uint ge)//數(shù)碼管顯示函數(shù)
  304. //{
  305. //   duan=1;//開(kāi)數(shù)碼管段碼端口                     
  306. //   P0=table[qian];//數(shù)碼千位顯示
  307. //   duan=0;//關(guān)數(shù)碼管段碼端口
  308. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  309. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  310. //   P2=weima[0];//第1位數(shù)碼管顯示
  311. //   wei=0;//關(guān)數(shù)碼管位碼端口
  312. //   delay(1);//延時(shí)
  313. //   
  314. //   duan=1;//開(kāi)數(shù)碼管段碼端口                     
  315. //   P0=table[bai];//數(shù)碼百位顯示
  316. //   duan=0;//關(guān)數(shù)碼管段碼端口
  317. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  318. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  319. //   P2=weima[1];//第2位數(shù)碼管顯示
  320. //   wei=0;//關(guān)數(shù)碼管位碼端口
  321. //   delay(1);//延時(shí)
  322. //
  323. //   duan=1;//開(kāi)數(shù)碼管段碼端口                  
  324. //   P0=table[shi];//數(shù)碼管十位顯示
  325. //   duan=0;//關(guān)數(shù)碼管段碼端口
  326. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  327. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  328. //   P2=weima[2];//第3位數(shù)碼管顯示
  329. //   wei=0;//關(guān)數(shù)碼管位碼端口
  330. //   delay(1);//延時(shí)
  331. //
  332. //   duan=1;//開(kāi)數(shù)碼管段碼端口                        
  333. //   P0=table[ge];//數(shù)碼管個(gè)位顯示
  334. //   duan=0;//關(guān)數(shù)碼管段碼端口
  335. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  336. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  337. //   P2=weima[3];//第4位數(shù)碼管顯示
  338. //   wei=0;//關(guān)數(shù)碼管位碼端口
  339. //   delay(1);//延時(shí)     
  340. // }
  341. //  void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge)//數(shù)碼管顯示函數(shù)
  342. //{
  343. //   duan=1;//開(kāi)數(shù)碼管段碼端口  
  344. //   P0=table[qian];//數(shù)碼千位顯示
  345. //   duan=1;//關(guān)數(shù)碼管段碼端口
  346. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  347. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  348. //   P2=weima[0];//第1位數(shù)碼管顯示
  349. //   wei=1;//關(guān)數(shù)碼管位碼端口
  350. //   delay(1);//延時(shí)
  351. //   
  352. //   duan=1;//開(kāi)數(shù)碼管段碼端口                     
  353. //   P0=table[bai];//數(shù)碼百位顯示
  354. //   duan=1;//關(guān)數(shù)碼管段碼端口
  355. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  356. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  357. //   P2=weima[1];//第2位數(shù)碼管顯示
  358. //   wei=1;//關(guān)數(shù)碼管位碼端口
  359. //   delay(1);//延時(shí)
  360. //
  361. //   duan=1;//開(kāi)數(shù)碼管段碼端口                  
  362. //   P0=table[shi];//數(shù)碼管十位顯示
  363. //   duan=1;//關(guān)數(shù)碼管段碼端口
  364. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  365. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  366. //   P2=weima[2];//第3位數(shù)碼管顯示
  367. //   wei=1;//關(guān)數(shù)碼管位碼端口
  368. //   delay(1);//延時(shí)
  369. //
  370. //   duan=1;//開(kāi)數(shù)碼管段碼端口                        
  371. //   P0=table[ge];//數(shù)碼管個(gè)位顯示
  372. //   duan=1;//關(guān)數(shù)碼管段碼端口
  373. //   P0=0x00;//關(guān)數(shù)碼管段碼顯示
  374. //   wei=1;//開(kāi)數(shù)碼管位碼端口
  375. //   P2=weima[3];//第4位數(shù)碼管顯示
  376. //   wei=1;//關(guān)數(shù)碼管位碼端口
  377. //   delay(1);//延時(shí)     
  378. // }
  379.   void main()//主函數(shù)
  380. {
  381.    TimerInit();//定時(shí)器初始化函數(shù)
  382.    ENA=0;
  383.    ENB=0;
  384.    IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  385.    IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  386.    IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  387.    IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
  388.    while(1)//死循環(huán)
  389. {
  390.     KeyScan();//按鍵掃描函數(shù)
  391. //  if(qitingnum==1)//判斷啟停鍵是否第一次按下
  392. //  shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)
  393.   }
  394. }
復(fù)制代碼



評(píng)分

參與人數(shù) 2黑幣 +62 收起 理由
neigebutong + 12 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:342911 發(fā)表于 2020-5-19 22:53 | 只看該作者
這注釋?zhuān)轿涣?/td>
回復(fù)

使用道具 舉報(bào)

板凳
ID:337693 發(fā)表于 2020-6-6 02:27 來(lái)自手機(jī) | 只看該作者
樓主問(wèn)一下l298n驅(qū)動(dòng)7.2 300ma的馬達(dá)會(huì)不會(huì)過(guò)載
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩精品一区 | 四虎海外 | 国产精品福利在线 | 精品视频在线观看 | 色天天综合 | 久久久久久国产精品久久 | 黄色毛片在线播放 | 国产一卡二卡三卡 | 国产在线精品一区二区 | 国产精品一区二区视频 | 四虎精品在线 | 欧美aa在线| 免费精品一区 | 免费久久久久久 | 九九免费在线视频 | 99re视频这里只有精品 | 亚洲精品一区二区三区中文字幕 | 亚洲电影一区二区三区 | 久久99精品久久久久久国产越南 | 精品国产区| 欧美视频三级 | 国产男女视频网站 | 不卡一区二区在线观看 | 国产情侣啪啪 | 黄色日本片 | 久久99久久99精品免视看婷婷 | 久久久久久亚洲精品 | 亚洲精品一区二区网址 | 亚洲精品免费观看 | 亚洲精品v | 中文字幕国产视频 | 亚洲电影第三页 | m豆传媒在线链接观看 | 亚洲高清免费 | 伊人春色成人网 | 97天天干| 盗摄精品av一区二区三区 | 欧美中文字幕一区二区三区亚洲 | 亚洲欧美日韩精品久久亚洲区 | 日韩黄色免费 | 盗摄精品av一区二区三区 |