ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:96.10KB ,
资源ID:9414286      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9414286.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机气压计课程设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机气压计课程设计.docx

1、单片机气压计课程设计第一章 功能要求该课程设计数字气压计的主要功能是显示当前的气压。该课题的主要技术指标是LM016L上显示的气压是否准确,如果有波动,波动范围是否在可控制范围之内。第二章 系统设计2.1整体设计思想本设计主要的功能是使整个电路能够完成液晶显示器上能显示出正确的气压读数。设计系统结构时,需要考虑整体的稳定性、复杂程度、整体造价及调试时要考虑的难易程度等因数。本设计是基于MPX4250的数字气压计的设计,主要包括对软硬件的设计和调试。软件部分应用C语言及单片机知识根据系统特点写出需要的单片机程序。硬件部分主要包括四大块,即大气压的非电信号数据的采集、转换、处理以及显示。2.2系统

2、总框图气压计硬件部分由四部分构成,它们分别是:信息采集模块,数据转换模块,信息处理模块和数据显示模块。下图为系统总框图。 2.1系统总框图第三章 主要元器件的功能作用3.1 气压传感器MPX4250MPX4250是一款绝对压力集成传感器。它主要用于汽车发动机控制系统中,可测量发动机进气管道的绝对压力,再通过计算机计算出每个汽缸所需要的燃料量,以保证发动机处于最佳工作状态。在该集成传感器芯片上,除具有压阻式压力传感器外,还有信号放大器及用作温度补偿的薄膜电阻网络。薄膜网络可用激光技术进行校准。测压范围20-250kpa。相应的输出电压为0.2V-4.9V。精度为1.5%。工作温度范围为-40-

3、+125。MPX4250如图3.1所示。图3.1 MPX42503.2 数据转换芯片ADC0832气压传感器MPX4250输出的是模拟电压,因此,必须进行模拟到数字的转换才能交由单片机处理。ADC0832是一种8位分辨率、双通道A/D转换芯片。其最高分辨率可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0-5V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。其特点有:输入输出电平与TT

4、L/CMOS相兼容;5V电源供电时输入电压在0-5V之间;工作频率为250KHZ,转换时间为32S;一般功耗仅为15mw。芯片接口说明:CS_片选使能,低电平芯片使能;CH0模拟输入通道0,或作为IN+/-使用;CH1模拟输入通道1,或作为IN+/-使用;GND芯片参考0电位;DI数据信号输入,选择通道控制;DO数据信号输出,转换数据输出;CLK芯片时钟输入;Vcc/REF电源输入及参考电压输入。ADC0832如图3.2所示:图3.2 LM331引脚3.3 MC78L05电源电路电源电路选用三端低电流线性稳压芯片MC78L05。MC78L05具有以下特点:输入电压范围:2.6-24V,输出+5

5、V固定电压;具有内部短路电路限制和热过载保护功能;其引脚分布如图3.3所示。图3.3 MC78L05电源电路各引脚功能说明如下:Vo(1脚):+5V固定电压输出脚。GND(2脚):接地端。Vi(3脚):电压输入脚,可输入的电压范围为2.6-24V。第四章 模块设计4.1 A/D转换模块单片机接受传感器的电压值为模拟信号,它要和A/D转换模块的脉冲波发生装置发送过来的标准模拟信号相比较,即通过P1.0和P1.1引脚进行比较,同时开发定时器0,当待测模拟信号超过标准模拟信号时,P3.4引脚信号将会发生变化,此时的定时器0的值通过量纲转化就得到了相应的数字信号。4.2数据处理模块数据处理模块主要是对

