簡易超市收銀機(jī)采用AT89C55WD單片機(jī)為核心控制器_第1頁
簡易超市收銀機(jī)采用AT89C55WD單片機(jī)為核心控制器_第2頁
簡易超市收銀機(jī)采用AT89C55WD單片機(jī)為核心控制器_第3頁
簡易超市收銀機(jī)采用AT89C55WD單片機(jī)為核心控制器_第4頁
簡易超市收銀機(jī)采用AT89C55WD單片機(jī)為核心控制器_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PAGE PAGE 50簡易超市收銀機(jī)摘要:系統(tǒng)采用AT89C55WD單片機(jī)為核心控制器,完成了簡易超市收銀機(jī)的各項(xiàng)功能要求。實(shí)現(xiàn)了通過4*4鍵盤輸入商品信息等收銀機(jī)最基本的功能。本系統(tǒng)的鍵盤支持?jǐn)?shù)字輸入,26個(gè)英文字母的輸入,功能強(qiáng)大,性能穩(wěn)定。用靈敏的數(shù)字溫度傳感器DS18B20完成溫度測量,精確的日歷時(shí)鐘芯片DS1302作為實(shí)時(shí)時(shí)鐘源。同時(shí)我們用AT24C512極大擴(kuò)充了系統(tǒng)存儲(chǔ)空間,可以充分滿足存儲(chǔ)1000個(gè)商品價(jià)目表和2000個(gè)銷售日志的要求。收銀機(jī)的液晶顯示采用RT240128GB液晶屏,可滾動(dòng)顯示輸入的購物條目信息,并利用FYD12864-0402B液晶顯示器來突出顯示最后總價(jià),

2、方便顧客看到,使我們的設(shè)計(jì)作品更加成熟。關(guān)鍵詞:AT89C55WD 鍵盤 AT24C512 液晶Abstract :The system takes the AT89C55WD as the core controller to complete the simple supermarket cash register each function request. It can realize the most basic functions of cash register ,such as reading in many kinds of sales information from4*4

3、 keyboard. This systems keyboard supports English as well as digital input.The function is formidable and the performance is stable. Use the accurate digital temperature sensor DS18B20 to report to survey the temperature. Use the precise calendar clock chip DS1302 to be the real-time clock source. S

4、imultaneously we used the AT24C512 to expand the systems memory storage space which enormously satisfy fully the space request of 1000 commodity price lists as well as 2000 shopping diary. Our cash registers LCD screen is the RT240128GB. We make it roll the shopping clause information that the demon

5、stration scans. The final total price is also displayed by theFYD12864-0402B. The convenient for customer to see the result causes our design work to be maturer. Keywords: AT89C55WDkeyboardAT24C512LCDTOC o 1-3 h z u HYPERLINK l _Toc216504452 1.方案論證 PAGEREF _Toc216504452 h 3 HYPERLINK l _Toc216504453

6、 1.1 控制器模塊選型 PAGEREF _Toc216504453 h 3 HYPERLINK l _Toc216504454 1.2 鍵盤模塊方案選擇 PAGEREF _Toc216504454 h 3 HYPERLINK l _Toc216504455 1.3 液晶模塊方案選擇 PAGEREF _Toc216504455 h 3 HYPERLINK l _Toc216504456 1.4 存儲(chǔ)模塊方案選擇 PAGEREF _Toc216504456 h 3 HYPERLINK l _Toc216504457 1.5 溫度測量模塊方案選擇 PAGEREF _Toc216504457 h 3

7、 HYPERLINK l _Toc216504458 2詳細(xì)硬件電路設(shè)計(jì) PAGEREF _Toc216504458 h 4 HYPERLINK l _Toc216504459 2.1 單片機(jī)之間的通信 PAGEREF _Toc216504459 h 4 HYPERLINK l _Toc216504460 2.2 液晶顯示設(shè)計(jì) PAGEREF _Toc216504460 h 5 HYPERLINK l _Toc216504461 2.2.1 主液晶 PAGEREF _Toc216504461 h 5 HYPERLINK l _Toc216504462 2.2.2 從液晶 PAGEREF _To

8、c216504462 h 6 HYPERLINK l _Toc216504463 2.3 鍵盤輸入設(shè)計(jì) PAGEREF _Toc216504463 h 6 HYPERLINK l _Toc216504464 2.4 存儲(chǔ)模塊接口電路設(shè)計(jì) PAGEREF _Toc216504464 h 6 HYPERLINK l _Toc216504465 2.5 溫度接口電路設(shè)計(jì) PAGEREF _Toc216504465 h 7 HYPERLINK l _Toc216504466 2.6 日歷時(shí)鐘接口電路設(shè)計(jì) PAGEREF _Toc216504466 h 7 HYPERLINK l _Toc2165044

9、67 3. 系統(tǒng)軟件設(shè)計(jì) PAGEREF _Toc216504467 h 8 HYPERLINK l _Toc216504468 3.1 主程序流程: PAGEREF _Toc216504468 h 8 HYPERLINK l _Toc216504469 3.2 通信流程 PAGEREF _Toc216504469 h 9 HYPERLINK l _Toc216504470 3.2.1 主機(jī)通信流程 PAGEREF _Toc216504470 h 9 HYPERLINK l _Toc216504471 3.2.2 從機(jī)通信流程 PAGEREF _Toc216504471 h 9 HYPERLI

