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

正文內(nèi)容

工業(yè)微型條碼識別系統(tǒng)的軟件設計與實現(xiàn)畢業(yè)設計(編輯修改稿)

2025-08-12 20:01 本頁面
 

【文章內(nèi)容簡介】 MCU OID← MCU 長度 23 bits 8 bits 用途 OID 的指標,命令和狀態(tài) 命令 雙向接口 概述:雙向接口是用于 OID 控制器和 MCU 之間的,在這個協(xié)議中,只有兩根線是用于傳輸數(shù)據(jù)的,在 SDIO 上數(shù)據(jù)依次從高位傳輸?shù)降臀?,?雙向 接口中 MCU 是主機, OID設備是外圍設備。 主從模式:在 雙向 接口中,主設備是控制系統(tǒng)的主要部分,只有主機設備才能在 雙向 接口上做以下的工作: 1 啟動運行周期 2 在 SCK 上生成時鐘信號 3 決定一個傳輸周期的方向 子設備在 雙向 接口中是被動設備,它需要對主設備的指令很靈敏,如果已經(jīng)有一個數(shù)據(jù)準備要發(fā)給主設備了,子設備就會發(fā)送一個 轉(zhuǎn)移請求(拉低 SDIO 線)來通知主計算機信息工程學院畢業(yè)設計說明書 9 設備。 工作條件: 默認狀態(tài):主機讓 SCK 保持低電平, SDIO 被外部上拉電阻拉高 開始:主設備通過改變 SCK 的狀態(tài)(從低到高)發(fā)送一個轉(zhuǎn)移周期 結(jié)束:如果主設備讓 SCK 保持低的狀態(tài)超過 1024 個時鐘,子設備就會認為轉(zhuǎn)移周期結(jié)束,接口工作時序圖如圖 36所示。 圖 36 接口 工作時序圖 但是有一點需要注意:當主設備讓 SCK 保持高的狀態(tài),子設備會等待另一個狀態(tài)改變(高變低)。 在 SDIO 上的數(shù)據(jù)從 MSb 依次轉(zhuǎn)移到 LSb 上, SDIO 程度的變化只會發(fā)生在 SCK 一直保持在高電平, 當 SCK 是低狀態(tài), SDIO 的狀態(tài)改變 是 禁止的。換句話說, 當 SCK 為低狀態(tài)時 , 在 SDIO 上可以捕獲數(shù)據(jù)。當 SCK 為高時,它能把數(shù)據(jù)放在 SDIO 上。 SDIO 狀態(tài)的改變會發(fā)生在高變低邊緣以后。 為了通信成功,主設備必須遵循以下規(guī)則去控制 SCK 1 為了 SDIO 的程度改變,主設備必須保持 SCK 的高狀態(tài)超過 32 個時鐘。 2 為了 SDIO 的數(shù)據(jù)捕獲,主設備必須保持 SCK 的低狀態(tài)超過 8 個時鐘低于 1024 個時鐘。獲取有效數(shù)據(jù)時序圖如圖 37 所示。 圖 37 獲取有效數(shù)據(jù) 時序圖 子設備傳輸數(shù)據(jù)給主設備,讀周期如表 33 所示。 表 33 讀周期 總線 部分 開始 第 1 個字節(jié) 第 2~16 個字節(jié) 停止 SDIO 主設備 Z L Z Z 子設備 L Z 16 個比特數(shù)據(jù) Z 在 SDIO 上轉(zhuǎn)移的 17 個字節(jié): 第 1個比特: W/R 控制比特,主設備讓 SDIO 保持低狀態(tài)來開啟一個讀周期。 第 2個比特到第 17個比特:由子設備產(chǎn)生的數(shù)據(jù)。 計算機信息工程學院畢業(yè)設計說明書 10 在接收到 17個比特之后, SDIO 會被外部上拉電阻拉高 在讀周期之前,子設備發(fā)送一個轉(zhuǎn)移請求(拉低 SDIO)去通知主設備,在主設備產(chǎn)生開始標示并放置讀控制標示 在 SDIO 線上時,一個變化邊緣后,子設備開始發(fā)送數(shù)據(jù)。傳輸過后, SCK 變低狀態(tài)作為結(jié)束標志并且 SDIO 被上拉電阻拉高。讀周期時序圖如圖 38所示。 圖 38 讀周期 時序圖 主設備傳輸數(shù)據(jù)到子設備,寫周期如表 34 所示。 表 34 寫周期 總線 部分 開始 第 1 個字節(jié) 第 2~9 個字節(jié) 停止 SDIO 主設備 Z H 8 比特數(shù)據(jù) H 子設備 Z/L Z Z Z 在 SDIO 上一個寫周期會有 9 位比特: 第 1個比特是:讀 /寫控制比特,主設備拉高 SDIO 去標志一個寫周期 第 2~9 個比特:由主設備產(chǎn)生的比特 在 SDIO 傳輸完 9 個比特以后,被外部電阻拉高 在寫周期中, 主機產(chǎn)生一個上升沿在 SCK 上 , 并放置一個寫控制標示 在 SDIO 線上,主設備傳輸?shù)娜魏我粋€比特都要通過 SDIO,并且伴隨著寫控制 標示 在 SDIO 線上, 當 SCK 下降沿之后 子設備開始接收數(shù)據(jù)。在傳輸結(jié)束后, SCK 線保持低狀態(tài)作為停止 信號, 并且 SDIO線被外部電阻拉高,寫周期時序圖如圖 39所示。 圖 39 寫周期 時序圖 數(shù)據(jù)形式 從 OID 中得到的連續(xù)數(shù)據(jù)為 16 個比特指令或 16 個比特 標示 。 OID 連續(xù)數(shù)據(jù)的規(guī)則如表 35所示。 計算機信息工程學院畢業(yè)設計說明書 11 表 35OID 連續(xù)數(shù)據(jù)的規(guī)則 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 0 關(guān)鍵標示 標示 1 關(guān)鍵標示 指令 從 OID 到 DSP 的指令: 1 OIDcmdPowerOn=0xfff8 2 OIDcmdPowerDown=0xfff7 3 OIDcmdWakeup=0xfff0 OID 圖像處理會通知用戶這個設備已經(jīng)開始接收用戶要求的信息 依次接收來自 DSP 的指令 命令從 DSP 到 OID 1UserCmdPowerOnOID=0x53 DSP 設備打開 OID 的 圖像處理 2 UserCmdPowerDownOID=0x56 DSP 設備讓 OID 圖像處理處于休眠狀態(tài) 3 UserCmd AutoSleepFunEnable=0xA0 DSP 開啟自動休眠功能 4 UserCmd AutoSleepFunDisable=0xA3 DSP 不允許開啟自動休眠功能 5 UserCmd TriggerToClearAutoSleepTimmer=0xA6 DSP 清除自動休眠時間 6 UserCmd_ClearAutoSleepTimmerIfOIDDetect=0xAC UserCmd_NonClearAutoSleepTimmerIfOIDDetect=0x50 OID 處理器的自動休眠定時器被清 0 7 UserCmd_CheckOIDStatus=0x30 DSP 可以發(fā)送這個命令去檢查是否 OID 處理器被喚醒或休眠 控制時間 啟動 OID 時序圖如圖 310 所示。 計算機信息工程學院畢業(yè)設計說明書 12 圖 310 啟動 OID 時序圖 1 啟動 OID:喚醒 OID 通過讓 SCK 保持高狀態(tài)超過 10ms 2 打開程序應該在 2s 內(nèi)完成 在 OID 開始工作后, MCU 從 OID 讀取數(shù)據(jù) 1 OID 發(fā)送的兩個數(shù)據(jù)的時間間隔最少 50ms 2 如果 MCU 忽略了發(fā)送請求超過 300ms, OID 將移除發(fā)送請求并更新數(shù)據(jù) 。 OID 讀取數(shù)據(jù)時序圖如圖 311 所示。 圖 311OID 讀取數(shù)據(jù) 時序圖 關(guān)閉: OID 將會直接關(guān)閉如果 MCU 忽略了來自 OIDcmdPowerDown 的發(fā)送請求超過75ms。 本章小結(jié) 本章主要完成硬件的設計, 介紹了這次畢業(yè)設計需要使用到的主要硬件設備及相應的各設備引腳功能,主要是 AT89S52(控制芯片), SONIX SN9P701F(圖像處理模塊) ,SONIX SN9S102C,并列出了系統(tǒng)參數(shù) 和 最佳工作狀態(tài) 。 計算機信息工程學院畢業(yè)設計說明書 13 第 4 章 系統(tǒng)軟件的詳細設計 為了實現(xiàn) 條形碼的識別 , 本系統(tǒng)軟件主要 為 控制 SONIX SN9P701F 模塊程序、系統(tǒng)與上位機之間的 RS485 通信。 系統(tǒng) 流 程圖 系統(tǒng) 流 程圖 主要 分為以下幾個部分: 系統(tǒng) 初始化, SONIX SN9P701F 控制及其條碼識別 和 RS485 通信 。 系統(tǒng) 流程圖 如圖 41 所示。 開 始關(guān) 中 斷定 時 器 初 始 化R S 4 8 5 通 信 初始 化模 擬 I 2 C 端 口 初始 化開 中 斷掃 描 條 形 碼有 數(shù) 據(jù)發(fā) 送 給 上 位 機否是 圖 41 系統(tǒng) 流程圖 系統(tǒng) 初始化 設計 初始化程序流程圖如圖 42所示。 計算機信息工程學院畢業(yè)設計說明書 14 關(guān) 中 斷定 時 器 初 始 化RS485通 信 初始 化模 擬 I2C端 口 初始 化開 中 斷 圖 42 初始 化流程圖 初始化程序包括了關(guān)中斷( EA=0),定時器初始化, RS485 通信初始化,模擬 I2C 端口初始化,開中斷( EA=1)。 定時器初始化程序為 void InitT1( void) { TMOD = 0x20。 //定時器 T1 工作于定時器方式 2 TH1 =T1H 。//設置定時器的初值, 10ms TL1 =T1L。 //定義 T1H 0x0C4, T1L 0x00 TR1 =1。//啟動定時器 T1,開始計時 PCON=0x80。 SCON=0x50。//設置串口工作 方式 } RS485 通信初始化程序 為 void InitRS485 (void) { RSSelect=1。//默認為發(fā)送狀態(tài) =0。//設置 state 初值 } 模擬 I2C 端口初始化程序為 void InitI2C(void) //I2C 總線初始化程序, 作用是 使總線處于空閑狀態(tài) { SCK=1。 _nop_()。 計算機信息工程學院畢業(yè)設計說明書 15 SDIO=1。 _nop_()。 } SONIX SN9P701F 控制 程序設計 用 IO 總線在 MCU 與 OID 設備之間模擬 I2C 通信,函數(shù)功能 實現(xiàn)單片機對 SONIX SN9P701F 的控制 。 通信主要通過兩根線 SCK(時鐘) 和 SDIO(數(shù)據(jù)) 并 設置 SCK 為 P3^6,SDIO 為 P3^7,并定義數(shù)組 dat[]和 sum。 SONIX SN9P701F 控制及其條碼識別流程圖 如圖43所示。 初 始 化 I O 口D e l a y 5 0 m sC l k 輸 出 高判 斷 D A T 是 否 為 低 , 如 果 2 秒 后還 不 為 低 , 說 明 S O N I X S N 9 S 1 0 2C 沒 信 號D e l a y 6 0 m sC l k 輸 出 低C l k 輸 出 低把 d a t 作 為 輸 出口 , 并 輸 出 低C l k 輸 出 高D e l a y 1 0 u s , 讓筆 讀 d a t 信 號C l k 輸 出 高把 D A T 作 為 輸入 口D e l a y 1 0 u sC l k 輸 出 高D e l a y 1 0 u sC l k 輸 出 低讀 取 d a t是 否 讀 了 2 3次如 果 收 到 2 3 b i t 數(shù) 據(jù) 為 0 x 6 0 f f f 8 , 表 示 筆 開 機成 功 , 這 時 候 拿 S O N I X S N 9 S 1 0 2 C 去 點碼 , S O N I X S N 9 S 1 0 2 C 會 自 動 發(fā) 數(shù) 據(jù) 過 來否是是開 始結(jié) 束否 圖 43 SONIX SN9P701F 控制 程序 流程圖 本 程 序 包 括 模 擬 I2C 端口 初 始 化 程 序 Initi2c() , I2C 起 始 程 序 void I2CStart(void),I2C結(jié)束程序 void I2CStop(void)和 I2C 讀取程序 void I2Cwork(void)。 I2C起始程序 功能是產(chǎn)生 I2C 總線的起始條件, 主要程序如下: 計算機信息工程學院畢業(yè)設計說明書 16 SDIO=1。 Delays(1)。 SCK=1。//當時鐘線 SCK 處于高電平時, SDIO 出現(xiàn)下降沿時啟動 I2C 總線 Delays(1)。 SDIO=0。//SDIO 由高變低,啟動 I2C 總線 Delays(1)。 SCK=0。 Delays(1)。 I2C 讀取程序的功能是在檢測到 dat 中值為 0x60fff8 后,表示開機成功,然后用SN9S102C 去讀取條碼。 SN9S102C 會自動發(fā)送數(shù)據(jù)。 主要程序如下: Initi2c()。 //首先初始化 I2C 總線 Delays(5000)。 // 延時 程序 ,延時 60ms SCK = 1。 Delays(6000)。//延時 60ms SCK=0。 Delays(20xx00)。 //延時 2秒后判斷 SDIO 是否為低 if(SDIO == 0)//如果 SDIO 為低,說明 SN9S102C 檢測到信號,否則不執(zhí)行以下程序。 {SCK=1。 SDIO=0。//把 SDIO 作為輸出,并輸出低 SCK=0。 Delays(10)。//延遲 10us, 為了 讓 筆讀 取信號 SCK=1。 SDIO=1。//將 SDIO 作為輸入口 Delays(10)。 SCK=1。 Delays(10)。 for(i=0。i23。i++)//讀取 23 次 {sum=sum+dat[i]。} if(sum==0x60fff8)//如果 dat 讀取的數(shù)據(jù)為 0x60fff8,則可以開始讀取。 read()。}
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1