本科毕业设计说明书(论文)
KEY_NUM = KEY_Scan();
第 34 页 共 42 页
if( KEY_NUM != 0x55) //当返回的不是初值时候
{
if(KEY_NUM == 16) { }
if(KEY_NUM == 15) //数字B键清除键,二次测量
{ }
if(KEY_NUM == 12) //数字C输入单价错误时返回 {
Price_Count--; if( Price_Count < 0) { }
Price_Buffer[Price_Count] = 0; switch(Price_Count) {
case 0:
LCD1602_write_com(0x83); LCD1602_write_data(' '); break;
//清除上一个输入的数据
Price_Count = 0; goto loop; Get_Maopi();
//去皮
//数字A键,去皮功能
case 1:
LCD1602_write_com(0x84); LCD1602_write_data(' '); break;
case 2:
本科毕业设计说明书(论文)
}
if(KEY_NUM == 13) { }
if(KEY_NUM >= 0 && KEY_NUM <= 9) {
Price_Buffer[Price_Count] = KEY_NUM; switch(Price_Count) {
case 0:
LCD1602_write_com(0x83);
LCD1602_write_com(0x86); LCD1602_write_data(' '); break;
第 35 页 共 42 页
default : break;
}
//数字D键,计算总价
Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];
Money = Money * Weight_Shiwu / 1000; LCD1602_write_com(0xC7);
LCD1602_write_data(Money/1000 + 0x30);
LCD1602_write_data(Money00/100 + 0x30); LCD1602_write_data(Money0/10 + 0x30); LCD1602_write_data('.');
LCD1602_write_data(Money + 0x30); Flag_OK = 1;
//显示输入的价格值
LCD1602_write_data(Price_Buffer[0] + 0x30); break;
case 1:
LCD1602_write_com(0x84);
本科毕业设计说明书(论文)
break;
第 36 页 共 42 页
LCD1602_write_data(Price_Buffer[1] + 0x30);
case 2: LCD1602_write_com(0x86);
LCD1602_write_data(Price_Buffer[2] + 0x30);
break;
default : break;
}
Price_Count++; if( Price_Count >= 3) { Price_Count = 3; }
}
}
}
}
unsigned char KEY_Scan() //{ unsigned char temp = 0;
unsigned char com = 0x55 , com1 = 0 , com2 = 0; P3=0xf0; if(P3!=0xf0) { com1=P3; P3=0x0f;
com2=P3;
}
P3=0xf0;
while(P3!=0xf0);
矩阵键盘扫描 本科毕业设计说明书(论文)
temp=com1|com2;
第 37 页 共 42 页
if(temp==0xee)com=1; //数字1 if(temp==0xed)com=4; //数字4 if(temp==0xeb)com=7; //数字7 if(temp==0xe7)com=11; //备用键*号键 if(temp==0xd7)com=0; //数字0 if(temp==0xb7)com=14; //备用键*号键
if(temp==0xde)com=2; //数字2 if(temp==0xdd)com=5; //数字5 if(temp==0xdb)com=8; //数字8
if(temp==0xbe)com=3; //数字3 if(temp==0xbd)com=6; //数字6 if(temp==0xbb)com=9; //数字9 if(temp==0x7e)com=16; //数字A去皮 if(temp==0x7d)com=15; //数字B,二次测量
}
if(temp==0x7b)com=12; //数字C单价返回 if(temp==0x77)com=13; //数字D键,计算总价 return(com);
void Get_Weight() //称重 {
Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重 if(Weight_Shiwu > 0) {
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);
//计算实物的实际重量
if(Weight_Shiwu > 5000)
//超重报警
本科毕业设计说明书(论文)
第 38 页 共 42 页
{ Buzzer = 0;
} else { Buzzer = 1; }
} else { Weight_Shiwu = 0; Buzzer = 0;
// }
}
void Get_Maopi() //{ Weight_Maopi = HX711_Read();
}
void Delay_ms(unsigned int n) //MS{ unsigned int i,j; for(i=0;i for(j=0;j<123;j++); } #include \ void Delay__hx711_us(void) //{ _nop_(); _nop_(); } //负重报警 获取毛皮重量 延时函数(12M) 延时函数 读取HX711