10、NK l _Toc216504472 3.3 銷售程序流程 PAGEREF _Toc216504472 h 10 HYPERLINK l _Toc216504473 3.4 存儲(chǔ)程序流程 PAGEREF _Toc216504473 h 11 HYPERLINK l _Toc216504474 3.5 系統(tǒng)各級輸入流程 PAGEREF _Toc216504474 h 12 HYPERLINK l _Toc216504475 3.5.1 最底層鍵盤流程 PAGEREF _Toc216504475 h 12 HYPERLINK l _Toc216504476 3.5.2 條形碼輸入流程: PAGER

11、EF _Toc216504476 h 13 HYPERLINK l _Toc216504477 3.5.3 商品數(shù)量輸入流程 PAGEREF _Toc216504477 h 14 HYPERLINK l _Toc216504478 3.5.4 商品名稱輸入流程 PAGEREF _Toc216504478 h 14 HYPERLINK l _Toc216504479 3.6 時(shí)鐘溫度程序流程 PAGEREF _Toc216504479 h 15 HYPERLINK l _Toc216504480 3.7 密碼修改流程 PAGEREF _Toc216504480 h 16 HYPERLINK l

12、_Toc216504481 3.8 時(shí)間修改流程 PAGEREF _Toc216504481 h 17 HYPERLINK l _Toc216504482 3.9 銷售日志查看流程圖 PAGEREF _Toc216504482 h 18 HYPERLINK l _Toc216504483 4. 理論分析與計(jì)算 PAGEREF _Toc216504483 h 19 HYPERLINK l _Toc216504484 4.1 AT24C512存儲(chǔ)空間的分配 PAGEREF _Toc216504484 h 19 HYPERLINK l _Toc216504485 4.2 DS18B20溫度數(shù)據(jù)的讀取

13、與轉(zhuǎn)換 PAGEREF _Toc216504485 h 19 HYPERLINK l _Toc216504486 5. 測試 PAGEREF _Toc216504486 h 20 HYPERLINK l _Toc216504487 5.1 開機(jī)屏測試 PAGEREF _Toc216504487 h 20 HYPERLINK l _Toc216504488 5.2 存貨測試及銷售測試 PAGEREF _Toc216504488 h 20 HYPERLINK l _Toc216504489 5.3 銷售日志測試 PAGEREF _Toc216504489 h 22 HYPERLINK l _Toc

14、216504490 5.4 時(shí)間溫度測試 PAGEREF _Toc216504490 h 23 HYPERLINK l _Toc216504491 6. 結(jié)論 PAGEREF _Toc216504491 h 23 HYPERLINK l _Toc216504492 7. 附錄 PAGEREF _Toc216504492 h 24 HYPERLINK l _Toc216504493 7.1 硬件清單 PAGEREF _Toc216504493 h 24 HYPERLINK l _Toc216504494 7.2 資源利用 PAGEREF _Toc216504494 h 24 HYPERLINK

15、l _Toc216504495 7.3 參考文獻(xiàn) PAGEREF _Toc216504495 h 241.方案論證1.1 控制器模塊選型方案一:采用SPCE061A單片機(jī)做主控制芯片。61單片機(jī)自帶語音功能,可用資源豐富,且靈活的C語言編寫實(shí)現(xiàn)容易,可擴(kuò)展功能多,可以同時(shí)實(shí)現(xiàn)語音和顯示。 方案二:采用傳統(tǒng)的8位的51系列單片機(jī)作為系統(tǒng)控制器。AT89C55WD單片機(jī)片內(nèi)具有20K字節(jié)程序存儲(chǔ)器、256字節(jié)數(shù)據(jù)存儲(chǔ)器、3個(gè)16位定時(shí)/計(jì)數(shù)器,8個(gè)中斷、1個(gè)全雙工串行口等資源。無論是從內(nèi)部構(gòu)造還是編程方面51系列單片機(jī)都相對簡單,容易掌握和使用。由于本系統(tǒng)使用51能實(shí)現(xiàn)全部功能且51價(jià)格低廉,所以

16、我們選擇了方案二。1.2 鍵盤模塊方案選擇方案一:采用傳統(tǒng)的掃描鍵盤,傳統(tǒng)的掃描鍵盤需要占用較多的IO口,且程序繁瑣,不利于系統(tǒng)程序的設(shè)計(jì)。方案二:采用由74LS148和74LS00組成的數(shù)字鍵盤,兩片74LS148和一片74LS00構(gòu)成4*4的編碼鍵盤,優(yōu)點(diǎn)是只需要占用4個(gè)IO口,且返回值即為數(shù)字量,即節(jié)省了系統(tǒng)的硬件資源,又節(jié)省了系統(tǒng)的軟件資源。所以我們選擇方案二。1.3 液晶模塊方案選擇方案一:采用點(diǎn)陣顯示完成系統(tǒng)的顯示功能,點(diǎn)陣顯示具有亮度高,壽命長,功耗低,性能溫度等優(yōu)點(diǎn),同時(shí)能顯示漢字。方案二:采用液晶顯示,液晶顯示器體積小,功耗小,畫面穩(wěn)定無閃爍,顯示驅(qū)動(dòng)簡單,方便顯示多行漢字,

