RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機(jī)的智能營(yíng)養(yǎng)秤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-17 16:25 ? 次閱讀

一、項(xiàng)目背景

隨著人們生活水平和健康意識(shí)的提高,越來越多的人開始注重自己的飲食健康。在此背景下,智能營(yíng)養(yǎng)秤系統(tǒng)應(yīng)運(yùn)而生,成為了一種非常實(shí)用的工具。本項(xiàng)目基于51單片機(jī)設(shè)計(jì)和實(shí)現(xiàn)一種智能營(yíng)養(yǎng)秤系統(tǒng),通過該系統(tǒng)可準(zhǔn)確地測(cè)量食物的重量并計(jì)算其熱量、蛋白質(zhì)、脂肪、碳水化合物等營(yíng)養(yǎng)成分含量。

當(dāng)前系統(tǒng)采用了STC89C52單片機(jī)作為主控芯片,預(yù)置了多種食材的營(yíng)養(yǎng)成分?jǐn)?shù)據(jù)。用戶只需要使用矩陣鍵盤輸入食材編號(hào),將需要稱重的食材放置在重力傳感器上進(jìn)行依次稱重,系統(tǒng)就可以自動(dòng)計(jì)算出所有食材的各類營(yíng)養(yǎng)含量總值,并通過液晶屏顯示出來。同時(shí),系統(tǒng)根據(jù)預(yù)設(shè)的營(yíng)養(yǎng)指標(biāo),對(duì)不達(dá)標(biāo)或超標(biāo)的食材進(jìn)行對(duì)應(yīng)的聲光提示,提醒用戶注意飲食健康。

當(dāng)前系統(tǒng)還配備了無線WIFI模塊,可以將當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)上傳到手機(jī)端實(shí)時(shí)顯示,并給出營(yíng)養(yǎng)建議。這使得用戶可以隨時(shí)1了解自己的飲食情況,及時(shí)進(jìn)行調(diào)整,從而達(dá)到更好的健康效果。

本項(xiàng)目的設(shè)計(jì)和實(shí)現(xiàn)是為了滿足人們對(duì)于飲食健康的需求,幫助人們更好地控制自己的飲食,達(dá)到健康瘦身的目的。同時(shí),由于采用了51單片機(jī)的設(shè)計(jì)方案,具有成本低、易于制作、易于維護(hù)等優(yōu)點(diǎn),具有廣泛的應(yīng)用前景。

poYBAGRreiaAbDGGAAj9vaxEOyM322.pngimage-20230517100117507

二、系統(tǒng)設(shè)計(jì)過程

2.1 硬件組成

【1】STC89C52單片機(jī)作為主控芯片。

【2】4x4電容矩陣鍵盤用于輸入食材編號(hào)。

【3】HX711重力傳感器用來進(jìn)行多種食材的稱重。

【4】1.44寸LCD顯示屏用來顯示所有食材的各類營(yíng)養(yǎng)含量總值。

【5】ESP8266無線WIFI模塊用于將當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)上傳到手機(jī)端實(shí)時(shí)顯示。

2.2 系統(tǒng)框架組成

【1】輸入:使用4x4電容矩陣鍵盤輸入食材編號(hào),觸發(fā)稱重功能。

【2】稱重:根據(jù)輸入的食材編號(hào),通過HX711重力傳感器對(duì)多種食材依次稱重。

【3】計(jì)算:系統(tǒng)自動(dòng)計(jì)算所有食材的各類營(yíng)養(yǎng)含量總值,并在1.44寸LCD顯示屏上顯示。

【4】判斷:根據(jù)系統(tǒng)預(yù)設(shè)的營(yíng)養(yǎng)指標(biāo),判斷當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)是否達(dá)標(biāo)或超標(biāo)。

【5】提示:若不達(dá)標(biāo)或超標(biāo),系統(tǒng)進(jìn)行相應(yīng)的聲光提示。

【6】數(shù)據(jù)上傳:通過ESP8266無線WIFI模塊將當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)上傳到手機(jī)端實(shí)時(shí)顯示,并給出營(yíng)養(yǎng)建議。

2.3 系統(tǒng)模塊設(shè)計(jì)

【1】系統(tǒng)硬件設(shè)計(jì)

采用了51單片機(jī)作為主控芯片,重力傳感器用于稱重,矩陣鍵盤用于輸入食材編號(hào),液晶屏用于顯示數(shù)據(jù)。同時(shí),為了實(shí)現(xiàn)無線上傳功能,還需要添加WIFI模塊。

