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

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

QQ登錄

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

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

基于proteus的直流電機(jī)仿真 帶單片機(jī)源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于proteus的直流電機(jī)仿真


單片機(jī)源代碼:
  1.         #include <reg51.h>

  2.     #define uchar unsigned char
  3.     #define uint unsigned int

  4.         sbit open = P2^0;              //啟動(dòng)電機(jī)按鍵
  5.         sbit close = P2^1;                 //關(guān)閉電機(jī)按鍵
  6.         sbit swap = P2^2;               //正反轉(zhuǎn)按鍵
  7.         sbit sub_speed = P2^3;                //減速按鍵
  8.         sbit add_speed = P2^4;                //加速按鍵
  9.         
  10.         sbit PWM1 = P3^0;                  
  11.         sbit PWM2 = P3^1;                  
  12.     /*液晶顯示*/
  13.     sbit E=P3^7;
  14.     sbit RW = P3^6;
  15.     sbit RS = P3^5;
  16.         sbit test = P3^4;
  17.    
  18.         
  19.         int time = 0;
  20.         int high = 20;
  21.         int period = 30;
  22.         int change = 0;
  23.         int flag = 0;
  24.         int num_medium = 0;
  25.         int num_display = 0;
  26.         int count_speed = 0;
  27.         uchar wword[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};   



  28.             
  29.         /*延時(shí)t毫秒*/
  30.      void delay(uchar t)
  31.      {
  32.            uint i;
  33.            while(t)
  34.              {
  35.                     /*對(duì)于11.0592MHz時(shí)鐘,延時(shí)1ms*/
  36.                         for(i=0;i<125;i++);
  37.                         t--;
  38.                  }
  39.          }

  40.    //寫(xiě)命令函數(shù)LCD
  41.           void wc51r(uchar j)
  42.            {
  43.               //fbusy();
  44.                   RS=0;
  45.                   RW=0;
  46.           P1=j;
  47.                   E=1;
  48.                   E=0;
  49.                  delay(3);
  50.            }


  51.            //寫(xiě)數(shù)據(jù)函數(shù)LCD
  52.            void wc51ddr(uchar j)
  53.             {
  54.                   
  55.                   RS=1;
  56.                   RW=0;
  57.           P1=j;
  58.                   E=1;
  59.                   E=0;
  60.                   delay(2);
  61.                 }


  62.            //初始化函數(shù)LCD
  63.             void init()
  64.                  {
  65.                    wc51r(0x01);  //清屏
  66.                wc51r(0x38);  //使用8位數(shù)據(jù),顯示兩行,使用5*7的字型
  67.                wc51r(0x0c);  //顯示器件,光標(biāo)開(kāi),字符不閃爍
  68.                wc51r(0x06);  //字符不動(dòng),光標(biāo)自動(dòng)右移一格
  69.                  }

  70.         
  71.       /***********T0中斷服務(wù)程序************PWM波的生成**********/
  72.                 void time0_int(void) interrupt 1
  73.                 {
  74.                         
  75.                         time++;
  76.                         TH0 = 0xec;
  77.                         TL0 = 0x78;           //60536
  78.         
  79.                          if(change == 0)                  //正轉(zhuǎn)
  80.                                   {
  81.                                                  PWM2 = 1;                                                
  82.                                          if(time == high)           //high初始值20
  83.                                                PWM1=0;
  84.                                           else if(time == period)           // period初始值30
  85.                                              {
  86.                                             PWM1 = 1;
  87.                                                     time = 0;
  88.                                           }
  89.                                                      
  90.                                    }
  91.                
  92.                          else                                  //反轉(zhuǎn)
  93.                                 {     PWM1 = 1;               
  94.                                     if(time == high)
  95.                                         PWM2=0;
  96.                                     else if(time == period)
  97.                                       {
  98.                                     PWM2 = 1;
  99.                                             time = 0;
  100.                                   }
  101.                     }
  102.                                                   
  103.                 }
  104.                 /*************************************************************/


  105.        /****T1中斷服務(wù)程序********單位時(shí)間(S)方波的個(gè)數(shù)*************/
  106.                 void time1_int(void) interrupt 3
  107.                  {   
  108.                       count_speed++;                   //count_speed初始為0
  109.                           if(count_speed == 20)
  110.                              {   count_speed = 0;
  111.                                      num_display = num_medium;
  112.                                          num_medium = 0;
  113.                                  }
  114.                                                             
  115.                  }
  116.            /*************************************************************/



  117.       /************************速度顯示的數(shù)據(jù)處理********************/
  118.                 void datamade()
  119.                     {  uint data MM,NN;
  120.         
  121.                             wc51r(0xc2);
  122.                 wc51ddr('S');
  123.                         wc51ddr('p');
  124.                         wc51ddr('e');
  125.                         wc51ddr('e');
  126.                         wc51ddr('d');
  127.                 wc51ddr(0x3a);
  128.                    NN = num_display%100;
  129.                            MM = num_display/100;
  130.                            wc51ddr(wword[MM]);
  131.         
  132.                            MM = NN/10;
  133.                    NN = NN%10;
  134.                            wc51ddr(wword[MM]);
  135.                            wc51ddr(wword[NN]);
  136.                                                                     
  137.                         }
  138.         /*****************************************************************/

  139.     /**********通過(guò)按鍵實(shí)現(xiàn)對(duì)電機(jī)開(kāi)關(guān)、調(diào)速、轉(zhuǎn)向的控制***************/
  140.                  void motor_control()
  141.                  {
  142.                             if(open == 1)
  143.                                        EA = 1;
  144.                
  145.                                    if(close == 1)
  146.                                             EA = 0;
  147.                
  148.                                    if(swap == 1)
  149.                                             {
  150.                                                    change = ~change;
  151.                                                    while(swap != 0)
  152.                                                    {}
  153.                                                    
  154.                                                  }
  155.                           
  156.                                     if(sub_speed == 1)
  157.                                             {
  158.                                                   high++;
  159.                                                   if(high == 30)
  160.                                                       EA=0;
  161.                                            while(sub_speed != 0)
  162.                                                    {}
  163.                                          }
  164.                
  165.                
  166.                                          if(add_speed == 1)
  167.                                             {
  168.                                                   high--;
  169.                                                   if(high == 5)
  170.                                                       high = 5;
  171.                                            while(add_speed != 0)
  172.                                                    {}
  173.                                         }
  174.                  }

  175.         /******************************************************************/


  176.         /***************************主函數(shù)*********************************/
  177.                 void main()
  178.                 {
  179.                      P2 = 0x00;
  180.                         
  181.                          ET0 = 1;
  182.                          ET1 = 1;
  183.                          TMOD = 0x11;

  184.                          TH0 = 0xec;
  185.                          TL0 = 0x78;

  186.                          TH1 = 0x3c;
  187.                          TL1 = 0xb0;         //15536
  188.                          TR0 = 1;
  189.                          TR1 = 1;
  190.         
  191.                  init();            //液晶顯示初始化程序
  192.                                                                                  
  193.                          while(1)
  194.                          {     
  195.                                              
  196.                         wc51r(0x84);
  197.                         wc51ddr('H');
  198.                         wc51ddr('e');
  199.                         wc51ddr('l');
  200.                         wc51ddr('l');
  201.                         wc51ddr('o');

  202.                                                                                          
  203.                                 if(test == 0)
  204.                       num_medium++;
  205.                                 datamade();
  206.                                 motor_control();
  207.                         
  208. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼




下載:
電機(jī).zip (75 KB, 下載次數(shù): 161)

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

使用道具 舉報(bào)

沙發(fā)
ID:157057 發(fā)表于 2017-4-15 22:32 | 只看該作者
感謝您的分享。
回復(fù)

使用道具 舉報(bào)

板凳
ID:325667 發(fā)表于 2018-12-19 15:28 | 只看該作者
謝謝~樓主的資料很急用
回復(fù)

使用道具 舉報(bào)

地板
ID:43121 發(fā)表于 2019-3-25 09:35 | 只看該作者
收獲良多,謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费在线一区二区 | 影音先锋中文字幕在线观看 | 欧美激情精品久久久久久 | 久久久久成人精品免费播放动漫 | 欧美国产日韩在线观看 | 99国产精品视频免费观看一公开 | 国产免费观看一区 | 精区3d动漫一品二品精区 | 欧美亚洲一区二区三区 | 91在线精品播放 | 99在线视频观看 | 亚洲国产成人av好男人在线观看 | 久久国产精品免费 | 99久久精品国产毛片 | 美女日批免费视频 | 亚洲国产精品成人综合久久久 | av一二三四| 免费在线观看黄色av | 欧美videosex性极品hd | 一区二区视频在线观看 | 日韩一区二区三区在线观看 | 欧美在线a | 性做久久久久久免费观看欧美 | 国产一区二区三区免费观看在线 | 国产精品99久久久久久www | 国产成人久久 | 色综合天天天天做夜夜夜夜做 | 亚洲人人舔人人 | 久久成人一区 | 玖玖国产 | 久久成人国产 | 国产三级一区二区三区 | 一区二区三区视频在线观看 | 日日夜夜精品免费视频 | 久久久免费 | 中文字幕一区二区三区四区五区 | 亚洲国产免费 | 最新91在线| av日韩在线播放 | 色综合一区二区三区 | 国产资源在线播放 |