找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 13414|回復: 4
收起左側(cè)

proteus仿真 51單片機控制直流電機正反轉(zhuǎn) pwm調(diào)速

  [復制鏈接]
ID:206960 發(fā)表于 2017-6-2 08:53 | 顯示全部樓層 |閱讀模式
proteus仿真 51單片機控制直流電機正反轉(zhuǎn) pwm調(diào)速
0.png
0.png

單片機源程序如下:
  1.   /*以下是一段產(chǎn)生占空比為20%的脈沖信號的c51程序,我想電機轉(zhuǎn)速*/
  2.   /*對應于一定的占空比,如果你要改變占空比,可能需要建立一個對應*/
  3.   /*于不同轉(zhuǎn)速的參數(shù)表(如定時器初值等),查表*/
  4.   /*得到不同參數(shù),以改變占空比和轉(zhuǎn)速。你用什么驅(qū)動電路?*/
  5.                                                                                                                   
  6.   /*采用6MHz晶振,在P1.0腳上輸出周期為2.5s,占空比為20%的脈沖信號*/   
  7.   /*定時100ms,周期2.5s需25次中斷,高電平0.5s需5次中斷*/   
  8.    
  9. #include   <reg51.h>   
  10.   typedef   unsigned   char   uchar;   
  11.   sbit   P0_0=P0^0;
  12.   sbit   P0_1=P0^1;
  13.   sbit   P0_2=P0^2;
  14.   sbit   P0_3=P0^3;
  15.   sbit   P2_0=P2^0;
  16.   sbit   P2_1=P2^1;
  17.   uchar   time=0;   
  18.   uchar   period=25;   
  19.   uchar   high=10;
  20.   uchar   th1=0;
  21.   uchar   tl1=0;
  22.   uchar   th0=0;
  23.   uchar   tl0=0;     
  24.    
  25.   void   timer0()   interrupt   1   using   1   
  26.   {   
  27.             TH0=0x3c;     /*定時器初值重裝載*/   
  28.             TL0=0xb0;
  29.             //TH0=0xc3;/*定時器初值重裝載*/
  30.                         //TL0=0x50;  
  31.             time++;   
  32.             if(time==high)   /*高電平持續(xù)時間結(jié)束,變低*/   
  33.             {   P2_0=tl0;
  34.                             P2_1=tl1;               
  35.                           }   
  36.             else   if(time==period)     /*周期時間到,變高*/   
  37.                       {   time=0;   
  38.                           P2_0=th0;
  39.                                                   P2_1=th1;
  40.                                                      
  41.                       }   
  42.    
  43.   }   
  44.    
  45.   void   main()   
  46.   {   
  47.         TMOD=0x01;   /*定時器0方式1*/   
  48.         TH0=0x3c;     /*定時器裝載初值,設置脈沖信號的占空比為1/5*/   
  49.         TL0=0xb0;
  50.                 //TH0=0xc3;/*定時器裝載初值,設置脈沖信號的占空比為4/5*/
  51.                 //TL0=0x50;   
  52.         EA=1;     /*開CPU中斷*/   
  53.         ET0=1;   /*開定時器0中斷*/   
  54.         TR0=1;/*啟動定時器0*/  
  55.                
  56.                 if(P0_2==1)
  57.                  {
  58.                   th0=1;
  59.                   tl0=0;
  60.               th1=0;
  61.                   tl1=0;
  62.                       }

  63.           if(P0_3==1)
  64.                  {
  65. ……………………

  66. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
PWM_motor.rar (68.42 KB, 下載次數(shù): 254)



回復

使用道具 舉報

ID:308395 發(fā)表于 2018-5-3 10:33 | 顯示全部樓層
速度早已經(jīng)在.c里寫好固定速度,不能調(diào)速
回復

使用道具 舉報

ID:422262 發(fā)表于 2018-11-7 15:00 | 顯示全部樓層
有沒有沒有按鈕的、、、
回復

使用道具 舉報

ID:422956 發(fā)表于 2018-11-8 13:55 | 顯示全部樓層
Maoless 發(fā)表于 2018-11-7 15:00
有沒有沒有按鈕的、、、

沒有按鈕正反轉(zhuǎn)怎么實現(xiàn)啊用時間繼電器嗎
回復

使用道具 舉報

ID:315121 發(fā)表于 2019-1-11 23:03 | 顯示全部樓層
啊,學習到了
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表