電子秤是采用現代傳感器技術、電子技術和計算機技術一體化的電子稱量裝置,滿足并解決現實生活中提出的“快速、準確、連續、自動”稱量要求,同時有效地消除人為誤差,使之更符合法制計量管理和工業生產過程控制的應用要求。
硬件設計

稱重傳感器感應被測重力,輸出微弱的毫伏級電壓信號。該電壓信號經過電子秤專用模擬/數字(A/D)轉換器芯片hx711對傳感器信號進行調理轉換。HX711 采用了海芯科技集成電路專利技術,是一款專為高精度電子秤而設計的24 位A/D 轉換器芯片,內置增益控制,精度高,性能穩定。HX711芯片通過2線串行方式與單片機通信。單片機讀取被測數據,進行計算轉換,再液晶屏上顯示出來。
矩陣鍵盤主要用于計算金額。當被測物體重量得到后,用戶可以通過矩陣鍵盤輸入單價,電子秤自動計算總金額并在液晶屏顯示。電源系統給單片機、HX711電路及傳感器供電。
電子秤專用24位AD轉換芯片HX711電路


單片機STC89C52電路


液晶屏電路

矩陣鍵盤電路

矩陣鍵盤可以顯示0-9數字、小數點和五個功能鍵。鍵盤行掃描信號為ROW1—ROW4,列掃描信號為COL1—COL4。行信號為輸入信號,低電平有效;列信號為輸出信號。當沒有鍵按下時,即使行掃描輸入低電平信號,列信號仍為高電平;當行掃描為低電平并且有鍵按下時,相應的列輸出低電平。該低電平信號可以定位至按下鍵的位置。
聲光報警電路

當測量重量超過量程時,beep和alert給出低電平信號,驅動蜂鳴器鳴響,報警燈亮。

電源采用USB接口供電,電源電壓5V。同時,USB接口通過內含PL2303芯片的轉換電路對單片機進行程序編寫。
軟件設計
主程序使用了定時器,用來實現每0.5秒稱重一次的功能,流程圖如下:
? ? ? ?
時鐘中斷程序流程圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 鍵盤掃描程序流程圖 ? ? ? ? ? ? ??

主程序流程圖
主程序編寫
下面介紹main.c主程序編寫,其他程序略。
?。?) 頭文件和一些宏定義
#include 《reg52.h》
#include 《intrins.h》
#include 《string.h》
#include “lcd.h”
#include “hx711.h”
#include “keyboard.h”
//定義量程系數
#define RATIO 2114/1623
?。?) 管腳、常量、變量定義
//定義標識
volatile bit FlagTest = 0;
//定時測試標志,每0.5秒置位,測完清0
volatile bit FlagKeyPress = 0; //有鍵按下標志,處理完畢清0
volatile bit FlagSetPrice = 0; //價格設置狀態標志,設置好為1
//管腳定義 sbit LedA = P2^2;
sbit beep = P1^0;
sbit alert = P1^1;
//顯示用變量 int Counter;
uchar idata str1[6] = “000000”;
int i, iTemp; //稱重用變量
unsigned long idata FullScale; //滿量程AD值/1000
unsigned long AdVal; //AD采樣值
unsigned long weight; //重量值,單位g
unsigned long idata price; //單價,長整型值,單位為分
unsigned long idata money; //總價,長整型值,單位為分
//鍵盤處理變量
uchar keycode; uchar DotPos;
//小數點標志及位置
?。?) 各子程序
//整型轉字符串的函數,轉換范圍0--65536 void int2str(int x, char* str)
{
int i=1;
int tmp=10;
while(x/tmp!=0)
{
i++;
tmp*=10;
}
tmp=x;
str[i]=‘
電子發燒友App