6、A/D转换模块的数据进行多次采集,并且对采集的数据进行处理,此处理过程主要是对采集的数据进行初值定义以及相应的移位处理,并且把处理好的数据送入相应的缓冲区,为后面的显示模块作好准备。4.3显示模块用单片机芯片AT89C52的P0.0/AD0P0.7/AD7端口与LCD显示屏的D0-D7脚相连接,通过AT89C52的P2.0P2.2端口来控制选通LCD显示屏的位选端。在数据的显示模块中,我采用的是1602LCD液晶显示。以下为各个模块的详细情况:4.3.1数据采集模块数据采集模块由气压传感器MPX4250构成,采集的是大气压值。其中1脚是输出信号端,输出的是与气压值相对应的模拟电压信号。4.3.

7、2数据转换模块气压传感器MPX4250输出的是模拟电压,因此,必须进行模拟到数字的转换才能交由单片机处理。在数据转换模块选用的是ADC0832芯片,它是一款高精度电压频率转换芯片。如图4.1所示:图4.1 数据转换模块4.3.3 数据处理模块对于ADC0832输出的频率信号要经过单片机的数据处理,通过频率与气压之间的关系计算出气压值。本设计应用的是单片机芯片是AT89C52。AT89C52单片机最为核心的部分是中央处理器CPU,主要工作特性是:片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;具有3个可编程

8、定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz。AT89C52的引脚如图4.2所示。图4.2 单片机引脚图本设计中单片机的主要功能是对上一A/D转换模块的数据进行多次采集并出来,其处理过程主要是对采集的数据进行初值定义以及相应的移位处理,把处理好的数据送入相应的缓冲区,为后面的模块做准备。4.3.4显示模块本设计使用的显示器件为液晶显示器

9、。液晶显示器简称LCD显示器,它是利用液晶经过处理后能够改变光线的传输方向的特性实现显示信息的,液晶显示模块具有体积小、功耗低、显示内容丰富超薄轻巧等优点,在单片机应用系统中得到日益广泛的应用。本设计中选择字符型液晶显示器LCD1602。LCD1602可以显示两行,每行16个字符,采用+5V电源供电,外围电路配置简单。LCD1602是一种专门用于显示字母、数字、符号等点阵式LCD。 显示器部分的电路如图4.3所示。图4.3 显示模块原理图第五章 单片机调试仿真根据以上程序流程图,参考了网上的一些程序,自己在Keil软件上运行,编译,得到最后所需的程序。这里我们采用proteus的系统总体执行效

10、果调试方法,调试单片机的供应电源和复位电路部分。电源电路、晶振电路和复位电路是整个系统正常工作的基础,应首先保证它们的正常工作。其仿真图如下图5.1: 图5.1 仿真图结论为期四个星期的单片机课程设计结束啦。这次课程设计做的是数字气压计,数字气压计现在的产品不是很多,但由于其精度高、读数准确简单等优点,相信在今后会得到广泛的运用。在这四个星期中,我从刚开始的茫然到最后把作品做出来,其中经历的许多,虽然最终的作品不是很满意,但其基本上还是满足了刚开始的设计,在者,我从中学到了不少。我能够用几个软件(Keil。Protel,Protel),还有就是编程,通过自己的努力把作品做出来。这次课程设计做的

11、是数字气压计,数字气压计现在的产品不是很多,但由于其精度高、读数准确简单等优点,相信在今后会得到广泛的运用。致谢经过四周时间的不懈努力,本次课程设计已经接近尾声,但是由于知识及经验的匮乏,难免遇到很多困难,如果没有导师的督促指导以及同学们的支持,很难顺利的完成此次课程设计。从开始选题到论文的顺利完成,都离不开老师、同学、朋友给以的帮助,在这里请接受我的谢意!首先,在本次毕业设计过程中,从构思、资料收集到最后定稿的各个环节给予细心指引与教导,使我对课程的多方面的知识有了深刻的认识,使我得以最终完成课程设计,在此表示衷心感谢。其次,还有帮助我的同学们,感谢你们给我的鼓励,感谢你们在我遇到困难时所给

