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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2297|回復: 4
打印 上一主題 下一主題
收起左側

誰會轉動十秒停止十分鐘的循環

 關閉 [復制鏈接]
回帖獎勵 200 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
搶樓 搶樓 查看搶中樓層 本帖為搶樓帖,歡迎搶樓!  截止樓層:5  獎勵樓層: 5 
跳轉到指定樓層
樓主
ID:241873 發表于 2018-1-12 09:11 | 只看該作者 回帖獎勵 |閱讀模式
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^7;

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;



uchar t,s,speed=50;

unsigned int temp1;




void delay(uint N)//廷遲時間為(24+N*16)us
{
  int i;
        for(i=0;i<N;i++);
}





//步進電機
void gorun(unsigned char step)

{
  switch(step)
  {
  case 0:
          P1_0 = 0;
    P1_1 = 0;
    P1_2 = 0;
    P1_3 = 0;
        break;
  case 1:
    P1_0 = 1;
    P1_1 = 0;
    P1_2 = 0;
    P1_3 = 0;
    break;
  case 2:
    P1_0 = 1;
    P1_1 = 1;
    P1_2 = 0;
    P1_3 = 0;
    break;
  case 3:
    P1_0 = 0;
    P1_1 = 1;
    P1_2 = 0;
    P1_3 = 0;
    break;
  case 4:
    P1_0 = 0;
    P1_1 = 1;
    P1_2 = 1;
    P1_3 = 0;
    break;
  case 5:  
    P1_0 = 0;
    P1_1 = 0;
    P1_2 = 1;
    P1_3 = 0;
    break;
  case 6:
    P1_0 = 0;
    P1_1 = 0;
    P1_2 = 1;
    P1_3 = 1;
    break;
  case 7:
    P1_0 = 0;
    P1_1 = 0;
    P1_2 = 0;
    P1_3 = 1;
    break;
  case 8:
    P1_0 = 1;
    P1_1 = 0;
    P1_2 = 0;
    P1_3 = 1;
        break;
  }
}




/**************************************************
DS18B20初始化
/********************************************/
void init()
{
        DQ=1;
        delay(0);
        DQ=0;
        delay(50);      //廷遲24+50*16=824us
        DQ=1;
        delay(3);       //48us
        delay(10);      //184us
        DQ=1;
}

void write(uchar date)
{
        uint i;
        for (i=0; i<8; i++)
        {
                DQ = 0;
                DQ = date & 0x01;    //最低位移出  最低位先寫入 //i=0:DQ=(0101 0101 &0000 0001)=0000 0001
                delay(2);                 //56us                                                                         即將最低位1 寫入,i=1        :        將0寫入.......                                
                DQ=1;         
                date >>= 1;         //右移一位
        }
}

uchar read()
{
        uint i, value=0;
        DQ=1;
        _nop_();            //一個機器周期:(1/11.0952(即晶振頻率))*12=1.085us
        for (i=0; i<8; i++)
        {
                value = value>>1; //15us 之內必須讀完一位
                DQ = 0;           //設i=0 :value=0101 0101  >>1  得到:0010 1010
                _nop_();          // 讀到的DQ=1,0010 1010|1000 0000=1010 1010
                _nop_();                       // i=1:  value=01010101
                DQ = 1;                              //讀到的DQ=0,  value=01010101
                _nop_();                      //i=2:  value=0010 1010
                _nop_();  
                if (DQ)           //先讀最低位
                value|=0x80;
                delay(2);         // 56us
                DQ=1;
        }
        return(value);
}


//DS18B20數據采集轉換
uint  read_wen_du()
{        
        uchar HB,LB,temp;
        init();                                                                //  復位
        write(0xcc);                                  //  跳過ROM  即不必讀64位序列號的ROM
        write(0x44);                                  //  啟動溫度轉換
        init();
        write(0xcc);                                        //  跳過ROM  即不必讀64位序列號的ROM
        write(0xbe);                                        //  讀命令
        LB=read();                                    //  低八位 1011 1010
        HB=read();                                    //  高八位 1111 1010
        HB=HB<<4;                                                        //         1011 000
        HB+=(LB&0XF0)>>4;     //  (LB&0xF0)=1011 0000   >>4 :0000 1011  +HB :1010 1011
        temp=HB;
        return temp;                                  //  返回溫度值
}

//DS18B20基本函數結束





