freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的雙路信號檢測系統(tǒng)綜合設計_畢業(yè)設計-資料下載頁

2025-06-30 19:58本頁面

【導讀】基于單片機的雙路信號檢測系統(tǒng)綜合設計··············-1-. 一.設計任務概述·······················-1-. 二.硬件電路設計························-2-. 完整系統(tǒng)原理圖·····················-8-. 模塊化程序設計的思路················-10-. 總的程序流程框圖··················-10-. 各部分程序設計介紹·················-10-

  

【正文】 機通過 I2C總線從從機接收 1個字節(jié)的數(shù)據(jù) bit I2C_Get(unsigned char SlaveAddr, unsigned char SubAddr, char *dat)。 endif //_I2C_H_ ( 5)標準 80C51 單片機模擬 I2C 總線的主機程序 include //定義延時變量,用于宏 I2C_Delay() unsigned char data I2C_Delay_t。 /* 宏定義: I2C_Delay() 功能:延時,模擬 I2C總線專用 */ define I2C_Delay()\ {\ I2C_Delay_t = (I2C_DELAY_VALUE)。\ while ( I2C_Delay_t != 0 )。\ } /* 函數(shù): I2C_Init() 功能: I2C總線初始化,使總線處于空閑狀態(tài) 說明:在 main()函數(shù)的開始處,通常應當要執(zhí)行一次本函 數(shù) */ void I2C_Init() { I2C_SCL = 1。 I2C_Delay()。 I2C_SDA = 1。 I2C_Delay()。 } /* 函數(shù): I2C_Start() 功能:產(chǎn)生 I2C總線的起始狀態(tài) 說明: SCL處于高電平期間,當 SDA出現(xiàn)下降沿時啟動 I2C總線 不論 SDA和 SCL處于什么電平狀態(tài),本函數(shù)總能正確產(chǎn)生起始狀態(tài) 本函數(shù)也可以用來產(chǎn)生重復起始狀態(tài) 本函數(shù)執(zhí)行后, I2C總線處于忙狀態(tài) */ void I2C_Start() { I2C_SDA = 1。 I2C_Delay()。 I2C_SCL = 1。 I2C_Delay()。 I2C_SDA = 0。 I2C_Delay()。 I2C_SCL = 0。 I2C_Delay()。 } /* 函數(shù): I2C_Write() 功能:向 I2C總線寫 1個字節(jié)的數(shù)據(jù) 參數(shù): dat:要寫到總線上的數(shù)據(jù) */ void I2C_Write(unsigned char dat) 20 { unsigned char t = 8。 do { I2C_SDA = (bit)(dat amp。 0x80)。 dat = 1。 I2C_SCL = 1。 I2C_Delay()。 I2C_SCL = 0。 I2C_Delay()。 } while ( t != 0 )。 } /* 函數(shù): I2C_Read() 功能:從從機讀取 1個字節(jié)的數(shù)據(jù) 返回:讀取的一個字節(jié)數(shù)據(jù) */ unsigned char I2C_Read() { unsigned char dat。 unsigned char t = 8。 I2C_SDA = 1。 //在讀取數(shù)據(jù)之前,要把 SDA拉高 do { I2C_SCL = 1。 I2C_Delay()。 dat = 1。 if ( I2C_SDA ) dat |= 0x01。 I2C_SCL = 0。 I2C_Delay()。 } while ( t != 0 )。 return dat。 } /* 函數(shù): I2C_GetAck() 功能:讀取從機應答位 返回: 0:從機應答 1:從機非應答 說明: 從機在收到每個字節(jié)的數(shù)據(jù)后,要產(chǎn)生應答位 從機在收到最后 1個字節(jié)的數(shù)據(jù)后,一般要產(chǎn)生非應答位 */ bit I2C_GetAck() { bit ack。 I2C_SDA = 1。 I2C_Delay()。 I2C_SCL = 1。 I2C_Delay()。 ack = I2C_SDA。 I2C_SCL = 0。 I2C_Delay()。 return ack。 } /* 函數(shù): I2C_PutAck() 功能:主機產(chǎn)生應答位或非應答位 參數(shù): ack=0:主機產(chǎn)生應答位 ack=1:主機產(chǎn)生非應答位 說明: 主機在接收完每一個字節(jié)的數(shù)據(jù)后,都應當產(chǎn)生應答位 主機在接收完最后一個字節(jié)的 數(shù)據(jù)后,應當產(chǎn)生非應答位 */ void I2C_PutAck(bit ack) { I2C_SDA = ack。 I2C_Delay()。 I2C_SCL = 1。 I2C_Delay()。 I2C_SCL = 0。 I2C_Delay()。 } /* 函數(shù): I2C_Stop() 功能:產(chǎn)生 I2C總線的停止狀態(tài) 說明: SCL處于高電平期間,當 SDA出現(xiàn)上升沿時停止 I2C總線 不論 SDA和 SCL處于什么電平狀態(tài),本函數(shù)總能正確產(chǎn)生停止狀態(tài) 本函數(shù)執(zhí)行后, I2C總線處于空閑狀態(tài) */ void I2C_Stop() { unsigned int t = I2C_STOP_WAIT_VALUE。 I2C_SDA = 0。 I2C_Delay()。 21 I2C_SCL = 1。 I2C_Delay()。 I2C_SDA = 1。 I2C_Delay()。 while ( t != 0 )。 //在下一次產(chǎn)生 Start之前,要加一定的延時 } /* 函數(shù): I2C_Puts() 功能:主機通過 I2C總線向從機發(fā)送多個字節(jié)的數(shù)據(jù) 參數(shù): SlaveAddr:從機地址(高 7位 是從機地址,最低位是寫標志 0) SubAddr:從機的子地址 Size:數(shù)據(jù)的字節(jié)數(shù) *dat:要發(fā)送的數(shù)據(jù) 返回: 0:發(fā)送成功 1:在發(fā)送過程中出現(xiàn)異常 */ bit I2C_Puts(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat) { //檢查長度 if ( Size == 0 ) return 0。 //確保從機地址最低位是 0 SlaveAddr amp。= 0xFE。 //啟動 I2C總線 I2C_Start()。 //發(fā)送從機地址 I2C_Write(SlaveAddr)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } //發(fā)送子地址 I2C_Write(SubAddr)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } //發(fā)送數(shù)據(jù) do { I2C_Write(*dat++)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } } while ( Size != 0 )。 //發(fā)送完畢,停止 I2C總線,并返回結果 I2C_Stop()。 return 0。 } /* 函數(shù): I2C_Put() 功能:主機通過 I2C總線向從機發(fā)送 1個字節(jié)的數(shù)據(jù) 參數(shù): SlaveAddr:從機地址(高 7位是從機地址,最低位是寫標志 0) SubAddr:從機的子地址 dat:要發(fā)送的數(shù)據(jù) 返回: 0:發(fā)送成功 1:在發(fā)送過程中出現(xiàn)異常 */ bit I2C_Put(unsigned char SlaveAddr, unsigned char SubAddr, char dat) { return I2C_Puts(SlaveAddr,SubAddr,1,amp。dat)。 } /* 函數(shù): I2C_Gets() 功能:主機通過 I2C總線從從機接收多個字節(jié)的數(shù)據(jù) 參數(shù): SlaveAddr:從機地址(高 7位是從機地址,最低位是讀標志 1) SubAddr:從機的子地址 Size:數(shù)據(jù)的字節(jié)數(shù) *dat:保存接收到的數(shù)據(jù) 返回: 0:接收成功 1:在接收過程中出現(xiàn)異常 */ bit I2C_Gets(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat) { //檢查長度 22 if ( Size == 0 ) return 0。 //確保從機地址最低位是 0 SlaveAddr amp。= 0xFE。 //確保最低位是 0 //啟動 I2C總線 I2C_Start()。 //發(fā)送從機地址 I2C_Write(SlaveAddr)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } //發(fā)送子地址 I2C_Write(SubAddr)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } //發(fā)送重復起始條件 I2C_Start()。 //發(fā)送從機地址 SlaveAddr |= 0x01。 I2C_Write(SlaveAddr)。 if ( I2C_GetAck() ) { I2C_Stop()。 return 1。 } //接收數(shù)據(jù) for (。) { *dat++ = I2C_Read()。 if ( Size == 0 ) { I2C_PutAck(1)。 break。 } I2C_PutAck(0)。 } //接收完畢,停止 I2C總線,并返回結果 I2C_Stop()。 return 0。 } /* 函數(shù): I2C_Get() 功能:主機通過 I2C總線從從機接收 1個字節(jié)的數(shù)據(jù) 參數(shù): SlaveAddr:從機地址(高 7位是從機地址,最低位是讀標志 1) SubAddr:從機的子地址 *dat:保存接收到的數(shù) 據(jù) 返回: 0:接收成功 1:在接收過程中出現(xiàn)異常 */ bit I2C_Get(unsigned char SlaveAddr, unsigned char SubAddr, char *dat) { return I2C_Gets(SlaveAddr,SubAddr,1,dat)。 }
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1