欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機電子秤設計(程序,原理圖分享)
[打印本頁]
作者:
木葉是你啊
時間:
2020-5-8 20:53
標題:
51單片機電子秤設計(程序,原理圖分享)
可去皮,重量微調,語音播報重量。
單片機源程序如下:
#include "main.h"
#include "LCD1602.h"
#include "HX711.h"
//#include"eeprom.h"
unsigned long HX711_Buffer = 0;
unsigned int Weight_Maopi = 0,Weight_Shiwu = 0;
char Price_Count = 0;
unsigned char KEY_NUM = 0;
unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
unsigned long Money = 0;
bit Flag_OK = 0;
unsigned int Weight=10,s1num=0; //報警值初始化 按鍵計數標志
float m__1=2.90;
//語音播報程序
sbit MUSIC_REST =P2^2;//語音芯片復位腳
sbit MUSIC_DATA =P2^1;//語音芯片脈沖識別
sbit bus =P2^0;//語音芯片工作狀態識別信號
unsigned char bbh,xm1,xm2,xm0,xm3;
void delay_us(unsigned int us)
{
while(us--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void Music(unsigned char music_count)
{
MUSIC_REST=1;
delay_us(200);
MUSIC_REST=0;
delay_us(200);
while(music_count>0)
{
MUSIC_DATA=1;
delay_us(100);
MUSIC_DATA=0;
delay_us(100);
music_count--;
}
}
void Msc()
{
if((xm0+xm1+xm2+xm3)!=0) //當超出測量范圍時不進行播報
{
Music(16); //播報:“ 重量 ”
while(!bus);
if(xm0==0)
{
Music(2); //播報:“千位數具體值” 0
while(!bus);
}
else Music(xm0+2); //播報:“千位數具體值”
while(!bus);
// Music(14); //播報:“點”
// while(!bus);
if(xm1==0)
{
Music(2); //播報:“百位數具體值” 0
while(!bus);
}
else Music(xm1+2); //播報:“千位數具體值”
while(!bus);
if((xm2+xm3)!=0)
{
Music(xm2+2); //播報:“十分位的具體值”
while(!bus);
Music(xm3+2); //播報:“百分位的具體值”
while(!bus);
Music(15); //播報:“單位”
while(!bus);
}
else
{
Music(15); //播報:“單位”
while(!bus);
}
}
}
//****************************************************
//主函數
//****************************************************
void main()
{
Init_LCD1602(); //初始化LCD1602
LCD1602_write_com(0x80); //指針設置
LCD1602_write_word("Welcome to use! "); //開機畫面第一行
Delay_ms(2000); //延時2s
Price_Buffer[0] = 0;
Price_Buffer[1] = 0;
Price_Buffer[2] = 0;
Flag_OK = 0;
LCD1602_write_com(0x80); //指針設置
LCD1602_write_word(" Test weight ");//重量檢測儀
LCD1602_write_com(0x80+0x40); //指針設置
LCD1602_write_word("weight: g ");
Get_Maopi(); //稱毛皮重量
while(1)
{
Get_Weight(); //稱重
KEY_Scan();
}
}
//****************************************************
//稱重
//****************************************************
void Get_Weight()
{
HX711_Buffer = HX711_Read();
HX711_Buffer = HX711_Buffer/100;
if(HX711_Buffer > Weight_Maopi)
{
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //獲取實物的AD采樣數值。
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/m__1+0.05); //計算實物的實際重量
//因為不同的傳感器特性曲線不一樣,因此,每一個傳感器需要矯正這里的4.30這個除數。
//當發現測試出來的重量偏大時,增加該數值。
//如果測試出來的重量偏小時,減小改數值。
//該數值一般在4.0-5.0之間。因傳感器不同而定。
//+0.05是為了四舍五入百分位
if(Weight_Shiwu >500 )Weight_Shiwu=500;
if(Weight_Shiwu < 5)Weight_Shiwu=0;
xm0=Weight_Shiwu/1000 ;
xm1=Weight_Shiwu%1000/100;
xm2=Weight_Shiwu%100/10;
xm3=Weight_Shiwu%10;
LCD1602_write_com(0x80+0x40+7);
LCD1602_write_data(xm0+ 0x30);
LCD1602_write_data(xm1 + 0x30);
LCD1602_write_data(xm2 + 0x30);
LCD1602_write_data(xm3 + 0x30);
}
}
void delay(unsigned int x) //毫秒級延時函數
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void KEY_Scan()
{
while(!k4)
{
bbh=1;
}
if(bbh==1) //bb=1調用一次播報程序
{
bbh=0;
Msc();
}
if(key1==0) //
{
delay(10);
if(key1==0)
{
while(!key1); //
Get_Maopi(); //去皮
}
}
if(key2==0) //
{
delay(10);
if(key2==0)
{
while(!key2); // 微調重量-
m__1=m__1+0.10;
if(m__1>=5.10)m__1=5.00;
}
}
if(key3==0) //
{
delay(10);
if(key3==0)
{
while(!key3); // 微調重量+
m__1=m__1-0.10;
if(m__1<=1.10)m__1=2.50;
}
}
}
//****************************************************
//獲取毛皮重量
//****************************************************
void Get_Maopi()
{
HX711_Buffer = HX711_Read();
Weight_Maopi = HX711_Buffer/100;
}
//****************************************************
//MS延時函數(12M晶振下測試)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
復制代碼
所有資料51hei提供下載:
電子稱設計.zip
(174.55 KB, 下載次數: 60)
2020-5-8 20:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
18727305772
時間:
2020-6-12 17:24
做的真棒,點個贊
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1