新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 全向掃描條碼識讀器的譯碼硬件系統(tǒng)設計

全向掃描條碼識讀器的譯碼硬件系統(tǒng)設計

作者: 時間:2012-06-29 來源:網(wǎng)絡 收藏

  條碼技術為快速準確的數(shù)據(jù)采集、數(shù)據(jù)錄入提供了有效、可靠的手段,它與計算機、網(wǎng)絡通訊等一起構成了現(xiàn)代商業(yè)自動化的基礎,在發(fā)達國家得到了非常普通的應用,如在超級市場中大量使用的激光全向掃描。全向一方面能幫助商場提高工作效率而產(chǎn)生效益,另一方面,它具有高的附加值能使制造者獲利。隨著國際市場一體化的趨勢,我國商品條形碼的普及率越來越高,條碼輸入設備作為信息化技術之一受到高度重視。
  高速譯碼是全向掃描的關鍵。全向掃描識讀器在工作時有它的特殊性,一方面,光點掃描速度很高,條碼的最小條、空對應的脈沖寬度僅為1~2μs;另一方面,在掃描信號中可能會有大量雜散背景存在,如掃描到的文字、圖案、或未被完整掃描的條碼,再考慮到自動碼制識別,這意味著譯碼系統(tǒng)在真正譯碼前有大量的預處理工作。按照我國目前的微電子工藝水平,還無力研制全集成的高速硬件譯碼芯片,而僅基于單片機的軟件譯碼系統(tǒng)的速度不能滿足譯碼要求,下面我們采用了用硬件預處理結合軟件譯碼的方法實現(xiàn)高速譯碼。

1 識讀器原理
  光學系統(tǒng)包括半導體激光器發(fā)射系統(tǒng)和光學轉鏡掃描機構,它們在工作區(qū)域產(chǎn)生所需的多線掃描圖案,保證當條碼以任何方向移過工作區(qū)時必定被掃描到。當光點掃描一條碼時,漫反射光強隨光點落在條(低反射率)或空(高反射率)上的反射率不同而變化。這個信號幅度變化的時間間隔反映條碼的條空的寬窄,光電接收系統(tǒng)接收從條碼上漫反射回來的光信號,經(jīng)整形后轉換成可供譯碼的脈沖信號。高速譯碼器將脈沖信號翻譯成為被掃描的條碼所代表的值,并通過輸出接口電路輸出該條碼值

2 高速譯碼系統(tǒng)設計
  我們目前的研制主要針對常用商品條碼,每種條碼都有自已的特征。以EAN碼(EAN-13碼,EAN-8碼)為例,碼串由起始符、數(shù)據(jù)符、中間符、數(shù)據(jù)符和結束符組成。起始符由一個寬空和三個等寬度(單位寬度)的條空條組成,寬空的寬度應至少8倍于單位寬度;中間符由五個等寬度(單位寬度)的空條空條空組成;結束符由三個等寬度(單位寬度)的條空條和一個寬空組成。在數(shù)據(jù)符中,每個數(shù)據(jù)由四個條空組成,寬度比在1~4之間,總寬度為7個單位寬度,碼串的總長度也是確定的。這些特征是EAN碼信號區(qū)別于背景信號的根據(jù)。
  在光學系統(tǒng)中,光點掃描的線速度約為60~120m/s。一般,條碼條空的最小寬度約0.25mm,最寬約2.5mm左右,因此,最小脈沖寬度約2μs,最大脈沖寬度40μs。當商品移過掃描區(qū)時,掃描到的文字,圖案和未被完整掃描的條碼形成雜散背景,再考慮到自動碼制識別,如果只用簡單的單片機系統(tǒng),則譯碼速度太慢,不能滿足要求。因此,在我們的設計中,包括預處理單元和單片機譯碼單元兩部分。
2.1 預處理單元
  預處理單元完成從信號序列中實時提取條碼信號并保存在數(shù)據(jù)緩沖區(qū)的功能,對條碼的譯碼由單片機完成。

