硬件方案

本设计利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。此外,还可通过键盘设定所称物品的价格。
   主要由51单片机最小系统,LCD12864液晶显示屏,HX711AD转换模块,LED指示灯,蜂鸣器电路,矩阵按键,10kg压力传感器等;原理图如图:

PCB图如下:

设计功能

  • 可以输出量程为10kg物体的重量,精度为0.001kg;
  • 可通过按键设置单价,并根据实际重量计算出总价;
  • 支持去皮功能、切换量程等功能,输出的重量和总额采用四舍五入;
  • 采用LCD12864显示屏,支持中文显示;

软件设计

void main()
{      INT_8 j = 0, k = 0, count = 0;UINT_8 Key = 0, Num = 0;        //Key存储按键的键值,Num存储按下的是那个数字UINT_32 tmp = 0;          Init();while (1){WDT_FeedDog();               //喂狗if (KeycanFlag == 0)                    //价格还没输入时可以显示(防止价格输入一半DDRAM地址改变,造成价格不可连续输入){      if (TimeCount >= 50)                //定时时间超过250ms执行AD采集{//    Offset = AD_Hx711();                                 //8527820-8475960 =51860//    Display_Int2str(Offset, WeightTable, 0x93);WeightTemp = AD_Weight(AD_Hx711());                   //把AD值转化为以克为单位的质量(含小数)if (WeightTemp > 4000)                                //超出量程4000g报警{    for (k = 0; k < 4; k++){LcdDdram_Display(1,3,table5);          //输出错误字符串                   }Beep = 0;              //蜂鸣器鸣叫Led  = 0;              //Led亮}    else{                                                         Beep = 1;                                       //重量少于最大量程关闭蜂鸣器Led  = 1;    tmp = (UINT_32)(WeightTemp);    //    tmp = (UINT_32)(WeightTemp + 0.5);           //将质量四舍五入,例如1000.50 》1001if(RangeFlag == 0)                          //量程单位为g{        Init_Weighttab(WeightTable,table6);    //初始化字符数组为空格,防止上次字符位数比这次大,没有清除k = 0;                                 //例如上次显示1234,这次12,残留34Weight = tmp;                         //中间质量变量赋给质量while (tmp != 0)                                         {WeightTable[k++] = 0x30 + tmp % 10;             //提取十进制最后一位转换为字符tmp /= 10;        }    if (k == 0)                    //质量为0时{    WeightTable[k++] = '0';           }    Write_Cmd(0x93);                                     count = k;while (k > 0)               {    Write_Data(WeightTable[k-1]);      //质量倒序输出,因为之前是倒序输入,高位地址为高位,由高位到低位    k--;                                  }     for (k = count; k < 5; k++ )          //把上次残留的字符清掉{Write_Data(WeightTable[k]);}}else{Init_Weighttab(WeightTable,table8);             //清空字符串数组k = 0;Weight = tmp / 1000.0;                    //质量/g 1000 =  /kgwhile (tmp != 0)                             {WeightTable[k++] = 0x30 + tmp % 10;             tmp /= 10;        if (k == 3)                                //i=3时就是获得3位小数时插入小数点    {                            WeightTable[k] = '.';             k += 1;    }}if (k == 4)                //刚好3个小数补0 0.123            {WeightTable[k] = '0';        k++;               //和上面统一,k比实际大1,下面再减回}if (k < 3)                           //当不够两位小数时,例如1实际代表的是0.01{        WeightTable[4] = 0x30;                //在最高位插入0WeightTable[3] = '.';                //在最次高位插入.for (j = k; j < 3; j++){WeightTable[j] = 0x30;         //如果只有0位时插入一个插入两个0     0.00}                                     //如果只有1位时插入一个插入1个0     0.0k = 5;                                //0.001刚好5个数}    Write_Cmd(0x93);                 //重定位液晶DDRAM地址                         while (k > 0)                   {    Write_Data(WeightTable[k-1]);      //总额结算,倒序输出,因为之前是倒序输入,高位地址为高位k--;                                  } }}                 TimeCount = 0;Write_Cmd(0x8b);                             //显示完体重就定位价格显示地址}           }    }
}