17、可調(diào)對比度,特別是自帶字庫的液晶顯示器非常利于漢字的顯示。超市收銀機(jī)需要顯示大量的商品信息其中包括大量的漢字信息,所以我們選擇方案二。1.4 存儲(chǔ)模塊方案選擇方案一:采用傳統(tǒng)的RAM或者ROM,但是它們或者沒有掉電保護(hù)功能,或者數(shù)據(jù)不能在線修改,且占用較多的數(shù)據(jù)端口,特別是容量越大,占用的端口就越多。且隨著商品數(shù)量的增加,擴(kuò)展很不方便。一旦系統(tǒng)成型,以后修改就十分的不便。方案二:采用IIC接口的AT24C512作為商品信息的存儲(chǔ)器,IIC接口規(guī)范,占用資源很少,具有掉電保護(hù)的作用,多達(dá)64KByte容量,可擴(kuò)展至64K*4 Byte容量,非常利于程序編寫,且AT24C512中的數(shù)據(jù)可以通過程序

18、在線修改,方便程序隨時(shí)修改商品的信息,或增加新的商品。所以我們選擇了方案二。1.5溫度測量模塊方案選擇方案一:采用PT100作為測溫電路的溫度傳感器。PT100傳感器是利用鉑電阻的阻值隨溫度變化而變化、并呈一定函數(shù)關(guān)系的特性來進(jìn)行測溫的,具有抗振動(dòng)、穩(wěn)定性好、準(zhǔn)確度高、耐高壓等優(yōu)點(diǎn)。但使用起來比較復(fù)雜。方案二:采用DS18B20作為測溫電路的溫度傳感器。DS18B20的數(shù)字溫度輸出通過“一線”總線的方式來傳送數(shù)據(jù)。它在測溫精度、轉(zhuǎn)換時(shí)間、傳輸距離、分辨率等方面比其他溫度傳感器有了很大的進(jìn)步,且可直接輸出數(shù)字量,直接送單片機(jī)處理。通過比較,DS18B20直接輸出數(shù)字溫度值,不需要校正,因此選擇方

19、案二。綜上所述,我們選擇以8位的ATMLEL 89C55WD作為收銀機(jī)的控制核心,擴(kuò)展鍵盤、擴(kuò)展RT240128GB中文點(diǎn)陣液晶顯示屏實(shí)現(xiàn)漢字及圖形顯示、使用AT24C512擴(kuò)展系統(tǒng)存儲(chǔ)資源等實(shí)現(xiàn)簡易超市收銀機(jī)的制作。2詳細(xì)硬件電路設(shè)計(jì)根據(jù)系統(tǒng)的要求,超市收銀機(jī)的系統(tǒng)硬件結(jié)構(gòu)如圖1所示。圖1 系統(tǒng)結(jié)構(gòu)圖2.1 單片機(jī)之間的通信主單片機(jī)AT89C55WD與從單片機(jī)AT89S52之間的通信是通過串行口來完成的,通信過程中兩個(gè)單片機(jī)保持相同的工作方式(方式一)和相同的波特率,作為從單片機(jī)AT89S52,只需要接收來自主單片機(jī)AT89C55WD的數(shù)據(jù)完成控制主液晶的顯示即可,單片機(jī)之間的通信連接如圖2

20、:圖2 單片機(jī)之間的通信2.2 液晶顯示設(shè)計(jì)2.2.1 主液晶RT240128GB中文字庫液晶顯示模塊是一個(gè)英文文字與繪圖模式的點(diǎn)矩陣液晶顯示模塊,內(nèi)建512KByte的ROM字型碼,可以顯示中文字型,數(shù)字符號,英日歐文等字母,并且內(nèi)建雙圖層(two page)的顯示內(nèi)存。當(dāng)字型為16*16時(shí),可秀出15*8個(gè)全角文字,在字型方面有多種字號可供選擇使用:16*16 32*32 48*48 64*64及不同比例的混合顯示模式,同時(shí)內(nèi)建的512KByet SRAM提供了自行造字的功能。主液晶與從單片機(jī)的連接如圖3左邊:其中4腳與19腳是調(diào)節(jié)顯示的對比度的,若接可調(diào)電阻則對比度可調(diào),若接固定電阻則對

21、比度固定。P2口是作為數(shù)據(jù)口與單片機(jī)傳輸數(shù)據(jù),5、6、8、18腳分別為液晶的功能引腳與單片機(jī)相連。20、21腳為液晶提供背光電源。圖3 主從液晶電路圖2.2.2 從液晶FYD12864-0402B是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為12864, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示84行1616點(diǎn)陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類

22、型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。從液晶與主單片機(jī)的連接電路圖如圖3右邊。為了節(jié)約主單片機(jī)的端口資源,我們通過串行通信方式讓主單片機(jī)與從液晶通信,其中3腳與18腳為從液晶對比度調(diào)節(jié)端口,若接可調(diào)電阻則對比度可以調(diào)節(jié)。5、6腳分別與單片機(jī)的P3.3、P3.2相連為單片機(jī)提供串行數(shù)據(jù)。2.3 鍵盤輸入設(shè)計(jì)我們采用了由兩片74148及一片7400構(gòu)成的4*4數(shù)字鍵盤,每一個(gè)74148的輸入都是8個(gè)按鍵的一端,這樣兩片74148即可連接16個(gè)鍵盤,7400有4個(gè)并行的輸出端口,與主單片機(jī)的P1口的高四位相接。所以有16種