輸入信號為已經(jīng)整形的脈沖數(shù)字信號,脈沖寬度對應于條碼條、空及雜散線條的寬度,為模擬量。在預處理中首先用非線性計數(shù)器對該寬度進行模數(shù)轉換,分辨率為9位,當寬度超過9位時,計數(shù)值鎖定在滿度。用非線性除法器計算相鄰條、空或空、條的寬度比??紤]到條碼印刷、掃描光點及電子電路等環(huán)節(jié)會給寬度帶來誤差,寬度比不會是理論上的整數(shù),因此,非線性除法器設計成誤差包容,且輸出經(jīng)過取整和分類,僅為多個有效比值1、2、3、4、8和一個異常比值0。比值進入一系列狀態(tài)機進行狀態(tài)計算,狀態(tài)機的數(shù)量與條碼種類數(shù)及每類條碼的特征數(shù)有關。每類條碼占用獨立的一組狀態(tài)機,對EAN碼,有三個狀態(tài)機,分別檢測起始符、中間符和結束符。當以空起頭的連續(xù)四個條空其寬度比滿足7:1:1時,判斷為一個有效的起始符,起始符狀態(tài)機輸出為真;當以空起頭的連續(xù)五個條空其寬度比滿足1:1:1:1時,判斷為一個有效的中間符,中間符狀態(tài)機輸出為真;當以條起頭的連續(xù)四個條空其寬度比滿足1:1:7時,判斷為一個有效的結束符,結束符狀態(tài)機輸出為真。因此,根據(jù)狀態(tài)機的輸出真假及順序判斷一段信號是否是條碼,作出的判斷產(chǎn)生緩沖區(qū)的控制信號,決定是否把當前的輸入信號保存。當找出一組條碼信號后,產(chǎn)生聯(lián)絡信號通知單片機進行譯碼。輸出信號包括數(shù)字化的條、空的寬度和聯(lián)絡信號。由于狀態(tài)計算及狀態(tài)判斷是實時和并行的,所以可實現(xiàn)實時判斷條碼種類、阻止非條碼信號進入緩沖區(qū)等功能。
  預處理單元采用可編程邏輯器件實現(xiàn),具有高的集成度和可靠性。用硬件描述語言進行設計,在軟件開發(fā)環(huán)境下用測試矢量進行100%的設計功能測試,測試通過后硬件不需要再調(diào)試,因此研制效率很高。預處理響應時間應不大于最小條碼寬度所對應的時間,我們?nèi)?μs。按框圖,預處理分6個步驟,其中非線性除法器延時不大于200ns,其余每個步驟延時不大于50ns,總延時不大于500ns。我們采用美國Atmel公司的EPLD器件ATV2500,用2片芯片實現(xiàn)了上述功能。經(jīng)使用表明預處理響應時間小于1μs,達到設計要求。
2.2 單片機譯碼單元
  條碼值的翻譯用單片機完成。單片機采用美國Dallas公司的80C320,它是內(nèi)核改進型的51系列單片機,有中等的運算速度。系統(tǒng)原理如圖3所示,整個電路以單片機為核心,包括存放程序的存儲器、預處理器接口電路、激光二極管控制電路、RS-232串行通訊接口電路、仿鍵盤輸出接口電路、電機控制電路和用以指示譯碼成功的發(fā)聲發(fā)光電路。輸入數(shù)據(jù)來自數(shù)據(jù)緩沖區(qū),由于緩沖區(qū)的數(shù)據(jù)已基本上是條碼數(shù)據(jù),單片機只須進行單一的碼值譯碼,對運算速度要求大大降低。軟件設計包括對信號的進一步篩選,碼值的確定,奇偶校驗;轉鏡電機與激光二極管的自動開啟和關閉,任選的RS-232串行通訊或仿健盤輸出方式與主機通訊,以及表明譯碼成功的聲光指示等。程序用C-51語言編寫,無糾錯的一次譯碼約需10ms,一位糾錯的一次譯碼約需40ms。最終輸出采用3取2策略,以提高正確率。

總之,把高速譯碼系統(tǒng)與光學掃描系統(tǒng)連用后組成的識讀器,經(jīng)實測具有良好的性能,其譯碼速度和成功率達到了實際使用要求。

作者單位:杭州市浙江大學光電系(310027)

參考文獻

 [1]John A.Boles and Randall K. Hems. Analysis of bar code digitization technique.SPIE Proc. 1990;1384:195-204



評論


技術專區(qū)

關閉