智能压力测量仪课程设计说明书.doc

上传人:土8路 文档编号:10286047 上传时间:2021-05-05 格式:DOC 页数:38 大小:871KB
返回 下载 相关 举报
智能压力测量仪课程设计说明书.doc_第1页
第1页 / 共38页
智能压力测量仪课程设计说明书.doc_第2页
第2页 / 共38页
智能压力测量仪课程设计说明书.doc_第3页
第3页 / 共38页
智能压力测量仪课程设计说明书.doc_第4页
第4页 / 共38页
智能压力测量仪课程设计说明书.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《智能压力测量仪课程设计说明书.doc》由会员分享,可在线阅读,更多相关《智能压力测量仪课程设计说明书.doc(38页珍藏版)》请在三一文库上搜索。

1、郑州华信学院课程设计说明书题目: 智能压力测量仪 姓 名: 杨巍 院 (系): 机电工程学院 专业班级: 电气工程三班 学 号: 1102120310 指导教师: 宋东亚 杨坤漓 成 绩: 时间: 2013年 12月 17 日至 2013 年 12 月 28 日 郑州华信学院课程设计任务书题目 智能压力测量仪 专业、班级 电气工程及其自动化三班 学号 1102120310 姓名 杨巍 主要内容:利用单片机计一个智能压力测量仪,要求显示压力数据。基本要求:1.设计一个智能压力测量仪,要求显示当前压力数值。2.利用proteus软件完成设计电路和仿真;3.掌握并口驱动数码管动态显示的方法;4.通过

2、此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。主要参考资料:1李全利,单片机原理及接口技术M,高等教育出版社2王文杰,单片机应用技术M,冶金工业出版社3朱清慧,PROTEUS教程电子线路设计、制版与仿真M,清华大学出版社4单片机实验指导书,天煌教仪5彭伟,单片机C语言程序设计实训100例M,电子工业出版社完 成 期 限: 指导教师签名: 课程负责人签名: 年 月 日目录摘 要- 2 -1 引 言- 2 -1.1 问题的提出- 2 -1.2任务与分析- 3 -2方案设计- 3 -2.1 系统方案设计论证- 3 -2.1.1系统的控制方案设计- 3 -2.2

3、最终设计方案总体设计框图- 3 -3 系统硬件设计- 4 -3.1 AT89C51单片机- 4 -3.1.1 AT89C51单片机介绍- 4 -3.1.2 选用AT89C51单片机原因- 6 -3.2 时钟电路- 6 -3.3 复位电路- 6 -3.4 PG160128A显示电路- 7 -3.5 A/D转换电路- 8 -4 系统软件设计- 9 -4.1主程序框图- 9 -4.2显示子程序框- 10 -5 系统调试过程- 10 -5.2 Keil程序调试- 12 -5.3 Proteus仿真调试- 12 -结 论- 15 -致谢- 16 -参考文献- 16 -附录一 程序源代码- 16 -附录二

4、 电路原理图及PCB图- 32 -附录三 Proteus仿真截图- 33 - 摘 要本课程设计是基于8051单片机为控制核心的压力检测系统。在硬件电路部分,此设计的采用8051单片机,ADC0832转换器,本设计先测量出压力的电信号,然后通过单片机对所测出的压力值,并通过LCD显示压力数值。关键词:8051单片机、压力检测、LCD显示、1 引 言1.1 问题的提出随着电子化程度越来越高,通过增加更多的电子装置,使机器工作在更好的状态,充分发挥机器的性能,保证机器的安全性,减少机器故障率,增加机器寿命等,具有重要的意义。1.2任务与分析本设计的主要任务就是利用单片机实现压力的检测功能。检测压力检

5、测系统所具有的功能如下:压力检测系统是通过声音和文字信息来体现压力的状态。该系统利用8051单片机作为微控制器,通过压变式压力传感器对压力进行信号检测,传感器输出信号经数字滤波及A/D转换后输入ECU,经计算后在LED屏幕上显示压力。2方案设计2.1 系统方案设计论证2.1.1系统的控制方案设计检测压力传感器MPX4250检测到压力信号后,通过ADC0832转换后送入AT89C51单片机,单片机对数据进行处理,显示等。2.2最终设计方案总体设计框图A/D传感器压力传感器LCD显示压力80C51单片机图2.1 系统总体设计框图本方案是由压力传感器、A/D模数转换器、AT89C51单片机、LED显

