基于單片機(jī)的簡(jiǎn)易酒店點(diǎn)菜系統(tǒng)_第1頁(yè)
基于單片機(jī)的簡(jiǎn)易酒店點(diǎn)菜系統(tǒng)_第2頁(yè)
基于單片機(jī)的簡(jiǎn)易酒店點(diǎn)菜系統(tǒng)_第3頁(yè)
基于單片機(jī)的簡(jiǎn)易酒店點(diǎn)菜系統(tǒng)_第4頁(yè)
基于單片機(jī)的簡(jiǎn)易酒店點(diǎn)菜系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上第1章.設(shè)計(jì)總體思路與系統(tǒng)框圖1.1設(shè)計(jì)總體思路 根據(jù)設(shè)計(jì)要求我們可知酒店點(diǎn)菜終端系統(tǒng)由控制模塊,液晶顯示模塊,鍵盤模塊組成??刂颇K有80C51和80C52可供選擇,但考慮到程序占用的空間比較大,所以我選擇了80C52單片機(jī)。對(duì)于液晶顯示模塊我們這里采用的是LCD12864(64行128列組成)。對(duì)于鍵盤模塊由于只要用到三個(gè)鍵,故我們可以用三個(gè)按鍵分別來(lái)實(shí)現(xiàn)上移,確定,下移功能。再加以簡(jiǎn)單的輔助電路和C語(yǔ)言程序就可以構(gòu)成簡(jiǎn)單的酒店點(diǎn)菜終端系統(tǒng),在此,我們采用proteus軟件進(jìn)行仿真。1.2系統(tǒng)框圖按照設(shè)計(jì)思路,系統(tǒng)框圖如下:AT89C52AMPIRE128X64鍵

2、盤控制模塊圖一 系統(tǒng)框圖1.3系統(tǒng)顯示框圖將各模塊在Proteus仿真軟件中連接好后,點(diǎn)擊“運(yùn)行”,結(jié)合鍵盤上的“上移”、“確定”、“下移”鍵可以在LCD上看到開(kāi)機(jī)畫面、各系菜單以及其子菜單。顯示框圖如圖二。開(kāi)始 顯示作者名稱字樣返回湘菜粵菜蘇菜浙菜閩菜川菜魯菜各菜系子菜單顯示 點(diǎn)菜成功!圖二 顯示框圖第2章.單元函數(shù)模塊設(shè)計(jì)2.1 AT89C52單片機(jī)控制模塊 2.1.1AT89C52介紹 AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易

3、失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程。其將通用的微處理器和結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。2.1.2AT89C52管腳圖 AT89C52管腳圖如下: 圖三 AT89C52管腳圖2.1.3頭文件注解 在用c語(yǔ)言編程是往往第一行就是reg52.h或者其

4、他的自定義頭文件,系統(tǒng)編程將要使用到兩個(gè)頭文件,分別是reg52.h和code.h。下面就reg52.h頭文件作簡(jiǎn)單解釋,code.h頭文件的編寫主要是為了存放菜單中所要使用的漢字的字模,以便主程序調(diào)用,程序清單將在附錄中給出。程序的第一行是一個(gè)“文件包含”處理,所謂“文件包含”是指一個(gè)文件將另外一個(gè)文件的內(nèi)容全部包含進(jìn)來(lái)。程序中包含REG51.h頭文件的目的是為了要使用P1 (還有其他更多的符號(hào))這個(gè)符號(hào),即通知C 編譯器,程序中所寫的P1 是指80C51 單片機(jī)的P1 端口而不是其它變量。2.2鍵盤控制模塊2.2.1鍵盤功能本系統(tǒng)采用的是三個(gè)BUTTON分別實(shí)現(xiàn)“上移”,“確定”,“下移”

5、三個(gè)功能,有了這三個(gè)鍵我們就能實(shí)現(xiàn)菜單,子菜單,功能的進(jìn)入和返回。圖四 鍵盤控制模塊2.2.2鍵盤控制程序 程序中我定義了P3.0,P3.4,P3.7分別為“上移”,“確定”,“下移”三個(gè)功能按鍵。按鍵引腳的一端接單片機(jī),一端接低電平,當(dāng)單片機(jī)接收到某個(gè)端口的低電平是就表示拿個(gè)按鍵已經(jīng)按下。否則表示按鍵沒(méi)按下,為了更好的實(shí)現(xiàn)按鍵的準(zhǔn)確性我加入了消抖程序與松手檢測(cè)程序。按鍵判斷程序如下:void keyscan() /按鍵判斷 if(qd=0) delay(5); if(qd=0)while(!qd); n=1; if(sy=0) delay(5); if(sy=0)while(!sy); m+

