【毕业设计】6-基于51单片机的电子称重装置_电子测温_压力测试控制系统设计(原理图+源码+仿真工程+答辩论文+答辩PPT)

【毕业设计】6-基于51单片机的电子称重装置/电子测温/压力测试控制系统设计(原理图+源码+仿真工程+论文+PPT)

任务书

主要研究内容:
设计一个基于51单片机的电子称重装置,该装置主要由51单片机、传感器、A/D转换器、电源、键盘、LCD、LED显示器等实验器材构成,该装置能准确显示被称物体的重量以及超重报警。设计主要应用C语言进行编程,实现此次设计的全部控制功能。
研究方法与要求:
本方案根据要求分为数据采集模块、控制器模块、LCD显示模块这三大部分。在这三个部分中,经过数据采集模块转换后形成的数字信号需要有信号预处理、压力传感器和A/D传递给压力传感器三个转换过程,处理完之后再由驱动显示模块将数据进行显示。这些功能几乎都要经过软件的控制,只有少部分不需要经过软件的控制。
资料链接
原理图工程文件
工程源代码工程文件
仿真工程文件
论文(低重复率), 21533字
原理图截图
仿真截图

设计说明书

摘要

称重技术与人们的生活息息相关,无论是在工业上还是农业贸易生产方面都离不开称重,甚至于当今的精密的技术也需要在称重方面锱铢必究,从古至今它的地位从未改变过。当今发展速度极快,但这不是唯一要求,发展速度的同时加快生产效率,提高材料的利用率使其品质提高这都是考虑的要素,而这些都可以通过提高称重技术来得到一定的优化。电子秤是一种创新型产品,结合了很多功能,例如综合处理、信息技术、单片机、转换技术和计测等,与此同时,他还具有测量精确,自动运作,显示数字的优点。
此次设计电子秤的主要过程如下:首先,对常见的电子秤设计方案进行了对比分析,改良出本文方案,并对系统元器件选型及参数作出介绍;接着,进行系统的硬件电路设计,分别设计了系统电源电路、串口程序下载电路、单片机控制电路、系统显示电路以及超重报警提示电路,并对系统硬件电路进行绘制与PCB制作,同时,进行系统相应的软件设计;最后,进行电子秤系统的整体调试,经调式改善后得到系统实物的调式结果,结果表明,本文设计的电子秤装置效果良好,具有一定的实际应用价值。

设计框架架构

在这里插入图片描述

前 言 1
第一章 系统硬件的方案设计 3
第一节 电子秤的概述 3
一、电子秤的组成部件 3
二、电子秤的工作原理 4
三、电子秤的相关参数 4
第二节 系统设计总体方案的比较 5
第三节 系统元器件选型及参数介绍 7
一、单片机选型 7
二、传感器选择 8
三、显示器选择 13
四、AD转换芯片选择 14
第四节 本章小结 17
第二章 系统硬件电路设计 18
第一节 系统电源电路设计 18
第二节 系统串口程序下载电路设计 18
第三节 单片机控制电路设计 19
第四节 系统显示电路设计 21
第五节 超重报警提示电路设计 21
第六节 系统硬件电路的绘制与PCB制作 22
一、Protel99SE软件介绍 22
二、系统原理图的设计与绘制 22
第七节 本章小结 23
第三章 系统软件设计 24
第一节 系统主程序软件流程图 24
第二节 系统显示部分流程图 25
第三节 系统按键检测部分流程图 25
第四节 本章小结 26
第四章 系统整体调试 27
第一节 硬件电路调试中遇到的问题 27
第二节 系统实物调试效果图 27
第三节 本章小结 28
总 结 29
致 谢 33
参考文献 34
附 录 35
附录1 英文原文 35
附录2 英文翻译 36
附录3 系统整体电路图 37
附录4 系统主程序源代码 38

设计说明书及设计文件

在这里插入图片描述
在这里插入图片描述

总字数:21533字
![533![](https://img-blog.csdnimg.cn/b0e08e88395948d1b8e26a40ec1504ac.png)

源码展示

#include <reg52.h>
#include "delay.h"
#include "buzzer.h"
#include "LCD96x64.H" 
#include "HX711.h"  

sbit key1=P3^2;//去皮
sbit key2=P3^3;//微调重量-
sbit key3=P3^4;//微调重量+
float m__1=3.50;
unsigned long HX711_Buffer = 0;
unsigned int Weight_Maopi = 0,Weight_Shiwu = 0;
bit Flag_OK = 0;
//****************************************************
//称重
//****************************************************
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 > 5000 )
	{
		buzzer = 0;	
	}
	else
	{
		buzzer = 1;
	}
	if(Weight_Shiwu < 5)Weight_Shiwu=0;

}

//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
	HX711_Buffer = HX711_Read();
	Weight_Maopi = HX711_Buffer/100;		
} 

void main(void)
{
	LCD_Init();
	delay_ms(500);
	Beep(200);//提示初始化完成
	LCD_Clear();//重新清一次屏
	LCD_HanZi12x12("电子秤",12*3,0);
	LCD_HanZi12x12("重量",0,2);
	LCD_HanZi12x12("克",12*6,2);
	LCD_Ascii8x12(':',2*12,2); 
	Get_Maopi();				//称毛皮重量
    //主函数
	while(1)
	{
		if( Flag_OK == 0)
		{
			Get_Weight();			//称重
			LCD_Ascii8x12(Weight_Shiwu/10000%10+'0',2*12+8,2);
			LCD_Ascii8x12(Weight_Shiwu/1000%10+'0',2*12+8*2,2);
			LCD_Ascii8x12(Weight_Shiwu/100%10+'0',2*12+8*3,2);
			LCD_Ascii8x12(Weight_Shiwu/10%10+'0',2*12+8*4,2);
			LCD_Ascii8x12(Weight_Shiwu/1%10+'0',2*12+8*5,2);
			//LCD_Ascii8x12('g',2*12+8*6,2);
			//显示当前重量
		}
		if(key1==0)			//
		{
			delay_ms(10);
			if(key1==0)
			{	
				while(!key1);	//
				Get_Maopi();			//去皮	
				Beep(200);
			}
		}
		if(key2==0)			//
		{
		
			delay_ms(10);
			if(key2==0)
			{	
				while(!key2);	//	微调重量-
				m__1=m__1+0.10;
				if(m__1>=5.10)m__1=5.00;
				Beep(200);
				
			}
		
		}
		if(key3==0)			//
		{
		
			delay_ms(10);
			if(key3==0)
			{	
				while(!key3);	// 微调重量+
				m__1=m__1-0.10;
				if(m__1<=1.10)m__1=2.50;
				Beep(200);	
			}
	
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_22592979/article/details/128125800