電子點餐點菜系統_第1頁
電子點餐點菜系統_第2頁
電子點餐點菜系統_第3頁
電子點餐點菜系統_第4頁
電子點餐點菜系統_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除理科畢業論文(設計)排版模式教務處編制1 / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除分類號密級UDC編號算中砰筑火警本科畢業論文(設計)題目電子點菜系統院(系)專業年級學生姓名學號指導教師二O一。年五月華中師范大學學位論文原創性聲明本人鄭重聲明:所呈交的學位論文是本人在導師指導下獨立進行研究工作所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經發表或撰寫的成果作品。本人完全意識到本聲明的法律后果由本人承擔。學位論文作者簽名:日期:年月日O學位論文版權使用授權書本學位論文作者完全了解

2、學校有關保障、使用學位論文的規定,同意學校保留并向有關學位論文管理部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權省級優秀學士學位論文評選機構將本學位論文的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文.本學位論文屬于1、保密口,在年解密后適用本授權書。2、不保密口。(請在以上相應方框內打“)資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除學位論文作者簽名:日期:年月日# / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除導師簽名:日期:年月日4 / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪

3、除目錄內容摘要1關鍵詞1Abstract1KeyWords11.系統概述與設計原理2lo1該系統概述2lo2系統框圖2lo3系統設計原理32 .硬件電路設計與計算42o1AT89c51部分42o224cl024總線部分7資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除2o3液晶顯和鍵盤矩陣部示部分83 .系統設計流程113 .1硬件部分113o2軟件部分124 .小結31參考文獻32致謝336 / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除內容摘要:本電子點菜系統采用AT89c51單片機控制,處理數據并驅動液晶屏來實現對數據的現實。主要過程如下:利用鍵盤輸入對菜號的選

4、擇,然后將選擇菜號,傳送給單片機進行數據處理,從24cl024存儲芯片中提取菜名數據信息,并通過液晶屏將提取菜名數據信息顯示出來,最后通過串口傳輸到電腦上面。關鍵詞:AT89c51單片機24cl024存儲芯片12864液晶屏鍵盤矩陣Abstract:Electronicorderingdevice,thekeyis24C1024andAT89C51twochips,which24C1024usedtostoreallthefood,sinformation,throughtheAT89C51,theinformationwillbetransmittedtotheLCDmenu.However

5、,theyneedcustomerstochoosegooddishes,themenuwillbeautomaticallystoredintheAT89C51,andthencanbedirectlyconnectedtothecomputerthroughtheserialportwillbetransferredtothedatabasemenu,store,anddisplayandprintitout。TheAT89S52ismainlyusedtocontrol24C1024anddatatransferbetweentheliquidcrystal,liquidcrystald

6、isplaypartandtheserialcommunicationpart。IsthecoreofblockboardoHewasfiredthroughtheClanguageprogramintotheoKeywords:AT89C51Microcontroller24C1024memorychipsl2864LCDKeyboardmatrix1 / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除1系統概述與設計原理lo1該系統概述隨著人們的生活水平提高,餐飲業的發展也越來越迅猛。對于人滿為患的酒店來說,確保快速、準確的點單是十分必要的,這就需要科學技術做堅強的后盾.在這

7、種情況下,電子點菜系統便應運而生,該系統是一款應用于中大型餐廳,方便顧客和服務員點菜的系統。它打破了傳統點菜的方式,顧客只需通過手中小巧的電子點菜器就可以隨意點到自己需要的菜肴,并且方便酒店隨時刷新菜譜,為消費者提供最新的美食信息。電子點菜系統不僅滿足了現代人對快節奏的需要,而且時尚、新穎。相信使用電子點菜系統的酒店肯定備受消費者的青睞.電子點菜系統應用于中大型酒店,無需傳統菜單及服務生,顧客只需使用桌上提供的電子點菜器就可以隨意挑選自己想吃的菜品,精致小巧的點菜器配上適合眼睛感官視覺的四行中文液晶顯示器,免去了您頻繁翻閱傳統菜單的煩惱。用單片機技術設計、制造的點菜器控制系統,具有集成度高、功

