欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
HX711 1602顯示 矩陣鍵盤控制程序
[打印本頁]
作者:
572357525
時(shí)間:
2019-5-5 19:20
標(biāo)題:
HX711 1602顯示 矩陣鍵盤控制程序
矩陣鍵盤 P3口控制
單片機(jī)源程序如下:
#include "reg51.h"
#include "LCD1602.h"
#include "HX711.h"
#define uint unsigned int
#define uchar unsigned char
sbit Buzzer=P0^0;
unsigned long HX711_Buffer = 0;
unsigned long 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 char KEY_Scan()
{
unsigned char temp = 0;
unsigned char com = 0x55 , com1 = 0 , com2 = 0;
P3=0xf0;
if(P3!=0xf0)
{
com1=P3;
P3=0x0f;
com2=P3;
}
P3=0xf0;
while(P3!=0xf0);
temp=com1|com2;
if(temp==0xee)com=1;//數(shù)字1
if(temp==0xed)com=4;//數(shù)字4
if(temp==0xeb)com=7;//數(shù)字7
if(temp==0xe7)com=11;//備用鍵*號(hào)鍵
if(temp==0xd7)com=0;//數(shù)字0
if(temp==0xb7)com=14;//備用鍵*號(hào)鍵
if(temp==0xde)com=2; //數(shù)字2
if(temp==0xdd)com=5; //數(shù)字5
if(temp==0xdb)com=8;//數(shù)字8
if(temp==0xbe)com=3;//數(shù)字3
if(temp==0xbd)com=6; //數(shù)字6
if(temp==0xbb)com=9;//數(shù)字9
if(temp==0x7e)com=16;//數(shù)字A鍵,去皮功能
if(temp==0x7d)com=15;//數(shù)字B鍵清除鍵,二次測(cè)量
if(temp==0x7b)com=12;//數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
if(temp==0x77)com=13;//數(shù)字D鍵,計(jì)算總價(jià)
return(com);
}
//****************************************************
//稱重
//****************************************************
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; //獲取實(shí)物的AD采樣數(shù)值。
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.22+0.05); //計(jì)算實(shí)物的實(shí)際重量
//因?yàn)椴煌膫鞲衅魈匦郧不一樣,因此,每一個(gè)傳感器需要矯正這里的4.30這個(gè)除數(shù)。
//當(dāng)發(fā)現(xiàn)測(cè)試出來的重量偏大時(shí),增加該數(shù)值。
//如果測(cè)試出來的重量偏小時(shí),減小改數(shù)值。
//該數(shù)值一般在4.0-5.0之間。因傳感器不同而定。
//+0.05是為了四舍五入百分位
Buzzer = 1; //關(guān)閉警報(bào)
}
// else if(HX711_Buffer < Weight_Maopi - 30)
// {
// Buzzer = 0; //負(fù)重量報(bào)警
// }
// else if(HX711_Buffer > Weight_Maopi + 24970) //大于5Kg的最大量程,報(bào)警
// {
// Buzzer = 0;
// }
if(Weight_Shiwu > 5000 || HX711_Buffer < Weight_Maopi - 30)
{
Buzzer = 0;
}
else
{
Buzzer = 1;
}
}
//****************************************************
//獲取毛皮重量
//****************************************************
void Get_Maopi()
{
HX711_Buffer = HX711_Read();
Weight_Maopi = HX711_Buffer/100;
}
//****************************************************
//MS延時(shí)函數(shù)(12M晶振下測(cè)試)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void main()
{
Init_LCD1602(); //初始化LCD1602
LCD1602_write_com(0x80); //指針設(shè)置
LCD1602_write_word("Welcome to use! "); //開機(jī)畫面第一行
Delay_ms(2000); //延時(shí)2s
loop:Price_Count = 0;
Price_Buffer[0] = 0;
Price_Buffer[1] = 0;
Price_Buffer[2] = 0;
Flag_OK = 0;
LCD1602_write_com(0x80); //指針設(shè)置
LCD1602_write_word("+WEI |PRI | MON ");
LCD1602_write_com(0x80+0x40); //指針設(shè)置
LCD1602_write_word("0.000| . | . ");
Get_Maopi(); //稱毛皮重量
while(1)
{
if( Flag_OK == 0)
{
Get_Weight(); //稱重
//顯示當(dāng)前重量
LCD1602_write_com(0x80+0x40);
LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
LCD1602_write_data('.');
LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
LCD1602_write_data(Weight_Shiwu%10 + 0x30);
}
KEY_NUM = KEY_Scan();
if( KEY_NUM != 0x55) //當(dāng)返回的不是初值時(shí)候,確認(rèn)按鍵按下。
{
if(KEY_NUM == 16) //數(shù)字A鍵,去皮功能
{
Get_Maopi(); //去皮
}
if(KEY_NUM == 15) //數(shù)字B鍵清除鍵,二次測(cè)量
{
goto loop;
}
if(KEY_NUM == 12) //數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
{
Price_Count--;
if( Price_Count < 0)
{
Price_Count = 0;
}
Price_Buffer[Price_Count] = 0; //清除上一個(gè)輸入的數(shù)據(jù)
switch(Price_Count)
{
case 0:
LCD1602_write_com(0x80+0x40+6);
LCD1602_write_data(' ');
break;
case 1:
LCD1602_write_com(0x80+0x40+7);
LCD1602_write_data(' ');
break;
case 2:
LCD1602_write_com(0x80+0x40+9);
LCD1602_write_data(' ');
break;
default : break;
}
}
if(KEY_NUM == 13) //數(shù)字D鍵,計(jì)算總價(jià)
{
Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];
Money = Money * Weight_Shiwu / 1000;
LCD1602_write_com(0x80+0x40+11);
LCD1602_write_data(Money/1000 + 0x30);
LCD1602_write_data(Money%1000/100 + 0x30);
LCD1602_write_data(Money%100/10 + 0x30);
LCD1602_write_data('.');
LCD1602_write_data(Money%10 + 0x30);
Flag_OK = 1;
}
if(KEY_NUM >= 0 && KEY_NUM <= 9) //顯示輸入的價(jià)值
{
Price_Buffer[Price_Count] = KEY_NUM;
switch(Price_Count)
{
case 0:
LCD1602_write_com(0x80+0x40+6);
LCD1602_write_data(Price_Buffer[0] + 0x30);
break;
case 1:
LCD1602_write_com(0x80+0x40+7);
LCD1602_write_data(Price_Buffer[1] + 0x30);
break;
case 2:
LCD1602_write_com(0x80+0x40+9);
LCD1602_write_data(Price_Buffer[2] + 0x30);
break;
default : break;
}
Price_Count++;
if( Price_Count >= 3)
{
Price_Count = 3;
}
}
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
16.zip
(45.01 KB, 下載次數(shù): 25)
2019-5-5 19:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1