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

正文內(nèi)容

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

2024-08-12 20:01 本頁面
 

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