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

標題: DS18B20和步進電機為啥不會轉(zhuǎn)呢? [打印本頁]

作者: 湮滅GG    時間: 2017-12-27 10:02
標題: DS18B20和步進電機為啥不會轉(zhuǎn)呢?
#include<reg52.h>
#define uint        unsigned        int
#define        uchar        unsigned        char       
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}
sbit DSPORT=P3^7;
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
uchar Speed;
void Delay1ms(uint y);
void Delay1ms(uint y)
{
uint x;
for(y;y>0;y--)
   for(x=110;x>0;x--);
}



unsigned char Ds18b20Init()
{
        unsigned int i;
        DSPORT=0;                       
        i=70;        
        while(i--);
        DSPORT=1;                       
        i=0;
        while(DSPORT)      
        {
                i++;
                if(i>5000)
                        return 0;   
        }
        return 1;
}



void Ds18b20WriteByte(unsigned char dat)
{
        unsigned int i,j;
        for(j=0;j<8;j++)
        {
                DSPORT=0;                        
                i++;
                DSPORT=dat&0x01;
                i=6;
                while(i--);
                DSPORT=1;      
                dat>>=1;
        }
}



unsigned char Ds18b20ReadByte()
{
        unsigned char byte,bi;
        unsigned int i,j;        
        for(j=8;j>0;j--)
        {
                DSPORT=0;
                i++;
                DSPORT=1;
                i++;
                i++;
                bi=DSPORT;        

                byte=(byte>>1)|(bi<<7);                                                  
                i=4;               
                while(i--);
        }                                
        return byte;
}
void  Ds18b20ChangTemp()
{
        Ds18b20Init();
        Delay1ms(1);
        Ds18b20WriteByte(0xcc);                             
        Ds18b20WriteByte(0x44);         


}


void  Ds18b20ReadTempCom()
{        

        Ds18b20Init();
        Delay1ms(1);
        Ds18b20WriteByte(0xcc);        
        Ds18b20WriteByte(0xbe);         
}

int Ds18b20ReadTemp()
{
        int temp=0;
        unsigned char tmh,tml;
        Ds18b20ChangTemp();                                 
        Ds18b20ReadTempCom();                        
        tml=Ds18b20ReadByte();               
        tmh=Ds18b20ReadByte();               
        temp=tmh;
        temp<<=8;
        temp|=tml;
        return temp;
}



void        main()
{
        unsigned int tp,j,i;
        tp=Ds18b20ReadTemp;
        Speed=2;
       
    while(1)
        {
                if(tp>=20)
                {      
         Coil_A1      
     Delay1ms(Speed);
     Coil_AB1               
     Delay1ms(Speed);         
         Coil_B1      
      Delay1ms(Speed);
     Coil_BC1
       Delay1ms(Speed);
         Coil_C1      
       Delay1ms(Speed);
     Coil_CD1
      Delay1ms(Speed);
         Coil_D1      
      Delay1ms(Speed);
     Coil_DA1
     Delay1ms(Speed);

                        Coil_OFF;
                        for(i=0;i<10;i++)        
                        {
                                for(j=0;j<60;j++)
                                {
                                        Delay1ms(1000);
                                }
                        }
                }        
        }
   }
}


作者: 立里    時間: 2017-12-27 15:01
從程序看,你是采樣的溫度值大于20,就會啟動馬達,而且,你的溫度只采樣一次,如果一開始的值小于20,步進電機就不會動。
作者: qq1105424012    時間: 2017-12-27 15:27
ds18b20你沒讓它工作,導致tp接收不到。
作者: 時光遺失    時間: 2017-12-27 16:45
從程序上分析的話,會不會是因為你的溫度沒有達到要求,所以導致DS18B20和步進電機不轉(zhuǎn)動。
作者: 湮滅GG    時間: 2017-12-27 19:23
立里 發(fā)表于 2017-12-27 15:01
從程序看,你是采樣的溫度值大于20,就會啟動馬達,而且,你的溫度只采樣一次,如果一開始的值小于20,步進 ...

可以這樣說 我想做的是溫度大于這個就可以開始工作 不知道咋樣修改 了 可以幫下忙嗎

作者: 湮滅GG    時間: 2017-12-27 19:23
qq1105424012 發(fā)表于 2017-12-27 15:27
ds18b20你沒讓它工作,導致tp接收不到。

這個就尷尬了 有啥辦法修改一下嗎

作者: qq1105424012    時間: 2017-12-27 19:47
湮滅GG 發(fā)表于 2017-12-27 19:23
這個就尷尬了 有啥辦法修改一下嗎

把18B20 采集溫度的函數(shù)放在while中,讓它一直執(zhí)行從而改變得到tp的數(shù)值,20攝氏度以上就轉(zhuǎn)。  
作者: qq1105424012    時間: 2017-12-27 19:49
湮滅GG 發(fā)表于 2017-12-27 19:23
這個就尷尬了 有啥辦法修改一下嗎

也就是這個函數(shù) Ds18b20ReadTemp()
作者: 湮滅GG    時間: 2017-12-28 10:10
qq1105424012 發(fā)表于 2017-12-27 19:49
也就是這個函數(shù) Ds18b20ReadTemp()

尷尬了 我把這個放進去之后還是沒反應(yīng)。
作者: zzzxxxccc    時間: 2017-12-28 11:33
void        main()
{
        unsigned int tp,j,i;
        tp=Ds18b20ReadTemp;
        Speed=2;
        
tp=Ds18b20ReadTemp();
這個地方有點語法錯誤哈,否則你是根本沒有采集溫度,溫度為0,步進電機當然不動啦

作者: zzzxxxccc    時間: 2017-12-28 11:35
改為:
        
        Speed=2;
    while(1)
        {
        tp=Ds18b20ReadTemp();
再試試
        
作者: 湮滅GG    時間: 2017-12-28 15:14
zzzxxxccc 發(fā)表于 2017-12-28 11:33
void        main()
{
        unsigned int tp,j,i;

這個需要咋樣修改

作者: sfdfag32342    時間: 2017-12-28 16:29
溫度多高啊 ,溫度沒有達到要求。
作者: 人在江湖128    時間: 2017-12-30 12:05
采集溫度和驅(qū)動要控時序,交差驅(qū)動,不能同時控制。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99精品一区二区 | 国产精品亚洲综合 | 久久久久亚洲精品国产 | 久久久久久黄 | 大学生a级毛片免费视频 | 日韩精品一区二区三区中文在线 | 在线播放精品视频 | 一级毛片免费视频 | 国产欧美视频一区二区三区 | 欧美一区在线视频 | 亚洲欧美综合精品久久成人 | 黄色网址在线免费播放 | 久久精品这里精品 | 羞羞网站免费观看 | 欧美精品一区三区 | 在线国产视频观看 | 中文字幕二区三区 | 国产精品久久久久久福利一牛影视 | 国产精品一区二区三区久久久 | 69视频在线播放 | 精品国产成人 | av中文字幕在线播放 | 一级a爱片性色毛片免费 | 国产中文| 免费看国产片在线观看 | 九九亚洲精品 | 麻豆久久久久久久久久 | 色网在线播放 | 少妇精品久久久久久久久久 | 国产精品乱码一区二三区小蝌蚪 | 亚洲有码转帖 | 99久久精品国产一区二区三区 | 国产高清自拍视频在线观看 | 精品久久精品 | 久久一区二区三区电影 | 四虎影院久久 | 国产亚洲成av人片在线观看桃 | 日韩国产欧美一区 | 免费毛片网 | 久久久精品 | 中文字幕人成人 |