【正文】
。 TR1=TRUE。 當(dāng) case=8 時(shí),執(zhí)行數(shù)據(jù)校驗(yàn)。 } 當(dāng)本前導(dǎo)碼發(fā)送完畢時(shí),系統(tǒng)進(jìn)入中斷發(fā)送狀態(tài),直至數(shù)據(jù)發(fā)送完畢, 由中斷部分程序設(shè)置發(fā)送標(biāo)志符為 TRUE,表示系統(tǒng)發(fā)送數(shù)據(jù)完畢。在該中斷程序中,特別加入 Led=~Led,目的是為了在通信時(shí) led 燈不斷閃爍 ,便于觀察。 read()。//延時(shí) 60ms SCK=0。 SONIX SN9P701F 控制及其條碼識(shí)別流程圖 如圖43所示。 開(kāi) 始關(guān) 中 斷定 時(shí) 器 初 始 化R S 4 8 5 通 信 初始 化模 擬 I 2 C 端 口 初始 化開(kāi) 中 斷掃 描 條 形 碼有 數(shù) 據(jù)發(fā) 送 給 上 位 機(jī)否是 圖 41 系統(tǒng) 流程圖 系統(tǒng) 初始化 設(shè)計(jì) 初始化程序流程圖如圖 42所示。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 10 在接收到 17個(gè)比特之后, SDIO 會(huì)被外部上拉電阻拉高 在讀周期之前,子設(shè)備發(fā)送一個(gè)轉(zhuǎn)移請(qǐng)求(拉低 SDIO)去通知主設(shè)備,在主設(shè)備產(chǎn)生開(kāi)始標(biāo)示并放置讀控制標(biāo)示 在 SDIO 線上時(shí),一個(gè)變化邊緣后,子設(shè)備開(kāi)始發(fā)送數(shù)據(jù)。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 8 O I D M C U1234S C KS D I OV C CG N DVCC4 . 7 K 圖 35MCU 和 OID 通信線路 4 根總線 中 的 SCK 和 SDIO 用于 OID 和 MCU 之間的數(shù)據(jù)通信,傳輸接口 為雙向 接口,SCK 和 SDIO 的特點(diǎn)如 表 31 所示。另外 AT89S52 單片機(jī)擁有 3 個(gè) 16 位定時(shí)器 /計(jì)數(shù)器, 2 個(gè)數(shù)據(jù)指針,一個(gè) 2 級(jí) 6 向量 的 中斷結(jié)構(gòu),片內(nèi)晶振 以 及時(shí)鐘電路,全雙工串行口。主要是 撥碼開(kāi)關(guān)控制單片機(jī) , 然后 單片機(jī) 控制 SN9P701F 開(kāi)始 掃描條形碼 , 最后 通過(guò) RS485和接口轉(zhuǎn)換器顯示在 PC 或上位機(jī)上。同時(shí)介紹 硬件的使用情況和詳細(xì)介紹這次畢業(yè)論文的組成結(jié)構(gòu)。為企業(yè)之間信息交流提供了很大的便利,第二個(gè)時(shí)期是所有商品的供銷管理 ,產(chǎn)品物流 ,企業(yè)的連鎖化運(yùn)營(yíng) 。最后本論文實(shí)現(xiàn)了 條碼 識(shí)別系統(tǒng) 的軟件部分 ,并通過(guò)了測(cè)試與調(diào)試,基本上完成了目標(biāo)和要求。 關(guān)鍵詞 :條形碼; SONIX SN9P701; AT89S52 單片機(jī) ; RS485 Abstract THE INDUSTRY39。 在 我國(guó) , 應(yīng)用條形碼 技術(shù) 的現(xiàn)狀大概處于第二個(gè)階段,而且很大程度上識(shí)別設(shè)備還要借鑒國(guó)外的產(chǎn)品 , 所以 與國(guó)外 產(chǎn)品 差距很大。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 3 第 2 章 系統(tǒng)總體框架設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)框圖 這次畢業(yè)設(shè)計(jì)的思路是這樣的,首先 通過(guò)撥碼開(kāi)關(guān)對(duì)單片機(jī)的控制讓 SONIX SN9P701F 獲取條形碼的各種信 息 , 再 通過(guò) RS485 傳輸?shù)缴衔粰C(jī)中,由于現(xiàn)在 PC 機(jī)大都使用 RS232 接口或者 USB 接口,所以需要一個(gè)接口轉(zhuǎn)換 器 讓信息成功傳輸至 上位機(jī)中。單片機(jī)控制 SN9P701F 方面,主要是通過(guò) SCK 和 SDIO兩根線通信, SCK 為時(shí)鐘線, SDIO 為數(shù)據(jù)線,兩根線的相互作用控制著 SN9P701F 的讀與寫(xiě)。 AT89S52 實(shí)物如圖 31 所示。 表 31 SCK 和 SDIO 的特點(diǎn) SCK SDIO 用途 串行時(shí)鐘 串行數(shù)據(jù) 方向 MCU→OID MCU? OID 上拉控制 否 是 默認(rèn)狀態(tài) 低 拉高 OID 和 MCU 之間的傳輸?shù)氖敲?,索引?OID 的狀態(tài),數(shù)據(jù)特點(diǎn)如表 32 所示。傳輸過(guò)后, SCK 變低狀態(tài)作為結(jié)束標(biāo)志并且 SDIO 被上拉電阻拉高。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 14 關(guān) 中 斷定 時(shí) 器 初 始 化RS485通 信 初始 化模 擬 I2C端 口 初始 化開(kāi) 中 斷 圖 42 初始 化流程圖 初始化程序包括了關(guān)中斷( EA=0),定時(shí)器初始化, RS485 通信初始化,模擬 I2C 端口初始化,開(kāi)中斷( EA=1)。 初 始 化 I O 口D e l a y 5 0 m sC l k 輸 出 高判 斷 D A T 是 否 為 低 , 如 果 2 秒 后還 不 為 低 , 說(shuō) 明 S O N I X S N 9 S 1 0 2C 沒(méi) 信 號(hào)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 信 號(hào)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 , 表 示 筆 開(kāi) 機(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ù) 過(guò) 來(lái)否是是開(kāi) 始結(jié) 束否 圖 43 SONIX SN9P701F 控制 程序 流程圖 本 程 序 包 括 模 擬 I2C 端口 初 始 化 程 序 Initi2c() , I2C 起 始 程 序 void I2CStart(void),I2C結(jié)束程序 void I2CStop(void)和 I2C 讀取程序 void I2Cwork(void)。 Delays(20xx00)。} I2C 結(jié)束程序即關(guān)閉 I2C 通信, 當(dāng) SCK 為高電平期間, SDIO 出現(xiàn)上升沿,停止I2C 通信。 TI 為發(fā)送標(biāo)志位, RI 為接受標(biāo)志位。 發(fā)送程序設(shè)計(jì) 為了能成功發(fā)送數(shù)據(jù),本發(fā)送程序設(shè)置 0xFB 為前導(dǎo)碼,在 switch 語(yǔ)句中, case0至 4 為準(zhǔn)備發(fā)送數(shù)據(jù), 0xFB 二進(jìn)制為 11111011,是提醒接受方準(zhǔn)備好數(shù)據(jù)的傳輸,連續(xù)的 11111 保持了狀態(tài)的穩(wěn)定 。 當(dāng) case=9 時(shí),結(jié)束數(shù)據(jù)發(fā)送。//開(kāi)始計(jì)時(shí) 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 20 T1Over=5。 //關(guān)閉定時(shí) Timer1_Flag=FALSE。 Keil uVision4 中調(diào)試結(jié)果及分析 Keil uVision4 中的調(diào)試 在 Keil uVision4 中 主 程 序 調(diào) 試 結(jié) 果 如 圖 51 所 示 , 調(diào) 試 結(jié) 果 為 : 0 Error(s),66Warning( s),軟件調(diào)試無(wú)錯(cuò)誤。本次畢業(yè)設(shè)計(jì)的硬件部分包括了 SONIX SN9S102C, SONIX SN9P701F,單片機(jī)采用 AT89S52,與上位機(jī)之間的通信采用 RS485 串口通信。 這次畢業(yè)設(shè)計(jì)雖然基本達(dá)到了任務(wù)要求,但是還有一些缺陷, 程序設(shè)計(jì)過(guò)于簡(jiǎn)單 ,與現(xiàn)實(shí)生活的應(yīng) 用還有一定差距。 ++。 break。//TEST RSSendOver_Flag = TRUE。 ++。 //關(guān)閉定時(shí) Timer1_Flag=FALSE。 _nop_()。 SDIO=0。//將 dat 作為輸入口 Delays(10)。 } /****************主程序 ******************************/ include include include define uchar unsign。 Delays(10)。 SCK=0。 _nop_()。 } case 5: { =0。 } case 2: { =SBUF。 break。 ++。 } case 1: { SBUF=0xFB。反反復(fù)復(fù)的斟酌與實(shí)踐中我們也加深了同學(xué)之間的友誼,增進(jìn)了 師生之間的關(guān)系,學(xué)習(xí)了導(dǎo)師 鉆研 的 精神。 5 系統(tǒng)軟件 詳細(xì) 設(shè)計(jì)。 圖 52 Keil uVision4 中的 RS485 串口通信程序 調(diào)試結(jié)果 在 Keil uVision4 中 SONIX SN9P701F 控制 程序 調(diào)試結(jié)果如圖 53 所示,調(diào)試結(jié)果為:0 Error(s),66Warning( s),軟件調(diào)試無(wú)錯(cuò)誤。 R S S B u f f e r . S t a t e的 值設(shè) 置 定 時(shí)器 初 值 ,設(shè) 定 溢 出時(shí) 間執(zhí) 行 準(zhǔn) 備接 收 數(shù) 據(jù)指 令將 寄 存 器中 的 值 依次 放 入 數(shù)據(jù) 指 針 并判 斷 長(zhǎng) 度判 斷 數(shù) 據(jù)長(zhǎng) 度 初 始化 數(shù) 據(jù) 指針程 序 結(jié) 束R S S B u f f e r .S t a t e = 0數(shù) 據(jù) 校驗(yàn) , 關(guān) 閉定 時(shí) 器程 序 結(jié) 束R S S B u f f e r .S t a t e = 0開(kāi) 始結(jié) 束0 1 2 3 4 5 6 圖 46 接收程序流程圖 本章小結(jié) 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 21 本 章 主要介紹了這次畢業(yè)設(shè)計(jì)的主要流程圖 和重要程序 。 Case1 為 準(zhǔn)備接收數(shù)據(jù)的命令, 此時(shí)只有命令,沒(méi)有數(shù)據(jù)。主要程序如下 RSSendOver_Flag = TRUE。 ++。 發(fā) 送 中 斷 ? 發(fā) 送 數(shù) 據(jù)接 收 數(shù) 據(jù)L e d = ~ L e d是否串 口 中 斷中 斷 退 出 圖 44RS485 串口通信流程圖 RS485 通信程序中用到的 結(jié)構(gòu)體聲明 extern struct RS { uchar Cmd。 _nop_()。 {SCK=1。 Delays(1)。 //定時(shí)器 T1 工作于定時(shí)器方式 2 TH1 =T1H 。 圖 38 讀周期 時(shí)序圖 主設(shè)備傳輸數(shù)據(jù)到子設(shè)備,寫(xiě)周期如表 34 所示。 主從模式:在 雙向 接口中,主設(shè)備是控制系統(tǒng)的主要部分,只有主機(jī)設(shè)備才能在 雙向 接口上做以下的工作: 1 啟動(dòng)運(yùn)行周期 2 在 SCK 上生成時(shí)鐘信號(hào) 3 決定一個(gè)傳輸周期的方向 子設(shè)備在 雙向 接口中是被動(dòng)設(shè)備,它需要對(duì)主設(shè)備的指令很靈敏,如果已經(jīng)有一個(gè)數(shù)據(jù)準(zhǔn)備要發(fā)給主設(shè)備了,子設(shè)備就會(huì)發(fā)送一個(gè) 轉(zhuǎn)移請(qǐng)求(拉低 SDIO 線)來(lái)通知主計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 9 設(shè)備。一個(gè)合格的單片機(jī)最小系統(tǒng) 可以 具有以下幾個(gè)功能: 1 具有復(fù)位的功能。它的 CMOS 傳感器在一個(gè) 12 引腳的 CSP 封裝包里 , SONIX SN9P701C提供了一個(gè)低成本的方法進(jìn)行條形碼識(shí)別。 O I D 圖 像 識(shí) 別 設(shè) 備D S P 圖 像 處 理 設(shè) 備如 S N 9 P 7 0 1A T 8 9 S 5 2 單 片 機(jī)R S 4 8 5接 口 轉(zhuǎn) 換上 位 機(jī)I2C撥 碼 開(kāi) 關(guān)S O N I X S N 9 S 1 0 2 C圖 像 處 理 設(shè) 備S O N I X S N 9 P 7 0 1 F單 片 機(jī)接 口 轉(zhuǎn) 換上 位 機(jī)撥 碼 開(kāi) 關(guān)AB 圖 21 系統(tǒng) 總體設(shè)計(jì)框圖 SONIX SN9S102C SONIX SN9S102C 為 圖像傳感器 模塊 , 是把需要掃描的外部信號(hào)轉(zhuǎn)換成電信號(hào),以便傳輸給識(shí)別模塊,一般來(lái)說(shuō),它是由感知元件和轉(zhuǎn)換器件構(gòu)成的。 條形碼是物流技術(shù)的核心與關(guān)鍵 , 有效的條 碼 識(shí)別 軟件能高效的實(shí)現(xiàn) 對(duì)條形碼的閱讀,對(duì) 條形碼的發(fā)展與應(yīng)用提供 了 幫助。s number, production date, plete goods, books, publication date, type, expiration date, and so on,which are generally used in many areas. This thesis designs mini barcode recognition system , the system consist of the SONIX SN9S102C, SONIX SN9P701F and AT89S52 MCU. AT89S52 MCU bined with other devices and display of data munication with the rs485 on the host puter. This graduation project uses MCU control SN9P701F , the physical volume than other barcode recognition Little a lot, The method has not only greatly reduced