STC15W408读取HX711称重数据串口发送
STC15W408读取HX711称重数据串口发送
#include "STC15Fxxxx.H"
#include <stdio.h>
#include <string.h>unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
long Weight_Shiwu = 0;unsigned char flag = 0;
bit Flag_ERROR = 0;
sbit HX711_DOUT=P1^1;
sbit HX711_SCK=P3^7; //校准参数
//因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。
//当发现测试出来的重量偏大时,增加该数值。
//如果测试出来的重量偏小时,减小改数值。
//该值可以为小数
#define GapValue 430//****************************************************
//延时函数
//****************************************************
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;EA = 1; while(HX711_DOUT); EA = 0;for(i=0;i<24;i++){ HX711_SCK=1; count=count<<1; HX711_SCK=0; if(HX711_DOUT)count++; } HX711_SCK=1; count=count^0x800000;//第25个脉冲下降沿来时,转换数据Delay__hx711_us();HX711_SCK=0; return(count);
}//****************************************************
//称重
//****************************************************
void Get_Weight()
{Weight_Shiwu = HX711_Read();Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重if(Weight_Shiwu > 0) { Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue); //计算实物的实际重量if(Weight_Shiwu > 5000) //超重报警{Flag_ERROR = 1; }else{Flag_ERROR = 0;}}else{Weight_Shiwu = 0;Flag_ERROR = 1; //负重报警}}//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{Weight_Maopi = HX711_Read();
} //****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<123;j++);
}void Uart_Init()
{SCON = 0x50; AUXR |= 0x01; AUXR |= 0x04; T2L = 0xE8; T2H = 0xFF; AUXR |= 0x10; ES=1; EA=1; TI=1;
}void Send_Word(unsigned char *p) //发送字符串
{ while(*p){SBUF=*(p++);while(TI==0){;;;};TI=0;}
}void Send_ASCII(unsigned char c) //发送一个字符
{ TI=0; SBUF=c; while(TI==0); TI=0;
}//****************************************************
//主函数
//****************************************************
void main()
{Uart_Init();Delay_ms(3000); //延时,等待传感器稳定Get_Maopi(); //称毛皮重量while(1){EA = 0;Get_Weight(); //称重EA = 1;//显示当前重量if( Flag_ERROR == 1){Send_Word("ERROR\n");}else{Send_ASCII(Weight_Shiwu/1000 + 0X30);Send_ASCII(Weight_Shiwu%1000/100 + 0X30);Send_ASCII(Weight_Shiwu%100/10 + 0X30);Send_ASCII(Weight_Shiwu%10 + 0X30);Send_Word(" g\n");}}
}
STC15W408读取HX711称重数据串口发送相关推荐
- Linux下读取RFID卡号(C串口编程)
由于项目需要用到RFID.GPRS.摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的 RFID模块: 本次采用的是125K的RFID读卡 ...
- 串口发送和接受字符串,AD转换多通道读取
困扰了我快一个学期的问题终于解决了-- 原来之前的想法是错的,PCF8591是可以连续工作的,不需要进行延时-- PCF8591每读出一次,就会启动一次的转换,而转换的结果,在下次才能读出,所以需要调 ...
- matlab实用小程序段 —— 串口发送和读取
sr3 = serial('COM3'); % 使用默认设置创建串口sr3 fopen(sr3); %打开串口 fprintf(sr3,'xxx'); ...
- [ZigBee] 7、ZigBee之UART剖析(ONLY串口发送)
综述:USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式.两个USART具有同样的功能,可以设置在单独的I/O 引脚. 1.UART 模式 UART 模式 ...
- UART0串口编程(五):串口编程(UART0)之UC/OS(一)UC/OS下的串口发送任务编程
UART0串口编程(五) 串口编程(UART0)之UC/OS(一) 一.在UC/OS中设计串口程序所要考虑的问题 1. 串口通信数据以帧为单位进行处理,如果需要接收大量数据,则帧缓冲区规模必然 ...
- 单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗...
1.问个问题,下面程序有没有BUG数组 2.环形队列虽然解决了一开始的中断发送数据覆盖问题,可是呢却引入了新的问题函数 3.而后看看中断发送测试 4.想没想明白是什么问题spa 5.发送数据1 和发送 ...
- stm32串口传输数据第一个数据被吞_stm32串口发送数据复位 第一个数据丢失
http://blog.csdn.net/kevinhg/article/details/40991655 STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成 ...
- 串口发送接收浮点型数据
转自:https://blog.csdn.net/liangwei88624/article/details/6885803 转自:https://blog.csdn.net/newstoy/arti ...
- STM8单片机串口发送引脚和接收引脚分开使用
在使用STM8S003单片机时,需要用到ADC采样功能,STM8S003总共有5个ADC采样口,但是其中两个采样口是和串口复用的,如果当ADC口用,就不能用串口,如果当串口用,就不能用ADC口. 通过 ...
最新文章
- 无论你在学什么语言,都能有小姐姐来陪着你一起学习!
- [XSY] 树与图(树形DP、生成函数、分治NTT、重链剖分)
- 愚弄dnn_不要被泛型和向后兼容性所愚弄。 使用泛型类型
- Npm基本指令(转)
- [转]各种互斥量的总结
- Android 关机流程 从kernel到framework
- 怎么创建java项目?新建java项目的步骤
- 【ELAMN预测】基于遗传算法优化ELMAN神经网络实现电力符合数据回归预测附matlab代码
- linux 大黄蜂怎么安装视频教程,使用神舟K680E-G6D1在Deepin Linux系统下安装大黄蜂驱动的方法...
- php被挂马,近日报网站被挂马的解决方法
- 北京铁路安检全面升级 四大站特警持枪巡逻
- 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了~【程序员编程】
- ArrayList vs LinkedList
- 骨传导耳机对听力有危害吗,骨传导耳机会不会伤害耳朵
- openpnp - Smoothieware project build
- idea本地项目push到远程仓库报错解决方法
- 快手老司机与抖音小姐姐 ,终有一战?
- CentOS7重置密码
- 最值得听的100首英文歌
- 《壹百度》- 百度员工内部培训资料
热门文章
- 计算及图形学——实验四
- visual studio code安装_Deepin系统中如何安装Visual Studio Code
- 开源资产管理系统_部署开源夜莺运维监控平台V3版本
- python的重点和难点_python知识点汇总-Go语言中文社区
- UE3 中文教程主页
- 30 行 Javascript 代码搞定智能家居系统
- BZOJ1026: [SCOI2009]windy数(数位dp)
- 不用去验血,一查就能知道自己缺啥,一定要收好
- 【xargs使用】查询包含某字符串的所有文件
- 实验二:SET-UID程序漏洞实验