23、輸出狀態(tài),每一種狀態(tài)即代表一個(gè)按鍵被按下。電路圖如圖4所示該鍵盤的優(yōu)點(diǎn)是節(jié)約了系統(tǒng)的資源,且方便編寫程序,由于超市收銀機(jī)需要輸入拼音,所以我們采用英文輸入法,即用9個(gè)按鍵實(shí)現(xiàn)輸入26個(gè)英文字母的方法。圖4鍵盤電路2.4 存儲(chǔ)模塊接口電路設(shè)計(jì)AT24C512是ATMEL公司生產(chǎn)的一款高性能的串行存儲(chǔ)器,內(nèi)有64KByte的存儲(chǔ)單元,128字節(jié)的頁寫模式(128-Byte page write mode(partial page writes allowed),最多可擴(kuò)展至64K*4 Byte,能存儲(chǔ)達(dá)8000個(gè)商品的信息。由于51單片機(jī)內(nèi)部沒有IIC總線,所以我們用普通的IO口模擬了IIC總線的

24、時(shí)序,AT24C512與單片機(jī)的接口示例圖如圖5:其中串行存儲(chǔ)器的數(shù)據(jù)端口與單片機(jī)P1.0、P1.1相接傳輸串行數(shù)據(jù)。串行存儲(chǔ)器的1、2腳為串行存儲(chǔ)器的地址端口。圖5存儲(chǔ)器電路2.5 溫度接口電路設(shè)計(jì)DS18B20只需要占用控制芯片的一根IO口,用于傳輸數(shù)字溫度數(shù)據(jù)。能夠檢測的溫度范圍寬達(dá):-55125,并且在-10-80之間精度為0.5,能夠滿足一般家庭的要求。每一個(gè)DS18B20都有一個(gè)唯一的64位的序列號,這樣就方便了在一條IO口上擴(kuò)展多個(gè)DS18B20。P1.5用于傳輸溫度數(shù)據(jù)。如圖6圖6 溫度傳感器電路2.6 日歷時(shí)鐘接口電路設(shè)計(jì)DS1302慢速充電時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31個(gè)

25、字節(jié)的靜態(tài)RAM。它經(jīng)過一個(gè)簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒分時(shí)日周月和年等信息。對于小于31天的月,月末的日期自動(dòng)進(jìn)行調(diào)整,還包括了閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24小時(shí)或帶AM/PM的12小時(shí)格式。使用同步串行通信,簡化了DS1302與微處理器的通信。單片機(jī)通過時(shí)鐘芯片的5、6、7腳提供時(shí)鐘并讀取1302的時(shí)間數(shù)據(jù)。如圖7圖7 時(shí)間芯片電路3. 系統(tǒng)軟件設(shè)計(jì)3.1 主程序流程:開機(jī)即按照圖8所示流程執(zhí)行程序,沒有按鍵之前主機(jī)一直處于待機(jī)界面(時(shí)間溫度界面),一旦有鍵盤被觸發(fā),即進(jìn)入了系統(tǒng)登陸界面,等待用戶輸入賬號和密碼,密碼正確方能進(jìn)入系統(tǒng)菜單界面,系統(tǒng)菜單界面下有6

26、個(gè)菜單選項(xiàng),不同的鍵值即進(jìn)入了不同的功能界面。圖8 主程序流程3.2 通信流程3.2.1 主機(jī)通信流程一旦發(fā)送數(shù)據(jù)了,主機(jī)將連續(xù)發(fā)送35個(gè)字節(jié)的數(shù)據(jù)給從機(jī),其中第一1個(gè)字節(jié)為標(biāo)志位,用于當(dāng)從機(jī)接收到了數(shù)據(jù)之后識(shí)別應(yīng)調(diào)用哪一個(gè)函數(shù)。程序框圖如圖9所示。圖9 主機(jī)通信流程3.2.2從機(jī)通信流程從機(jī)接收到主機(jī)的數(shù)據(jù)之后,根據(jù)第一個(gè)字節(jié)的數(shù)據(jù)進(jìn)行判斷選擇該執(zhí)行的程序。程序框圖如圖10所示。圖 10 從機(jī)通信流程3.3 銷售程序流程銷售流程即牽涉到主液晶的控制,又與從液晶的控制有關(guān),一旦用戶輸入商品的條形碼之后,主機(jī)即開始查詢,如果查詢到則顯示相應(yīng)的信息并自動(dòng)對商品進(jìn)行編號,若沒有查詢到商品,則顯示提示

27、信息。顯示查詢到的商品信息之后等待用戶輸入需要購買此件商品的數(shù)量,輸入數(shù)量并確認(rèn)之后,存儲(chǔ)商品的信息以及銷售時(shí)間至第二塊存儲(chǔ)器,作為銷售日志的信息。主顯示器即進(jìn)入等待輸入下一個(gè)商品的狀態(tài)。此時(shí)從液晶顯示了購買商品的單價(jià)以及件數(shù),并計(jì)算出此件商品的總價(jià)且顯示出來。程序流程如圖11所示。圖11 銷售流程3.4存儲(chǔ)程序流程如果商店新到了一種商品,用戶可以通過鍵盤手動(dòng)輸入該商品的相應(yīng)信息到收銀機(jī)中并保存,程序流程如圖12,首先等待用戶輸入商品的條形碼,如果已經(jīng)存在此件商品則顯示相應(yīng)信息并等待用戶修改商品的價(jià)格以及商品的數(shù)量。如果沒有此件商品則等待用戶輸入商品的所有信息,包括商品名稱、價(jià)格、數(shù)量,輸入完

28、之后可以保存也可以放棄,保存之后,在銷售商品時(shí)即可以看到修改之后的商品信息。程序流程如圖12所示。通過對鍵盤的擴(kuò)展我們實(shí)現(xiàn)了輸入商品的英文名稱,其實(shí)現(xiàn)方法在下面的商品名稱輸入框圖中給出。圖12 存儲(chǔ)流程3.5 系統(tǒng)各級輸入流程3.5.1 最底層 鍵盤流程這個(gè)鍵盤是系統(tǒng)所有有輸入的地方都要調(diào)用的最底層的的鍵盤驅(qū)動(dòng)程序,此程序返回每個(gè)鍵盤的數(shù)字編碼,程序流程圖如圖13所示,以后的所有輸入程序就根據(jù)調(diào)用這個(gè)程序所得到的數(shù)字編碼來執(zhí)行相應(yīng)的程序。圖 13 鍵盤流程3.5.2 條形碼輸入流程:這個(gè)部分實(shí)現(xiàn)了商品13位條形碼的輸入,輸入過程中如果有錯(cuò)誤可以通過光標(biāo)移動(dòng)按鍵移動(dòng)到錯(cuò)誤的地方進(jìn)行修改,一旦確定

29、按鍵被按下,條形碼輸入結(jié)束,主機(jī)開始查詢輸入的條形碼。程序框圖如圖14所示。圖14 條形碼輸入流程3.5.3 商品數(shù)量輸入流程數(shù)量輸入流程與條形碼輸入流程是類似的,所以在此就不列出3.5.4 商品名稱輸入流程這里我們只能用10個(gè)數(shù)字鍵盤輸入商品的英文名稱。拼音與數(shù)字是共用鍵盤的(就像手機(jī)的鍵盤一樣)如圖15,默認(rèn)情況下鍵盤是拼音,只有當(dāng)選擇一組拼音中的某一個(gè)時(shí),鍵盤才被當(dāng)成數(shù)字鍵盤,因?yàn)橛械陌存I能代表3個(gè)拼音,有的卻能代表4個(gè)拼音,所以選擇拼音的時(shí)候,若選擇數(shù)字=4,需要判斷選擇的是否是拼音,若是拼音則顯示出來,若不是則顯示默認(rèn)的拼音,程序流程如圖16所示。圖 15 鍵盤分布圖圖16 商品名稱

