1913基于单片机大气压海拔检测仿真和程序设计 【毕设课设】

摘要

本文设计了一种基于AT89C51单片机的大气压海拔检测系统。系统通过LTC1297模数转换器将大气压力传感器输出的模拟信号转换为数字信号,并利用LCD1602液晶显示屏实时显示大气压力和计算出的海拔值。通过Protues仿真验证系统的可行性和准确性。

关键词:AT89C51单片机;大气压检测;海拔检测;LTC1297;LCD1602;Protues仿真

一、引言

大气压力和海拔之间存在密切的关系,通过测量大气压力可以推算出当前的海拔值。本文设计了一种基于AT89C51单片机的大气压海拔检测系统,旨在实现大气压力和海拔的准确测量与显示。

二、系统设计方案

系统主要由大气压力传感器、LTC1297模数转换器、AT89C51单片机、LCD1602液晶显示屏等部分组成。大气压力传感器负责采集大气压力信号,LTC1297将模拟信号转换为数字信号,单片机处理数据并计算海拔值,最后通过LCD1602显示结果。

三、硬件设计

  1. 大气压力传感器

选用适合测量大气压力的传感器,其输出为模拟信号。

  1. LTC1297模数转换器

LTC1297是一款高精度模数转换器,用于将大气压力传感器的模拟输出转换为单片机可处理的数字信号。

  1. AT89C51单片机

作为系统的核心控制器,负责接收LTC1297转换后的数字信号,处理数据并计算海拔值。

  1. LCD1602液晶显示屏

用于实时显示大气压力和计算出的海拔值。

四、软件设计

软件设计主要包括单片机初始化、数据采集、数据处理和显示等部分。单片机首先进行初始化设置,然后不断循环采集大气压力传感器的数据,通过LTC1297转换为数字信号后,进行数据处理和海拔计算,最后将结果通过LCD1602显示出来。

五、Protues仿真

利用Protues软件对系统进行仿真测试。在仿真环境中搭建系统的电路模型,设置大气压力传感器的输入信号,观察单片机的数据处理过程和LCD1602的显示结果。通过调整输入信号,验证系统的准确性和稳定性。

六、结论

本文设计了一种基于AT89C51单片机的大气压海拔检测系统,通过硬件和软件的设计实现了大气压力和海拔的准确测量与显示。通过Protues仿真验证了系统的可行性和准确性。该系统具有结构简单、成本低廉、测量准确等优点,可广泛应用于气象、户外探险等领域。

#include <intrins.h>
#include <reg51.h>
#include <stdlib.h>
#include "HDM32GS12.h"
#include "ReadADC.h"

#define uchar unsigned char
#define uint  unsigned int 
#define port P0

/*参数的定义*/
double adc;

double qiya;
long qiya_1;
double haiba;
long haiba_1;
int ge_q,ge_h;
int shi_q,shi_h;
int bai_q,bai_h;
int qian_h;
int shu1_q;
int shu2_q;
/*延时*/
void delay(uchar z)    
{
     int x;
     for(x=z;x>0;x--);
}
	
void main()
{

	lcdini();//初始化
	clrscr();//清屏
	
 while(1)
 {
		adc=ReadADC();//ADC值获取
	  qiya=(adc+345.618)/36.855;//气压
	  haiba=9002.2-89.245*qiya;//海拔
	  if(haiba<0){haiba=0;}
	  haiba_1=haiba;//取整
	  qiya_1=qiya*100;//左移2位取整
	  /*海拔的显示*/
//	  qian_h=haiba_1/1000;
//		bai_h=haiba_1/100%10;
//	  shi_h=haiba_1/10%10;
//	  ge_h=haiba_1/1%10;
		/*ADC的显示*/
		qian_h=(int)adc/1000;
		bai_h=(int)adc/100%10;
	  shi_h=(int)adc/10%10;
	  ge_h=(int)adc/1%10;
	 /*气压的显示*/
		bai_q=qiya_1/10000%10;
	  shi_q=qiya_1/1000%10;
	  ge_q=qiya_1/100%10;
		shu1_q=qiya_1/10%10;
		shu2_q=qiya_1%10;
	 
		
		/*显示函数*/
	  Draw_wordh(0,0,0,16);
	  Draw_wordh(1,16,0,16);
	  Draw_wordh(2,32,0,16);
	  Draw_wordh(10,48,2,8);
		Draw_wordh(bai_q,56,2,8);
	  Draw_wordh(shi_q,64,2,8);
	  Draw_wordh(ge_q,72,2,8);
	  Draw_wordh(11,80,2,8);
		Draw_wordh(shu1_q,88,2,8);
		Draw_wordh(shu2_q,96,2,8);
		
		Draw_wordh(3,0,3,16);
	  Draw_wordh(4,16,3,16);
		Draw_wordh(10,32,1,8);
	  Draw_wordh(qian_h,40,1,8);
		Draw_wordh(bai_h,48,1,8);
		Draw_wordh(shi_h,56,1,8);
	  Draw_wordh(ge_h,64,1,8);


部分代码

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值