電子秤是采用現(xiàn)代傳感器技術(shù)、電子技術(shù)和計算機技術(shù)一體化的電子稱量裝置,滿足并解決現(xiàn)實生活中提出的“快速、準確、連續(xù)、自動”稱量要求,同時有效地消除人為誤差,使之更符合法制計量管理和工業(yè)生產(chǎn)過程控制的應(yīng)用要求。
硬件設(shè)計
稱重傳感器感應(yīng)被測重力,輸出微弱的毫伏級電壓信號。該電壓信號經(jīng)過電子秤專用模擬/數(shù)字(A/D)轉(zhuǎn)換器芯片hx711對傳感器信號進行調(diào)理轉(zhuǎn)換。HX711 采用了海芯科技集成電路專利技術(shù),是一款專為高精度電子秤而設(shè)計的24 位A/D 轉(zhuǎn)換器芯片,內(nèi)置增益控制,精度高,性能穩(wěn)定。HX711芯片通過2線串行方式與單片機通信。單片機讀取被測數(shù)據(jù),進行計算轉(zhuǎn)換,再液晶屏上顯示出來。
矩陣鍵盤主要用于計算金額。當被測物體重量得到后,用戶可以通過矩陣鍵盤輸入單價,電子秤自動計算總金額并在液晶屏顯示。電源系統(tǒng)給單片機、HX711電路及傳感器供電。
電子秤專用24位AD轉(zhuǎn)換芯片HX711電路
單片機STC89C52電路
液晶屏電路
矩陣鍵盤電路
矩陣鍵盤可以顯示0-9數(shù)字、小數(shù)點和五個功能鍵。鍵盤行掃描信號為ROW1—ROW4,列掃描信號為COL1—COL4。行信號為輸入信號,低電平有效;列信號為輸出信號。當沒有鍵按下時,即使行掃描輸入低電平信號,列信號仍為高電平;當行掃描為低電平并且有鍵按下時,相應(yīng)的列輸出低電平。該低電平信號可以定位至按下鍵的位置。
聲光報警電路
當測量重量超過量程時,beep和alert給出低電平信號,驅(qū)動蜂鳴器鳴響,報警燈亮。
電源采用USB接口供電,電源電壓5V。同時,USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機進行程序編寫。
軟件設(shè)計
主程序使用了定時器,用來實現(xiàn)每0.5秒稱重一次的功能,流程圖如下:
? ? ? ?
時鐘中斷程序流程圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 鍵盤掃描程序流程圖 ? ? ? ? ? ? ??
主程序流程圖
主程序編寫
下面介紹main.c主程序編寫,其他程序略。
?。?) 頭文件和一些宏定義
#include 《reg52.h》
#include 《intrins.h》
#include 《string.h》
#include “l(fā)cd.h”
#include “hx711.h”
#include “keyboard.h”
//定義量程系數(shù)
#define RATIO 2114/1623
?。?) 管腳、常量、變量定義
//定義標識
volatile bit FlagTest = 0;
//定時測試標志,每0.5秒置位,測完清0
volatile bit FlagKeyPress = 0; //有鍵按下標志,處理完畢清0
volatile bit FlagSetPrice = 0; //價格設(shè)置狀態(tài)標志,設(shè)置好為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;
//小數(shù)點標志及位置
?。?) 各子程序
//整型轉(zhuǎn)字符串的函數(shù),轉(zhuǎn)換范圍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]=‘