30、輸入流程3.6 時(shí)鐘溫度程序流程溫度傳感器我們采用的是DS18B20,可達(dá)12位的數(shù)字值,分辨率為0.0625C。DS18B20測時(shí)鐘溫程序流程如圖17:圖17 時(shí)間溫度流程3.7 密碼修改流程進(jìn)入系統(tǒng)之后可以對本賬號的系統(tǒng)密碼進(jìn)行重新修改。修改的過程當(dāng)中,需要用戶輸入系統(tǒng)的舊密碼,正確之后才可以輸入系統(tǒng)的新密碼,為了防止輸入新密碼的時(shí)候輸入出現(xiàn)差錯(cuò),用戶需要連續(xù)輸入兩次新密碼,兩次一樣之后才算修改成功。程序框圖如圖18所示。圖18 密碼修改流程3.8 時(shí)間修改流程 通過方向鍵,和數(shù)字鍵,人為的輸入*年*月*日 *時(shí)*分*秒 星期* 數(shù)值。最后按下確認(rèn)鍵保存時(shí)間,返回到系統(tǒng)菜單界面。 在輸入過

31、程中,已通過程序自動(dòng)校正輸入數(shù)值的合法性。例如:當(dāng)光標(biāo)定位于時(shí)的十位時(shí)候,若輸入數(shù)值大于2該位自動(dòng)校正為合法的最大值2。當(dāng)光標(biāo)定位于時(shí)的個(gè)位時(shí),若十位為2則輸入的最大合法值自動(dòng)校正為3.如此通過程序控制,自動(dòng)校正其他所有數(shù)值的輸入合法性。程序框圖如圖19圖 19 時(shí)間修改流程3.9 銷售日志查看流程圖我們在銷售商品的時(shí)候,會(huì)對銷售的信息進(jìn)行存儲(chǔ),包括商品的的名稱,購買數(shù)量,以及銷售時(shí)間。所以當(dāng)從系統(tǒng)菜單界面進(jìn)入銷售日志界面時(shí),只需要調(diào)出顯示即可。在銷售日志界面我們可以通過上一頁或者下一頁查看最近的3800多個(gè)商品銷售信息,當(dāng)超過這個(gè)范圍的時(shí)候系統(tǒng)自動(dòng)覆蓋最早的銷售日志。程序框圖如圖20圖 20

32、 銷售日志流程4. 理論分析與計(jì)算4.1 AT24C512存儲(chǔ)空間的分配 每一個(gè)商品的信息占用8K的AT24C512中的32個(gè)字節(jié),所以一塊AT24C512能夠大約存儲(chǔ)2000個(gè)商品的信息,但是我們可以擴(kuò)展達(dá)4塊AT24C64,所以能存儲(chǔ)多達(dá)8000多個(gè)商品的信息,同時(shí)不會(huì)多占用單片機(jī)的任何資源。這樣就可以滿足一般小型超市的要求了。即:64K*4/32=81924.2 DS18B20溫度數(shù)據(jù)的讀取與轉(zhuǎn)換在DS18B20中,溫度是用兩個(gè)字節(jié)的數(shù)據(jù)來存儲(chǔ)的,如下圖所示:圖21溫度數(shù)據(jù)格式由于用于一般家庭的溫度顯示,所以我們省去了小數(shù)部分的溫度,只讀取的整數(shù)部分的溫度數(shù)值進(jìn)行計(jì)算,在讀取的過程中,我