6、示电路。压力传感器采集压力信号,将其转换为相对应的电压信号,将电压信号输送到A/D模数转换器转换为数字信号,并送入到AT89C51单片机中,经过单片机的数字滤波处理后,在通过PG160128的驱动程序,将其显示在LCD显示器上。3 系统硬件设计3.1 AT89C51单片机3.1.1 AT89C51单片机介绍(1)8051单片机在此单片机上集成了微处理器(CPU),内部数据存储器(RAM),以及输入输出端口。8051单片机采用40只引脚的双列直插封装方式,各引脚的功能如下:时钟引脚X1及 X2:用于接晶体振荡器,此次设计用的晶振频率为6MHZ。RESET脚:是复位信号输入端,高电平有效。ALE脚

7、:地址锁存允许信号,用于锁存单片机输出的地址信号,高电平有效PSEN脚:程序存储器输出控制端,在单片机访问外部程序存储器时,此引脚输出的负脉冲作为读外部程序存储器的选通信号,接至程序存储器的OE端。低电平有效。EA脚:其功能为内外程序存储器选择控制端。当EA为高电平时,单片机访问内部程序存储器,当EA为低电平时,单片机直接访问片外程序存储器。本设计用的是8031,由于8031内部无程序存储器,所以此引脚应接地。低电平有效。I/O口引脚:共4个,分别是P0、P1、P2、P3,均为8位口。这4个I/O口可分别作为基本的Input、Output端口。其中P0口可作为数据总线和地址总线(低8位)分时复

8、用的端口,P2口可作为地址总线的高8位,即P0口和P2口地起构成16位地址总线,可供寻址的地址范围是:64KB。P3口具有第二功能,即可以产生中断,定时计数等功能。RD、WR引脚:为读和写选通信号,RD用于将单片机的数据写入外设中,WR用于从外设中读取数据。低电平有效AT89C51系列单片机都是以8031为核心发展起来的,具有和51系列单片机及基本结构和软件特征,其内部结构如图3-2所示:振荡器及定时电路AT89C51CPU4K字节ROM128字节RAM2个16位定时器/计数器64K总线扩展控制可编程I/O可编程串行口 图3-2 AT89C51单片机框图3.1.2 选用AT89C51单片机原因

9、在课程设计里所需外围电路简单,在设计里面使用的引脚较少,占用的资源也比较少。而且该芯片是以AT89C51为核心,性能价格比高,应用成熟,且对其内部结构较为熟悉,芯片功能够用而且适用,从而选用AT89C51单片机作为主控芯片。3.2 时钟电路本设计采用内部时钟方式的电路。 AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的电容C1和C2典型值通常选择为33pF左右。晶体的振荡频率的范围通常是在1.2MHZ12MHZ之间。晶体的频率越高

10、,则系统的时钟频率也就越高,单片机的运行速度也就越快。.图3-3 时钟电路3.3 复位电路 复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用上电复位电路。上电复位电路是在上电瞬间来实现的,其电路如图3-4所示。上电时, RESET端维持两个机器周期的高电平实现复位。图3-4 复位电路3.4 PG160128A显示电路PG160128A是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及格160128全点阵液晶显示器组成。可完成图形显示,也可以显示108个(1616点阵)汉字。主要技术参数和性能:模块内自带-15负压,用于LCD的驱动电压1. 电源VDD:+5V; 2.显示内容:1

11、60(列)128(行)点 3.全屏幕点阵 4.十三种指令 5.与CPU接口采用8位数据总线并行输入输出 6.占空比1/1287.工作温度:-10+55,存储温度:-20+70这里通过PG160128A来显示相关信息 图3-5 显示电路ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。这里通过ADC0832将压力传感器输出的电压信号转换为数字信号,并送入到单片机中进行处理。3.5 A/D转换电路4 系统软件设计4.1主程序框图 开始开始(1)主程序流程框图如下: (2)信号

12、采集子程序框图如下: 置数据区首地址信号采集 设置采集个数求出压力值 A/D转换开始LCD显示数值 等待转换 结束储存,转换中断开始设置数据存储区首址设置采集数据个数对数据进行处理恢复现场返回图4-3 数字滤波流程框图波流程框图(3) 数字滤波流 4.2显示子程序框 开始初始化调用显示函数返回图4-4 显示子程序流程图5 系统调试过程通过上面的设计,设计已经基本完成。下面主要实现Altium Designer的原理图、印制板图的绘制和做相关检测,对Keil进行相应的检查和调试,并用Proteus对所设计系统进行仿真。5.1原理图和印制板图绘制和检查5.1.1 在protel99se绘制原理图并