6、;if(m>7)m=0; if(xy=0) delay(5); if(xy=0)while(!xy); m-;if(m=255)m=7; 2.3 LCD顯示模塊2.3.1 LCD12864功能介紹 AMPIRE128x64管腳一共18個(gè)(見(jiàn)圖五),CS1左半屏片選端,CS2右半屏片選端;VCC、GND就是電源、接地引腳,V0液晶顯示驅(qū)動(dòng)電壓,RS數(shù)據(jù)指令選擇信號(hào),H為數(shù)據(jù),L為指令,也叫D/I,即DATA和INSTRUCTIONS這兩個(gè)單詞的縮寫。R/W讀寫選擇信號(hào)。E為L(zhǎng)CD使能端,R/W為L(zhǎng)時(shí),E信號(hào)下降沿鎖存DB7-DB0;R/W為H時(shí),E為H,DDRAM數(shù)據(jù)讀到DB7-DB0,如

7、果只寫不讀的話可以接地處理。DB0-DB7數(shù)據(jù)傳輸端口。RST為復(fù)位信號(hào),-VOUT為液晶顯示驅(qū)動(dòng)電壓。2.3.2 LCD12864指令說(shuō)明 AMPIRE128x64共有7個(gè)指令,下面分別加以說(shuō)明:顯示開(kāi)關(guān) :0x3e 關(guān);0x3f開(kāi)(R/W=0,RS=0)。顯示起始行:0xc0+i , i取值0至63(R/W=0,RS=0)。設(shè)置DDRAM頁(yè)地址(X地址):0xb8+i,i取值0至7(R/W=0,RS=0),設(shè)置Y地址:0x40+i,i取值0至63(R/W=0,RS=0)。寫數(shù)據(jù):將數(shù)據(jù)線上的數(shù)據(jù)DB7-DB0寫到DDRAM 。Y地址指針自動(dòng)加1(R/W=0,RS=1)。讀數(shù)據(jù):將DDRAM