void main()
{
          TMOD = 0x01;
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
                TR0=1;
                ET0=1;
                EA=1;


        while(1)
                {               
                        
                        temp1=read_wen_du();
                        
               
                                if(temp1>=20)
                        
                                {

                                        gorun(s);
                                        EA=1;
               
                                }
                                else
                                {
                                       
                                        s=0;
                                        t=0;
                                        EA=0;
        
                                }
                }
}

//中斷服務函數
void timeint(void) interrupt 1
{
        TR0=0;
    TH0 = 254;
    TL0 = 255-speed; //調速
        
        t++;
        if(t==10)
        {
               
                        s++;
                        
                        if(s>8)
                        s=1;
                        t=0;
        }
               

        TR0=1;


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

使用道具 舉報

沙發
ID:275125 發表于 2018-1-12 11:09 | 只看該作者
在主函數中處理

增加2個變量
u32 iCount; //循環計數
u8  kStats; //點擊轉動標記 1:轉動  0:停止
iCount = 0;
kStats = 0;
while(1)
{   
    delayMS(100);  // 100ms延時

    if( kStats==1)  
    {
        if(  iCount==100  ) // 100次循環 10000正好10s
        {
            //執行電機停轉
            ...
        }
        else if(  iCount>=60100  ) //停轉等待 10分鐘 10*60=600s = 60000ms
        {
            kStats = 0;
            iCount = 0;
        }        
        iCount++;

    }

    else
    {

        temp1=read_wen_du();                     
        if(temp1>=20)
        {   
            gorun(s);
            kStats = 1;
            EA=1;   
        }
        else
        {   
            s=0;
            t=0;
            EA=0;   
        }
    }

}
回復

使用道具 舉報

板凳
ID:275125 發表于 2018-1-12 11:15 | 只看該作者
在主函數中處理

增加2個變量
u32 iCount; //循環計數
u8  kStats; //點擊轉動標記 1:轉動  0:停止
iCount = 0;
kStats = 0;
while(1)
{   
    delayMS(100);  // 100ms延時
                 
    if( kStats==1)  
    {
        if(  iCount==100  ) // 100次循環 10000正好10s
        {
            //執行電機停轉
            ...
        }
        else if(  iCount>=60100  ) //停轉等待 10分鐘 10*60=600s = 60000ms
        {
            kStats = 0;
            iCount = 0;
        }        
        iCount++;
        
    }
   
    else
    {
                       
        temp1=read_wen_du();                     
        if(temp1>=20)
        {   
            gorun(s);
            kStats = 1;
            EA=1;   
        }
        else
        {   
            s=0;
            t=0;
            EA=0;   
        }
    }
   
}
回復

使用道具 舉報

地板
ID:275125 發表于 2018-1-12 11:24 | 只看該作者
我辛苦些代碼回復 ,為啥就變成無效樓層,該帖子已經被刪除 ????

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:130231 發表于 2018-1-12 13:40 | 只看該作者
leixingmin 發表于 2018-1-12 11:24
我辛苦些代碼回復 ,為啥就變成無效樓層,該帖子已經被刪除 ????

新手請教!我你的思路不錯,能否結合樓主的代碼整理出來就好。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人高清 | 91av视频在线 | www国产成人免费观看视频,深夜成人网 | 中文字幕亚洲视频 | 国产精品久久久久久久久久免费看 | 欧美久久精品一级c片 | 国产精品久久久久久久久大全 | 国产成人亚洲精品自产在线 | 91久久精品国产 | 亚洲一区二区久久久 | 91精品国产91久久综合桃花 | 中文字幕在线免费观看 | www.99热这里只有精品 | 婷婷久久一区 | 91婷婷韩国欧美一区二区 | 国产伦精品一区二区三区照片91 | 国产免费黄网 | 精品无码久久久久久国产 | 久久成人综合 | 99久视频| 国产高清久久 | 伊人网伊人 | 丁香六月伊人 | 久久伊人亚洲 | 久久99精品久久久久久国产越南 | 中文字幕乱码视频32 | 亚洲网站在线播放 | 国产第一页在线观看 | 日日操操 | 亚洲精品99999 | 欧美精品一区在线 | 国产精品爱久久久久久久 | 亚洲精品视频免费 | 中文字幕国产 | 国产精品久久久久久久久久 | 久久久久成人精品 | 欧美成人精品 | 中文字幕一区二区三区四区五区 | 免费超碰 | 亚洲综合在线一区 | 国产不卡视频在线 |