欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 這是論壇上照學(xué)的一個單片機測直流電機轉(zhuǎn)速的一個例子,為啥我仿真的時候電機不轉(zhuǎn) [打印本頁]

作者: LOVE008    時間: 2020-5-10 21:02
標(biāo)題: 這是論壇上照學(xué)的一個單片機測直流電機轉(zhuǎn)速的一個例子,為啥我仿真的時候電機不轉(zhuǎn)
圖片1為原圖,2為我照搬的圖

附上代碼-------

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit open = P2^0;
sbit close = P2^1;
sbit swap = P2^2;
sbit sub_speed = P2^3;
sbit add_speed = P2^4;
        
sbit PWM1 = P3^0;
sbit PWM2 = P3^1;
/************************液晶顯示*************/
sbit E=P3^7;
sbit RW = P3^6;
sbit RS = P3^5;
sbit test = P3^4;

int time = 0;
int high = 20;
int period = 30;
int change = 0;
int flag = 0;
int num_medium = 0;
int num_display = 0;
int count_speed = 0;
uchar wword[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};   
         

/*******************延時t毫秒****************/
void delay(uchar t)
  {
        uint i;
        while(t)
         {
                    /*對于11.0592MHz時鐘,延時1ms*/
                  for(i=0;i<125;i++);
                  t--;
                }
}

//寫命令函數(shù)LCD
void wc51r(uchar j)
{
            RS=0;
                  RW=0;
         P1=j;
                  E=1;
                  E=0;
                 delay(3);
}

//寫數(shù)據(jù)函數(shù)LCD
void wc51ddr(uchar j)
{
                  
                  RS=1;
                  RW=0;
         P1=j;
                  E=1;
                  E=0;
                  delay(2);
}


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

        
/***********8T0中斷服務(wù)程序************PWM波的生成**********/
void time0_int(void) interrupt 1
{
                        
                time++;
                TH0 = 0xec;
                TL0 = 0x78;
        
                if(change == 0)
                 {
                              PWM2 = 1;                                                
                        if(time == high)
                              PWM1=0;
                        else if(time == period)
                         {
                                  PWM1 = 1;
                                  time = 0;
                          }
                                                     
                 }
               
                else
                 {            PWM1 = 1;               
                                 if(time == high)
                                       PWM2=0;
                                 else if(time == period)
                                   {
                                   PWM2 = 1;
                                            time = 0;
                               }
}
                                                  
                }
/***************************************************************/
/****T1中斷服務(wù)程序********單位時間(S)方波的個數(shù)*************/
void time1_int(void) interrupt 3
{   
                count_speed++;
         if(count_speed == 20)
                {     count_speed = 0;
                           num_display = num_medium;
                           num_medium = 0;
                 }
                                                            
}
/***************************************************************/

/************************速度顯示的數(shù)據(jù)處理*********************/
void datamade()
{  
uint data MM,NN;
             wc51r(0xc2);
          wc51ddr('S');
                   wc51ddr('p');
                   wc51ddr('e');
                   wc51ddr('e');
                   wc51ddr('d');
          wc51ddr(0x3a);
                   NN = num_display%100;
                   MM = num_display/100;
                    wc51ddr(wword[MM]);
        
MM = NN/10;
              NN = NN%10;
wc51ddr(wword[MM]);
wc51ddr(wword[NN]);
                                                                    
}
/*****************************************************************/

/**********通過按鍵實現(xiàn)對電機開關(guān)、調(diào)速、轉(zhuǎn)向的控制***************/
void motor_control()
{
                  if(open == 1)
                                EA = 1;
                  if(close == 1)
                                EA = 0;
                  if(swap == 1)
                         {
                                        change = ~change;
                                        while(swap != 0)
                                          {}
                                                   
                           }
                          
                        if(sub_speed == 1)
                                {
                                           high++;
                                         if(high == 30)
                                                EA=0;
                                       while(sub_speed != 0)
                                                   {}
                                  }
               
                         if(add_speed == 1)
                                {
                                                   high--;
                                                if(high == 5)
                                                   high = 5;
                                       while(add_speed != 0)
                                                   {}
                                 }
        }

/******************************************************************/


/***************************主函數(shù)*********************************/
void main()
        {
                     P2 = 0x00;
                        
                         ET0 = 1;
                         ET1 = 1;
                         TMOD = 0x11;
                         TH0 = 0xec;             //定時器T0設(shè)置參數(shù)
                         TL0 = 0x78;

                         TH1 = 0x3c;            //定時器T1設(shè)置參數(shù)
                         TL1 = 0xb0;
                         TR0 = 1;
                         TR1 = 1;
        
               init();               //液晶顯示初始化程序
                                                                                 
                while(1)
                {                                                
                     wc51r(0x84);
                     wc51ddr('H');
                     wc51ddr('e');
                     wc51ddr('l');
                     wc51ddr('l');
                     wc51ddr('o');   
                          if(test == 0)
                     num_medium++;
datamade();
motor_control();
                          
           }
}


作者: hotpet    時間: 2020-5-11 04:46
從圖上看電機不一樣。
作者: zh1999    時間: 2020-6-9 17:23
你的激勵源弄錯了吧,那不是電源
作者: daocheng    時間: 2020-6-10 09:53
是啊,那個好像不是電源,再可能就是電機不一樣,好像別的地方都一樣啊
你照搬的真規(guī)整,Q1 D1 R1 等都對應(yīng)上了。
原圖沒發(fā)工程文件嗎?下下來直接用多好啊
希望對你有幫助
作者: haiyu1989    時間: 2020-6-10 14:31
P3口沒有配置上拉輸出吧? 單片機管腳能輸出高電平么?
作者: 魏海龍    時間: 2020-7-7 12:10
會不會是電機的問題

作者: juncedz    時間: 2020-7-8 00:15

只是一組波工作 能夠可以驅(qū)動電機嗎?
理論上 上一組與下一組 是 對稱的 就可以 驅(qū)動電機。

作者: MikeCai    時間: 2020-7-8 15:56
不是抄軟件就能驅(qū)動電機的!您的直流電機參數(shù)如何?如所需 驅(qū)動電流 多大?您現(xiàn)在輸出配得上嗎?
作者: 梁廷明    時間: 2020-7-12 07:14
激勵源應(yīng)該用錯了,你用5V,它實際要用12V或者24V才能驅(qū)動,你明顯是電橋的電壓沒有給對。
作者: 李曉曉    時間: 2020-7-16 10:38
你的電機需要多大電壓,你的電源能供多大的電壓。是不是你的電源供電不夠,導(dǎo)致電機不會轉(zhuǎn)。改一下電源的賦值




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1