【2】系統(tǒng)軟件設(shè)計(jì)

系統(tǒng)的軟件設(shè)計(jì)主要包括兩個(gè)方面,即驅(qū)動(dòng)程序和應(yīng)用程序。其中,驅(qū)動(dòng)程序負(fù)責(zé)與各個(gè)硬件模塊進(jìn)行通信,讀取和處理相關(guān)數(shù)據(jù);應(yīng)用程序則負(fù)責(zé)實(shí)現(xiàn)具體的計(jì)算和控制邏輯。

【3】食材營(yíng)養(yǎng)成分?jǐn)?shù)據(jù)預(yù)置

預(yù)先測(cè)量并記錄多種食材的重量和營(yíng)養(yǎng)成分含量,并將這些數(shù)據(jù)存儲(chǔ)在系統(tǒng)中供后續(xù)使用。

【4】食材識(shí)別和稱重

當(dāng)用戶輸入食材編號(hào)后,系統(tǒng)自動(dòng)從預(yù)置的數(shù)據(jù)中查找對(duì)應(yīng)的營(yíng)養(yǎng)成分信息。然后,用戶將需要稱重的食材放置在重力傳感器上,系統(tǒng)開始進(jìn)行稱重并輸出重量數(shù)據(jù)。

【5】營(yíng)養(yǎng)計(jì)算和指標(biāo)判斷

系統(tǒng)根據(jù)已知的食材重量和營(yíng)養(yǎng)成分?jǐn)?shù)據(jù),計(jì)算出當(dāng)前食物的各類營(yíng)養(yǎng)含量總值。同時(shí),根據(jù)預(yù)設(shè)的營(yíng)養(yǎng)指標(biāo),判斷當(dāng)前食物是否達(dá)標(biāo)或超標(biāo),并進(jìn)行相應(yīng)的聲光提示。

【6】數(shù)據(jù)傳輸和顯示

將當(dāng)前的營(yíng)養(yǎng)數(shù)據(jù)通過WIFI模塊上傳到手機(jī)端實(shí)時(shí)顯示,并根據(jù)用戶的身體數(shù)據(jù)和運(yùn)動(dòng)情況,推薦合適的飲食方案。

【7】整體測(cè)試和優(yōu)化:對(duì)系統(tǒng)進(jìn)行整體測(cè)試和優(yōu)化,確保系統(tǒng)能夠正常工作并滿足設(shè)計(jì)要求。

2.4 程序設(shè)計(jì)思路

【1】定義多種食材的營(yíng)養(yǎng)成分?jǐn)?shù)據(jù),存儲(chǔ)在程序中。

【2】初始化電容矩陣鍵盤和HX711重力傳感器。

【3】等待用戶輸入食材編號(hào)。一旦檢測(cè)到有效輸入,記錄食材編號(hào)并觸發(fā)稱重功能。

【4】根據(jù)輸入的食材編號(hào),依次使用HX711重力傳感器進(jìn)行稱重,并根據(jù)對(duì)應(yīng)的營(yíng)養(yǎng)成分?jǐn)?shù)據(jù)進(jìn)行計(jì)算,得出每種營(yíng)養(yǎng)成分的總值。

【5】將所有食材的營(yíng)養(yǎng)成分總值通過1.44寸LCD顯示屏展示給用戶。

【6】根據(jù)系統(tǒng)預(yù)設(shè)的營(yíng)養(yǎng)指標(biāo),判斷當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)是否達(dá)標(biāo)或超標(biāo)。如果不達(dá)標(biāo)或超標(biāo),則進(jìn)行相應(yīng)的聲光提示。

【7】通過ESP8266無線WIFI模塊將當(dāng)前營(yíng)養(yǎng)數(shù)據(jù)上傳到手機(jī)端實(shí)時(shí)顯示,并給出營(yíng)養(yǎng)建議。

三、程序代碼實(shí)現(xiàn)

3.1 HX711稱重傳感器代碼

下面是STC89C52單片機(jī)讀取HX711稱重傳感器的值,得到最終的重量,打印到串口的完整代碼:

