课程设计说明书智能压力测量仪讲解.docx
- 文档编号:30706177
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:33
- 大小:473.61KB
课程设计说明书智能压力测量仪讲解.docx
《课程设计说明书智能压力测量仪讲解.docx》由会员分享,可在线阅读,更多相关《课程设计说明书智能压力测量仪讲解.docx(33页珍藏版)》请在冰豆网上搜索。
课程设计说明书智能压力测量仪讲解
郑州华信学院
课程设计说明书
题目:
智能压力测量仪
姓名:
杨巍
院(系):
机电工程学院
专业班级:
电气工程三班
学号:
1102120310
指导教师:
宋东亚杨坤漓
成绩:
时间:
2013年12月17日至2013年12月28日
郑州华信学院
课程设计任务书
题目智能压力测量仪
专业、班级电气工程及其自动化三班
学号1102120310
姓名杨巍
主要内容:
利用单片机计一个智能压力测量仪,要求显示压力数据。
基本要求:
1.设计一个智能压力测量仪,要求显示当前压力数值。
2.利用proteus软件完成设计电路和仿真;
3.掌握并口驱动数码管动态显示的方法;
4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。
主要参考资料:
[1]李全利,单片机原理及接口技术[M],高等教育出版社
[2]王文杰,单片机应用技术[M],冶金工业出版社
[3]朱清慧,PROTEUS教程——电子线路设计、制版与仿真[M],清华大学出版社
[4]单片机实验指导书,天煌教仪
[5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社
完成期限:
指导教师签名:
课程负责人签名:
年月日
摘要
本课程设计是基于8051单片机为控制核心的压力检测系统。
在硬件电路部分,此设计的采用8051单片机,ADC0832转换器,本设计先测量出压力的电信号,然后通过单片机对所测出的压力值,并通过LCD显示压力数值。
关键词:
8051单片机、压力检测、LCD显示、
1引言
1.1问题的提出
随着电子化程度越来越高,通过增加更多的电子装置,使机器工作在更好的状态,充分发挥机器的性能,保证机器的安全性,减少机器故障率,增加机器寿命等,具有重要的意义。
1.2任务与分析
本设计的主要任务就是利用单片机实现压力的检测功能。
检测压力检测系统所具有的功能如下:
压力检测系统是通过声音和文字信息来体现压力的状态。
该系统利用8051单片机作为微控制器,通过压变式压力传感器对压力进行信号检测,传感器输出信号经数字滤波及A/D转换后输入ECU,经计算后在LED屏幕上显示压力。
2方案设计
2.1系统方案设计论证
2.1.1系统的控制方案设计
检测压力传感器MPX4250检测到压力信号后,通过ADC0832转换后送入AT89C51单片机,单片机对数据进行处理,显示等。
2.2最终设计方案总体设计框图
图2.1系统总体设计框图
本方案是由压力传感器、A/D模数转换器、AT89C51单片机、LED显示电路。
压力传感器采集压力信号,将其转换为相对应的电压信号,将电压信号输送到A/D模数转换器转换为数字信号,并送入到AT89C51单片机中,经过单片机的数字滤波处理后,在通过PG160128的驱动程序,将其显示在LCD显示器上。
3系统硬件设计
3.1AT89C51单片机
3.1.1AT89C51单片机介绍
(1)8051单片机
在此单片机上集成了微处理器(CPU),内部数据存储器(RAM),以及输入输出端口。
8051单片机采用40只引脚的双列直插封装方式,各引脚的功能如下:
①时钟引脚X1及X2:
用于接晶体振荡器,此次设计用的晶振频率为6MHZ。
②RESET脚:
是复位信号输入端,高电平有效。
③ALE脚:
地址锁存允许信号,用于锁存单片机输出的地址信号,高电平有效
④PSEN脚:
程序存储器输出控制端,在单片机访问外部程序存储器时,此引脚输出的负脉冲作为读外部程序存储器的选通信号,接至程序存储器的OE端。
低电平有效。
⑤EA脚:
其功能为内外程序存储器选择控制端。
当EA为高电平时,单片机访问内部程序存储器,当EA为低电平时,单片机直接访问片外程序存储器。
本设计用的是8031,由于8031内部无程序存储器,所以此引脚应接地。
低电平有效。
⑥I/O口引脚:
共4个,分别是P0、P1、P2、P3,均为8位口。
这4个I/O口可分别作为基本的Input、Output端口。
其中P0口可作为数据总线和地址总线(低8位)分时复用的端口,P2口可作为地址总线的高8位,即P0口和P2口地起构成16位地址总线,可供寻址的地址范围是:
64KB。
P3口具有第二功能,即可以产生中断,定时计数等功能。
⑦RD、WR引脚:
为读和写选通信号,RD用于将单片机的数据写入外设中,WR用于从外设中读取数据。
低电平有效
AT89C51系列单片机都是以8031为核心发展起来的,具有和51系列单片机及基本结构和软件特征,其内部结构如图3-2所示:
图3-2AT89C51单片机框图
3.1.2选用AT89C51单片机原因
在课程设计里所需外围电路简单,在设计里面使用的引脚较少,占用的资源也比较少。
而且该芯片是以AT89C51为核心,性能价格比高,应用成熟,且对其内部结构较为熟悉,芯片功能够用而且适用,从而选用AT89C51单片机作为主控芯片。
3.2时钟电路
本设计采用内部时钟方式的电路。
AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的电容C1和C2典型值通常选择为33pF左右。
晶体的振荡频率的范围通常是在1.2MHZ~12MHZ之间。
晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
.
图3-3时钟电路
3.3复位电路
复位电路通常采用上电自动复位和按钮复位两种方式。
本次设计采用上电复位电路。
上电复位电路是在上电瞬间来实现的,其电路如图3-4所示。
上电时,RESET端维持两个机器周期的高电平实现复位。
图3-4复位电路
3.4PG160128A显示电路
PG160128A是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及格160×128全点阵液晶显示器组成。
可完成图形显示,也可以显示10×8个(16×16点阵)汉字。
主要技术参数和性能:
模块内自带-15负压,用于LCD的驱动电压
1.电源VDD:
+5V;
2.显示内容:
160(列)×128(行)点
3.全屏幕点阵
4.十三种指令
5.与CPU接口采用8位数据总线并行输入输出
6.占空比1/128
7.工作温度:
-10℃∽+55℃,存储温度:
-20℃∽+70℃
这里通过PG160128A来显示相关信息
图3-5显示电路
ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。
学习并使用ADC0832可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。
这里通过ADC0832将压力传感器输出的电压信号转换为数字信号,并送入到单片机中进行处理。
3.5A/D转换电路
4系统软件设计
4.1主程序框图
(1)主程序流程框图如下:
(2)信号采集子程序框图如下:
(3)数字滤波流
4.2显示子程序框
图4-4显示子程序流程图
5系统调试过程
通过上面的设计,设计已经基本完成。
下面主要实现AltiumDesigner的原理图、印制板图的绘制和做相关检测,对Keil进行相应的检查和调试,并用Proteus对所设计系统进行仿真。
5.1原理图和印制板图绘制和检查
5.1.1在protel99se绘制原理图并进行相应的ERC检查
图5-1原理图的绘制
绘制完原理图之后,对原理图进行编译检测,ERC检测结果。
5.1.2在PROTEL99SE生成PCB图
在创建完原理图后,对各元器件的引脚进行封装,在原理图中创建网络表(NET),然后再PROTEL99S中新建PCB,对于生成的PCB图中各器件进行调整,并布线,最终生成PCB图。
结果如图5-2所示
图5-2生成PCB图
5.2Keil程序调试
程序调试结果如下所示:
creatinghexfilefrom"压力检测系统"...
"压力检测系统"-0Error(s),0Warning(s).
5.3Proteus仿真调试
在Proteus中建立仿真图。
按下开始仿真按钮,开始进行仿真实验,结果如图5-4,图5-5,图5-6所示:
图5-4Proteus仿真图
图5-5Proteus仿真图
图5-6Proteus仿真图
仿真电路图中实现对压力检测的控制,输出到PG160128A显示。
结论
通过MPX4250检测到压力信号,转换为电压值,然后通过ADC0832转换后产生一个数字信号输入到AT89C51单片机中进行处理,再通过单片机驱动PG160128A显示压力的相关信息。
由于显示程序的复杂性,所以选用了C语言作为开放程序加快了开发进度。
本次设计由于时间较为仓促,难免考虑不周全,还有许多功能需要完善,这需要下来再去深究。
在本次课程设计里面,我把电路和单片机必备的一些基本操作技能再次熟悉了一遍。
对于压力检测,我只进行了最简单的程序编写和仿真,而往往在实际中是作为一个系统中的很小子环节来进行应用的,所以还需要我进一步学习更多的单片机及相关测试传感器知识。
致谢
本课题在选题及进行过程中得到宋老师的悉心指导。
论文行文过程中,宋老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。
宋老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。
再多华丽的言语也显得苍白。
在此,谨向宋老师致以诚挚的谢意和崇高的敬意。
参考文献
[1]谭浩强.C程序设计(第三版)[M].北京.清华大学出版社.2005(2007重印)
[2]张毅刚,彭喜元等.MCS-51单片机应用设计(第3版)[M].哈尔滨.哈尔滨工业大学出版社.2001.
[3]徐琤颖.Protel99SEEDA技术及应用.[M].北京.机械工业出版社.2009.1重印
[4]古辉,刘均等.微型计算机接口及控制技术.[M].北京.机械工业出版社.2009.1
附录一程序源代码
//名称:
160128液晶显示当前压力
#include
#include
#include
#include
#include
#include
#include
#defineHZ_CHR_HEIGHT12
#defineHZ_CHR_WIDTH12
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
externcharfnLCMInit();//LCD初始化
externvoidfnSetPos(unsignedcharurow,unsignedcharucol);//设置当前地址
externuchardprintf(ucharx,uchary,char*fmt);//ASCII(8*16)及汉字(16*16)显示函数
sbitCS=P3^4;
sbitCLK=P3^2;
sbitDI0=P3^3;
uinttheLastTime;//一次鸣响持续次数
unsignedchardsp[4];//作为压力存储传入函数显示
ucharGet_AD_Result()
{uchari,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_();_nop_();CLK=1;DI0=1;_nop_();_nop_();//第三个下降沿之前,设DI=1
CLK=0;DI0=1;_nop_();_nop_();//第4-11个下降沿读数据(MSB->LSB)
for(i=0;i<8;i++)
{CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();
dat1=dat1<<1|DI0;
}
for(i=0;i<8;i++)
{dat2=dat2|((uchar)(DI0)<
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
}
CS=1;
return(dat1==dat2)?
dat1:
0;
}
unsignedchardsp[4];//作为压力存储传入函数显示
voiddelay()//蜂鸣器鸣响间隔延时
{uinti,j=200;
while(j--)
{for(i=0;i<=500;i++);}
}
voidmain()
{
ucharAD_Result;//获取的AD值
floatad=0;//当前压力值
floatY1,Y2,dY;//限幅滤波
dY=2;//定时器初始化
fnLCMInit();
fnSetPos(0,0);
dprintf(30,12,"液晶屏显示当前压力");
dprintf(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;
}
else
{
ad=Y1;
}
sprintf(dsp,"%-3.0f",ad);
dprintf(82,58,dsp);
}
}
//LCD显示控制程序
#defineASC_CHR_WIDTH8
#defineASC_CHR_HEIGHT12
//数字字符点阵库,粗体初号,32*64点阵,32/8=4,每个数字需要4*64字节,共10个数字
charcodeMSK1[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
charcodeMSK2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
codeucharconstuPowArr[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
ucharcodeASC_MSK[58*10]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,//<0x20时,打印此字
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//''
0x00,0x30,0x78,0x78,0x78,0x30,0x30,0x00,0x30,0x30,0x00,0x00,//'!
'
0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//'"'
0x00,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c,0x00,0x00,//'#'
0x30,0x30,0x7c,0xc0,0xc0,0x78,0x0c,0x0c,0xf8,0x30,0x30,0x00,//'$'
0x00,0x00,0x00,0xc4,0xcc,0x18,0x30,0x60,0xcc,0x8c,0x00,0x00,//'%'
0x00,0x70,0xd8,0xd8,0x70,0xfa,0xde,0xcc,0xdc,0x76,0x00,0x00,//'&'
0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//'''
0x00,0x0c,0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x0c,0x00,0x00,//'('
0x00,0x60,0x30,0x18,0x0c,0x0c,0x0c,0x18,0x30,0x60,0x00,0x00,//')'
0x00,0x00,0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x00,//'*'
0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00,//'+'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x60,0x00,//','
0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,//'-'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,//'.'
0x00,0x00,0x02,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,0x00,//'/'
0x00,0x7c,0xc6,0xce,0xde,0xd6,0xf6,0xe6,0xc6,0x7c,0x00,0x00,//'0'
0x00,0x10,0x30,0xf0,0x30,0x30,0x30,0x30,0x30,0xfc,0x00,0x00,//'1'
0x00,0x78,0xcc,0xcc,0x0c,0x18,0x30,0x60,0xcc,0xfc,0x00,0x00,//'2'
0x00,0x78,0xcc,0x0c,0x0c,0x38,0x0c,0x0c,0xcc,0x78,0x00,0x00,//'3'
0x00,0x0c,0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x0c,0x1e,0x00,0x00,//'4'
0x00,0xfc,0xc0,0xc0,0xc0,0xf8,0x0c,0x0c,0xcc,0x78,0x00,0x00,//'5'
0x00,0x38,0x60,0xc0,0xc0,0xf8,0xcc,0xcc,0xcc,0x78,0x00,0x00,//'6'
0x00,0xfe,0xc6,0xc6,0x06,0x0c,0x18,0x30,0x30,0x30,0x00,0x00,//'7'
0x00,0x78,0xcc,0xcc,0xec,0x78,0xdc,0xcc,0xcc,0x78,0x00,0x00,//'8'
0x00,0x78,0xcc,0xcc,0xcc,0x7c,0x18,0x18,0x30,0x70,0x00,0x00,//'9'
0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x00,0x00,//':
'
};
typedefstructtypFNT_GB16//汉字字模显示数据结构
{
charIndex[2];
charMsk[24];
};
structtypFNT_GB16codeGB_16[]={
"液",0x01,0x00,0x41,0x00,0x2F,0xF0,0x84,0x80,0x54,0xE0,0x29,0x20,
0x5A,0xA0,0xCD,0x40,0x49,0x40,0x48,0x80,0x49,0x40,0x4E,0x30,//"液1"
"晶",0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80,0x00,0x00,
0x7B,0xE0,0x4A,0x20,0x7B,0xE0,0x4A,0x20,0x7B,0xE0,0x00,0x00,//"晶1"
"屏",0x7F,0xE0,0x40,0x20,0x7F,0xE0,0x48,0x80,0x45,0x00,0x5F,0xE0,
0x44,0x80,0x7F,0xF0,0x44,0x80,0x44,0x80,0x48,0x80,0x90,0x80,//"屏1"
"显",0x00,0x40,0x3F,0xE0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x3F,0xC0,
0x49,0x00,0x29,0x20,0x29,0x40,0x29,0x80,0x09,0x20,0xFF,0xF0,//"显1"
"示",0x00,0x40,0x7F,0xE0,0x00,0x00,0x00,0x20,0xFF,0xF0,0x02,0x00,
0x12,0x80,0x12,0x40,0x22,0x20,0x42,0x10,0x8A,0x10,0x04,0x00,//"示1"
"当",0x04,0x00,0x44,0x40,0x24,0x80,0x04,0x00,0x7F,0xC0,0x00,0x40,
0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,//"当1"
"前",0x20,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7C,0x40,0x45,0x40,
0x7D,0x40,0x45,0x40,0x7D,0x40,0x45,0x40,0x44,0x40,0x4C,0xC0,//"前1"
"压",0x00,0x00,0x7F,0xE0,0x40,0x00,0x42,0x00,0x42,0x00,0x42,0x00,
0x5F,0xC0,0x42,0x00,0x42,0x80,0x42,0x40,0x42,0x00,0xBF,0xE0,//"压1"
"力",0x08,0x00,0x08,0x00,0xFF,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,
0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x83,0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 说明书 智能 压力 测量仪 讲解