资料链接:https://pan.baidu.com/s/1aezXP3LToaaDFhqc3RytvA?pwd=cc09 
提取码:cc09

51单片机的LCD12864电子秤设计相关推荐

  1. 基于51单片机的智能电子秤设计

    具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...

  2. 基于51单片机的蓝牙电子秤设计

    1.设计方案 本设计以STC89C52单片机为主控芯片制作了一款数字电子秤,以电阻应变式压力传感器来进行称重,将感应到的被测物体的重力转化为微弱的毫伏级电压信号,在HX711芯片内部进行128的增益放 ...

  3. 51单片机的蓝牙电子秤设计

    一.硬件设计 本设计硬件主要由51单片机最小系统,LCD1602液晶显示模块,HX711-AD转换模块,LED模块,蜂鸣器报警电路,按键电路及10kg压力传感器: 原理图如图: 二.设计功能 LCD1 ...

  4. hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)

    #include                  //调用单片机头文件 #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255 #def ...

  5. 基于51单片机的智能电子秤设计课程设计毕业设计

    微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图.真源文件.源程序代码和论文报告等 由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+ ...

  6. 【034】基于51单片机的HX711电子秤Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...

  7. 基于51单片机的硬币电子秤的实现

    [实例简介]这是基于51单片机的硬币电子秤的实现,内含C语言源码和proteus仿真实现 文件:590m.com/f/25127180-489412834-ab5d3d(访问密码:551685) [源 ...

  8. 基于51单片机的指纹密码锁设计

    目录 具体实现功能 设计介绍 单片机介绍 设计思路 资料内容 原理图 程序 仿真实现 全部资料 具体实现功能 具体功能: 本设计采用STC89C52.AT89C52.AT89S52作为主控芯片,LCD ...

  9. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc

    基于51单片机的实时时钟设计报告 PAGE PAGE 24 课程设计(论文)任务书 信息工程 学 院 信息工程 专 业 (2) 班 一.课程设计(论文)题目 嵌入式课程设计 二.课程设计(论文)工作自 ...

最新文章

  1. 深度学习新算法,完成字里行间的情绪识别
  2. Firefox无法加载12306自家证书
  3. 10分钟,快速使用VUE-VUEX
  4. dll可以在linux下使用吗_无需虚拟技术,6步直接在Windows下使用Linux
  5. ubuntu 16.04 usb转串口
  6. 信号与系统 chapter8 LTI连续系统的描述
  7. python数值计算guess_【python】猜数字game,旨在提高初学者对Python循环结构的使用...
  8. STM32 - 定时器的设定 - 基础- 0D - Timer synchronization chaining - 主从模式下 - 定时器同步和级联控制 - 级联启动定时器
  9. maven profile多环境动态配置文件使用
  10. (原創) 網站CSS重新調整,全面支援IE6與FireFox 2.0!! (Web) (CSS)
  11. 配置mysql字符_mysql字符设置
  12. regexp(正则表达式)的使用
  13. C语言——超市商品管理系统
  14. 从零开始javaweb项目——毕业设计参考指南
  15. U盘格式化后 容量变小如何解决
  16. [CareerCup] 9.8 Represent N Cents 美分的组成
  17. 零基础学习Java编程培训需要了解哪些知识
  18. 为服务器选择固态硬盘的一个优点和缺点
  19. java计算一个月有几周_java 如何获取 一个月 有多少周
  20. 计算机多媒体对语文教学的提高,谈谈多媒体在语文教学中的运用(教师中心稿)...

热门文章

  1. LaTex练习日记02 —— 字体设置
  2. Hive处理数据基本操作流程
  3. mybatis-sqlserver批量新增返回id
  4. mc服务器tps优化,[教程] 使用Openj9大幅降低MC的内存占用,提高FPS和TPS
  5. 单片机c语言片外寻址指令,51手记之寄存器寻址篇
  6. 怎么把文件发给商家打印?如何给商家发送需打印的文件
  7. 单峰数组求第k大算法
  8. win10怎么开启aptx_Soomal作品 - Windows与OSX 操作系统对aptX支持的验证测试报告 [Soomal]...
  9. ad18差分布线,设置差分对
  10. 计算机组成原理之CPU、外存、内存之间的关系