13、进行相应的ERC检查图5-1 原理图的绘制绘制完原理图之后,对原理图进行编译检测,ERC检测结果。5.1.2 在PROTEL99SE生成PCB图在创建完原理图后,对各元器件的引脚进行封装,在原理图中创建网络表(NET),然后再PROTEL99S中新建PCB ,对于生成的PCB图中各器件进行调整,并布线,最终生成PCB图。结果如图5-2所示图5-2 生成PCB图5.2 Keil程序调试程序调试结果如下所示:creating hex file from 压力检测系统.压力检测系统 - 0 Error(s), 0 Warning(s).5.3 Proteus仿真调试在Proteus中建立仿真图。按下

14、开始仿真按钮,开始进行仿真实验,结果如图5-4,图5-5,图5-6所示: 图5-4 Proteus仿真图 图5-5 Proteus仿真图图5-6 Proteus仿真图仿真电路图中实现对压力检测的控制,输出到PG160128A显示。 结 论 通过MPX4250检测到压力信号,转换为电压值,然后通过ADC0832转换后产生一个数字信号输入到AT89C51单片机中进行处理,再通过单片机驱动PG160128A显示压力的相关信息。由于显示程序的复杂性,所以选用了C语言作为开放程序加快了开发进度。本次设计由于时间较为仓促,难免考虑不周全,还有许多功能需要完善,这需要下来再去深究。在本次课程设计里面,我把电

15、路和单片机必备的一些基本操作技能再次熟悉了一遍。 对于压力检测,我只进行了最简单的程序编写和仿真,而往往在实际中是作为一个系统中的很小子环节来进行应用的,所以还需要我进一步学习更多的单片机及相关测试传感器知识。致谢本课题在选题及进行过程中得到宋老师的悉心指导。论文行文过程中,宋老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。宋老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显得苍白。在此,谨向宋老师致以诚挚的谢意和崇高的敬意。参考文献1谭浩强.C程序设计(第三版)M.北京.清华大学出版社.2005(2007重印)2 张毅刚,彭喜元等

16、. MCS-51单片机应用设计(第3版)M.哈尔滨.哈尔滨工业大学出版社.2001.3徐琤颖.Protel99SE EDA技术及应用.M.北京.机械工业出版社.2009.1重印4古辉,刘均等.微型计算机接口及控制技术.M.北京.机械工业出版社.2009.1附录一 程序源代码/名称:160128液晶显示当前压力#include#include#include#include#include#include#include#define HZ_CHR_HEIGHT 12#define HZ_CHR_WIDTH 12#include#include#define uchar unsigned cha

17、r#define uint unsigned intextern char fnLCMInit();/LCD初始化extern void fnSetPos(unsigned char urow,unsigned char ucol);/设置当前地址extern uchar dprintf(uchar x,uchar y,char *fmt);/ASCII(8*16)及汉字(16*16)显示函数sbit CS=P34;sbit CLK=P32;sbit DI0=P33;uint theLastTime;/一次鸣响持续次数unsigned char dsp4;/作为压力存储传入函数显示uchar

18、Get_AD_Result() uchar i,dat1=0,dat2=0;CS = 0;CLK=0;/起始控制位 DI0 = 1; _nop_(); _nop_();CS = 0; _nop_(); _nop_();CLK = 1; _nop_(); _nop_();/第一个下降沿之前,设DI = 1 / 0 /选择单端/差分(SGL/DIF)模式中的单端输入模式CLK = 0;DI0 = 1; _nop_(); _nop_();CLK = 1; _nop_(); _nop_();/第二个下降沿之前,设DI = 0 / 1,选择CH0/CH1 CLK = 0;DI0 = 0; _nop_()

19、; _nop_();CLK = 1;DI0 = 1; _nop_(); _nop_(); /第三个下降沿之前,设DI = 1 CLK = 0;DI0 = 1; _nop_(); _nop_(); /第4-11个下降沿读数据(MSB-LSB)for(i=0;i8;i+) CLK = 1; _nop_(); _nop_();CLK = 0; _nop_(); _nop_(); dat1 = dat1 1 | DI0; for(i=0;i8;i+) dat2 = dat2 | (uchar)(DI0)i); CLK = 1; _nop_(); _nop_(); CLK = 0; _nop_(); _

20、nop_(); CS = 1; return (dat1 = dat2) ? dat1:0; unsigned char dsp4; /作为压力存储传入函数显示 void delay() /蜂鸣器鸣响间隔延时 uint i, j = 200; while(j-) for (i = 0; i = 500; i+); void main()uchar AD_Result;/获取的AD值float ad=0;/当前压力值float Y1,Y2,dY;/限幅滤波dY=2;/定时器初始化fnLCMInit();fnSetPos(0,0); dprintf(30,12,液晶屏显示当前压力);dprintf

