lcd1602infodisplay(WAITSALE, type1, type2); } break; case(0x02): if (!ok) { type2++; if(type2 == 4) { type2 = 1; } led1 = 1; led2 = 1; led3 = 1; if (type2 == 1) { led1 = 0; } else if (type2 == 2) { led2 = 0; } else if (type2 == 3) { led3 = 0; } lcd1602infodisplay(WAITSALE, type1, type2); } break; case(0x08): watercount++; add=1; if(watercount > 99) { watercount = 99; } lcd1602infodisplay(WAITSALE, watertype, watercount); break; case(0x0c): watercount--; minus=1; if(watercount < 1) { watercount = 1; } lcd1602infodisplay(WAITSALE, watertype, watercount); break; case(0x0a): ok = 1; break; case(0x0e): goto again; break; } } } if(waterischoose && watercount) //payment { money = 0; switch(watertype) { case(0): money = 100; break; case(1): money = 150; break; case(2): money = 200; break; case(3): money = 250; break; case(4): money = 300; break; case(5): money = 350; break; case(6): money = 400; break; case(7): money = 450; break; } needmoney = watercount * money; lcd1602infodisplay(NEEDMONEY, needmoney, 0); while(1) { if(key()) { if(e == 0x0b) { break; } if(e == 0x0f) { goto again; } } } if(needmoney <= moneycount()) { waterout(); watercount--; money = moneycount() - needmoney; if(money < 0) { money = 0; } lcd1602infodisplay(SUCCESS, money, 0); while(1) { if(key()) { if(e == 0x0f) { goto again; } } } } else { lcd1602infodisplay(NOMONEY, 0, 0); while(1) { if(key()) { if(e == 0x0f) { goto again; } } } } } } unsigned char waterchange(unsigned char oldwater, unsigned char newwater) //水的切换 { switch(newwater) { case(0): return 0xc0; break; case(1): return 0xc1; break; case(2): return 0xc2; break; case(3): return 0xc3; break; case(4): return 0xc4; break; case(5): return 0xc5; break; case(6): return 0xc6; break; case(7): return 0xc7; break; } } unsigned int moneycount() //硬币计数 { unsigned int money = 0; if(add) { money = watercount * 100; } if(minus) { money = watercount * -100; } add = 0; minus = 0; return money; } void waterout() //出水 { unsigned char i; for(i = 0; i < watercount; i++) { P2 = 0xff; delay(100); P2 = 0x00; delay(100); } } void delay(unsigned int n) //延时 { unsigned int i, j; for(i = 0; i < n; i++) { for(j = 0; j < 1140; j++) { ; } } } void lcd1602init() //LCD初始化 { lcd1602writecmd(0x38); delay(5); lcd1602writecmd(0x38); delay(5); lcd1602writecmd(0x38); delay(5); lcd1602writecmd(0x0c); delay(5); lcd1602writecmd(0x01); delay(5); lcd1602writecmd(0x06); delay(5); } void lcd1602writecmd(unsigned char cmd) //写命令 { P0 = cmd; rs = 0; rw = 0; en = 1; delay(5); en = 0; } void lcd1602writedata(unsigned char dat) //写数据 { P0 = dat; rs = 1; rw = 0; en = 1; delay(5); en = 0; } void lcd1602infodisplay(unsigned char type, unsigned char data1, unsigned char data2) //LCD信息显示 { unsigned char i; lcd1602writecmd(0x80); delay(5); switch(type) { case(WAITSALE): for(i = 0; i < 6; i++) { lcd1602writedata(wait_sale[i]); } break; case(NEEDMONEY): lcd1602writecmd(0x80); delay(5); for(i = 0; i < 5; i++) { lcd1602writedata(need_money[i]); } lcd1602writecmd(0xc0); delay(5); lcd1602writedata(data1 / 100 + 0x30); lcd1602writedata((data1 % 100) / 10 + 0x30); lcd1602writedata(data1 % 10 + 0x30); break; case(SUCCESS): for(i = 0; i < 7; i++) { lcd1602writedata(success[i]); } lcd1602writecmd(0xc0); delay(5); lcd1602writedata(data1 / 100 + 0x30); lcd1602writedata((data1 % 100) / 10 + 0x30); lcd1602writedata(data1 % 10 + 0x30); break; case(NOMONEY): for(i = 0; i < 7; i++) { lcd1602writedata(no_money[i]); } break; default: break; } } unsigned char key() //按键检测 { unsigned char keyvalue = 0; if(P1 != 0xff) { delay(5); if(P1 != 0xff) { keyvalue = P1; while(P1 != 0xff); } } if(keyvalue == 0xee) { return 0x00; } else if(keyvalue == 0xde) { return 0x04; } else if(keyvalue == 0xbe) { return 0x08; } else if(keyvalue == 0x7e) { return 0x0c; } else if(keyvalue == 0xed) { return 0x01; } else if(keyvalue == 0xdd) { return 0x02; } else if(keyvalue == 0xbd) { return 0x0e; } else if(keyvalue == 0x7d) { return 0x0f; } else { return 0; }

void main unsigned char ok = 0 watertype = -1 waterischoose = 0watersit=-1 ; unsigned char add=0 minus=0; char watercount = 0; unsigned int flag = 0 money = 0 needmoney;

原文地址: https://www.cveoy.top/t/topic/feLu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录