压强、温度测试与显示WORD(共22页)_第1页
压强、温度测试与显示WORD(共22页)_第2页
压强、温度测试与显示WORD(共22页)_第3页
压强、温度测试与显示WORD(共22页)_第4页
压强、温度测试与显示WORD(共22页)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 吕梁(l lin)学院压强、温度(wnd)测试与显示 专业(zhuny):物理系 物理学 学生(xu sheng)姓名: 陈剑文(组长) 组员(z yun):马腾 王光军 指导教师:摘要随着我国经济快速发展,在很多经济领域都需要测量温度与压强,例如火箭的返回舱等。而目前(mqin)生活中测压强普遍用测压计,测温度普遍用温度计,这种方法存在精准度差等特点。我们组设计(shj)项目:以STC89C52单片机为控制;通过数字式气温(qwn)气压模块测量温度与压强;然后将温度、压强等参数在LCD1602液晶屏上进行显示。课题完成了单片机,数字式气温气压模块,LCD1602液晶屏采购接口电路的设计和连

2、接以传感器和电路的安装位置和方式的安排,并完成了整个硬件的安装工作。除此之外,还对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成了软件和硬件的融合,基本实现了测试及显示要求实现的预期的功能。关键词:温度 压强 单片机 数字式气温气压模块 LCD1602液晶屏目 录 TOC o 1-3 h z u HYPERLINK l _Toc239306421 1系统(xtng)方案4 HYPERLINK l _Toc239306422 1.1 LCD1602液晶(yjng)显示(xinsh)的论证与选择4 HYPERLINK l _Toc239306423 1.2 数字式气温气压BMP085模

3、块的论证与选择4 HYPERLINK l _Toc239306424 1.3 控制系统的论证与选择4 HYPERLINK l _Toc239306438 2电路与程序设计5 HYPERLINK l _Toc239306439 2.1电路的设计5 HYPERLINK l _Toc239306440 2.1.1系统总体框图5 HYPERLINK l _Toc239306441 2.1.2 LCD1602液晶显示子系统框图与电路原理图5 HYPERLINK l _Toc239306442 2.1.3 数字式气温气压BMP085子系统框图与电路原理图6 HYPERLINK l _Toc23930644

4、3 2.1.4电源6 HYPERLINK l _Toc239306444 2.2程序的设计7 HYPERLINK l _Toc239306445 3.2.1程序功能描述与设计思路7 HYPERLINK l _Toc239306446 3.2.2程序流程图 PAGEREF _Toc239306446 h 3 HYPERLINK l _Toc239306447 3测试方案与测试结果 PAGEREF _Toc239306447 h 3 HYPERLINK l _Toc239306448 3.1测试方案 PAGEREF _Toc239306448 h 3 3.2测试结果与分析 HYPERLINK l

5、_Toc239306453 附录1:电路原理图 PAGEREF _Toc239306453 h 5 HYPERLINK l _Toc239306454 附录2:源程序 PAGEREF _Toc239306454 h 61系统(xtng)方案本系统(xtng)主要由LCD1602显示(xinsh)模块、数字式气温气压BMP085模块、控制系统模块、电源模块组成,下面分别论证这几个模块的选择。1.1 LCD1602液晶显示的论证与选择方案一:数码管显示方案二:LCD1602液晶显示 系统采用1602液晶显示,它可以显示2*16个字符,同时只用11个I/O端口,它不仅节省了单片机的资源,相比较数码管

6、液晶显示更加直观、节能,同时在硬件上面液晶的驱动电路比数码管简单的多,故采用LCD显示。综合以上两种方案,选择方案二。Lcd1602基本操作时序如下表所示 1 读状态 输入:RS=L,RW=H,E=H输出:D0-D7=状态字2写指令 输入:RS=L,RW=L,D0-D7=指令码,E=脉冲输出:无3读数据 输入:RS=H,RW=H,E=H输出:D0-D7=数据4写数据 输入:RS=H,RW=1,D0-D7=数据,E=H输出:无1.2 数字式气温气压BMP085模块的论证与选择方案一:BMP180方案二:BMP085 BMP085与BPP180都遵从I2C协议,BMP085 是一款高精度、超低能耗

