找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9|回复: 0
打印 上一主题 下一主题
收起左侧

电子称重秤设计 89C51单片机+HX711(源码+原理图)

[复制链接]
跳转到指定楼层
楼主
传感器与电路板对接顺序:
红、白、黑、绿 四根线分别依次对应电路板上的 E+、E-、A-、A+
系统供电5V,可使用手机充电器USB接口或电脑USB接口直接供电。

一、日历时间的设置
接通电源后,打开开关,开机默认处于“日历时间模式”。屏幕显示如下图:
在“日历时间模式”下,仅ABCD四个按键有效。
A:设置;依次按下A键,年、月、日、时、分、秒的光标依次闪烁,可通过BC键调节。
B:加键;按一下,数值加一。
C:减键;按一下,数值减一。
D:查看闹钟;进入“闹钟界面”。




二、闹铃的设置
在闹钟设置界面,依次按下A键,闹铃的:开/关、时、分、秒的光标依次闪烁。
然后可通过BC键进行调节。
D键则随时可退出“闹铃设置界面”返回到“日历时间界面”。



三、计价秤功能
在正常显示时间的情况下,按下C键,将切换到到“计价秤模式”,显示界面如下图:
第一行显示重量,单位是kg
第二行显示“单价P”和“金额M”,单位都是元。
在“计价秤模式”下,16按键全部有效。
数字键介绍
1234567890数字键代表数字,可通过键盘设置P= 的值,数值可精确到0.1g。
设置单价后系统会自动计算出金额M。
A:清零、去皮
B:清除单价P
C:切换到“日历时间模式”
D:切换到“计数秤模式”


四、计数秤功能
在计价秤模式下,按下D键,即切换到“计数秤模式”,显示如下图:
第一行:重量值kg。
第二行:D=单个物品重量值,N=物品个数。

键盘说明:
1234567890数字键代表数字,可通过键盘设置D= 的值,数值可精确到0.1g。
设置单重后系统会自动计算出个数N。
A:清零/去皮
B:清除单重D
C:切换到“日历时间模式”
D:切换到“计数秤模式”


五、系统校准方法:
打开开关,等系统稳定后,在秤盘上放一个固定重量的物体(比如放100个一角硬币320g)。如果系统显示重量不等于这个固定重量(320g),就长按 # 键3秒,然后屏幕的第一行右边会显示出“校准系数”。
校准系数出现以后,可以通过C、D两个键对校准系数进行增大和较小,通过对“校准系数”的调节使得屏幕上重量显示的值正好等于物体的真实重量(320g)。
最后长按 # 键3秒,校准系数消失,校准完成。

电路原理图如下:

单片机源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. uchar naozhong_en; //闹钟开关位
  6. sbit bell = P2 ^ 7; //蜂鸣器,低电平响

  7. /*********************电子秤*******************************/
  8. unsigned long HX711_Buffer = 0;
  9. unsigned long Weight_Maopi = 0; //毛皮重量
  10. long Weight = 0;//重量
  11. long danjia = 0;//单价
  12. long zongjia = 0;//总价
  13. uint com1, com2, temp; //键盘用的到的变量
  14. uchar com, P_a = 0, P_b = 0, P_c = 0, P_d = 0, m = 0;

  15. bit a = 0;
  16. bit jia_shu = 0;
  17. bit Flag_ERROR = 0;

  18. void Delay_ms(unsigned int n);
  19. void Get_Weight();

  20. void Get_Maopi();
  21. void display_weight();//显示重量和校准参数
  22. void  delay_3us();//3US的延时程序
  23. void keyscan_4x4();//矩阵键盘扫描函数

  24. //hx711 IO设置
  25. sbit HX711_DOUT = P2 ^ 0;
  26. sbit HX711_SCK = P2 ^ 1; //IO设置

  27. void Delay__hx711_us();
  28. unsigned long HX711_Read(void);

  29. uint GapValue;//校准参数:GapValue
  30. //不同的传感器特性曲线不是很一致,每个传感器需矫正这个参数才能测量准确。
  31. //当测试的重量偏大时,增加该数值。如果测试的重量偏小时,减小改数值。

  32. uchar flag_24c02;//和24C02通讯是否正常的标志
  33. sbit  sda_24c02 = P1 ^ 7; //定义24C02串行数据线
  34. sbit  scl_24c02 = P1 ^ 6; //定义24C02串行时钟线

  35. void delay_3us();
  36. void  nack_24c02();//24C02非应答信号
  37. void  stop_24c02();//停止通讯信号
  38. void  star_24c02();//启动信号
  39. void  cack_24c02();//检测应答信号
  40. void  mack_24c02();//发送应答信号
  41. void  w1byte_24c02(uchar byte1);//向24C02写入一字节的数据
  42. uchar rd1byte_24c02(void);
  43. void  read_24c02();//读数据操作
  44. void  write_24c02();//写入16字节的数据操作
复制代码

PCB:无
仿真: 无
代码: 代码.7z (574.01 KB, 下载次数: 0)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表