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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32 關于0v7670的源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:225622 發表于 2017-8-7 22:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    SCCB_SDA=0;
    delay_us(50);         
    SCCB_SCL=0;            //數據線恢復低電平,單操作函數必要          
}

//SCCB停止信號
//當時鐘為高的時候,數據線的低到高,為SCCB停止信號
//空閑狀況下,SDA,SCL均為高電平
void SCCB_Stop(void)
{
    SCCB_SDA=0;
    delay_us(50);         
    SCCB_SCL=1;       
    delay_us(50);
    SCCB_SDA=1;       
    delay_us(50);
}  
//產生NA信號
void SCCB_No_Ack(void)
{
        delay_us(50);
        SCCB_SDA=1;       
        SCCB_SCL=1;       
        delay_us(50);
        SCCB_SCL=0;       
        delay_us(50);
        SCCB_SDA=0;       
        delay_us(50);
}
//SCCB,寫入一個字節
//返回值:0,成功;1,失敗.
u8 SCCB_WR_Byte(u8 dat)
{
        u8 j,res;         
        for(j=0;j<8;j++) //循環8次發送數據
        {
                if(dat&0x80)SCCB_SDA=1;       
                else SCCB_SDA=0;
                dat<<=1;
                delay_us(50);
                SCCB_SCL=1;       
                delay_us(50);
                SCCB_SCL=0;                  
        }                         
        SCCB_SDA_IN();                //設置SDA為輸入
        delay_us(50);
        SCCB_SCL=1;                        //接收第九位,以判斷是否發送成功
        delay_us(50);
        if(SCCB_READ_SDA)res=1;  //SDA=1發送失敗,返回1
        else res=0;         //SDA=0發送成功,返回0
        SCCB_SCL=0;                 
        SCCB_SDA_OUT();                //設置SDA為輸出   
        return res;  
}         
//SCCB 讀取一個字節
//在SCL的上升沿,數據鎖存
//返回值:讀到的數據
u8 SCCB_RD_Byte(void)
{
        u8 temp=0,j;   
        SCCB_SDA_IN();                //設置SDA為輸入  
        for(j=8;j>0;j--)         //循環8次接收數據
        {                               
                delay_us(50);
                SCCB_SCL=1;
                temp=temp<<1;
                if(SCCB_READ_SDA)temp++;   
                delay_us(50);
                SCCB_SCL=0;
        }       
        SCCB_SDA_OUT();                //設置SDA為輸出   
        return temp;
}                                                             
//寫寄存器
//返回值:0,成功;1,失敗.
u8 SCCB_WR_Reg(u8 reg,u8 data)
{
        u8 res=0;
        SCCB_Start();                                         //啟動SCCB傳輸
        if(SCCB_WR_Byte(SCCB_ID))res=1;        //寫器件ID          
        delay_us(100);
          if(SCCB_WR_Byte(reg))res=1;                //寫寄存器地址          
        delay_us(100);
          if(SCCB_WR_Byte(data))res=1;         //寫數據         
          SCCB_Stop();          
          return        res;
}                                                              
//讀寄存器
//返回值:讀到的寄存器值
u8 SCCB_RD_Reg(u8 reg)
{
        u8 val=0;
        SCCB_Start();                                 //啟動SCCB傳輸
        SCCB_WR_Byte(SCCB_ID);                //寫器件ID          
        delay_us(100);         
          SCCB_WR_Byte(reg);                        //寫寄存器地址          
        delay_us(100);          
        SCCB_Stop();   
        delay_us(100);          
        //設置寄存器地址后,才是讀
        SCCB_Start();
        SCCB_WR_Byte(SCCB_ID|0X01);        //發送讀命令          
        delay_us(100);
          val=SCCB_RD_Byte();                         //讀取數據
          SCCB_No_Ack();
          SCCB_Stop();
          return val;
}
















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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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