0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机的智能营养秤系统设计与实现

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-05-17 16:25 次阅读

一、项目背景

随着人们生活水平和健康意识的提高,越来越多的人开始注重自己的饮食健康。在此背景下,智能营养秤系统应运而生,成为了一种非常实用的工具。本项目基于51单片机设计和实现一种智能营养秤系统,通过该系统可准确地测量食物的重量并计算其热量、蛋白质、脂肪、碳水化合物等营养成分含量。

当前系统采用了STC89C52单片机作为主控芯片,预置了多种食材的营养成分数据。用户只需要使用矩阵键盘输入食材编号,将需要称重的食材放置在重力传感器上进行依次称重,系统就可以自动计算出所有食材的各类营养含量总值,并通过液晶屏显示出来。同时,系统根据预设的营养指标,对不达标或超标的食材进行对应的声光提示,提醒用户注意饮食健康。

当前系统还配备了无线WIFI模块,可以将当前营养数据上传到手机端实时显示,并给出营养建议。这使得用户可以随时1了解自己的饮食情况,及时进行调整,从而达到更好的健康效果。

本项目的设计和实现是为了满足人们对于饮食健康的需求,帮助人们更好地控制自己的饮食,达到健康瘦身的目的。同时,由于采用了51单片机的设计方案,具有成本低、易于制作、易于维护等优点,具有广泛的应用前景。

poYBAGRreiaAbDGGAAj9vaxEOyM322.pngimage-20230517100117507

二、系统设计过程

2.1 硬件组成

【1】STC89C52单片机作为主控芯片。

【2】4x4电容矩阵键盘用于输入食材编号。

【3】HX711重力传感器用来进行多种食材的称重。

【4】1.44寸LCD显示屏用来显示所有食材的各类营养含量总值。

【5】ESP8266无线WIFI模块用于将当前营养数据上传到手机端实时显示。

2.2 系统框架组成

【1】输入:使用4x4电容矩阵键盘输入食材编号,触发称重功能。

【2】称重:根据输入的食材编号,通过HX711重力传感器对多种食材依次称重。

【3】计算:系统自动计算所有食材的各类营养含量总值,并在1.44寸LCD显示屏上显示。

【4】判断:根据系统预设的营养指标,判断当前营养数据是否达标或超标。

【5】提示:若不达标或超标,系统进行相应的声光提示。

【6】数据上传:通过ESP8266无线WIFI模块将当前营养数据上传到手机端实时显示,并给出营养建议。

2.3 系统模块设计

【1】系统硬件设计

采用了51单片机作为主控芯片,重力传感器用于称重,矩阵键盘用于输入食材编号,液晶屏用于显示数据。同时,为了实现无线上传功能,还需要添加WIFI模块。

【2】系统软件设计

系统的软件设计主要包括两个方面,即驱动程序和应用程序。其中,驱动程序负责与各个硬件模块进行通信,读取和处理相关数据;应用程序则负责实现具体的计算和控制逻辑。

【3】食材营养成分数据预置

预先测量并记录多种食材的重量和营养成分含量,并将这些数据存储在系统中供后续使用。

【4】食材识别和称重

当用户输入食材编号后,系统自动从预置的数据中查找对应的营养成分信息。然后,用户将需要称重的食材放置在重力传感器上,系统开始进行称重并输出重量数据。

【5】营养计算和指标判断

系统根据已知的食材重量和营养成分数据,计算出当前食物的各类营养含量总值。同时,根据预设的营养指标,判断当前食物是否达标或超标,并进行相应的声光提示。

【6】数据传输和显示

将当前的营养数据通过WIFI模块上传到手机端实时显示,并根据用户的身体数据和运动情况,推荐合适的饮食方案。

【7】整体测试和优化:对系统进行整体测试和优化,确保系统能够正常工作并满足设计要求。

2.4 程序设计思路

【1】定义多种食材的营养成分数据,存储在程序中。

【2】初始化电容矩阵键盘和HX711重力传感器。

【3】等待用户输入食材编号。一旦检测到有效输入,记录食材编号并触发称重功能。

【4】根据输入的食材编号,依次使用HX711重力传感器进行称重,并根据对应的营养成分数据进行计算,得出每种营养成分的总值。

【5】将所有食材的营养成分总值通过1.44寸LCD显示屏展示给用户。

【6】根据系统预设的营养指标,判断当前营养数据是否达标或超标。如果不达标或超标,则进行相应的声光提示。

【7】通过ESP8266无线WIFI模块将当前营养数据上传到手机端实时显示,并给出营养建议。

三、程序代码实现

3.1 HX711称重传感器代码

下面是STC89C52单片机读取HX711称重传感器的值,得到最终的重量,打印到串口的完整代码:

