单片机气压计课程设计报告.docx
- 文档编号:11424718
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:24
- 大小:250.61KB
单片机气压计课程设计报告.docx
《单片机气压计课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机气压计课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
单片机气压计课程设计报告
课程设计报告
名称:
数字气压计
专业:
年 级:
09级
学号:
学生:
指导老师:
完成日期:
2012年05月15日
摘要:
气压表在现实生活中的使用并不是很明显,大部分人在一生中很少甚至是没有接触过气压表,但是气压表在某一些工作领域确实是不可或缺的重要物件,例如国防领域、医疗领域、工业领域。
本设计介绍了一种基于气压传感器MPX4115的数字气压系统的实时显示电路设备。
它首先通过传感器MPX4115获得与大气压相对于的模拟电压值,其次它经过电压频率转换模块转换为数字脉冲,单片机接受该数字脉冲信号后,由得到的单位时间获得的脉冲数依据电压与频率的线性关系式计算出对应的实际气压值,最后在单片机的控制下在液晶显示模块上显示实时的气压值。
关键词:
单片机;气压传感器;液晶显示器;V/F转换器
引言:
1643年,托里查理实验的成功,标志着人类开始意识到大气压的存在并开始着手研究大气压给我们的生活带来的影响。
最古老的气压计应属水银气压计和无液气压计。
传统的气压计往往体积会比较大,而且在对气压的测量时也无法直观的读出其大小,其精度较低,容易受环境影响。
二十一世纪是一个信息飞速发展的时代,传统的气压计由于其自身缺陷已无法适应当今时代的需求,对其改革成为了必然趋势,因此,对数字气压计的研究和设计对气压测量而言有了十分实际的意义。
二十一世纪追求的是飞跃式的技术发展,特别是随着电子制造技术的进步,使气压计趋向于向数字化、小型化方向发展成为了可能。
数字化和小型化的气压计的出现使得各个领域对气压的测量更加便捷和直观。
例如汽车气压计,使得汽车爱好者更懂得如何保护自己的爱车。
轮胎是汽车安全行驶的一个冲要部件,由于轮胎的原因造成的安全事故的后果是极其严重的,胎压是轮胎的生命,所以要随时保证在正确的胎压下行驶,是对车主人身安全的负责。
胎压过低会导致不正常磨损或轮胎部损伤,胎压过高则会使得轮胎与轮胎圈较容易受到不平地面的冲击而变形,甚至会导致爆胎。
胎压必须随时检查,而且要在轮胎冷却的情况下进行,否则高温会使气压升高,导致测量结果不准确。
由此可见,数字气压计对我们的生活带来的影响是巨大的。
一,功能要求
该课程设计数字气压计的主要功能是显示当前的气压。
该课题的主要技术指标是LCD1602上显示的气压是否准确,如果有波动,波动围是否在可控制围之。
二、系统设计
1整体设计思想
本设计主要的功能是使整个电路能够完成液晶显示器上能显示出正确的气压读数。
设计系统结构时,需要考虑整体的稳定性、复杂程度、整体造价与调试时要考虑的难易程度等因数。
图1-1所示框图中的每一部分对应一个电路单元,各部分电路可独立完成各自功能。
各模块之间没有复杂的信号传输,干扰较小,系统较稳定。
本设计是基于MPX4115的数字气压计的设计,主要包括对软硬件的设计和调试。
软件部分应用C语言与单片机知识根据系统特点写出需要的单片机程序。
硬件部分主要包括四大块,即大气压的非电信号数据的采集、转换、处理以与显示。
2系统总框图
气压计硬件部分由四部分构成,它们分别是:
信息采集模块,数据转换模块,信息处理模块和数据显示模块。
下图为系统总框图。
气压传感器
V/F转换器
电
源
模
块
单片机
液晶显示器
1-1系统总框图
三、主要元器件的功能作用
1.气压传感器MPX4115
MPX4115系列压电电阻传感器是一个硅压力传感器。
这个传感器结合高级的微电机技术,薄膜镀金属。
还能为高水准模拟输出信号提供一个均衡压力。
在0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃。
MPX4115具有温度补偿作用,稳定性和抗干扰能力很强。
且可以产生与所加气压呈线性关系的高精度模拟输出电压。
具体输出关系如下:
Vout=Vs(0.01059P-0.1528)±Error
式中,Vs是工作电压,P是大气压值,Vout为输出电压。
2.数据转换芯片LM331
气压传感器MPX4115输出的是模拟电压,因此,必须进行模拟到数字的转换才能交由单片机处理。
LM331是一款高精度电压频率转换芯片。
LM331芯片的突出特点就是它能够把模拟电压转换成抗干扰能力强、可以远距离传输并能直接输入到单片机接口的脉冲序列。
通过测量V/F输出频率,可以实现A/D转换功能。
LM331各引脚功能说明如下:
脚1为脉冲电流输出端,部相当于脉冲恒流源,脉冲宽度与部单稳态电路一样;脚2为输出端脉冲电流幅度调节,RS越小,输出电流越大;脚3为脉冲电压输出端,OC门结构,输出脉冲宽度与相位同单稳态,不用时可悬空或接地;脚4为地;脚5为单稳态外接定时时间常数RC;脚6为单稳态触发脉冲输入端,低于脚7电压触发有效,要求输入负脉冲宽度小于单稳态输出脉冲宽度Tw;脚7为比较器基准电压,用于设置输入脉冲的有效触发电平高低;脚8为电源Vcc,正常工作电压围为4~40V。
线性度好,最大非线性失真小于0.01%,工作频率低到0.1Hz时尚有较好的线性;变换精度高数字分辨率可达12位;外接电路简单,只需接入几个外部元件就可方便构成V/F或F/V等变换电路,并且容易保证转换精度。
四、模块设计
1.A/D转换模块
单片机接受传感器的电压值为模拟信号,它要和A/D转换模块的脉冲波发生装置发送过来的标准模拟信号相比较,即通过P1.0和P1.1引脚进行比较,同时开发定时器0,当待测模拟信号超过标准模拟信号时,P3.4引脚信号将会发生变化,此时的定时器0的值通过量纲转化就得到了相应的数字信号。
2.数据处理模块
数据处理模块主要是对A/D转换模块的数据进行多次采集,并且对采集的数据进行处理,此处理过程主要是对采集的数据进行初值定义以与相应的移位处理,并且把处理好的数据送入相应的缓冲区,为后面的显示模块作好准备。
3.显示模块
用单片机芯片STC89C52的P0.0/AD0-P0.7/AD7端口与LCD显示屏的D0-D7脚相连接,通过STC89C52的P2.0-P2.2端口来控制选通LCD显示屏的位选端。
在数据的显示模块中,我们采用的是1602LCD液晶显示。
以下为各个模块的详细情况:
1信息采集模块
信息采集模块主要应用的器件是MPX4115气压传感器。
MPX4115系列压电电阻传感器是一个硅压力传感器。
这个系列传感器结合了高级的微电机技术和薄膜镀金属技术,还能为高水准模拟输出信号提供一个均衡压力。
在0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃。
数据采集模块由气压传感器MPX4115构成,采集的是大气压值。
其中1脚是输出信号端,输出的是与气压值相对应的模拟电压信号。
数据采集模块的原理如图2-1所示。
图3-1数据采集模块原理图
2数据转换模块
气压传感器MPX4115输出的是模拟电压,因此,必须进行模拟到数字的转换才能交由单片机处理。
在数据转换模块选用的是LM331芯片,它是一款高精度电压频率转换芯片。
V/F器件的作用是将输入电压的幅值转换成频率与输入电压幅值成正比的脉冲序列,虽然V/F器件本身还不能算作量化器,但加上定时器与计数器以后也可以实现A/D转换。
V/F器件的突出特点就是它能够把模拟电压转换成抗干扰能力强、可以远距离传输并能直接输入到单片机接口的脉冲序列。
通过测量V/F输出频率,可以实现A/D转换功能。
LM331构成的V/F转换器的电路如图2-2所示。
其中图中的7号引脚Vin是数据转换模块的数据输入端,接到上一个数据采集模块的输出端。
而3号引脚F0是数据转换模块的输出端。
图3-2数据转换模块原理图
LM331是性能价格比比较高的集成芯片。
它是当前最简单的一种高精度V/F转换器、A/D转换器、线性频率调制解调、长时间积分器以与其它相关的器件。
3数据处理模块
对于LM331输出的频率信号要经过单片机的数据处理,通过频率与气压之间的关系计算出气压值。
本设计应用的是单片机芯片是STC89C52。
STC89C52单片机最为核心的部分是中央处理器CPU,它由运算器和控制逻辑构成,其中包括若干特殊功能寄存器。
STC89C52单片机有8K字节程序存储空间,512字节数据存储空间,和带2K字节EEPROM存储空间。
而普通的51系列单片机芯片仅带有8K字节程序存储空间和256字节数据存储空间,没有带的EEPROM存储空间。
STC系列是增强型的51单片机,可以兼容标准51系列的,但反过来AT51系列的未必能兼容STC的某些功能。
两者的下载器不一样,AT型号用并行口下载,一般的AVR下载器就可以使用;而STC的是串口下载,两者下载器不兼容。
单片机部分的原理如下图所示。
图3-3单片机的部分应用原理图
STC89C52的引脚如图2-4所示。
图3-4单片机引脚图
本设计中单片机的主要功能是对上一A/D转换模块的数据进行多次采集并出来,其处理过程主要是对采集的数据进行初值定义以与相应的移位处理,把处理好的数据送入相应的缓冲区,为后面的模块做准备。
4显示模块
本设计使用的显示器件为液晶显示器。
液晶显示器简称LCD显示器,它是利用液晶经过处理后能够改变光线的传输方向的特性实现显示信息的,液晶显示模块具有体积小、功耗低、显示容丰富超薄轻巧等优点,在单片机应用系统中得到日益广泛的应用。
本设计中选择字符型液晶显示器LCD1602。
LCD1602可以显示两行,每行16个字符,采用+5V电源供电,外围电路配置简单。
LCD1602是一种专门用于显示字母、数字、符号等点阵式LCD。
显示器部分的电路如图2.5所示。
图3-5显示模块原理图
如图所示,10K的滑阻用于调节LCD液晶显示屏的背光,使其能工作在更好的状态下。
RS、RW、E分别连接STC89C52的P2.1、P2.2、P2.0相连接,控制LCD显示的读写状态;而DB0-DB7与STC89C52的P0口相连接进行数据传输。
五、总体原理图
六、程序流程图
单片机实现数字气压计的程序流程如图5.1所示。
开始
设置定时器0
设置计数器1
While
(1);
50MS定时中断0
50MS定时中断0
服务子程序
ETO=0;Timecount++;
TR0=0;TR1=1
Flag=1?
TR1=0;Flag=0;
计算气压值
调用显示函数
图5.1程序流程图
七、单片机调试仿真
根据以上程序流程图,参考了网上的一些程序,自己在Keil软件上运行,编译,得到最后所需的程序。
这里我们采用proteus的系统总体执行效果调试方法,调试单片机的供应电源和复位电路部分。
这里单片机时钟工作在11.0592MHZ,电源电路、晶振电路和复位电路是整个系统正常工作的基础,应首先保证它们的正常工作。
其仿真图如下图5-1:
图5-1
PCB应用Protel软件进行绘制,并使用电气规则功能(ERC)检查原理图的连接是否合理和正确。
若有错误,可根据错误提示进行反复调试和改正,可得最终的PCB电路原理图如下图5-2所示:
封装后得到的PCB图:
封装之后打印出来的电路图如图
八、调试与性能分析
1、调试过程
我们按照设计好的电路图焊出了我们组的第一块电路板,然后按照电路图将每一部分接线用跳线连接好,将程序下载到单片机芯片上,开始对电路板进行调试。
但是在程序成功下载的情况下,我们发现LCD1602显示屏上没有显示任何东西,但有显示屏显示确实有接上电源。
排除了LCD显示屏损坏的可能,考虑到可能是LCD显示屏没有调好的可能,我们对10K滑阻进行调节并对1602LCD显示屏进行观察,发现显示屏依然没有任何变化,于是我们没有再调节电阻,然后提出了电路焊接出现错误的可能性。
于是,我们用万用表检查接线是否有错误,线路是否有短路等,仔细检查了半天也没发现可能性比较大的错误,向老师请教过之后也没有找出问题的所在,于是我们几个组员进行讨论之后,觉得可以找一个单独的可以实现的LCD1602显示程序下载进去之后,发现还是没有什么进展,由于也没有想到其他的解决办法,我们第一天的调试也就先告一段落。
第二天我们重复着第一天的步骤,把编译好的程序下载到单片机上,尝试性的再次调节滑阻,结果显示屏开始发生变化,LCD显示屏上显示了我们实验所要显示的频率值和电压值。
我们查找了一下最近的气压值,发现显示的结果和实际还是有些误差。
接着,我们就尝试调节了用于改变LM331增益的滑阻,但是调试的结果显示虽然显示值有变化,但和实际值的误差还是挺大的。
明确了这一点后,我们把重心放在了程序的调试上。
我们发现程序出现的第一个问题,就是通过单片机计算出来的频率的值是以二进制的形式显示的,而我们使用频率计算气压时的公式是十进制的,所以我们在程序调试时将二进制转换成了十进制。
在解决了这个问题后,我们觉得LCD1602显示的位置不是很好,于是我们在LCD液晶显示部分的显示程序进行修改,通过不断的调试,我们发现只要将显示的位置全部向左移一位(除了单位)来显示就可以达到很好的视觉效果。
这样,我们完成了我们预定的实验目标。
在时间充沛的情况下,我们小组一致认为可以在显示部分再加上显示时间的功能,所以我们又开始对我们的程序进行修改,可能是使用不当的关系,在进行时间显示功能的测试中,我们组共用的传感器开始出现故障,甚至不能再进行正常的工作,至此,我们的课程设计也只能暂时终止,后在经过小组讨论之后,我们为我们此次的课程设计画上了句号,虽然它并不完美。
2、性能分析
由于本次实验所有过程都是在实验室里进行,实验室开着的风扇,实验室可能存在的会影响气压的东西,再加上本身焊接可能存在的问题与元器件的性能不稳定等因数,LCD1602显示屏显示的气压值会在一个交小的围波动,这应属于正常现象。
而且这样基本上达到了我们刚开始预期的结果。
由于我们做完这个还有几天时间,于是我们想在加一个功能,就是在LCD1602的第一行显示时间,加上我们的硬件已经完成,我们只能在软件程序上下功夫啦,可是由于我们的最小系统板上的按键是矩阵式的,而我们大多数人只写了独立式按键的时钟显示,,我们又得继续修改。
可不曾想到,在我们一次次上电测试的时候,气压传感器MPX4115时不时的不工作啦,我们只能停下啦,没能完成后面我们想加的时钟显示功能是我们本次课程设计的一大遗憾,但最起码我们完成了最初的设想,本次课程设计算是基本上满足要求啦。
九、结论
为期两个星期的单片机课程设计结束啦。
这次课程设计做的是数字气压计,数字气压计现在的产品不是很多,但由于其精度高、读数准确简单等优点,相信在今后会得到广泛的运用。
在这两个星期中,我们小组从刚开始的茫然到最后把作品做出来,其中经历的许多,虽然最终的作品不是很满意,但其基本上还是满足了刚开始的设计,在者,我们从中学到了不少。
首先我能够用几个软件(Keil。
Protel,Protel),能够自己画PCB板,腐蚀,打印电路板,还有就是编程,通过自己的努力把作品做出来,当然这其中和小组其他人的作用是分不开的,我们能够共同努力,一起探讨。
这才是最重要的。
这次课程设计做的是数字气压计,数字气压计现在的产品不是很多,但由于其精度高、读数准确简单等优点,相信在今后会得到广泛的运用。
十、参考文献:
[1]丙霞.Protel99SE原理图与PCB设计电子工业,2000
[2]戴佳.51单片机C语言应用程序设计实例精讲电子工业,2006
[3]徐爱均.单片机高级语言C51应用程序设计电子工业,2004
[4]周兴华.手把手教你学单片机C程序设计航空航天大学,2004
[5]严天峰.单片机应用系统设计与仿真调试航空航天大学,2001
附录程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#defineK2000
#defineLCD_DATAP0
uintPa;
ucharT0count;
uchartimecount;
uintflag;
ulongfo;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_E=P2^2;
//LCD显示容,定义到代码段
ucharcodeLcdBuf1[]={"welcom!
LM331"};
ucharcodeLcdBuf2[]={"Voltagetest!
"};
uchartemp[8];
uchardispbuf[8]={0,0,0,0,0,0,10,10};
//函数声明
voidlcd_init(void);
voiddisplay_string(unsignedcharx,unsignedchary,unsignedchar*s);
voiddisplay_char(unsignedcharx,unsignedchary,unsignedchardat);
voiddelay(uintz)//延时1ms
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**************************************************
**函数名称:
dellay
**入口参数:
h(unsignedint型)
**出口参数:
无
**功能描述:
短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
voiddellay(unsignedinth)
{
while(h--);//0.01MS
}
/**************************************************
**函数名称:
WriteDataLcd
**入口参数:
wdata(unsignedchar型)
**出口参数:
无
**功能描述:
写数据到LCD
****************************************************/
voidWriteDataLcd(unsignedcharwdata)
{
LCD_RS=1;
LCD_DATA=wdata;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=1;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=0;
}
/**************************************************
**函数名称:
WriteCommandLcd
**入口参数:
wdata(unsignedchar型)
**出口参数:
无
**功能描述:
写命令到LCD
*****************************************************/
voidWriteCommandLcd(unsignedcharwdata)
{
LCD_RS=0;
LCD_DATA=wdata;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=1;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=0;
}
//LCD初始化
voidlcd_init(void)
{
LCD_E=0;
WriteCommandLcd(0x38);
WriteCommandLcd(0x38);//显示模式设置WriteCommandLcd(0x08);//关闭显示
WriteCommandLcd(0x0c);
WriteCommandLcd(0x06);//显示光标移动设置
WriteCommandLcd(0x01);//显示清屏
WriteCommandLcd(0x01);
WriteCommandLcd(0x90);//显示开与光标移动设置
}
/**************************************************
**函数名称:
display_xy
**入口参数:
x(unsignedchar型),y(unsignedchar型)
**出口参数:
无
**功能描述:
设置光标位置,x是列号,y是行号
****************************************************/
voiddisplay_xy(unsignedcharx,unsignedchary)
{
if(y==1)
x+=0x40;
x+=0x80;
WriteCommandLcd(x);
}
/********************************************************************
**函数名称:
display_char
**入口参数:
x(unsignedchar型),y(unsignedchar型),dat(unsignedchar型)
**出口参数:
无
**功能描述:
在具体位置显示单个字符,x是列号,y是行号
**********************************************************************/
voiddisplay_char(unsignedcharx,unsignedchary,unsignedchardat)
{
display_xy(x,y);
WriteDataLcd(dat);
}
/*********************************************************************
**函数名称:
display_string
**入口参数:
x(unsignedchar型),y(unsignedchar型),s(指针型)
**出口参数:
无
**功能描述:
在具体位置显示字符串,以/0结束,x是列号,y是行号
**********************************************************************/
voiddisplay_string(unsignedcharx,unsignedchary,unsignedchar*s)
{
display_xy(x,y);
while(*s)
{
WriteDataLcd(*s);
s++;
}
}
voidmain(void)
{
unsignedchari;
LCD_RW=0;
delay(100);
lcd_init();
display_string(0,0,LcdBuf1);//显示第一行,从第3个位置开始
display_string(0,1,LcdBuf2);//显示第二行,从第0个位置开始
delay(3000);
TMOD=0x15;//初始化定时器工作方式
TH0=0;
TL0=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 气压计 课程设计 报告