8、中的數(shù)據(jù)讀入1數(shù)據(jù)線DB7-DB0 。Y地址指針自動(dòng)加1(R/W=1,RS=1)。指令表如表一所示 表一 LCD12864指令表2.3.3 LCD驅(qū)動(dòng)程序驅(qū)動(dòng)程序如下:void CheckState()uchar dat;/狀態(tài)信息(判斷是否忙) RS=0; / 數(shù)據(jù)指令選擇,D/I(RS)=“L” ,表示 DB7DB0 為顯示指令數(shù)據(jù) RW=1; /R/W=“H” ,E=“H”數(shù)據(jù)被讀到DB7DB0 doDATA=0x00; EN=1;/EN下降沿dat=DATA; EN=0; dat=0x80 & dat; 僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào)) while(!(dat=0x

9、00); /*寫命令到LCD中*/SendCommandToLCD(uchar com)CheckState();/狀態(tài)檢查,LCD是否忙 RS=0; /向LCD發(fā)送命令。RS=0寫指令,RS=1寫數(shù)據(jù) RW=0;/R/W=“L” ,E=“HL”數(shù)據(jù)被寫到 IR 或 DR DATA=com; /com :命令 EN=1;/EN下降沿 EN=0;/*設(shè)置頁(yè) 0xb8是頁(yè)的首地址*/void Setpage(uchar page)page=0xb8|page; /1011 1xxx 0<=page<=7 設(shè)定頁(yè)地址-X 0-7,8行為一頁(yè)64/8=8,共8頁(yè) SendCommandTo

10、LCD(page); /*設(shè)定顯示開(kāi)始行,0xc0是行的首地址*/void SetStartLine(uchar startline) startline=0xc0|startline; /1100 0000 SendCommandToLCD(startline); /設(shè)置從哪行開(kāi)始:0-63,一般從0 行開(kāi)始顯示/*設(shè)定列地址-Y 0-63 ,0x40是列的首地址*/void SetColumn(uchar column)column=column &0x3f; /column最大值為64,越出 0=<column<=63 column= 0x40|column; /01

11、xx xxxx SendCommandToLCD(column); /*開(kāi)關(guān)顯示,0x3f是開(kāi)顯示,0x3e是關(guān)顯示*/void SetOnOff(uchar onoff) onoff=0x3e|onoff; /0011 111x,onoff只能為0或者1 SendCommandToLCD(onoff);/*寫顯示數(shù)據(jù) */void WriteByte(uchar dat)CheckState();/狀態(tài)檢查,LCD是否忙 RS=1; /RS=0寫指令,RS=1寫數(shù)據(jù) RW=0;/R/W=“L” ,E=“HL”數(shù)據(jù)被寫到 IR 或 DR DATA=dat;/dat:顯示數(shù)據(jù) EN=1; /EN

12、下降源 EN=0;/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/void SelectScreen(uchar screen) switch(screen) case 0: cs1=1;/全屏 cs2=1; break; case 1: cs1=1;/左屏 cs2=0; break; case 2: cs1=0;/右屏 cs2=1; break; /*清屏screen: 0-全屏,1-左屏,2-右屏*/void ClearScreen(uchar screen) uchar i,j; SelectScreen(screen); for(i=0;i<8;i+) /控制頁(yè)數(shù)0-

13、7,共8頁(yè) Setpage(i); for(j=0;j<64;j+) /控制列數(shù)0-63,共64列 SetColumn(j); WriteByte(0x00); /寫點(diǎn)內(nèi)容,列地址自動(dòng)加1 void InitLCD() /初始化LCD CheckState(); SelectScreen(0); SetOnOff(0); /關(guān)顯示 SelectScreen(0); SetOnOff(1); /開(kāi)顯示 SelectScreen(0); ClearScreen(0);/清屏 SetStartLine(0); /開(kāi)始行:0第3章.系統(tǒng)仿真與結(jié)果3.1 開(kāi)機(jī)顯示 利用proteus軟件仿真,點(diǎn)擊

14、運(yùn)行之后會(huì)顯示如下的開(kāi)機(jī)畫面。 圖五 開(kāi)機(jī)顯示畫面 圖中菜單為反白顏色,按下“確定”鍵后即可進(jìn)入菜單。3.2 主菜單顯示系統(tǒng)開(kāi)機(jī)后,按下“確定”鍵即可進(jìn)入主菜單。主菜單顯示如下: 圖六 主菜單顯示3.3 子菜單顯示 在子菜單中分別有幾道菜供顧客享用,當(dāng)顧客按下“上移”或“下移”鍵選中想要的菜系再按下“確定”鍵就可以進(jìn)入該菜系,再選擇自己想要的菜系按下“確定”鍵即可點(diǎn)菜成功。子菜單顯示如下: 圖七 子菜單顯示3.4 點(diǎn)菜成功顯示當(dāng)顧客選擇到自己想要吃的菜并按下“確定”鍵后就表示顧客點(diǎn)菜成功。點(diǎn)菜成功顯示如下: 圖八 點(diǎn)菜成功顯示當(dāng)顧客再次按下“確定”鍵后返回菜系菜單,并且已經(jīng)點(diǎn)過(guò)的菜會(huì)以一個(gè)鉤表

15、示。如下圖: 圖九 顯示已點(diǎn)菜第4章.總結(jié)與體會(huì) 短短兩周的專業(yè)設(shè)計(jì)結(jié)束了,回顧這兩周我的努力,我覺(jué)得我還是收獲蠻大的,通過(guò)這兩周的專業(yè)設(shè)計(jì),我對(duì)單片機(jī)有了更深的認(rèn)識(shí),對(duì)LCD12864有了更深入的了解,單片機(jī)其實(shí)說(shuō)簡(jiǎn)單點(diǎn)就是用軟件控制單片機(jī)各個(gè)腳的電平變化,但是實(shí)踐中還是挺有難度的,這次專業(yè)設(shè)計(jì)我接到的任務(wù)是做一個(gè)簡(jiǎn)易的酒店點(diǎn)菜終端系統(tǒng),剛開(kāi)始覺(jué)得挺有難度的,主要是我對(duì)LCD12864一無(wú)所知,但是經(jīng)過(guò)上網(wǎng)查找資料及通過(guò)看LCD12864的指導(dǎo)手冊(cè)終于弄懂了這個(gè)液晶顯示屏,其實(shí)一個(gè)看似簡(jiǎn)單的電路,要把他設(shè)計(jì)出來(lái)就比較困難了,這次設(shè)計(jì)我用的編程語(yǔ)言是C語(yǔ)言,其實(shí)單片機(jī)的C語(yǔ)言我通過(guò)看網(wǎng)上的視頻

16、還是有所了解。所以這次編程還算比較順利,剛開(kāi)始我只做了兩大的菜系,我想這其中的難點(diǎn)就是怎樣進(jìn)入各個(gè)子菜單及其返回以及光標(biāo)的上下移動(dòng),我的方法其實(shí)也挺簡(jiǎn)單,就是將選中的菜系字體取反白顯示出來(lái)。另一個(gè)難點(diǎn)就是鍵盤掃描了,剛開(kāi)始我出了點(diǎn)小狀況,就是按下確定鍵后不會(huì)進(jìn)入各個(gè)菜單,后來(lái)認(rèn)識(shí)思考之后才發(fā)現(xiàn)用!n代替就行了。每次按鍵按下n自動(dòng)取反,最后一個(gè)就是各個(gè)菜單的顯示比較難了,因?yàn)槟阋苿?dòng)一下就是一個(gè)狀態(tài),最后我經(jīng)過(guò)仔細(xì)的思考覺(jué)得用個(gè) switchcase語(yǔ)句一下子就出來(lái)了,雖然這樣會(huì)顯得程序比較復(fù)雜,但是我還沒(méi)有想到其他更好的簡(jiǎn)單辦法所以就用了這個(gè)。 通過(guò)這兩周的學(xué)習(xí),我學(xué)到了很多,畢竟自己也做出了一

