針對目前嵌入式收款機系統在功能和性價比方面存在不足的問題,介紹了一種基于Cortex M3芯片的嵌入式收款機系統。該系統功能全面、性能良好、界面完善、具有故障分析和機器自檢功能。運行結果表明,該系統實現了預期目標。
本文介紹了以STM32F107 單片機為核心的POS 機、數據采集和數據輸出的小規模銷售系統。目前的嵌入式收款機系統在硬件和軟件方面在成本上沒有有效的控制,在功能上沒有很充分地開發。而此款POS 系統平臺則擁有成本低廉、操作方便、易于自檢維修等方面的優勢。
POS 機的基本作業原理是先將商品資料輸入進SPIFlash 中存儲,商品上的條碼可以通過掃描槍上的光學讀取設備直接讀入,根據條形碼在收款機內存中的商品數據庫找到該商品的相關內容,當然也可以直接用鍵盤輸入條形碼。每一筆商品銷售明細資料亦可自動統計,并且最多可以存一萬筆以上交易記錄。
1 系統設計
1.1 硬件結構
本系統采用ARM Cortex M3 為內核的32 位微處理器STM32F107VC,其主頻為72 Hz,該芯片內部采用哈佛結構,內部集成了最大存儲空間為256K 的Flash和64K 的SRAM,還有大量的I/O 口和外設(2 個I2 C 總線,3 個SPI,2 個I2 S,5 個USART,2 個CAN 等等)連接在2 個APB 總線上。
該系統硬件主要包括:收款數據處理模塊、收款程序存儲模塊、收款數據存儲模塊、串口調試模塊、收款顯示模塊、報表打印模塊、USB 模塊。系統硬件結構框圖如圖1所示。
圖1 系統硬件結構框圖
系統的實物圖如圖2 所示。
圖2 系統的實物圖
在初始化時,為了便于用戶或者維修人員及時了解設備運轉情況和數據存儲情況,調試信息務必顯示在液晶屏上。通過CH452 鍵盤將中英文輸入信息輸入到設備上,通過掃描槍將商品中的條形碼讀取到設備中,最后還可將交易記錄輸出到小票打印機上,最多可以一次性記錄一萬次交易信息。交易信息、用戶等資料存放在SPI Flash中,時鐘信息放在RTC 備用器中。
1.2 外設設備
CH452 是數碼管顯示驅動和鍵盤掃描控制芯片,可以同時進行64 鍵的鍵盤掃描和8 位數碼管的操作,具有BCD 譯碼、閃爍、移位、段位尋址等功能,還能對CPU 提供上電復位信號。
本次研究對象中CH452的LCD 交換數據功能是通過級聯的4 線串行接口完成的。在鍵盤掃描期間,DIG7~DIG0 引腳用于列掃描輸出,并且可以依次從DIG0 ~DIG7 輸出高電平,同時其余的引腳置0.SEG7 ~SEG0引腳都帶有內部下拉電阻,用于行掃描輸入,在鍵盤掃描期間輸出被禁止。
啟用鍵盤掃描功能后,4 線串行接口中的DOUT 引腳的功能由串行接口的數據輸出變為鍵盤中斷輸出以及按鍵數據輸出。如果有DIGm(m=0,1,2…7)與SEGn(n=0,1,2 …7)的鍵被按下,那么當DIGm 輸出高電平時,SEGn 可以檢測到高電平;如果按鍵有效,按鍵產生的代碼通過DOUT 引腳就能夠產生中斷,CPU 則用串行接口來讀取代碼。
另外,CH452 僅支持每次同時按下一個鍵,如果有多個鍵值按下,則取按鍵代碼較小的按鍵。
表1、表2 是在DIG7~DIG0 與SEG7~SEG0 之間8×8 矩陣的按鍵編址,按鍵按下時,狀態碼位6 總是置1,而按鍵代碼共有7 位,所以當鍵按下時,CH452 所提供的實際按鍵代碼在下表中的按鍵編址基礎上偏移40H.也就是說,本文設定的按鍵代碼的取值范圍應該在40H~7FH 之間。
CH452 還可以控制8 個數碼管和64 個LED 燈,在這次項目中根據不同的界面可以用來顯示時間、商品價格等可以用數字表示的參數。
CH452 與作為CPU 的STM32 的連接方式如圖3 所示。
圖3 CH452 與STM32F107VC 的連接
1.2.2 存儲設備
W25X16 是華邦公司推出的繼W25X10/20/40/80 后容量更大的FLASH 存儲器產品,它有占用空間小、使用壽命長、功耗較低等優點。W25X16 能容納2 MB,分布在8 192 個編程頁上。它分為32 個塊,每個塊由16 個扇區組成,W25X16 的最少擦除單位就是一個扇區(4 KB)。W25X16 與STM32F107VC 的連接方式如圖4 所示。
圖4 W25X16 與STM32F107VC 的連接
1.2.3 打印機
本次項目采用熱敏打印機來輸出每次交易信息。商寶熱敏打印機支持并口、串口、USB、LAN 網絡等途徑傳輸數據,帶有384 個方點的帶加熱點陣固定打印頭。打印機通過CPU 傳輸的數據邏輯控制點陣,并且控制進紙,從而在熱敏紙上印出字體,打出顧客需要的包含交易信息的小票。
1.2.4 掃描輸入設備
掃描槍利用收集到的條形碼上強弱不同的反射光,經過光學系統成像通過光電轉換器將光信號轉換成電信號,譯碼器根據測量而來的脈沖信號0、1 來判別條和空的數目,得到的數據還要通過對應的編碼規則(比如本次項目所用的掃描儀運用EAN 13 碼)轉換成條形碼序列號。
1.2.5 顯示設備
TFT LCD 因其具有大容量、高速度和高對比度顯示等,成為當前顯示領域的主流。LCD 利用了液晶的電光效應,通過電路控制液晶單元的透射率及反射率,從而產生不同灰度層次及多達1670 萬種色彩的靚麗圖像,顯示需要的英文和漢文信息都是通過點陣原理完成的。
本次項目采用SSD1289 液晶顯示屏來輸出收款機各個界面,SSD1289 是一款帶有262 144 種顏色的薄膜場效應管LCD 的控制器,它的屏幕尺寸為57 mm×79 mm,有效顯示面積為51 mm×65 mm.它具有240×320 的分辨率,SSD1289 具有4 種接口模式:i8080 的MPU 接口、VSINC 接口、SPI 接口和18 位RGB 接口。STM32F107VC 通過FCMS 總線來控制LCD 的驅動。液晶與STM32F107VC 的連接方式如圖5 所示。
圖5 SSD1289 與作為CPU 的STM32F107VC 的連接
下列是液晶部分的初始化操作。
① 打開晶振:
LCD_WriteReg(0x0000,0x0001);
② 驅動輸出控制(240×320 的分辨率):
LCD_WriteReg(0x0001,0x6B3F);
③ 掃描開始地址:
LCD_WriteReg(0x000F,0x0000);
而液晶屏如果要顯示色彩繽紛的圖像或者文字就需要軟件對它進行控制,而這是具有一定復雜度的,下列是液晶部分的部分高級函數操作。
(1 )設置光標函數
Set_LCD_Cursor(u8 x,u16 y,u8 CursFlag,u32 CursCycleTime,u8 high,u8 width);
其中,x,y 是光標閃爍的位置;CursFlag=1 表示顯示光標;CursFlag=0 表示不顯示光標;CursCycleTime 是光標閃爍的周期;high 和width 則分別表示光標的高度和寬度。
(2)畫線函數
LCD_DrawLine(u8 x,u16 y,uint16_t Length,uint8_t Direction,u16 LineColor);
其中,x,y 是位置坐標,Length 是指線的長度,Direction是指線的朝向,LineColor 則設定線的顏色。
(3)顯示漢字
LCD_Disp_HZ_CharString(u8 x,u16 y,u8 *str,u16fontcolor,u16 backcolor);
其中,x,y 是位置坐標,str 指針指向漢字或英文字符編碼fontcolor,backcolor 分別顯示字符顯示顏色和背景顏色。
2 軟件框圖
根據項目的整體規劃,管理員及收銀員軟件系統框圖分別如圖6、圖7 所示。
圖6 管理員系統軟件結構框圖
3 系統的運行情況
3.1 機器自檢
該套電子設備具有機器自檢功能,用戶通過輸入管理員密碼進入“設置”,然后再進入“機器測試及其結果顯示”就能夠及時了解機器運行是否正常,如圖8 所示。
圖7 收銀員系統軟件結構框圖
圖8 機器測試及其結果顯示
3.2 運行結果
在執行“登陸”→輸入“收銀員”密碼→“收款”,然后就可以出現收款界面。這個時候無論用掃描槍和商品編號輸入數字,都可以把商品編號輸入在框內,而且數量框也可以自行輸入每件商品的數目,然后按回車鍵結賬。最后,能夠在打印機上顯示打印小票,并且在LCD 上顯示收款界面收款界面--編者注。
如果想要錄入商品信息,可以執行“登陸”→輸入“管理員”密碼→“錄入商品信息”,然后就可以出現錄入商品信息界面略--編者注。此時,可以按中英文輸入切換鍵和大小寫切換鍵分別切換輸入的語言和英文大小寫。
結語
使用STM32F107VC 作為便攜式POS 機的硬件平臺,能夠較大幅度地降低成本,操作更加便利,同時POS機的基本功能并沒有因此而減弱。而POS 機功能在STM32F107VC 上的開發還可以更加充分,比如利用USB接口把更多的重要資料存儲在上位機中等。
-
芯片
+關注
關注
456文章
51192瀏覽量
427307 -
單片機
+關注
關注
6043文章
44621瀏覽量
638612 -
嵌入式
+關注
關注
5093文章
19178瀏覽量
307709
發布評論請先 登錄
相關推薦
在STM32F107上編寫自己的嵌入式系統需要學習哪些資料
單片機STM32F107獨立看門狗時單片機不斷復位
【匯總整理】STM32F107板資料及μC/OS的例程軟件
如何對STM32F103/STM32F107系列單片機進行MODBUS移植呢
POS機的工作原理與基于Cortex M3芯片的嵌入式POS機系統設計
![<b class='flag-5'>POS</b><b class='flag-5'>機</b>的工作原理與基于Cortex M3芯片的<b class='flag-5'>嵌入式</b><b class='flag-5'>POS</b><b class='flag-5'>機</b><b class='flag-5'>系統</b>設計](https://file.elecfans.com/web2/M00/4A/17/pYYBAGKhvJaAMLeTAABMsS_Yzf0178.png)
使用STM32F107單片機控制CH451數碼管左移顯示鍵碼值
![使用<b class='flag-5'>STM32F107</b><b class='flag-5'>單片機</b>控制CH451數碼管左移顯示鍵碼值](https://file.elecfans.com/web1/M00/85/5A/pIYBAFxmIsaAZX0KAAZozi59FjM102.png)
單片機與嵌入式區別
![<b class='flag-5'>單片機</b>與<b class='flag-5'>嵌入式</b>區別](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機or嵌入式linux
![<b class='flag-5'>單片機</b>or<b class='flag-5'>嵌入式</b>linux](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論