33、們先讀取存儲(chǔ)溫度數(shù)據(jù)寄存器的低字節(jié)的高四位,然后再與高字節(jié)的低四位組合成一個(gè)字節(jié),最后把該字節(jié)轉(zhuǎn)化成十進(jìn)制數(shù)就是具體的溫度數(shù)值。 5. 測試5.1 開機(jī)屏測試開機(jī)之后主液晶即顯示待機(jī)界面入圖21所示,從液晶顯示歡迎界面如圖22所示。圖22 主液晶待機(jī)畫面圖23 從液晶待機(jī)畫面5.2 存貨測試及銷售測試銷售商品時(shí)大液晶的銷售界面如下圖所示,因240*128液晶只能顯示8行漢字,當(dāng)超過6件商品信息時(shí),我們實(shí)現(xiàn)了刷新屏幕從第一行重新顯示的功能。如圖23所示圖24 銷售畫面存儲(chǔ)商品時(shí)大液晶的畫面如下圖所示,我們實(shí)現(xiàn)了英文名稱的輸入及存儲(chǔ)。如圖24所示圖25 存儲(chǔ)畫面銷售時(shí),當(dāng)輸入完商品的條形碼后,從液

34、晶即顯示商品的單價(jià),同時(shí)還可以顯示同一件商品所買的件數(shù),并且計(jì)算除所有所買商品的總價(jià)。如圖25所示圖26 從液晶銷售畫面結(jié)賬后主液晶的畫面如圖26所示:圖27 主液晶結(jié)賬畫面結(jié)賬后從液晶的畫面如圖27所示:圖28 從液晶結(jié)賬畫面5.3 銷售日志測試 本部分最終實(shí)現(xiàn)可以在銷售記錄存儲(chǔ)空間里面任意查詢我想要的銷售記錄。銷售記錄里面存儲(chǔ)的信息是:商品名稱、數(shù)量、單價(jià)、日期及時(shí)間信息。如圖28圖29 銷售日志畫面5.4 時(shí)間溫度測試主機(jī)開機(jī)之后即進(jìn)入時(shí)間溫度界面如下圖29,在該界面下,觸發(fā)任意按鍵即進(jìn)入了登陸系統(tǒng)界面。圖30 時(shí)間溫度界面溫度測試第一次第二次第三次第四次實(shí)際溫度1818.617.819

35、.2測試溫度18181819結(jié)論:溫度測量基本正確。5.5測試分析通過一系列的測試,我們已經(jīng)較好的完成了超市收銀機(jī)的所有功能,能夠完成時(shí)間的修改以及自動(dòng)校正,實(shí)現(xiàn)了系統(tǒng)密碼的修改并保存,準(zhǔn)確的計(jì)算出了用戶購買商品的價(jià)格,并可以通過銷售日志查看以前的銷售記錄,同時(shí)實(shí)現(xiàn)了新到商品的存儲(chǔ)以及英文的,但是由于時(shí)間的限制沒有能夠?qū)崿F(xiàn)通過鍵盤輸入漢字的功能。由于用于一般的超市,所以對溫度要求不高,我們忽略了溫度的小數(shù)部分,如果能夠加上條形碼掃描儀和打印機(jī),超市收銀機(jī)的功能將會(huì)更加的完善。6. 結(jié)論本設(shè)計(jì)實(shí)現(xiàn)了題目基本功能和發(fā)揮功能的全部內(nèi)容,但由于時(shí)間和硬件資源的限制,個(gè)別指標(biāo)做得不是非常完善。我們設(shè)計(jì)的

36、簡易超市收銀機(jī)實(shí)現(xiàn)了如下功能 :1.可以設(shè)置大于1000個(gè)商品價(jià)目表(PLU),并通過AT24C512實(shí)現(xiàn)了掉電保護(hù);2.商品的數(shù)字編號、品名(數(shù)字或英文字母)、單價(jià)等信息可鍵盤輸入;3.鍵盤實(shí)現(xiàn)了英文、數(shù)字輸入;可以實(shí)現(xiàn)商品的條形碼及商品名稱的輸入;4.顯示器可以通過鍵盤切換顯示環(huán)境溫度以及當(dāng)前的時(shí)間;5.實(shí)現(xiàn)了多賬號密碼的功能,且可以隨時(shí)修改系統(tǒng)密碼,安全可靠實(shí)用;6.實(shí)現(xiàn)了3800個(gè)商品銷售日志的存儲(chǔ),并可以隨時(shí)調(diào)出顯示商品銷售數(shù)量、時(shí)間等信息;7.能夠修改已存商品信息,實(shí)現(xiàn)商品數(shù)量、價(jià)格等信息的修改;8.銷售時(shí)可以自動(dòng)對購買商品進(jìn)行編號,且可以自動(dòng)翻屏以便顯示更多的商品信息。7. 附錄