8、能強、體積小、速度快、存儲量大、指令豐富,抗干擾性強,性能價格比高,通用性好,推廣范圍大,工作可靠,指示準確,易于匹配,使用壽命長,標準化系數高等一系列優勢和特點。1.2系統框圖6 / 41/AT89C51控制顯示;夜翳“方1.3系統設計原理包括:賬目管,理,編號表,菜iS,信BM置Q/I(24cl024芯片,調用菜單十二個按鍵式鍵盤矩陣,是讓顧客可以方便選擇菜名,同時可以輸入桌號。一個上翻和下翻鍵方便顧客瀏覽更多的菜系,一個確定鍵確認顧客點的菜肴,還有一個按鍵是選擇。在電子點菜器上,主要是24C1024和AT89c51兩塊芯片,其中24cl024用來存儲所有菜名信息,通過AT89c51,將菜

9、譜信息傳輸給液晶顯示。但顧客選擇好自己需要的菜品后,菜單將自動存儲到AT89c51中,再可以通過串口與電腦直接相連,將菜單傳輸到數據庫中進行存儲,并顯示、打印出來。而AT89c51主要是用來控制24cl024與液晶之間數據傳輸,液晶顯示部分以及串口通訊部分。是整塊板的核心部分。他是通過C語言程序燒制進去的。在顧客點菜過程中,顧客可以通過字母按鍵對菜單進行分類,找出符合自己口味的菜品類。若顧客還想點到固定的菜肴,可以直接通過輸入菜名拼音首字母,即可獲取菜肴名。全部點完按完成鍵,上方的中文液晶屏將清晰顯示謝謝惠顧和請輸入桌號等信息,顧客只需控制按鍵就可以點到自己所需的菜肴,既方便,乂省事。點菜完成

10、后,服務生可以通過電子點菜器上的半口傳輸點菜信息到總服務臺上的電腦中,電腦再對信息加以分類存儲、打印,這樣避免了傳統點菜的手寫誤差,也方便顧客結賬和餐廳管理。2硬件電路設計與計算2。1AT89c51單片機2。lo1描述AT89c51是美國ATMEL公司生產的低電壓,高性能CM0S8位單片機,片內含4Kbytes的快速可擦寫的只讀程序存儲器(PEROM)和128bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS51產品指令系統,片內置通用8位中央處理器(CPU)和flish存儲單元,功能強大AT89c51單片機可為您提供許多高性價比的應

11、用場合,可靈活應用于各種控制領域。AT89c51提供以下標準功能:4K字節flish閃遞存儲器,128字節內部RAM,32個I/O口線,兩個16位定時/計數器,一個5向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89c51可降至OHZ的靜態邏輯操作,并支持兩種軟件可選的節電工作模式.空閑方式停止CPU的工作,但允許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位.2。L2電路圖R2 n.7P3 O - n r腳功能說明:Vcc:電源電壓。GND:地.P0口:P0口是一組8位漏極開路

12、型雙向I/O口,也即地址/數據總線復位口。作為輸出口用時.,每位能吸收電流的方式驅動8個邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1,通過內部的上拉電阻把端口拉到高電平,此時可做熟出口。做輸出口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(lil).資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除P2口:P2是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫通過內部地山拉電

13、阻把端口拉到高電平,此時可作為輸出口,作輸出口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(lil)oP3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路.對P3口寫入“1”時,他們被內部上拉電阻拉高并可作為輸出口。做輸出端時.,被外部拉低的P3口將用上拉電阻輸出電流(lil)oP3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表:端口引腳第二功能P3c0rxd(串行輸入口)P3.1txd(串行輸出口)P3.2.into(外中斷0)P3.3,inti(外中斷1)P3c4to(定時/計數器0)

14、P3c5ti(定時/計數器DP3c6(外部數據存儲器寫選通)P3c7'RD(外部數據存儲器讀選通)RST:復位輸入.當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址所存允許)輸出脈沖用于所存地址的低8位字節。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖.PSEN:程序存儲允許(¥SEN)輸出是外部程序存儲器的讀選通信號,當AT89c51由外部程序存儲器取指令(或數據)時,

15、每個機器周期兩個TSE1有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,這兩次有效的TSEN信號不出現。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是;如果加密位LB1被編程,復位時內部會鎖存EA端狀態.XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸出端。XTAL2:振蕩器反相放大器的輸出端。P89c51特殊功能寄存器。2.224C1024部分(I2C總線技術)2.2.112c總線工作原理總線的構成及信號類型:12c總線是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據.在CFU與被控IC

16、之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,12c總線上并接的每一模塊電路既是主控器(或被控器),乂是發送器(或接收器),這取決于它所要完成的功能.CPU發出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比度、充度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關。12c總線在傳送數據過程中共有三種類型信號,它們分別是:開始信號、結束信號和應答信號

17、。開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據.結束信號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送數據。應答信號:接收數據的IC在接收到8bit數據后,向發送數據的IC發出特定的低電平脈沖,表示已收到數據。CPU向受控單元發出一個信號后,等待受控單元發出一個應答信號,CPU接收到應答信號后,根據實際情況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單元出現故障。這些信號中,起始信號是必需的,結束信號和應答信號,都可以不要。目前有很多半導體集成電路上都集成了12c接口。帶有12c接口的單片機有:CYGNAL的C8051F0XX系列,PHILIPS

18、P87LPC7XX系列,MICROCHIP的PIC16c6XX系列等。很多外圍器件如存儲器、監控芯片等也提供12c接口。2.2o212c總線操作12c規程運用主/從雙向通訊。器件發送數據到總線上,則定義為發送器,器件接收數據則定義為接收器。主器件和從器件都可以工作于接收和發送狀態。總線必須由主器件(通常為微控制器)控制,主器件產生串行時鐘(SCL)控制總線的傳輸方向,并產生起始和停止條件.SDA線上的數據狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態的改變被用來表示起始和停止條件.控制字節:在起始條件之后,必須是器件的控制字節,其中高四位為器件類型識別符(不同的芯片類型

19、有不同的定義,EEPROM一般應為1010),接著三位為片選,最后一位為讀寫位,當為1時為讀操作,為0時為寫操作。寫操作:寫操作分為字節寫和頁面寫兩種操作,對于頁面寫根據芯片的一次裝載的字節不同有所不同。讀操作:讀操作有三種基本操作:當前地址讀、隨機讀和順序讀。圖4給出的是順序讀的時序圖.應當注意的是:最后一個讀操作的第9個時鐘周期不是“不關心”。為了結束讀操作,主機必須在第9個周期間發出停止條件或者在第9個時鐘周期內保持SDA為高電平、然后發出停止條件.2.2。 3主要功能在我這個作品中,由于單片機本身存儲控件很小,所以24cl024芯片的主要作為一塊存儲芯片使用的。作用就是存儲菜譜信息,用

20、戶操作按鍵選擇在液晶屏上顯示的菜名信息全部是通過讀取24cl024芯片中的菜譜數據。同時24cl024芯片還要實時接收Csharp軟件對菜譜的更新.2o312864液晶屏和鍵盤矩陣2.3。 112864液晶屏簡介帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為12864,內置8192個16*16點漢字,和128個16*8點ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示84行1616點陣的漢字.也可完成圖形顯示。低電壓低功耗是其乂一顯著特

21、點。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊.基本特性:1 .低電源電壓(VDD:+3o0+5.5V2 .顯示分辨率:128X64點3 .內置漢字字庫,提供8192個16X16點陣漢字(簡繁體可選)4o內置128個16X8點陣字符5。2MHz時鐘頻率6.顯示方式:STN、半透、正顯7o驅動方式:1/32DUTY,1/5BIAS7o視角方向:6點8o背光方式:側部高亮白色LED,功耗僅為普通LED的1/5-1/109o通訊方式:串行、并口可選10o內置DC-DC轉換電路,無需外加負壓Ho無需

22、片選信號,簡化軟件設計12.工作溫度:0-+55C,存儲溫度:-20一+60C 忙標志:BFBF標志提供內部工作情況。BF二1表示模塊在進行內部操作,此時模塊不接受外部指令和數據.BF=0時,模塊為準備狀態,隨時可接受外部指令和數據。利用STATUSRD指令,可以將BF讀到DB7總線,從而檢驗模塊之工作狀態. 字型產生ROM(CGROM)字型產生ROM(CGROM)提供8192個此觸發器是用于模塊屏幕顯示開和關的控制。DFF二1為開顯示(DISPLAYON),DDRAM的內容就顯示在屏幕上,DFF二。為關顯示(DISPLAYOFF)oDFF的狀態是指令DISPLAYON/OFF和RST信號控制

23、的。 顯示數據RAM(DDRAM)模塊內部顯示數據RAM提供64義2個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當寫入顯示數據RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在0000H0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個)將選擇CGRAM的自定義字型,02H7FH的編碼中將選擇半角英數字的字型,至于A1以上的編碼將自動的結合下一個位元組,組成兩個位元組的編碼形成中文字型的編碼BIG5(A140

24、D75F),GB(A1A0F7FFH). 字型產生RAM(CGRAM)字型產生RAM提供圖象定義(造字)功能,可以提供四組16X16點的自定義圖象空間,使用者可以將內部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。 地址計數器AC地址計數器是用來貯存DDRAM/CGRAM之一的地址,它可由設定指令暫存器來改變,之后只要讀取或是寫入DDRAM/CGRAM的值時,地址計數器的值就會自動加一,當RS為“0”時而R/W為“1”時,地址計數器的值會被讀取至UDB6DBO中. 光標/閃爍控制電路此模塊提供硬體光標及閃爍控制電路,由地址計數器的值來指

25、定DDRAM中的光標或閃爍位置2. 3.2液晶部分主要功能液晶部分主要就是顯示功能。將按鍵對菜譜的操作顯示出來,同時為了方便客人點菜,還要將客人點菜信息和消費情況顯示出來供客人預覽,等客人確定后在傳送到Csharp軟件中去。2 .3.3鍵盤部分主要功能十二個按鍵式鍵盤矩陣,是讓顧客可以方便選擇菜名,同時可以輸入桌號。一個上翻和一個下翻鍵方便顧客瀏覽更多的菜系,一個確定鍵確認顧客點的菜肴,還有一個按鍵是選擇.顧客可以通過字母按鍵對菜單進行分類,找出符合自己口味的菜品類。若顧客還想點到固定的菜肴,可以直接通過輸入菜名拼音首字母,即可獲取菜肴名。12864液晶屏主要是顯示作用,把在鍵盤上的種種操作都

26、通過液晶屏顯示出來,方便顧客使用。3 .系統設計流程3.1 硬件部分3。1。1硬件部分功能簡介單片機硬件部分包括:鍵盤矩陣,12863液晶屏,24cl024存儲芯片,AT89c51芯片.硬件功能:硬件部分包括電子點菜電路板和一個4*4的鍵盤矩陣,通過控制電路板上的按鍵通過單片機使液晶顯示自己需要的信息,并保存在單片機中,還有MAX232串口驅動芯片用來驅動吊口,然后就可以通過串口輸入或輸出信息,并保存到C#數據庫中去。硬件部分還包含包括電子點菜器電路板的設計及焊接,24C1024芯片,AT89c51芯片,液晶,串口等部分。其中液晶顯示上我選擇的是分部顯示的原則,就是將我想顯示的信息預先存儲在我

27、選好的位置上,不同按鍵按下觸發不同內容顯示在液晶上,還有個難點就是要將使用者所選擇的菜記錄下來,我原本的設想是想把所選擇的菜名和菜價用一個數組了,可8052的存儲空間太小如果點的太多就根本無法存儲.于是我想到了另一種辦法,就是記錄菜名號的方法,我在C#發送菜譜時給每一道菜加上一個唯一固定編號一起放送到24C1024中去,當客人點菜時我就用一個數組來存儲被點菜的編號,這樣就大大降低了對存儲空間的使用也提高了數據傳輸的安全性。在一個就是對菜的搜索問題,客人有時想點自己喜歡的菜,在點菜器中翻找太麻煩,他可以自己輸入菜的索引從而尋找自己想要點的菜,做搜索在C#上很好做但在單片機上時很難做到的,因為單片

28、機空間小,沒有現成的控件使用,也不能針對數據庫進行操作。我用的辦法是將顧客所按按鍵記錄下來當顧客點擊查詢時將得到按鍵索引和24C1024固定位置的到的菜名索引進行對比,如果相同就從24C1024的相應位置取出菜名和菜價顯示在液晶上,這就要求數據存放要做嚴格要求。再就是每次點完都要記錄菜價,這就要求再點菜我確定是必須同時記錄所選菜在24C13 / 41資料內容僅供您學習參考,如有不當之處,請聯系改正或者刪除1024中存儲的位置,再在這個基礎上查詢菜價進行記錄保存,以便傳輸到C#進行保存和查詢。3. Io2硬件電路圖通過串口與電腦相連相互傳送數據。單片機通過P0口控制液晶顯示,通過PI口控制24c

29、l024芯片存儲數據,通過串口將菜譜數據寫入到24cl024芯片中去,同時調用24cl024芯片數據顯示到液晶屏中。按鍵部分圖略。按鍵選擇菜名,客人最后確認后通過串口回傳到PC中。3o2軟件部分3。2.1軟件功能簡介Csharp軟件程序后臺軟件部分:C#用于后臺程序,酒店內部添加刪除菜名及菜名索引,并將顧客所點菜顯示在C#上;數據庫應用與保存菜譜表,桌號消費統計(桌號,總消費,時間),查詢視圖。軟件功能:包括c,c#,數據庫三大部分.其中C用于收集菜譜和存儲,用于顧客查找,瀏覽菜譜并對菜譜進行選擇,查看和統計消費總價,并且回傳顧客消費信息;C#用于后臺程序,酒店內部添加刪除菜名及菜名索引,并將

30、顧客所點菜顯示在C#上;數據庫應用與保存菜譜表,桌號消費統計(桌號,總消費,時間),查詢視圖.在就是串口的數據收發,由于我在顯示和搜索時對數據的格式有很高要求,所以在用串口傳輸數據時在傳輸前必須要對數據進行嚴格的格式轉換。在接受數據時,因為接受的數據有很多種,所以在接受時要對數據進行判斷然后再進行分類存儲。3.2.2軟件流程3。2o 3軟件主要代碼Csharp后臺控制部分:菜譜管理:namespace點菜publicpartialclass菜譜管理_當前時間:Form(public菜譜管理當前時間0(InitializeComponent();)privatevoidForml_Load(ob

31、jectsender,EventArgse)(Refresh_Phone_List(”);)voidRefresh_Phone_List(stringliereConditon)(listViewl.Items.Clear();dbClassldbl=newdbClassl();stringscond=nselect*from所有菜名信息視圖”;if(WhereConditon!=”“)scond+二"where"+WhereConditon+”"DataTabledt=dbl.GetRecords(scond);向列表視圖中添加所有的相關號碼記錄for(inti

32、=0:i(dt.Rows.Count;i+)(stringsubitem=dtoRowsi”菜名”。ToString(),dt.RowsEi”類型”.ToString(),dt.Rowsi"時價”.ToString(),);listViewl.ItemsoAdd(newListViewItem(subitem);“stringstr=vprovider=microsoft.jetooledbo4,0;datasource二菜譜管理mdb”;privatevoidbuttonl_添力口_Click(objectsender,EventArgse)33 / 41dbClassldbl=n

33、ewdbClassl();菜譜修改newfornFnew菜譜修改();if(newformoShowDialog()=DialogResultoOK)(01eDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con.CreateCommand();cmdo(0111111&11(1丁6*1=":111561'1:11110菜譜(分類號,菜名,時價,菜名縮寫)values(>+newform.cmh+v','"+newform<>caiming+','

34、;,z+newfornioshijia+,+newform.caimmgsuoxie+);con.Open();cmdoExecuteNonQuery();con.Close();Forml_Load(sender,e);)privatevoidbutton|_Click(objectsender,EventArgse)(for(inti=listViewloSelectedltemsoCount-1;i)=0:i)(OleDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con<>CreateCommand();cmd

35、.CommandText二deletefrom菜譜where菜名=,+listViewl.Selectedltemsli.Text+"';con。Open();cmdoExecuteNonQuery();con.Close();listViewloItems.Clear();Forml_Load(sender,e);privatevoidbuttonl_Click(objectsender,EventArgse)(if(listViewloSelectedltems.Count=l)(菜譜修改cfornFnew菜譜修改();cformocaiming=listViewl.Se

36、lectedlterns0.SubItems0oText;cformoshijia=Convert.Tolntl6(listViewloSelectedItemsO.SubItems2.Text);if(cform.ShowDialog()=DialogResult.OK)(OleDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con.CreateCommand();cmd.CommandText=Mupdate菜譜setl時價二'+cform.shijia+'where菜名=,z/+listViewl.Selec

37、tedltems0。SubIterns0.Text+“'";cono0pen();cmd.ExecuteNonQuery();con。Close();listViewloItems.Clear();Forml-Load(sender,e);)privatevoidtextBoxl_TextChanged(objectsender,EventArgse)(Refresh_Phone_List(n菜名縮寫like'%v+textBoxl.TextoTrim()+"%')privatevoidForml_FormClosing(objectsender,F

38、ormClosingEventArgse)(if(MessageBoXoShow("你真的要退出?,確認,MessageBoxButtonsoOKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)=DialogResultoCancel)(e<>Cancel=true;)privatevoidbuttonJL點菜器寫入菜譜_Click(objectsender,EventArgse)serialPortl.Open();啟用發送數據表記錄到串口的函數。Write_Menu_T0_IIC_24C10

39、24();/serialPortloClose();)boolSP_Ready=false:publicintj=0;intcount=0;voidWrite_Menu_T0_IIC_24C1024()(菜譜傳輸pass=new菜譜傳輸();pass.Show();intj;/I01eDbConnectionconn=new01eDbConnection(z,provider=microsoft.jet.oledb.4o0;datasource=菜譜管理.mdb");conn.Open();01eDbDataAdapterodapr=new01eDbDataAdapter("

40、;select火from菜譜orderby編號”,conn);/3DataTab1edt=newDataTab1e();odapr.Fill(dt);/4訪問所有表行,并發送串口.byteBuffer=newbyte24;for(inti=0;i<dtoRows<>Count;i+)(j=。;序號,分類號,名稱,價格,簡記4-2-10-4-5byte匚fl二Encoding。DefaultoGetBytes(dt.RowsEi”編號”.ToString();byteLf3=EncodingoDefault.GetBytes(dtoRowsi菜名”ToString();byte

41、f4=EncodingoDefault.GetBytes(dtoRowsi“時價”.ToString();bytef5=Encoding.DefaultoGetBytes(dtoRowsi“菜名縮寫"。ToString();passocm=dt.RowsEi”菜名。ToString();將字節緩沖全部清為空格.for(j=0;j<24;j+)Bufferj=0x20;for(j=0;j(fl.Length;j+)Bufferj=flj;for(j=0;j(f3.Length;j+)Bufferj+4=f3j;for(j=0:j(f4.Length:j+)Bufferj+14=f

42、4j;for(j=0;j<f5oLength;j+)Bufferj+18=f5j;Buffer23=(byte)('r);將所有字段內容分解到字節緩沖后,發送Buffer緩沖.serialPortl.Write(Buffer,0,BufferoLength);SP_Ready=false;count+=l;如串口未就緒則等待.。OO.OO.O.Application.DoEvents();while(!SP_Ready);)if(count=dtoRows.Count)(passocn=count;serialPortl.WriteLine(n-");pass,fnr”

43、完成發送”;count=O:)privatevoidserialPortl_DataReceived(objectsender,System.10.PortSoSerialDataReceivedEventArgse)(接受顧客消費信息guest=new接受顧客消費信息();已點菜diancai=new已點菜();stringrs=serialPortloReadLine();stringaccept=rs;stringERecv_MCU_Menu_Info=acceptoSplit(newchar'I');if(rs="Ready!”)(SP_Ready=true;

44、)if(Recv_MCU_Menu_Info0=a)(guest.gu_infor=rs;serialPortl.Close();guestoShowDialog();)if(Recv_MCU_Menu_Info0=b)diancaioCNOSET=rs;serialPortloClose();diancai.ShowDialog();privatevoicQ|ToolStripMenuIteni_Click(objectsender,EventArgse)(buttonl_添加_Click(sender,e);)privatevoid®WrToolStripMenuItem_Cli

45、ck(objectsender,EventArgse)(buttonl_Click(sender,e);)privatevoid冊ij除ToolStripMenuItem_Click(objectsender,EventArgse)(button.刪除_Click(sender,e);)privatevoid向點菜器寫入菜譜ToolStripMenuItem_Click(objectsender,EventArgse)button.向點菜器寫入菜譜_Click(sender,e);)privatevoid數據備份ToolStripMenuItem_Click(objectsender,Even

46、tArgse)(,備份compress=new備份();compress.ShowDialog();)privatevoid從點菜器接受菜單ToolStripMenuItem_Click(objectsender,EventArgse)(if(!serialPortloIsOpen)serialPortloOpen();serialPortl.WriteLine("+");)privatevoidbutton_向從點菜器接受菜單_Click(objectsender,EventArgse)(向從點菜器接受菜單ToolStripMenuItem_Click(sender,e)

47、;privatevoid接受點菜菜譜ToolStripMenuItem_Click(objectsender,EventArgse)(serialPortl.Open();serialPortloWriteLine("*");)privatevoidbutton2_Click(objectsender,EventArgse)(接受點菜菜譜ToolStripMenuItem_Click(sender,e);)數據傳輸:namespace點菜publicpartialclass菜譜傳輸:Form(public菜譜傳輸()(InitializeComponent();)publi

48、cintcn=O;publicstringcm,fm;privatevoid菜譜傳輸_Load(objectsender,EventArgse)()intt=0;privatevoidtimerl_Tick(objectsender,EventArgse)(if(cn=0)(t+=29;if(t)100)t=0;progressBarl.Value=t;textBox_菜名。Text=cm;else(progressBarl.Visible=false;timerloEnabled=false;timer2.Enabled=true;)intx=0;privatevoidtimer2_Tick

49、(objectsender,EventArgse)(x+:textBox_菜名.Text=fm;if(x>2)(timer2.Enabled=false;this.Close();)c語言硬件控制部分:/*>k大*火火火*火*火*/*/*上下翻動菜名文/*/*/*火*火火火*水*水大*火*大*大*大火火*/voidLCD_up_down()(ucharj,1=一1;if(KeyNo=9)(Pl=0x0F;while(Pl!=0x0F);g一;l=f;if(f=0)g二2;LCD_Col42;else)if(KeyNo=10)(Pl=OxOF;while(Pl!=OxOF);x+;g

50、+;l=f;if(f=2)(g二0:LCD_Col+;f二0;LCD=0;elsef+;)if(1!=1)(1cd_wcmd(up_down1);for(j=0;j<2;j+)lcd_wdat(DIS6j);1=1;lcd_wcmd(up_downf);for(j=0:j(2:j+)lcd_wdat(DIS5j);)/*水,k*火火*火火*火*火火火*火*按鍵控制并顯示按鍵文*火*大火*火*火*/voidKey_col_KeyNo()(if(KeyNo=9IKeyNo=10)LCD_up_down();else(如果是新按鍵if(Pre_Keyo!=Keyo)(TRO=1;Pre_Key

51、No=KeyNo;Inner_idx=O:t+;s+;否則按下的是同位按鍵else(短暫時間范圍內的重復按鍵if(tSpan<=40)Inner_idx=(Inner_idx+1)%strlen(KeyPad_CharsKeyXo);)else同一按鍵間隔超時(Timeout)(Inner_idx=O;t+;s+;tSpan=0;if(s)4)(for(i=0;i<5;i+)data_lcdi=DIS6l;s二一1;delay(20);data_lcds=KeyPad_CharsKeyNoInnejidx;記錄按鍵if(xl=0)lcd_wcmd(0x98);for(i=0;i&l

52、t;5;i+)lcd_wdat(data_lcdi_);xl=0;)else(lcd_wcmd(0x8e);for(i=0;i<5;i+)lcd_wdat(data_lcdi);)從24cl024接收多字節/ucharRecString(ucharSlave,ulongMem_address,uchar*BuffenucharN)(uchari,page;讀取時slave設為Oxal,寫時為OxaOuintaddrl6;一片24C1024的空間為128K,地址位共17位,其最高位對應設備地址中的P0位page=(uchar)(Mem_address»16)&0x0000

53、0001);page<<=1;在設備地址后是16位的字地址addrl6=(uint)(Mem_address&0x0000FFFF);Start();發送器件地址(含頁地址P0位)if(!SendByte(Slavelpage)return(0);先發高字節,后發低字節if(!SendByte(uchar)(addrl6>>8)return(0);if(!SendByte(uchar)(addrl6)return(0);Start();器件地址(讀)if(!SendByte(SlaveI0x01)return(0);for(i=0;i<N1;i+)(接收數

54、據Bufferi=RecByte();發送應答位ACK();)接收最后一位BufferNl=RecByte();發送非應答NO_ACK();Stop();)/向24cl024寫多字節/ucharWriteString(ucharSlave,ulongMeni_addressAichar*BiiffenucharN)uchari,page;讀取時slave設為Oxa1,寫時為OxaOuintaddrl6;一片24C1024的空間為128K,地址位共17位,其最高位對應設備地址中的P0位page=(uchar)(Mem_address>>16)&0x00000001);page<<=1;在設備地址后是16位的字地址addrl6=(uint)(Mem_address&OxOOOOFFFF);Start();發送器件地址(含頁地址P0位)if(!SendByte(Sl

溫馨提示

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

評論

0/150

提交評論