51单片机的LCD12864电子秤设计
硬件方案
本设计利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。此外,还可通过键盘设定所称物品的价格。
主要由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电子秤设计相关推荐
- 基于51单片机的智能电子秤设计
具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...
- 基于51单片机的蓝牙电子秤设计
1.设计方案 本设计以STC89C52单片机为主控芯片制作了一款数字电子秤,以电阻应变式压力传感器来进行称重,将感应到的被测物体的重力转化为微弱的毫伏级电压信号,在HX711芯片内部进行128的增益放 ...
- 51单片机的蓝牙电子秤设计
一.硬件设计 本设计硬件主要由51单片机最小系统,LCD1602液晶显示模块,HX711-AD转换模块,LED模块,蜂鸣器报警电路,按键电路及10kg压力传感器: 原理图如图: 二.设计功能 LCD1 ...
- hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)
#include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #def ...
- 基于51单片机的智能电子秤设计课程设计毕业设计
微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图.真源文件.源程序代码和论文报告等 由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+ ...
- 【034】基于51单片机的HX711电子秤Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...
- 基于51单片机的硬币电子秤的实现
[实例简介]这是基于51单片机的硬币电子秤的实现,内含C语言源码和proteus仿真实现 文件:590m.com/f/25127180-489412834-ab5d3d(访问密码:551685) [源 ...
- 基于51单片机的指纹密码锁设计
目录 具体实现功能 设计介绍 单片机介绍 设计思路 资料内容 原理图 程序 仿真实现 全部资料 具体实现功能 具体功能: 本设计采用STC89C52.AT89C52.AT89S52作为主控芯片,LCD ...
- 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc
基于51单片机的实时时钟设计报告 PAGE PAGE 24 课程设计(论文)任务书 信息工程 学 院 信息工程 专 业 (2) 班 一.课程设计(论文)题目 嵌入式课程设计 二.课程设计(论文)工作自 ...
最新文章
- 深度学习新算法,完成字里行间的情绪识别
- Firefox无法加载12306自家证书
- 10分钟,快速使用VUE-VUEX
- dll可以在linux下使用吗_无需虚拟技术,6步直接在Windows下使用Linux
- ubuntu 16.04 usb转串口
- 信号与系统 chapter8 LTI连续系统的描述
- python数值计算guess_【python】猜数字game,旨在提高初学者对Python循环结构的使用...
- STM32 - 定时器的设定 - 基础- 0D - Timer synchronization chaining - 主从模式下 - 定时器同步和级联控制 - 级联启动定时器
- maven profile多环境动态配置文件使用
- (原創) 網站CSS重新調整,全面支援IE6與FireFox 2.0!! (Web) (CSS)
- 配置mysql字符_mysql字符设置
- regexp(正则表达式)的使用
- C语言——超市商品管理系统
- 从零开始javaweb项目——毕业设计参考指南
- U盘格式化后 容量变小如何解决
- [CareerCup] 9.8 Represent N Cents 美分的组成
- 零基础学习Java编程培训需要了解哪些知识
- 为服务器选择固态硬盘的一个优点和缺点
- java计算一个月有几周_java 如何获取 一个月 有多少周
- 计算机多媒体对语文教学的提高,谈谈多媒体在语文教学中的运用(教师中心稿)...
热门文章
- LaTex练习日记02 —— 字体设置
- Hive处理数据基本操作流程
- mybatis-sqlserver批量新增返回id
- mc服务器tps优化,[教程] 使用Openj9大幅降低MC的内存占用,提高FPS和TPS
- 单片机c语言片外寻址指令,51手记之寄存器寻址篇
- 怎么把文件发给商家打印?如何给商家发送需打印的文件
- 单峰数组求第k大算法
- win10怎么开启aptx_Soomal作品 - Windows与OSX 操作系统对aptX支持的验证测试报告 [Soomal]...
- ad18差分布线,设置差分对
- 计算机组成原理之CPU、外存、内存之间的关系