21、(110,58,千帕);AD_Result=Get_AD_Result();Y1=(AD_Result*5.0/255.0/5.1-0.04)/0.00369-3.45;while(1)AD_Result=Get_AD_Result();Y1=(AD_Result*5.0/255.0/5.1-0.04)/0.00369-3.45;if(abs(Y2-Y1)=dY)/变化不能太快,否则会失效ad=Y2;Y1=Y2;elsead=Y1;sprintf(dsp,%-3.0f,ad);dprintf(82,58,dsp);/LCD显示控制程序#define ASC_CHR_WIDTH 8#define

22、 ASC_CHR_HEIGHT 12/数字字符点阵库,粗体初号,32*64点阵,32/8=4,每个数字需要4*64字节,共10个数字char code MSK1=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;char code MSK2=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;code uchar const uPowArr=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar code ASC_MSK58*10=0x00,0x00,0x00,0x00,0x00,

23、0x00,0x00,0xff,0xff,0xff,0xff,0xff, / 0;i-)if(LCMCW&0x03)=0x03)break;return i;/若返回0,说明错误uchar fnST3(void)/状态位ST3判断(数据自动写状态)uchar i;for(i=10;i0;i-)if(LCMCW&0x08)=0x08)break;return i;/若返回0,说明错误uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2)/写双参数的指令if(fnST01()=0)return 1;LCMDW=uPar1;if(fnST01()=0)retur

24、n 2;LCMDW=uPar2;if(fnST01()=0)return 3;LCMCW=uCmd;return 0;/返回0成功uchar fnPR11(uchar uCmd,uchar uParl)/写单参数的指令if(fnST01()=0)return 1;LCMDW=uParl;if(fnST01()=0)return 2;LCMCW=uCmd;return 0;/返回0成功uchar fnPR12(uchar uCmd)/写无参数的指令if(fnST01()=0)return 1;LCMCW=uCmd;return 0;/返回0成功uchar fnPR13(uchar uData)/

25、写数据if(fnST3()=0)return 1;LCMDW=uData;return 0;/返回0成功uchar fnPR2(void)/读数据if(fnST01()=0)return 1;return LCMDW;void fnSetPos(uchar urow,uchar ucol)/设置当前地址uint iPos;iPos=urow*20+ucol;fnPR1(LC_ADD_POS,iPos & 0xFF,iPos/256);gCurRow=urow;gCurCol=ucol;char fnLCMInit(void)/LCM初始化reset=0;reset=1;fnPR1(LC_TXT

26、_STP,0x00,0x00);/文本显示区首地址fnPR1(LC_TXT_WID,0x14,0x00);/文本显示区宽度fnPR1(LC_GRH_STP,0x00,0x00);/图形显示区首地址fnPR1(LC_GRH_WID,0x14,0x00);/文本显示区宽度fnPR11(LC_CGR_POS,CGRAMSTART11);fnPR12(LC_CUR_SHP|0x01);/光标形状fnPR12(LC_MOD_OR);/显示方式设置fnPR12(LC_DIS_SW|0x08);grhome=GRSTART;txthome=TXTSTART;return 0;uchar dprintf(uc

27、har x,uchar y,char *fmt)/ASCII及汉字显示函数char c1,c2,cData;uchar i=0,j,uLen;uchar k;uLen=strlen(fmt);while(i=0)/ASCIIif(c10x20)switch(c1)case CR:case LF:/回车或换行i+;x=0;if(yASC_CHR_WIDTH)y-=ASC_CHR_WIDTH;cData=0x00;break;for(j=0;j=0x1f)cData=ASC_MSK(c1-0x1F)*ASC_CHR_HEIGHT+j;fnSetPos(y+j,x/8);if(x%8=0)fnPR1

28、2(LC_AUT_WR);/写数据fnPR13(cData);fnPR12(LC_AUT_OVR);elseOutToLCD(cData,x,y+j);fnSetPos(y+j,x/8);if(c1!=BS)/非退格x+=ASC_CHR_WIDTH;elsefor(j=0;jsizeof(GB_16)/sizeof(GB_160);j+)if(c1=GB_16j.Index0 & c2=GB_16j.Index1)break;for(k=0;kHZ_CHR_HEIGHT;k+)fnSetPos(y+k,x/8);if(jsizeof(GB_16)/sizeof(GB_160)c1=GB_16j.Mskk*2;c2=GB_16j.Mskk*2+1;elsec1=c2=0;if(x%8)=0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1