7、的压力传感器,可以应用在移动设备中。它的性能卓越,绝对精度最低可以达到0.03hPa,并且耗电极低,只有3A。 BMP085采用强大的8-pin陶瓷无引线芯片承载(LCC)超薄封装,可以通过I2C总线直接与各种微处理器相连。综合以上二种方案,选择方案二。BMP085数字式气温气压传感器主要特点:(1). 压力范围:300 1100hPa(海拔9000米至-500米)(2). 电源电压:1.8V 3.6V(VDDA) 1.62V 3.6V(VDDD) LCC8封装:无铅陶瓷(toc)载体封装(LCC)(3). 尺 寸: 5.0mmx5.0 x1.2mm(4). 低功耗: 5A 在标准(biozh

8、n)模式 高精度: 低功耗模式(msh)下,分辨率为0.06hPa(0.5米) 高线性模式下,分辨率为0.03hPa(0.25米)(5). 含温度输出 IIC接口 温度补偿(6). 反应时间:7.5ms 待机电流:0.1A 无需外部时钟电路1.3 控制系统的论证与选择 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash HYPERLINK /view/87697.htm t _blank 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。具有以下标准功能:8

9、k字节Flash,512字节RAM, 32 位I/O 口线, HYPERLINK /view/1313309.htm t _blank 看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 HYPERLINK /view/281961.htm t _blank 定时器/计数器,一个6向量2级中断结构,全双工 HYPERLINK /view/1060187.htm t _blank 串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种 HYPERLINK /view/37.htm t _blank 软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM

10、、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结, HYPERLINK /view/1012.htm t _blank 单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。2电路(dinl)与程序设计2.1电路(dinl)的设计2.1.1系统(xtng)总体框图系统总体框图如图(a)所示电源电源 单片机STC89C52 数字式气温气压模块LCD1602液晶屏 图(a) 系统总体框图 2.1.2 LCD1602液晶显示子系统框图与电路原理图LCD1602液晶显示子系统框图 图(b) LCD1602液晶显示子系统框图LCD

11、1602液晶显示子系统电路图(c) LCD1602液晶(yjng)显示(xinsh)子系统电路(dinl)2.1.3 数字式气温气压BMP085模块子系统框图与电路原理图数字式气温气压BMP085模块子系统框图 图(d) 数字式气温气压BMP085模块子系统框图数字式气温气压BMP085模块子系统电路 图(e) 数字式气温(qwn)气压BMP085模块(m kui)子系统电路(dinl)2.1.4电源电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或者12V电压,确保电路的正常稳定工作。这部分电路比较简单,都采用三端稳压管实现,故不作详述。2.2程序(chngx)的设计2.2.1程序

12、功能描述(mio sh)与设计思路1、程序功能(gngnng)描述1)显示部分:在LCD1602液晶显示温度与气压。2、程序设计思路用单片机STC89C52控制,通过数字式气温气压BMP085传感器,将 温度与气压值通过LCD1602液晶上显示出来。2.2.2程序流程图1、LCD1602液晶子程序流程图 图(f)主程序流程图图(g)3测试方案(fng n)与测试结果3.1测试(csh)方案硬件(yn jin)测试:按电路图组装硬件。软件仿真(由于proteus没有BMP085模块,用MPX4250代替)图(h)3.2 测试结果(ji gu)及分析根据上述测试数据,lcd1602可以显示(xin

13、sh)温度与压强示数,由此可以得出(d ch)以下结论:1、本项目电路图设计正确。2、本项目C程序编写正确。3、本项目可以实现硬件与软件联调。综上所述,本设计达到设计要求。附录(fl)一电路(dinl)原理图:图(i)附录(fl)22.1源程序:/*/ BMP085 IIC测试程序/ 使用(shyng)单片机STC89C51 / 晶振:11.0592M/ 编译(biny)环境 Keil uVision4/*#include #include #include #include #include /Keil library #define uchar unsigned char#define u

14、int unsigned int#define DataPort P2 /LCD1602数据端口sbit SCL=P10; /IIC时钟引脚定义sbit SDA=P11; /IIC数据引脚定义sbitLCM_EN =P00; /Lcd1602命令端口sbitLCM_RS =P02; /Lcd1602命令端口sbitLCM_RW =P01; /Lcd1602命令端口#defineBMP085_SlaveAddress 0 xee /定义器件在IIC总线中的从地址 #define OSS 0typedef unsigned char BYTE;typedef unsigned short WORD

15、;uchar ge,shi,bai,qian,wan,shiwan; /显示变量int dis_data; /变量short ac1;short ac2; short ac3; unsigned short ac4;unsigned short ac5;unsigned short ac6;short b1; short b2;short mb;short mc;short md;void delay(unsigned int k);void InitLcd(); /初始化lcd1602void WriteDataLCM(uchar dataW);void WriteCommandLCM(uc

16、har CMD,uchar Attribc);void DisplayOneChar(uchar X,uchar Y,uchar DData);void conversion(long temp_data);void Single_Write(uchar SlaveAddress,uchar REG_Address,uchar REG_data); ucharSingle_Read(ucharREG_Address); voidMultiple_Read(uchar,uchar); /*void Delay5us();void Delay5ms();void BMP085_Start();vo

17、id BMP085_Stop();void BMP085_SendACK(bit ack);bit BMP085_RecvACK();void BMP085_SendByte(BYTE dat);BYTE BMP085_RecvByte();void BMP085_ReadPage();void BMP085_WritePage();/*void conversion(long temp_data) shiwan=temp_data/100000+0 x30 ; temp_data=temp_data%100000; wan=temp_data/10000+0 x30 ; temp_data=

18、temp_data%10000; qian=temp_data/1000+0 x30 ; temp_data=temp_data%1000; bai=temp_data/100+0 x30 ; temp_data=temp_data%100; shi=temp_data/10+0 x30 ; temp_data=temp_data%10; /取余运算(yn sun) ge=temp_data+0 x30; /*/void delay(unsigned int k) unsigned int i,j; for(i=0;ik;i+) for(j=0;j121;j+) ; /*/void WaitF

19、orEnable(void) DataPort=0 xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1; _nop_();_nop_(); while(DataPort&0 x80); LCM_EN=0 ;/*/void WriteCommandLCM(uchar CMD,uchar Attribc) if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0; _nop_(); DataPort=CMD;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*/void WriteDateLCM(

20、uchar dataW) WaitForEnable(); LCM_RS=1;LCM_RW=0; _nop_(); DataPort=dataW;_nop_(); LCM_EN=1; _nop_();_nop_();LCM_EN=0;/*/void InitLcd() WriteCommandLCM(0 x38,1); WriteCommandLCM(0 x08,1); WriteCommandLCM(0 x01,1); WriteCommandLCM(0 x06,1); WriteCommandLCM(0 x0c,1);/*/void DisplayOneChar(uchar X,uchar

21、 Y,uchar DData) Y&=1; X&=15; if(Y)X|=0 x40; X|=0 x80; WriteCommandLCM(X,0); WriteDataLCM(DData);/*延时5微秒(STC90C52RC12M)*/void Delay5us() _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_no

