攀枝花学院本科毕业设计(论文) 附录
}
void lcd_1602_init() //LCD1602初始化函数 { lcd_en=0;
lcd_1602_write_com(0x38); lcd_1602_write_com(0x0e); lcd_1602_write_com(0x06); lcd_1602_write_com(0x01); }
void lcd_1602_wait_sure() //显示'OK'&'NO'界面 {
lcd_1602_write_com(0x80+0x40); lcd_1602_write_data('O'); lcd_1602_write_data('K');
lcd_1602_write_com(0x80+0x4e); lcd_1602_write_data('N'); lcd_1602_write_data('O'); }
void lcd_1602_show_num(uint num) // 1602显示数字的函数 {
if(num <= 9) {
lcd_1602_write_data('0'+num); lcd_1602_write_data(' '); }else if(num >= 10 ) {
lcd_1602_write_data('0'+num/10); lcd_1602_write_data('0'+num); } }
32
攀枝花学院本科毕业设计(论文) 附录
void lcd1602_info_display(uint choose, uint num_type, uint num_count) //1602显示函数 { int num;
lcd_1602_write_com(0x01); switch(choose) {
case WAIT_SALE:
lcd_1602_write_com(0x80+0x03); // for(num = 0; num < 7; num++) {
lcd_1602_write_data(wait_sale[num]); } break;
case NO_WATER:
lcd_1602_write_com(0x80+0x03); for(num = 0; num < 9; num++) {
lcd_1602_write_data(no_water[num]); } break; case SALING: //price
lcd_1602_write_com(0x80+0x00); for(num = 0; num < 6; num++) {
lcd_1602_write_data(price[num]); }
lcd_1602_write_data('0'+(num_type+1)); lcd_1602_write_data(' '); //number
lcd_1602_write_data(' '); for(num = 0; num < 4; num++)
33
攀枝花学院本科毕业设计(论文) 附录
{
lcd_1602_write_data(number[num]); }
lcd_1602_show_num(num_count);
break;
case INPUT_MONEY: //need money
lcd_1602_write_com(0x80+0x00); for(num = 0; num < 4; num++) {
lcd_1602_write_data(sum[num]); }
lcd_1602_show_num(num_type); //input
lcd_1602_write_data(' '); lcd_1602_write_data(' '); for(num = 0; num < 6; num++)
{ }
lcd_1602_write_data(input[num]); lcd_1602_show_num(num_count); break; case CHANGE: if(!num_count)
{
//put water
for(num = 0; num < 13; num++)
lcd_1602_write_com(0x80+0x02); {
lcd_1602_write_data(put_water[num]); } }
34
攀枝花学院本科毕业设计(论文) 附录
else {
//cancle water
lcd_1602_write_com(0x80+0x02); //取消选择时写命令退币 for(num = 0; num < 9; num++) } //change
lcd_1602_write_com(0x80+0x43); for(num = 0; num < 7; num++)
{
lcd_1602_write_data(change[num]); }
{ }
lcd_1602_write_data(cancle[num]);
lcd_1602_show_num(num_type); break; default: break; }
lcd_1602_write_com(0x0c); }
void lcd_1602_saling(uint type, uint num) { }
void lcd_1602_inputing(uint need, uint input) {
lcd1602_info_display(INPUT_MONEY, need, input); lcd_1602_wait_sure(); }
/*************************************************/
35
lcd1602_info_display(SALING, type, num); lcd_1602_wait_sure();
攀枝花学院本科毕业设计(论文) 附录
void delay1(unsigned int t) // 延时函数 {
unsigned int i,j; for(i=0;i void out_water() //推出水函数 { int i, j = 100; while(j--) { for(i = 0; i < 8; i++) { P0 = water_change(0xff, i); delay1(50); } } P0 = 0xff; } unsigned char key(void) //按键响应函数 { unsigned char key,key1,key2; P1=0XF0; if((P1&0XF0)!=0XF0) //ked down { delay1(10); { key1=P1&0XF0; P1=0X0F; key2=P1&0X0F; key=key1|key2; 36 //延时去抖动 //仍然有键按下 //读入列线值 if((P1&0XF0)!=0XF0)