#include 
#include 
?
// HX711引腳定義
sbit HX711_DOUT = P1^0; // 數(shù)據(jù)輸出引腳
sbit HX711_SCK = P1^1; // 時(shí)鐘輸入引腳
?
typedef unsigned char uchar;
typedef unsigned int uint;
?
uchar WeiLai, OldData;  // 定義兩個(gè)變量,用于保存數(shù)據(jù)
uchar Data[3];      // 存放讀取的數(shù)據(jù)
long result = 0;     // 定義長(zhǎng)整型變量,用于存放最終的重量值
?
void delay_us(uint us)  // 延時(shí)函數(shù)(微秒級(jí))
{
  while(us--)
   {
    _nop_();      // 空操作語句,延時(shí)一微秒
    _nop_();
    _nop_();
    _nop_();
   }
}
?
void Read_HX711()     // 讀HX711函數(shù)
{
  uchar i;
  HX711_DOUT = 1;    // 先將DOUT置為高電平
  delay_us(1);     // 延時(shí)1微秒
  HX711_SCK = 0;    // 將SCK置為低電平
  delay_us(1);     // 延時(shí)1微秒
?
  for(i=0;i<24;i++) ? ? // 循環(huán)24次,讀取數(shù)據(jù)
? ?  {
? ? ? ? ?HX711_SCK = 1; ? ?// 將SCK置為高電平
? ? ? ? ?delay_us(1); ? ? ?// 延時(shí)1微秒
? ? ? ? ?WeiLai = HX711_DOUT; ? ? ? // 讀取DOUT引腳上的數(shù)據(jù)
? ? ? ? ?result <<= 1; ? ? // 左移一位
? ? ? ? ?if(WeiLai == 1) ? // 如果DOUT為1,將result的最低位賦值為1
? ? ? ?  {
? ? ? ? ? ? ?result++;
? ? ? ?  }
? ? ? ? ?HX711_SCK = 0; ? ?// 將SCK置為低電平
? ? ? ? ?delay_us(1); ? ? ?// 延時(shí)1微秒
? ?  }
??
? ? ?WeiLai = OldData; ? ? // 將OldData的值賦給WeiLai
? ? ?Data[2] = result; ? ? // 存儲(chǔ)重量值的最高字節(jié)
? ? ?Data[1] = result>>8; // 存儲(chǔ)重量值的中間字節(jié)
  Data[0] = result>>16; // 存儲(chǔ)重量值的最低字節(jié)
}
?
void main()
{
  TMOD = 0x20;     // 定時(shí)器T1工作模式設(shè)置
  TH1 = 0xfd;      // 波特率9600
  TL1 = 0xfd;      // 波特率9600
  TR1 = 1;       // 啟動(dòng)定時(shí)器T1
  SCON = 0x50;     // 設(shè)置串口工作方式
?
  while(1)
   {
    Read_HX711();   // 調(diào)用讀HX711函數(shù)
?
    // 將讀取到的數(shù)據(jù)打印到串口
    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單片機(jī)控制ESP8266,配置成AP模式,開啟TCP服務(wù)器,等待客戶端連接上來的完整代碼:

#include 
#include 
?
#define RXD P3_0  // 串口接收引腳
#define TXD P3_1  // 串口發(fā)送引腳
?
typedef unsigned char uchar;
typedef unsigned int uint;
?
bit rcvflag;    // 接收標(biāo)志位
uchar idata RcvBuf; // 存儲(chǔ)接收到的數(shù)據(jù)
uchar len;     // 存儲(chǔ)接收到的數(shù)據(jù)長(zhǎng)度
uchar AT_OK;    // 存儲(chǔ)AT指令執(zhí)行結(jié)果
?
/* 延時(shí)函數(shù) */
void Delayms(uint ms)
{
  uchar i, j;
  for(i=0;i;i++)>
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634614
  • STC89C52
    +關(guān)注

    關(guān)注

    41

    文章

    330

    瀏覽量

    82041
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5702

    瀏覽量

    123489
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5296

    瀏覽量

    203569
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎么實(shí)現(xiàn)基于51單片機(jī)智能大棚澆花系統(tǒng)的設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于51單片機(jī)智能大棚澆花系統(tǒng)的設(shè)計(jì)?
    發(fā)表于 10-13 08:50

    分享一種基于51單片機(jī)智能電子系統(tǒng)設(shè)計(jì)方案

    與計(jì)算機(jī)聯(lián)網(wǎng),實(shí)現(xiàn)生產(chǎn)過程自動(dòng)化,提高勞動(dòng)生產(chǎn)率。功能描述1、采用51單片機(jī)作為核心控制單元;2、采用壓力傳感器對(duì)數(shù)據(jù)進(jìn)行采集,電子專用24位AD轉(zhuǎn)換芯片HX711對(duì)傳感器采集到的模
    發(fā)表于 02-25 07:43

    基于51單片機(jī)循跡智能小車

    基于51單片機(jī)循跡智能小車基于51單片機(jī)循跡智能小車基于51
    發(fā)表于 11-13 15:55 ?0次下載

    基于51單片機(jī)控制的電子設(shè)計(jì)與實(shí)現(xiàn)--update

    介紹了基于51單片機(jī)控制的電子設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 01-14 17:06 ?26次下載

    基于51單片機(jī)的電子的設(shè)計(jì)

    基于51單片機(jī)的電子的設(shè)計(jì),簡(jiǎn)單易懂,AT89C51芯片,可靠!
    發(fā)表于 01-20 16:01 ?43次下載

    51單片機(jī)多任務(wù)操作系統(tǒng)的原理與實(shí)現(xiàn)

    51單片機(jī)多任務(wù)操作系統(tǒng)的原理與實(shí)現(xiàn),在51單片機(jī)上模擬操作
    發(fā)表于 02-28 15:09 ?16次下載

    基于51單片機(jī)的應(yīng)變片電子設(shè)計(jì)

    基于51單片機(jī)的應(yīng)變片電子設(shè)計(jì)
    發(fā)表于 06-20 17:35 ?286次下載

    基于單片機(jī)的電子模型實(shí)現(xiàn)

    基于單片機(jī)的電子模型實(shí)現(xiàn)
    發(fā)表于 10-16 10:22 ?50次下載
    基于<b class='flag-5'>單片機(jī)</b>的電子<b class='flag-5'>秤</b>模型<b class='flag-5'>實(shí)現(xiàn)</b>

    基于51單片機(jī)和AD574的簡(jiǎn)易電子的設(shè)計(jì)

    分析了基于51單片機(jī)和AD574的簡(jiǎn)易電子的設(shè)計(jì),根據(jù)測(cè)量要求設(shè)計(jì)了傳感器電路、AD轉(zhuǎn)換電路、超量程報(bào)警電路、顯示電路、按鍵電路等。采用高精度AD轉(zhuǎn)換芯片AD574和實(shí)時(shí)處理的MCUAT89C52
    發(fā)表于 12-18 17:09 ?1.7w次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>和AD574的簡(jiǎn)易電子<b class='flag-5'>秤</b>的設(shè)計(jì)

    基于51單片機(jī)藍(lán)牙電子設(shè)計(jì)資料下載

    基于51單片機(jī)藍(lán)牙電子設(shè)計(jì)資料下載
    發(fā)表于 10-25 10:23 ?17次下載

    51單片機(jī)——基于單片機(jī)智能報(bào)警系統(tǒng)設(shè)計(jì)

    基于51單片機(jī)的宿舍火警報(bào)警系統(tǒng)基于單片機(jī)智能報(bào)警系統(tǒng)設(shè)計(jì)基于
    發(fā)表于 11-04 12:06 ?29次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>智能</b>報(bào)警<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    基于51單片機(jī)的電子

    基于51單片機(jī)的電子前言電子是將檢測(cè)與轉(zhuǎn)換技術(shù)、計(jì)算機(jī)技術(shù)、信息處理、數(shù)字技術(shù)等技術(shù)綜合一體的現(xiàn)代新型稱重儀器。它與我們?nèi)粘I罹o密結(jié)合息息相關(guān)。電子稱主要以
    發(fā)表于 11-04 18:21 ?41次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的電子<b class='flag-5'>秤</b>

    基于51單片機(jī)的電子(5KG+上限報(bào)警)設(shè)計(jì)

    基于51單片機(jī)的電子(5KG+上限報(bào)警)(實(shí)物)
    發(fā)表于 01-02 09:47 ?7次下載

    基于51單片機(jī)的電子設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)的電子設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 10:16 ?14次下載

    基于51單片機(jī)的商用電子計(jì)價(jià)設(shè)計(jì)

    的代碼編號(hào),在LM4229上可以看到相應(yīng)商品的名稱、單價(jià)、總重、總價(jià)格等信息; (4)在稱量的過程中,若物品重量超出電子的稱重范圍(0—4.99Kg),蜂鳴器警報(bào),警示物品超重。設(shè)計(jì)介紹51單片機(jī)
    的頭像 發(fā)表于 10-22 14:10 ?112次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的商用電子計(jì)價(jià)<b class='flag-5'>秤</b>設(shè)計(jì)
    RM新时代网站-首页