1、称重压力传感器HX711AD模块电路+程序 称重模块电路+程序(测试通过) 总体电路电源+串口通讯单片机最小系统:存储模块+下载模块+蜂鸣器+矩阵键盘称重模块:淘宝链接:主程序:#include main.h#include LCD1602.h#include HX711.hunsigned long HX711_Buffer = 0;unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;char Price_Count = 0;unsigned char KEY_NUM = 0;unsigned char Price_Buffer3 = 0x00,0
2、x00,0x00;unsigned long Money = 0;bit Flag_OK = 0;/*/主函数/*void main() Init_LCD1602(); /初始化LCD1602 LCD1602_write_com(0x80); /指针设置 LCD1602_write_word(Welcome to use! ); /开机画面第一行 Delay_ms(2000); /延时2sloop:Price_Count = 0; Price_Buffer0 = 0; Price_Buffer1 = 0; Price_Buffer2 = 0; Flag_OK = 0; LCD1602_writ
3、e_com(0x80); /指针设置 LCD1602_write_word(+WEI |PRI | MON ); LCD1602_write_com(0x80+0x40); /指针设置 LCD1602_write_word(0.000| . | . ); Get_Maopi(); /称毛皮重量 while(1) if( Flag_OK = 0) Get_Weight(); /称重 /显示当前重量 LCD1602_write_com(0x80+0x40); LCD1602_write_data(Weight_Shiwu/1000 + 0x30); LCD1602_write_data(.); L
4、CD1602_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) /当返回的不是初值时候,确认按键按下。 if(KEY_NUM = 16) /数字A键,去皮功能 Get_Maopi(); /去皮 if(KEY_NUM = 15) /数字B键清除键,二次测量 goto loop; if(KEY_NU
5、M = 12) /数字C输入单价错误时返回上一步 Price_Count-; if( Price_Count = 0 & KEY_NUM = 3) Price_Count = 3; /*/矩阵键盘扫描/*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=0x
6、ee)com=1;/数字1 if(temp=0xed)com=4;/数字4 if(temp=0xeb)com=7;/数字7 if(temp=0xe7)com=11;/备用键*号键 if(temp=0xd7)com=0;/数字0 if(temp=0xb7)com=14;/备用键*号键 if(temp=0xde)com=2; /数字2 if(temp=0xdd)com=5; /数字5 if(temp=0xdb)com=8;/数字8 if(temp=0xbe)com=3;/数字3 if(temp=0xbd)com=6; /数字6 if(temp=0xbb)com=9;/数字9 if(temp=0x7
7、e)com=16;/数字A键,去皮功能 if(temp=0x7d)com=15;/数字B键清除键,二次测量 if(temp=0x7b)com=12;/数字C输入单价错误时返回上一步 if(temp=0x77)com=13;/数字D键,计算总价 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 = Weigh
8、t_Shiwu - Weight_Maopi; /获取实物的AD采样数值。 Weight_Shiwu = (unsigned int)(float)Weight_Shiwu/4.22+0.05); /计算实物的实际重量 /因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。 /当发现测试出来的重量偏大时,增加该数值。 /如果测试出来的重量偏小时,减小改数值。 /该数值一般在4.0-5.0之间。因传感器不同而定。 /+0.05是为了四舍五入百分位 Buzzer = 1; /关闭警报 / else if(HX711_Buffer Weight_Maopi + 2497
9、0) /大于5Kg的最大量程,报警 / / 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延时函数(12M晶振下测试)/*void Delay_ms(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0
10、;j123;j+);1602.H文件#ifndef _LCD1602_H_#define _LCD1602_H_#include /LCD1602 IO设置#define LCD1602_PORT P0sbit LCD1602_RS = P25;sbit LCD1602_RW = P26;sbit LCD1602_EN = P27;/函数或者变量声明extern void LCD1602_delay_ms(unsigned int n);extern void LCD1602_write_com(unsigned char com);extern void LCD1602_write_data
11、(unsigned char dat);extern void LCD1602_write_word(unsigned char *s);extern void Init_LCD1602();#endif1602.C程序 :#include LCD1602.h/*/MS延时函数(12M晶振下测试)/*void LCD1602_delay_ms(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j0) LCD1602_write_data(*s); s+; void Init_LCD1602() LCD1602_EN = 0; LC
12、D1602_RW = 0; /设置为写状态 LCD1602_write_com(0x38); /显示模式设定 LCD1602_write_com(0x0c); /开关显示、光标有无设置、光标闪烁设置 LCD1602_write_com(0x06); /写一个字符后指针加一 LCD1602_write_com(0x01); /清屏指令称重模块.H文件:#ifndef _HX711_H_#define _HX711_H_#include #include /IO设置sbit HX711_DOUT=P20; sbit HX711_SCK=P21; /函数或者变量声明extern void Delay
13、_hx711_us(void);extern unsigned long HX711_Read(void);#endif称重模块.C程序#include HX711.h/*/延时函数/*void Delay_hx711_us(void) _nop_(); _nop_();/*/读取HX711/*unsigned long HX711_Read(void) /增益128 unsigned long count; unsigned char i; HX711_DOUT=1; Delay_hx711_us(); HX711_SCK=0; count=0; while(HX711_DOUT); for(i=0;i24;i+) HX711_SCK=1; count=count1; HX711_SCK=0; if(HX711_DOUT) count+; HX711_SCK=1; count=count0x800000;/第25个脉冲下降沿来时,转换数据 Delay_hx711_us(); HX711_SCK=0; return(count);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1