37、7.1 硬件清單AT89S52單片機(jī)最小系統(tǒng)AT89C55WD 6264 74LS373RT240128GB液晶顯示器、FTD12864-0402B液晶顯示器4*4數(shù)字鍵盤一個(gè)AT24C512存儲(chǔ)芯片兩個(gè)數(shù)字溫度傳感器DS18B205V直流穩(wěn)壓源兩個(gè)7.2 資源利用C52 端口: P0 6264的數(shù)據(jù)與低地址端口 P1.0-P1.3 數(shù)字鍵盤端口 P1.4-P1.5 AT24C512的串行口 P1.6-P1.7未用 P2.0-P2.4 6264的高地址端口 P2.5-P2.7 未用 P3.0-P3.1-P3.4 與S52單片機(jī)的通信. P3.2-P3.3 FYD12864-0402B的串行數(shù)據(jù)

38、端口 P3.5-P3.7 未用S52端口: P0 未用 P1.0-P1.5 RT240128GB的功能端口 P1.6 未用 P2 RT240128GB的數(shù)據(jù)端口 P3.0-P3.1-P1.7 與C52單片機(jī)的通信 P3.2-P3.7 未用7.3 參考文獻(xiàn)余錫存 曹國華 單片機(jī)原理及接口技術(shù) 西安電子科技大學(xué)出版社楊頌華 等 數(shù)字電子技術(shù)基礎(chǔ) 西安電子科技大學(xué)出版社 陳濤 單片機(jī)應(yīng)用及C51程序設(shè)計(jì) 機(jī)械工業(yè)出版社譚浩強(qiáng)C語音程序設(shè)計(jì)(第二版) 清華大學(xué)出版社7.4 部分程序清單存儲(chǔ)部分:void store() while(keyval!=b) /按b鍵退出存儲(chǔ)畫面bit k;uchar te

