#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include "LCD1602.h"
#include "HX711.h"
#include "chaoshengbo.h"
#include "ds18b20.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/************************管脚引用****************
sbit Trig = P2^1; //产生脉冲引脚
sbit Echo = P3^2; //回波引脚
sbit buzzer=P2^0;
sbit LCD_RS=P1^0;//定义引脚
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
sbit DQ=P3^6;
******************************************/
/*****************全局变量*******************
uchar tempL=0,tempH=0,sdata,xiaoshu1;xiaoshu2; 依次表示DS18B20的读温度低八位,读温度高八位,温度整数,第一位小数,第二位小数
*/
int wendu=500,wendu1=0;
unsigned long HX711_Buffer = 0;
sbit qupi=P3^7;
long Weight_Shiwu = 0;
long Weight_pi = 0;
sbit con=P1^4;
sbit add=P3^5;
sbit reduce=P3^4;
void Delay_ms(unsigned int n);
//显示重量,单位kg,两位整数,三位小数
void Display_Weight()
{
if(Weight_Shiwu<0)
{
LCD1602_write_com(0x80+0x40+2);
LCD1602_write_word("----");
}
else{
Weight_Shiwu=Weight_Shiwu/4;
LCD1602_write_com(0x80+0x40+2);
LCD1602_write_data(Weight_Shiwu%1000000/100000 + 0x30);
// LCD1602_write_data('.');
LCD1602_write_data(Weight_Shiwu%100000/10000 + 0x30);
LCD1602_write_data(Weight_Shiwu%10000/1000 + 0x30);
LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
}
}
void delay1(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void run()
{
distance_0();
ReadTemperature();
Delay_ms(100);
read();
LCD1602_write_com(0x80+2);
LCD1602_write_data(sdata/100+0x30);
LCD1602_write_data(sdata/10%10+0x30);
LCD1602_write_data('.');
LCD1602_write_data(sdata%10+0x30);
LCD1602_write_com(0x80+11);
// LCD1602_write_data(T[bai]+0x30);
// LCD1602_write_data(T[shi]+0x30);
// LCD1602_write_data(T[ge]+0x30);
LCD1602_write_data(wendu1/100+0x30);
LCD1602_write_data(wendu1/10%10+0x30);
LCD1602_write_data(wendu1%10+0x30);
Weight_Shiwu = HX711_Read()-Weight_pi;
Display_Weight();
LCD1602_write_com(0x80+0x40+13);
LCD1602_write_data(T[wendu/100]+0x30);
LCD1602_write_data(T[wendu/10%10]+0x30);
if(con==1)
LCD1602_write_data('L');
else
LCD1602_write_data('H');
}
//****************************************************
//主函数
//****************************************************
void main()
{
int k;
Init_LCD1602(); //初始化LCD1602
LCD1602_write_com(0x80);
LCD1602_write_word("T:00.0C D:000mm");
LCD1602_write_com(0x80+0x40); //指针设置
LCD1602_write_word("W:0000g SET:00");
Trig=0; //首先拉低脉冲输入引脚
TMOD=0x11; //定时器0,定时器1,16位工作方式
TR0=1; //启动定时器0
IT0=0; //由高电平变低电平,触发外部中断
ET0=1; //打开定时器0中断
EX0=0; //关闭外部中断
EA=1; //打开总中断0
while(1)
{
run(); con=1;wendu1=0;
while(wendu>sdata)
{
wendu1=sdata+((wendu-sdata)/200)*((wendu-sdata)/200)*((wendu-sdata)/200)*10+((wendu-sdata)/80)*((wendu-sdata)/80)*5+((wendu-sdata)/10);
while(sdata<wendu1)
{
con=0; run();
}
con=1;
for(k=0;k<50;k++)
run();
}
}
}
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i,j;
if(add==0)
if(wendu<1000)
wendu=wendu+10;
if(reduce==0)
if(wendu>0)
wendu=wendu-10;
for(i=0;i<n;i++)
{
if(qupi==0)
Weight_pi = HX711_Read();
for(j=0;j<255;j++);
}
}
1-程序长按校准.rar_LCD_压力传感器_压力校准_温度传感器_程序
版权申诉
137 浏览量
2022-09-23
01:49:39
上传
评论 1
收藏 74KB RAR 举报
朱moyimi
- 粉丝: 64
- 资源: 1万+
最新资源
- Pytorch-pytorch深度学习教程之Tensorboard.zip
- 基于C++和Python开发yolov8-face作为人脸检测器dlib作为人脸识别器的人脸考勤系统源码+项目说明.zip
- Pytorch-pytorch深度学习教程之变分自动编码器.zip
- Pytorch-pytorch深度学习教程之神经风格迁移.zip
- Pytorch-pytorch深度学习教程之深度残差网络.zip
- Pytorch-pytorch深度学习教程之循环神经网络.zip
- Pytorch-pytorch深度学习教程之逻辑回归.zip
- Pytorch-pytorch深度学习教程之双向循环网络.zip
- Pytorch-pytorch深度学习教程之卷积神经网络.zip
- Pytorch-pytorch深度学习教程之前馈神经网络.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0