22、p_();_nop_();_nop_();_nop_();/*延时5毫秒(STC90C52RC12M)*/void Delay5ms() WORD n = 560; while (n-);/*起始信号*/void BMP085_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟(shzhng)线 Delay5us(); /延时 SDA = 0; /产生(chnshng)下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/*停止(tngzh)信号*/void BMP085_Stop() SDA = 0; /拉低数据线 SCL = 1; /拉高时钟线

23、Delay5us(); /延时 SDA = 1; /产生(chnshng)上升沿 Delay5us(); /延时/*发送应答(yngd)信号*/void BMP085_SendACK(bit ack) SDA = ack; /写应答(yngd)信号 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/*接收应答信号*/bit BMP085_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线Delay5us(); /延时re

24、turn CY;/*向IIC总线发送一个字节数据*/void BMP085_SendByte(BYTE dat) BYTE i; for (i=0; i8; i+) /8位计数器 dat = 1; /移出数据的最高位 SDA = CY; /送数据口 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 BMP085_RecvACK();/*从IIC总线接收(jishu)一个字节数据*/BYTE BMP085_RecvByte() BYTE i; BYTE dat = 0; SDA = 1; /使能内部(nib)上拉,准备

25、读取数据, for (i=0; i8; i+) /8位计数器 dat = 1; SCL = 1; /拉高时钟(shzhng)线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;/*读出BMP085内部数据,连续两个*/short Multiple_read(uchar ST_Address) uchar msb, lsb;short _data; BMP085_Start(); /起始信号 BMP085_SendByte(BMP085_SlaveAddress); /发送设备地址+写信号 B

26、MP085_SendByte(ST_Address); /发送存储单元地址 BMP085_Start(); /起始信号 BMP085_SendByte(BMP085_SlaveAddress+1); /发送设备地址+读信号msb = BMP085_RecvByte(); /BUF0存储 BMP085_SendACK(0); /回应ACK lsb = BMP085_RecvByte(); BMP085_SendACK(1); /最后一个数据需要回NOACKBMP085_Stop(); /停止信号 Delay5ms(); _data = msb 15;x2 = (long) mc 4);conversion(temperature);DispalyOneChar(4,0,T); /温度(wnd)显示DispalyOneChar(5,0,:);DispalyOneChar(7,0,bai);DispalyOneChar(8,0,shi);DispalyOneChar(9,0,.);DispalyOneChar(10,0,ge);DispalyOneChar(11,0,0XDF); /温度单位DispalyOneChar(12,0,C); b6 = b5 - 4000; x1 = (b2 * (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论