39、mp_position,j;uchar in_isbn13,write_name8,write_price7,write_num4;uchar read_isbn13; for(j=0;j13;j+) in_isbnj=0 x20;for(j=0;j8;j+) write_namej=0 x20;for(j=0;j7;j+) write_pricej=0 x20;for(j=0;j4;j+) write_numj=0 x20;CLRLCD( );PrintStr(0,4,splr,12); /編號PrintStr(2,0,pinming,6); /品名PrintStr(3,0,danjia,5

40、); /單價(jià)PrintStr(4,0,shuliang,6); /數(shù)量PrintStr(7,13,queren,4); /確認(rèn)PrintStr(7,3,quxiao,4); /確認(rèn)/光標(biāo)在此閃爍提示收銀員輸入ISBN碼PrintStr(1,3,xiahua,13);PrintStr(1,0,isbn,5); /ISBN/光標(biāo)在此閃爍提示收銀員輸入ISBN碼 in_random(1,6,18,in_isbn);rd_24512(read,30,1);/每用到merch_count前 要從新讀出 merch_count=read0; for(temp_position=1;temp_positio

41、nmerch_count;temp_position+) rd_24512(read_isbn,temp_position5,13);if(strncmp(in_isbn,read_isbn,13)=0)rd_24512(write_name,(temp_position5)+13,8); /若ISBN存在則顯示其商品信息 并且修改數(shù)量 按確認(rèn)就寫入新的數(shù)量rd_24512(write_price,(temp_position5)+21,7); rd_24512(write_num,(temp_position=merch_count) / 如果不存在 LOCAL_XY(2,6); in_ra

42、ndchar(2,6,13,write_name);LOCAL_XY(3,6); in_price(3,6,12,write_price); LOCAL_XY(4,6);in_random(4,6,9,write_num); WRITE_COM(0 x10,0 x6c); /關(guān)閉光標(biāo) keyval=e; k=0; while(keyval!=a) k=k; if(k) WRITE_COM(0 x10,0 x4b);PrintStr(7,13,queren,4); WRITE_COM(0 x10,0 x6b);PrintStr(7,3,quxiao,4); /確認(rèn)ElseWRITE_COM(0

43、x10,0 x4b);PrintStr(7,3,quxiao,4); WRITE_COM(0 x10,0 x6b);PrintStr(7,13,queren,4); keyscan(); if(k) if(temp_position=merch_count) wr_2464(in_isbn,(temp_position5),13); wr_2464(write_name,(temp_position5)+13,8); wr_2464(write_price,(temp_position5)+21,7);wr_2464(write_num,(temp_position5)+28,4);merch

44、_count+; /商品數(shù)目加一read0=merch_count; /wr_2464(read,8190,1); /通過read數(shù)組寫入24c64 8190個(gè)單元 wr_2464(write_num,(temp_position5)+28,4); CLRLCD( ); PrintStr(3,1,xxrk,16); /提示信息已經(jīng)成功輸入 WRITE_COM(0 x10,0 x6c); /關(guān)閉光標(biāo) keyval=e; k=0; while(keyval!=a) k=k; if(k)WRITE_COM(0 x10,0 x4b);PrintStr(6,2,jixu,4); WRITE_COM(0

45、x10,0 x6b);PrintStr(6,10,tuichu,4); /確認(rèn)ElseWRITE_COM(0 x10,0 x4b);PrintStr(6,10,tuichu,4); WRITE_COM(0 x10,0 x6b);PrintStr(6,2,jixu,4); keyscan(); if(!k) keyval=b; WRITE_COM(0 x10,0 x6e); /打開光標(biāo) Else CLRLCD( ); PrintStr(3,1,xxcx,16); /提示信息已經(jīng)成功輸入 WRITE_COM(0 x10,0 x6c); /關(guān)閉光標(biāo) keyval=e; k=0; while(keyv

46、al!=a) k=k; if(k) WRITE_COM(0 x10,0 x4b);PrintStr(6,2,jixu,4); WRITE_COM(0 x10,0 x6b);PrintStr(6,10,tuichu,4); /確認(rèn)ElseWRITE_COM(0 x10,0 x4b);PrintStr(6,10,tuichu,4); WRITE_COM(0 x10,0 x6b);PrintStr(6,2,jixu,4); keyscan(); if(!k) keyval=b; 銷售部分:void sale() uchar in_isbn13,write_isbn13,write_name8,wri

47、te_price7,write_num4; uchar i,j; uchar localx; bit k ; uchar sale_count=0 x01; uchar *infor=該商品已經(jīng)失效; uchar temp7=0000000;/存儲(chǔ)現(xiàn)實(shí)總價(jià)的數(shù)組 uchar each_count2; uchar code bianhao =編號; /uchar code gukehao=顧客號:; uchar code next=Next; uchar code cont=結(jié)賬; for(j=0;j7;j+) tempj=0 x30; /每位顧客開始銷售時(shí)候 總價(jià)清零while(keyval!

48、=b)/b為結(jié)束鍵 結(jié)賬 localx=sale_count%6; if(!localx)localx=6; if(localx=1) CLRLCD( );PrintStr(0,0,bianhao,4); /編號PrintStr(0,3,pinming,4); /品名PrintStr(0,8,danjia,5); /單價(jià)PrintStr(0,13,shuliang,4); /數(shù)量 /光標(biāo)在此閃爍提示收銀員輸入ISBN碼for(j=0;j13;j+)in_isbnj=0;PrintStr(7,3,xiahua,13);PrintStr(7,0,isbn,5); /ISBN/光標(biāo)在此閃爍提示收銀員

49、輸入ISBN碼disponelinechar(1,0,danjia,4);WriteOneByte(0 x3a);disponelinechar(3,0,zongjia,6);WRITE_COM(0 x60,0 x01);/ 地址定位 顯示編號由賣的總類數(shù)量的十為百位決定 WRITE_COM(0 x70,localx4); /規(guī)定一個(gè)顧客不可能買100種商品 借助變量j實(shí)現(xiàn)j=(sale_count%100)/10;WRITE_DAT(j+0 x30); j=(sale_count%10);WRITE_DAT(j+0 x30); SetDDRAM_Add(14); /設(shè)定地址回到數(shù)量顯示的位置

50、 WriteOneByte(0 x20); /單價(jià)后面寫兩個(gè)空格覆蓋上次單價(jià)后的數(shù)量 WriteOneByte(0 x20); WriteOneByte(0 x20); WRITE_COM(0 x10,0 x6e); /打開光標(biāo) PrintStr(7,3,xiahua,13); /光標(biāo)在此閃爍提示收銀員輸入ISBN碼 PrintStr(7,0,isbn,5); /ISBN in_random(7,6,18,in_isbn);rd_24512(read,30,1);/每用到merch_count前 要從新讀出merch_count=read0; for(i=1;imerch_count;i+)

51、rd_24512(write_isbn,i5,13);if(strncmp(in_isbn,write_isbn,13)=0) rd_24512(write_name,(i5)+13,8); rd_24512(write_price,(i5)+21,7); rd_24512(write_num,(i5)+28,4); PrintStr(localx,3,write_name,8); help_disp(in_isbn,write_price); disponelinechar(1,3,in_isbn,6); PrintStr(localx,8,in_isbn,7); WRITE_DAT(0 x

52、20); WRITE_DAT(0 x20); WRITE_DAT(0 x20); WRITE_DAT(0 x20); j=1; keyscan();each_count0=0 x30;each_count1=0 x30; do if(keyval=a)each_count0=0 x30;each_count1=0 x31;LOCAL_XY(localx,26);WRITE_DAT(each_count1); else if(!keytype) each_countj=keyval+0 x30; if(j)LOCAL_XY(localx,26),WRITE_DAT(each_count1),j=

53、0;swap(each_count0,each_count1);PrintStr(localx,13,each_count,2); else swap(each_count0,each_count1); PrintStr(localx,13,each_count,2),j=1; keyscan(); if(keyval=c|keyval=b|keyval=d) keytype=0; keyval=0 x00; while(keyval!=a); if(keyval=a) /按確認(rèn)鍵 則統(tǒng)計(jì)總價(jià) 繼續(xù)下次輸入 conver(write_price,each_count,temp); SetDDR

54、AM_Add(14); /設(shè)定地址回到數(shù)量顯示的位置 WriteOneByte(0 x78); /控制 WriteOneByte(each_count0); /小液晶顯示單價(jià) * 數(shù)量的數(shù)量 WriteOneByte(each_count1);help_disp(in_isbn,temp);disponelinechar(3,3,in_isbn,6); keyval=e; k=0; while(keyval!=a) k=k; if(k) WRITE_COM(0 x10,0 x4b);PrintStr(7,13,next,4);WRITE_COM(0 x10,0 x6b);PrintStr(7,10,cont,4); /確認(rèn)Else WRITE_COM(0 x10,0 x4b);PrintStr(7,10,cont,4); WRITE_COM(0 x10,0 x6b);PrintStr(7,13,n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論