17、點(diǎn)東西,蠻有成就感的,其實(shí)我也知道這只是冰山一角,要想真正的弄通單片機(jī),今后的學(xué)習(xí)道路還很漫長(zhǎng),我想我也會(huì)深深的記住這次課設(shè)給我的經(jīng)驗(yàn)與教訓(xùn),在今后的學(xué)習(xí)中一定要多思考,多實(shí)踐,那樣我才會(huì)真正有所成就。最后衷心感謝陳老師在這兩周對(duì)我的細(xì)心指導(dǎo)。附錄5.1 仿真電路圖5.2 程序清單#include <reg52.h>#include <intrins.h>#include <code.h>#define uint unsigned int#define uchar unsigned char#define DATA P0 /LCD12864數(shù)據(jù)線sbit s

18、y=P30;sbit qd=P34;sbit xy=P37;sbit RS=P20; / 數(shù)據(jù)指令 選擇sbit RW=P21; / 讀寫 選擇sbit EN=P22; / 讀寫使能sbit cs1=P23; / 片選1sbit cs2=P24; / 片選2void menuselect();void keyscan();void lucai();void dccg(uchar b);void lucai2();void chuancai();void sorry();void lucaia();uchar n,m,k;/*狀態(tài)檢查,LCD是否忙*/void CheckState()uchar