#include 
#include 
​
// HX711引脚定义
sbit HX711_DOUT = P1^0; // 数据输出引脚
sbit HX711_SCK = P1^1; // 时钟输入引脚
​
typedef unsigned char uchar;
typedef unsigned int uint;
​
uchar WeiLai, OldData;  // 定义两个变量,用于保存数据
uchar Data[3];      // 存放读取的数据
long result = 0;     // 定义长整型变量,用于存放最终的重量值
​
void delay_us(uint us)  // 延时函数(微秒级)
{
  while(us--)
   {
    _nop_();      // 空操作语句,延时一微秒
    _nop_();
    _nop_();
    _nop_();
   }
}
​
void Read_HX711()     // 读HX711函数
{
  uchar i;
  HX711_DOUT = 1;    // 先将DOUT置为高电平
  delay_us(1);     // 延时1微秒
  HX711_SCK = 0;    // 将SCK置为低电平
  delay_us(1);     // 延时1微秒
​
  for(i=0;i<24;i++)     // 循环24次,读取数据
     {
         HX711_SCK = 1;    // 将SCK置为高电平
         delay_us(1);      // 延时1微秒
         WeiLai = HX711_DOUT;       // 读取DOUT引脚上的数据
         result <<= 1;     // 左移一位
         if(WeiLai == 1)   // 如果DOUT为1,将result的最低位赋值为1
         {
             result++;
         }
         HX711_SCK = 0;    // 将SCK置为低电平
         delay_us(1);      // 延时1微秒
     }
 ​
     WeiLai = OldData;     // 将OldData的值赋给WeiLai
     Data[2] = result;     // 存储重量值的最高字节
     Data[1] = result>>8; // 存储重量值的中间字节
  Data[0] = result>>16; // 存储重量值的最低字节
}
​
void main()
{
  TMOD = 0x20;     // 定时器T1工作模式设置
  TH1 = 0xfd;      // 波特率9600
  TL1 = 0xfd;      // 波特率9600
  TR1 = 1;       // 启动定时器T1
  SCON = 0x50;     // 设置串口工作方式
​
  while(1)
   {
    Read_HX711();   // 调用读HX711函数
​
    // 将读取到的数据打印到串口
    SBUF = Data[0];
    while(TI == 0);
    TI = 0;
​
    SBUF = Data[1];
    while(TI == 0);
    TI = 0;
​
    SBUF = Data[2];
    while(TI == 0);
    TI = 0;
   }
}

3.2 ESP82660-WIFI配置代码

以下是STC89C52单片机控制ESP8266,配置成AP模式,开启TCP服务器,等待客户端连接上来的完整代码:

#include 
#include 
​
#define RXD P3_0  // 串口接收引脚
#define TXD P3_1  // 串口发送引脚
​
typedef unsigned char uchar;
typedef unsigned int uint;
​
bit rcvflag;    // 接收标志位
uchar idata RcvBuf; // 存储接收到的数据
uchar len;     // 存储接收到的数据长度
uchar AT_OK;    // 存储AT指令执行结果
​
/* 延时函数 */
void Delayms(uint ms)
{
  uchar i, j;
  for(i=0;i;i++)>
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43980

    浏览量

    620888
  • STC89C52
    +关注

    关注

    39

    文章

    327

    浏览量

    81246
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120718
  • WIFI
    +关注

    关注

    81

    文章

    5162

    浏览量

    199456
收藏 人收藏

    评论

    相关推荐

    51单片机做电子实现金额的累加

    51单片机做电子实现金额的累加,要用按键触发外部中断怎么做后者不用中断,直接写一个函数怎么做
    发表于 08-08 15:04

    基于51单片机的电子 相关资料推荐

    基于51单片机的电子前言电子是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。它与我们日常生活紧密结合息息相关。电子称主要以
    发表于 07-06 06:32

    基于51单片机智能风扇控制系统的设计与实现

    完美.WORD格式.整理范文.范例.指导基于51单片机智能风扇控制系统的设计与实现摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大。传统风扇不能根据外界温度的变化对风扇转速快慢进行调整
    发表于 07-15 06:45

    基于51单片机实现智能家居产品

    51单片机也可以实现一个小小的智能家居√(smart-home)开源所有代码♥文章目录♥51单片机
    发表于 09-08 06:21

    怎么实现基于51单片机的土壤湿度检测及智能浇水系统的设计?

    怎么实现基于51单片机的土壤湿度检测及智能浇水系统的设计?
    发表于 10-12 12:03

    怎么实现基于51单片机智能大棚浇花系统的设计?

    怎么实现基于51单片机智能大棚浇花系统的设计?
    发表于 10-13 08:50

    如何实现基于51单片机智能台灯的设计?

    如何实现基于51单片机智能台灯的设计?
    发表于 10-21 08:19

    怎样去设计一种基于51单片机的电子

    基于51单片机的电子主要有哪几部分构成的?怎样去设计基于51单片机的电子软件部分啊?
    发表于 10-27 06:49

    基于51单片机的电子设计资料分享

    基于51单片机的电子设计功能:1.可以实现为去皮按键。2.可以进行校准。3.精度要求高。#include #include #include #include "main.h&quo
    发表于 11-10 06:09

    基于51单片机的自动浇花系统设计

    51单片机自动浇水系统/51单片机自动浇花系统整个设计由51
    发表于 11-18 08:27

    如何利用51单片机实现智能衣柜的设计

    设计简介:本设计是基于单片机智能衣柜,主要实现以下功能:实时测量衣柜温湿度,并可自动进行除湿;获取当前时间,且可通过按键调整;可通过按键设置紫外线消毒的开始时间和结束时间实现自动消毒
    发表于 11-19 06:27

    基于4位单片机SH66P58的智能体脂方案设计

    介绍基于4位单片机SH66P58的智能体脂方案设计,并对量产设计可能发生的问题做了相关说明。智能体脂方案
    发表于 11-29 07:42

    如何利用51单片机实现智能水杯系统的设计

    设计简介:本设计是基于单片机智能水杯系统,主要实现以下功能:可通过LCD1602显示温度、水质;可通过按键调整温度阈值;可通过按键控制杯盖和加热或制冷;可通过按键设置时间提醒喝水。标
    发表于 11-30 07:08

    基于51单片机的蓝牙智能台灯设计

    基于51单片机的蓝牙智能台灯目录 基于51单片机的蓝牙智能台灯功能:
    发表于 12-01 07:36

    分享一种基于51单片机智能电子系统设计方案

    与计算机联网,实现生产过程自动化,提高劳动生产率。功能描述1、采用51单片机作为核心控制单元;2、采用压力传感器对数据进行采集,电子专用24位AD转换芯片HX711对传感器采集到的模
    发表于 02-25 07:43