江阴做网站,汽车网站建设策划书,wordpress后台添加字段,php 网站进入后台基于51单片机的电子秤 #有计价功能: 1)HX711传感器称重 2)按键可调整单价 3)去皮、清除功能 4)超重报警 5)可保存到小数点后三位 文档包含: 仿真、程序、原理图、PCB、报告这个基于51单片机的电子秤项目有点东西#xff0c;不仅基础称重稳得一批#xff0c;还整上了超市收银台…基于51单片机的电子秤 #有计价功能: 1)HX711传感器称重 2)按键可调整单价 3)去皮、清除功能 4)超重报警 5)可保存到小数点后三位 文档包含: 仿真、程序、原理图、PCB、报告这个基于51单片机的电子秤项目有点东西不仅基础称重稳得一批还整上了超市收银台那种计价功能。咱直接拆开揉碎了说先看硬件核心HX711模块——这货可是称重界的扛把子。称重传感器输出的模拟信号得靠HX711放大51单片机通过IO口模拟通信时序来读数。代码里这个HX711_Read()函数是关键unsigned long HX711_Read(void) { unsigned long count; HX711_DOUT 1; HX711_SCK 0; while(HX711_DOUT); // 等待芯片就绪 for(int i0;i24;i) { // 24位数据 HX711_SCK 1; count 1; if(HX711_DOUT) count; HX711_SCK 0; } HX711_SCK 1; // 切换通道A增益128 delay_us(1); HX711_SCK 0; return (count ^ 0x800000); // 补码转原码 }这里用位操作逐bit读取24位AD值注意最后的异或操作是为了处理负数情况。实际项目中得用示波器校准时钟时序否则容易读数漂移。单价调整功能用了矩阵键盘代码里搞了个状态机处理长按/短按void Key_Process() { static uchar key_locked 0; uchar key Key_Scan(); if(key !key_locked) { key_locked 1; if(key D) { // 去皮键 tare_weight current_weight; } else if(key #) { // 长按清零 total_price 0; } else if(key 0 key 9) { // 数字输入 unit_price unit_price * 10 (key - 0); } } else if(!key) key_locked 0; }这里有个坑51的IO口驱动能力弱得在按键电路上加10k上拉电阻不然检测会抽风。超重报警玩得简单粗暴当重量超过量程直接让蜂鸣器尖叫if(current_weight MAX_WEIGHT) { Buzzer 0; // 开启蜂鸣器 LCD_ShowString(1,1,OVERLOAD!!); } else { Buzzer 1; // 正常状态 }注意这里蜂鸣器要接三极管驱动别直接怼IO口上否则可能烧片子。基于51单片机的电子秤 #有计价功能: 1)HX711传感器称重 2)按键可调整单价 3)去皮、清除功能 4)超重报警 5)可保存到小数点后三位 文档包含: 仿真、程序、原理图、PCB、报告小数处理用了个骚操作——把价格放大1000倍用long型存储显示时再插入小数点long price 1234567; // 实际表示1234.567元 LCD_ShowChar(2,5, price/1000 0); // 千位 LCD_ShowChar(2,6, .); LCD_ShowChar(2,7, (price%1000)/100 0); // 百分位 LCD_ShowChar(2,8, (price%100)/10 0); // 十分位 LCD_ShowChar(2,9, price%10 0); // 千分位这比用float类型省资源得多51那点内存玩不起浮点运算。PCB布局要注意模拟数字地分割称重传感器信号走线要避开数字电路。原理图里HX711的AVDD和DVDD最好用磁珠隔离不然液晶屏刷新时重量数据会跳舞。最后说下数据存储用AT24C02存单价配置void Save_UnitPrice() { I2C_Start(); I2C_SendByte(0xA0); // 器件地址 I2C_SendByte(0x00); // 存储地址 I2C_SendByte(unit_price 8); // 高字节 I2C_SendByte(unit_price 0xFF);// 低字节 I2C_Stop(); delay_ms(10); // 必须等待写入完成 }掉电保存功能实测时发现个玄学问题如果断电瞬间刚好在写EEPROM有可能数据丢失。后来在VCC上加了个100uf的储能电容才稳住。这个项目的仿真文件用Proteus搞的注意要加载HX711的仿真模型不然跑起来全是乱码。完整工程包里连钣金结构图都有做实物可以直接拿去激光切割。