19、 dat;/狀態(tài)信息(判斷是否忙) RS=0; / 數(shù)據(jù)指令選擇,D/I(RS)=“L” ,表示 DB7DB0 為顯示指令數(shù)據(jù) RW=1; /R/W=“H” ,E=“H”數(shù)據(jù)被讀到DB7DB0 doDATA=0x00; EN=1;/EN下降沿dat=DATA; EN=0; dat=0x80 & dat; /僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào)) while(!(dat=0x00); /*寫命令到LCD中*/SendCommandToLCD(uchar com)CheckState();/狀態(tài)檢查,LCD是否忙 RS=0; /向LCD發(fā)送命令。RS=0寫指令,RS=1寫數(shù)據(jù) RW=

20、0;/R/W=“L” ,E=“HL”數(shù)據(jù)被寫到 IR 或 DR DATA=com; /com :命令 EN=1;/EN下降沿 EN=0;/*設(shè)置頁(yè) 0xb8是頁(yè)的首地址*/void Setpage(uchar page)page=0xb8|page; /1011 1xxx 0<=page<=7 設(shè)定頁(yè)地址-X 0-7,8行為一頁(yè)64/8=8,共8頁(yè) SendCommandToLCD(page); /*設(shè)定顯示開(kāi)始行,0xc0是行的首地址*/void SetStartLine(uchar startline) startline=0xc0|startline; /1100 0000

21、SendCommandToLCD(startline); /設(shè)置從哪行開(kāi)始:0-63,一般從0 行開(kāi)始顯示/*設(shè)定列地址-Y 0-63 ,0x40是列的首地址*/void SetColumn(uchar column)column=column &0x3f; /column最大值為64,越出 0=<column<=63 column= 0x40|column; /01xx xxxx SendCommandToLCD(column); /*開(kāi)關(guān)顯示,0x3f是開(kāi)顯示,0x3e是關(guān)顯示*/void SetOnOff(uchar onoff) onoff=0x3e|onoff;

22、/0011 111x,onoff只能為0或者1 SendCommandToLCD(onoff);/*寫顯示數(shù)據(jù) */void WriteByte(uchar dat)CheckState();/狀態(tài)檢查,LCD是否忙 RS=1; /RS=0寫指令,RS=1寫數(shù)據(jù) RW=0;/R/W=“L” ,E=“HL”數(shù)據(jù)被寫到 IR 或 DR DATA=dat;/dat:顯示數(shù)據(jù) EN=1; /EN下降源 EN=0;/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/void SelectScreen(uchar screen) switch(screen) case 0: cs1=1;/全屏 c

23、s2=1; break; case 1: cs1=1;/左屏 cs2=0; break; case 2: cs1=0;/右屏 cs2=1; break; /*清屏screen: 0-全屏,1-左屏,2-右屏*/void ClearScreen(uchar screen) uchar i,j; SelectScreen(screen); for(i=0;i<8;i+) /控制頁(yè)數(shù)0-7,共8頁(yè) Setpage(i); for(j=0;j<64;j+) /控制列數(shù)0-63,共64列 SetColumn(j); WriteByte(0x00); /寫點(diǎn)內(nèi)容,列地址自動(dòng)加1 /*延時(shí)程序*

24、/void delay(uint z)uint i,j; for(i=0; i<z; i+) for(j = 0; j < 110; j+);/*初始化LCD*/void InitLCD() CheckState(); SelectScreen(0); SetOnOff(0); /關(guān)顯示 SelectScreen(0); SetOnOff(1); /開(kāi)顯示 SelectScreen(0); ClearScreen(0);/清屏 SetStartLine(0); /開(kāi)始行:0/*顯示全角漢字*/void Display(uchar ss,uchar page,uchar column

25、,uchar number)int i;/選屏參數(shù),page選頁(yè)參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Setpage(page);/寫上半頁(yè) SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number); /i+32*number漢字的前16個(gè)數(shù)據(jù)輸出 Setpage(page+1); /寫下半頁(yè) SetColumn(column); /控制列 for(i=0;i<16;i+) /控制1

26、6列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個(gè)數(shù)據(jù)輸出 void Display2(uchar ss,uchar page,uchar column,uchar number)int i;/選屏參數(shù),page選頁(yè)參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Setpage(page);/寫上半頁(yè) SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hz

27、ki+32*number); /i+32*number漢字的前16個(gè)數(shù)據(jù)輸出 Setpage(page+1); /寫下半頁(yè) SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個(gè)數(shù)據(jù)輸出 void menu()uint i; while(!n) /顯示漢字 keyscan(); for(i=0;i<2;i+) Display(1,0,0+i*16,i);/*Display(選屏參數(shù)(cs1,cs2),page選頁(yè)參數(shù),column

28、選列參數(shù),number選第幾漢字輸出)*/Display(1,0,32+i*16,i+2);Display(2,0,64+i*16,i+4);Display(2,0,96+i*16,i+6);Display(1,2,0+i*16,i+8);Display(1,2,32+i*16,i+10);Display(2,2,64+i*16,12+i*5);Display(2,2,96+i*16,17);Display(1,4,0+i*16,17);Display(1,4,32+i*16,17);Display(2,4,64+i*16,17);Display(2,4,96+i*16,17);Display

29、(1,6,0+i*16,i+13);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,i+15); delay(5); n=0;menuselect();/*主函數(shù)*/void main()InitLCD();/初始12864menu();void menuselect() uint i;ClearScreen(0); while(!n) keyscan(); for(i=0;i<2;i+) switch(m%8)case 0:Display(1,0,0+i*16,30-i*17);Display(1,

30、0,32+i*16,19+i*6);Display(2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4);Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Display(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17)

31、;Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case 1:Display2(1,0,0+i*16,30-i*17);Display2(1,0,32+i*16,19+i*6);Display(2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4); Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Disp