12、的帮助,正是有了你们的帮助和鼓励,此次课程设计才得以顺利的完成。最后,本次设计得以顺利完成,也要感谢导师组的老师,他们在本文写作阶段给出了许多宝贵意见。导师们的高深精湛的造诣与严谨求实的治学精神将永远激励着我。参考文献1 曹丙霞. Protel99SE原理图与PCB设计 电子工业出版社,20002 戴佳. 51单片机C语言应用程序设计实例精讲 电子工业出版社,20063 徐爱均. 单片机高级语言C51应用程序设计 电子工业出版社,20044 周兴华. 手把手教你学单片机C程序设计 北京航空航天大学出版社,20045 严天峰. 单片机应用系统设计与仿真调试 北京航空航天大学出版社,2001附录

13、程序代码#include#include#include#define uchar unsigned char#define uint unsigned intsbit RS =P20;sbit RW =P21;sbit EN =P22;sbit CS =P34;sbit CLK=P32;sbit DIO=P33;uchar yq;uchar dis_yq5= ;uchar dis_lcd118=asdfff; /-延时- void delay(uint x) uchar i; while(x-) for(i=0;i120;i+); /- /-LCD 控制-/读lcd 状态bit lcd_bu

14、sy_check() bit s; RS=0; RW=1;EN=1; delaynop(); s=(bit)(P0 & 0x80);EN=0; return s; uchar read_lcd_state() uchar state ; RS=0;RW=1;EN=1;delay(1);state=P0;EN=0;delay(1); return state; /-/ 忙等待void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80); delay(5);/- /向LCD写数据 void write_lcd_data(uchar dat) whi

15、le(lcd_busy_check(); lcd_busy_wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;delaynop();EN=0; /- /向LCD写指令 void write_lcd_cmd(uchar cmd) while(lcd_busy_check(); lcd_busy_wait(); RS=0;RW=0;EN=0;_nop_();_nop_();P0=cmd;delaynop();EN=1;delaynop();EN=0; /-/LCD初始化void init_lcd() write_lcd_cmd(0x38); delay(1); write_lc

16、d_cmd(0x0C) ; delay(1); write_lcd_cmd(0x06); delay(1); write_lcd_cmd(0x01) ; delay(1); /- /设置液晶显示位置 void set_lcd_pos(uchar p) write_lcd_cmd(p| 0x80); /- /在LCD上显示字符串 void dis_lcd_string(uchar p,uchar *s) /位置,字符指针 uchar i; set_lcd_pos(p); for(i=0;i16;i+)/16*2 write_lcd_data(si) ; / delay(1); /- /* /-

17、/获取AD转换结果 uchar get_AD_result() uchar i,dat1=0,dat2=0; /其实控制位 CS=0; CLK=0; DIO=1; _nop_();_nop_(); CLK=1; _nop_();_nop_(); CLK=0;DIO=1; _nop_();_nop_(); CLK=1; _nop_();_nop_(); CLK=0;DIO=0; _nop_();_nop_(); CLK=1;DIO=1; _nop_();_nop_(); CLK=0;DIO=1; _nop_();_nop_(); for(i=0;i8;i+) CLK=1; _nop_();_no

18、p_(); CLK=0; _nop_();_nop_(); dat1=dat11 | DIO; for(i=0;i8;i+) dat2=dat2|( (uchar)(DIO)i); CLK=1; _nop_();_nop_(); CLK=0; _nop_();_nop_(); CS=1; return (dat1=dat2) ? dat1 :0; /-void dis_lcd_yq() yq= ( get_AD_result()*5.0/255.0/5.1-0.04 )/0.00369-3.45; dis_yq0=yq/1000 +0; dis_yq1=yq%1000/100 +0; dis_yq2=yq%100/10 +0; dis_yq3=yq%10 +0; dis_lcd_string(0x40,a);void main() /dis_lcd_yq(); delay(100); dis_lcd_string(0x40,dis_lcd11);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1