基于51單片機的智能營養(yǎng)秤系統(tǒng)設計與實現(xiàn)
2023-05-17 17:39:11 來源:DS小龍哥-嵌入式技術

一、項目背景

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


【資料圖】

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

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

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

二、系統(tǒng)設計過程

2.1 硬件組成

【1】STC89C52單片機作為主控芯片。

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

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

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

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

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

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

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

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

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

【5】提示:若不達標或超標,系統(tǒng)進行相應的聲光提示。

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

2.3 系統(tǒng)模塊設計

【1】系統(tǒng)硬件設計

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

【2】系統(tǒng)軟件設計

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

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

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

【4】食材識別和稱重

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

【5】營養(yǎng)計算和指標判斷

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

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

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

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

2.4 程序設計思路

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

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

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

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

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

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

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

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

3.1 HX711稱重傳感器代碼

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

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

#include #include ?#define RXD P3_0  // 串口接收引腳#define TXD P3_1  // 串口發(fā)送引腳?typedef unsigned char uchar;typedef unsigned int uint;?bit rcvflag;    // 接收標志位uchar idata RcvBuf; // 存儲接收到的數(shù)據(jù)uchar len;     // 存儲接收到的數(shù)據(jù)長度uchar AT_OK;    // 存儲AT指令執(zhí)行結(jié)果?/* 延時函數(shù) */void Delayms(uint ms){  uchar i, j;  for(i=0;i;i++)>

關鍵詞:

相關閱讀
分享到:
版權(quán)和免責申明

凡注有"實況網(wǎng)-重新發(fā)現(xiàn)生活"或電頭為"實況網(wǎng)-重新發(fā)現(xiàn)生活"的稿件,均為實況網(wǎng)-重新發(fā)現(xiàn)生活獨家版權(quán)所有,未經(jīng)許可不得轉(zhuǎn)載或鏡像;授權(quán)轉(zhuǎn)載必須注明來源為"實況網(wǎng)-重新發(fā)現(xiàn)生活",并保留"實況網(wǎng)-重新發(fā)現(xiàn)生活"的電頭。

国产又粗又猛又黄视频,97超碰亚洲中文字幕校园,中文字幕在线视频网站,国产阿v视频高清在线观看
亚洲一级大片在线 | 天天综合网亚在线 | 午夜性刺激在线看免费y | 最新91地址中文字幕 | 在线播放国产在线一区 | 一级a爱片视频在线观看 |