32、lay(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case2:Display2(1,0,0+i*16,30-i*17);Display(1,0,32+i*16,19+i*6)Display2(2,0,64+i*16,20+i*5);Dis

33、play(2,0,96+i*16,21+i*4)Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Display(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);D

34、isplay(2,6,96+i*16,17);break;case 3:Display2(1,0,0+i*16,30-i*17);Display(1,0,32+i*16,19+i*6)Display(2,0,64+i*16,20+i*5);Display2(2,0,96+i*16,21+i*4)Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);、Display(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);D

35、isplay(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case 4:Display2(1,0,0+i*16,30-i*17);Display(1,0,32+i*16,19+i*6);Display(2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4)Display(1,2,0+i*16,17);Disp

36、lay(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Display2(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case 5:Display2(1,0,0

37、+i*16,30-i*17);Display(1,0,32+i*16,19+i*6)Display(2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4);Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Display(1,4,0+i*16,22+i*3);Display2(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+1

38、5);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case 6:Display2(1,0,0+i*16,30-i*17);Display(1,0,32+i*16,19+i*6)Display(2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4);Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Displa

39、y(2,2,96+i*16,17);Display(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display2(2,4,64+i*16,24+i*1);Display(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break;case 7:Display2(1,0,0+i*16,30-i*17);Display(1,0,32+i*16,19+i*6)Display(

40、2,0,64+i*16,20+i*5);Display(2,0,96+i*16,21+i*4);Display(1,2,0+i*16,17);Display(1,2,32+i*16,17);Display(2,2,64+i*16,17);Display(2,2,96+i*16,17);Display(1,4,0+i*16,22+i*3);Display(1,4,32+i*16,23+i*2);Display(2,4,64+i*16,24+i*1);Display2(2,4,96+i*16,i+15);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);

41、Display(2,6,64+i*16,17);Display(2,6,96+i*16,17);break; n=0; if(m%8=7) m=0; menu(); if(m=0) lucai(); else if(m=1) m=0;chuancai(); else sorry();void keyscan() /按鍵判斷 if(qd=0) delay(5); if(qd=0)while(!qd);n=1; if(sy=0)delay(5); if(sy=0)while(!sy);m+;if(m>7)m=0; if(xy=0) delay(5); if(xy=0)while(!xy);m

42、-;if(m=255)m=7; /*魯菜*/void lucai() uint i,f;ClearScreen(0); while(!n) keyscan(); for(i=0;i<2;i+) switch(m%5)case 0: Display2(1,0,0+i*16,26+i);Display2(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Dis

43、play(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case 1:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Displa

44、y(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display2(1,2,0+i*16,31+i);Display2(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);D

45、isplay(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case2:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display2(1,4,0+i*16,35+i);Disp

46、lay2(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case 3:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1

47、,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display2(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);

48、break;case4:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2); Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(

49、2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display2(2,6,64+i*16,49-i*3);Display2(2,6,96+i*16,47+i);break; delay(5); n=0;if(m%5=0)f=26;if(m%5=1)f=31;if(m%5=2)f=35;if(m%5=3) m=0;menuselect(); if(m%5=4) m=0;lucai2(); k=1;dccg(f);void dccg(uchar b)uchar i;ClearScreen(0);while(!n)

50、 keyscan();for(i=0;i<2;i+)Display(1,0,0+i*16,b+i);Display(1,0,32+i*16,b+2+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,17);Display(1,2,0+i*16,17);Display(1,2,32+i*16,42+i);Display(2,2,64+i*16,44+i);Display(2,2,96+i*16,17);Display(1,4,0+i*16,17);Display(1,4,32+i*16,17);Display(2,4,64+i*16,17);Di

51、splay(2,4,96+i*16,17);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display2(2,6,96+i*16,15+i);n=0; if(k=1)lucaia(); if(k=2)chuancai(); if(k=3)lucai();void lucai2()uint i,f;ClearScreen(0); while(!n) keyscan(); for(i=0;i<2;i+) switch(m%4)case 0:Display2(1,0,0+i*16,50+i);Di

52、splay2(1,0,32+i*16,52+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,39+i*2);Display(1,2,0+i*16,54+i);Display(1,2,32+i*16,56+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,40+i);Display(1,4,0+i*16,58+i);Display(1,4,32+i*16,60+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,15+i);break;case1:Display(1,0,0+i*16,50+i);Display(1,0,32+i*16,52+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,39+i*2);Display2(1,2,0+i*16,54+i);Display2(1,2,32+i*16,56+

溫馨提示

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

評(píng)論

0/150

提交評(píng)論