一.硬件方案
电子秤的测量原理是被称量物体的重量使传感器弹性体发生变形,输出与重量成正比的电信号,传感器输出信号经放大器放大后,输入转换器进行转换,转换成的频率信号直接送入微处理器中,其数字量由微机进行处理,而周边所需要的功能及各种接口电路也和微机连接应用,最后由显示屏幕以数字方式显示。。
本设计硬件主要由51单片机+最小系统+LCD1602液晶显示模块+HX711模块+DS1302时钟电路+LED模块+语音模块+矩阵按键模块+10kg压力传感器及秤座。
二.设计功能
(1)用键盘设计单价;
(2)称重后同时显示该物品的重量、单价和总额;
(3)称重完之后有去皮功能;
(4)能够实现总额的累加功能;
(5)预存多种商品的单价并随意调出适用;
(6)该系统能实现电子秤的基本称重的功能,范围为0到10kg,重量误差在±0.001kg
(7)系统具备输入单价,计算总价以及语音报价的功能
(8)当称重的重量超过5kg时, led亮。
(9)当称重的重量超过10kg时,LED闪烁并报警。
(10)此次设计的电子秤在不称重的时候要能显示时钟日历(显示年月日及星期)
三.设计原理图
原理图主要采用AD软件进行设计,如图:
四.软件设计
主程序源码
//****************************************************
//主函数
//****************************************************
void main()
{
yyxp_rest=1;
yyxp_data=1;
init_eeprom(); //开始初始化保存的数据
Init_LCD1602(); //初始化LCD1602
EA = 0;
Data_Init();
Timer0_Init();
//初中始化完成,开断
EA = 1;
// Ds1302Init();
// Get_Maopi();
LCD1602_write_com(0x80); //指针设置
LCD1602_write_word(" Welcome To Use "); //
LCD1602_write_com(0x80+0x40); //指针设置
LCD1602_write_word("Electronic Scale");
Delay_ms(2000);
Get_Maopi();
LCD1602_write_com(0x80); //指针设置
LCD1602_write_word("WE:0.000 PR:00.0");
LCD1602_write_com(0x80+0x40); //指针设置
LCD1602_write_word("S: 0.0 T: 0.0");
Display_Price();
// Get_Maopi(); //称毛皮重量
// Weight_Shiwu = 9000;
while(1)
{
//每0.5秒称重一次
if (FlagTest==1&&keynum==0)
{
Get_Weight();
}
if(Weight_Shiwu<10)
{
keyscan();
if(keynum==0)
display();
if(key2==0)
{
Delay_ms(5);
if(key2==0)
{
speak(41);
if(qupi==0)
qupi=Weight_Shiwu;
else
qupi=0;
while(key2==0);
}
}
}
else
{
keycode = Getkeyboard();
if(K1==0)
{
Delay_ms(5);
if(K1==0)
{
total_money += money;
Display_Money();
bofang(1,total_money);
while(K1==0);
}
}
if(key1==0)
{
Delay_ms(5);
if(key1==0)
{
total_money = 0;
Display_Money();
bofang(1,total_money);
while(key1==0);
}
}
if(key3==0)
{
Delay_ms(5);
if(key3==0)
{
total_money = 0;
Display_Money();
bofang(2,price);
bofang_zhongliang(Weight_Shiwu);
bofang(1,money);
while(key3==0);
}
}
}
//有效键值0-15
if (keycode<16)
{
KeyPress(keycode);
// Buzzer=0;
Delay_ms(100);
// Buzzer=1;
while(keycode<16)
{
if(keycode==12||keycode==13)
{
// Buzzer=0;
Delay_ms(10);
// Buzzer=1;
KeyPress(keycode);
// Get_Weight();
flag_key=1;
}
keycode = Getkeyboard();
}
write_eeprom(); //保存数据
}
}
}
资料链接:https://pan.baidu.com/s/1fZxZGtyLoiptmHH-K057FA?pwd=j25d