气腔压力监测系统设计文档格式.docx
《气腔压力监测系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《气腔压力监测系统设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
(2)设计硬件电路,画出PCB图。
(3)编写采集和显示程序。
(4)写出设计说明书。
3.设计工作任务及工作量的要求(包括课程设计计算说明书、图纸、实物样品等):
(1)查阅资料,确定设计方案
(2)选择器件,设计硬件电路,并画出原理图和PCB图
(3)画出流程图,编写控制程序
(4)撰写课程设计说明书
课程设计任务书
4.主要参考文献:
1《单片机原理及接口技术》李朝青著
2《51单片机C程序应用》孙焕铭赵会成王金著
3.《单片机原理与应用技术.》董少明著
4.《.单片机原理及接口技术》徐煜明,韩雁著
5《.单片机课程设计指导》杨居义著
6.《单片机原理及其接口技术》胡汉才著
5.设计成果形式及要求:
课程设计说明书1份
原理图和PCB图各1份
程序清单1份
6.工作计划及进度:
起迄日期
工作内容
12年6月11日~6月12日
6月12日~6月13日
6月13日~6月14日
6月14日~6月15日
6月16日~6月17日
查阅资料,确定设计方案
设计硬件电路
画出流程图,编写控制程序
撰写课程设计说明书
课程设计答辩
系主任审查意见:
签字:
年月日
1.1方案论证
1.1.1腔体压力监测系统的基本工作原理
本方案采用的压力传感器的芯片选用89c51低功耗8位MCU,压力传感器选用MPX4250,显示采用的是LCD1602,设计框图如图1.1所示。
图1.1原理方框图
1.2系统硬件电路设计
1.2.1单片机控制模块
图1.289c51管脚图
1.2.2传感器电路
采样端对数据进行的处理
压力传感器MPX4250件检测的压力送给ADC0832,装换位数字量,再送给单片机89C51。
1.23LED显示
1602LCD分为带背光和不带背光两种,带背光的比不带背光的厚,是否带背光在应用中并无差别,本设计采用的是不带背光的LCD。
管脚如图1.4所示:
图1.41602LCD管脚图
1.1602LCD主要技术参数
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2.2所示:
表2.21602LCD引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
引脚接口说明:
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
1602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如表2.3所示:
表2.31062指令及时序表
序号
指令
清显示
光标返回
*
置输入模式
I/D
S
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
置数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM)
要写的数据内容
从CGRAM或DDRAM读数
读出的数据内容
2.1采样端的软件设计
图2.1采样端软件流程图
图2.2LCD显示流程图
3.PROTEUS仿真
4.转换显示程序
#ifndef__AD0832_H__
#define__AD0832_H__
#defineucharunsignedchar
#defineuintunsignedint
sbitCS=P1^0;
sbitCLK=P1^1;
sbitDI=P1^2;
sbitDO=P1^2;
//ucharresult();
#endif
#ifndef__1602_H__
#define__1602_H__
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
voidlcdinit();
//初始化
voidwrite_com(ucharcom);
//写命令
voidwrite_dat(uchardat);
//写入byte
voidshowstr(ucharadd,ucharline,uchar*s);
//写字符
voidshowchar(ucharadd,ucharline,ucharp);
//写字节
//voidbf_check();
//忙标志检测
voiddelayms(uinttime);
//内部延时
#include<
reg52.h>
#include"
1602.h"
voiddelayms(uinttime)
{
uintx,y;
for(x=time;
x>
0;
x--)
for(y=112;
y>
y--);
}
/*voidbf_check(void)//忙标志检测
P0=0xff;
RW=0;
RS=1;
E=1;
delayms(10);
while((P0&
0x80)==0x80);
E=0;
}*/
voidwrite_com(ucharcom)//写命令
delayms(5);
//bf_check();
RS=0;
P0=com;
voidwrite_dat(uchardat)//写一个byte
P0=dat;
voidshowstr(ucharadd,ucharline,uchar*s)//写字符
delayms(5);
if(line==0)
write_com(add+0x80);
else
write_com(add+0xc0);
while(*s)
{
write_dat(*s);
s++;
}
voidshowchar(ucharadd,ucharline,ucharp)//写字节
write_dat(p);
voidlcdinit()//初始化
{
write_com(0x38);
write_com(0x01);
write_com(0x0c);
reg52.h"
AD0832.h"
intrins.h"
ucharbuf[3]={0};
ucharresult(ucharcon_word)
uchari,dat1=0;
CS=0;
for(i=0;
i<
4;
i++)
{
con_word<
<
=1;
CLK=1;
_nop_();
_nop_();
if(con_word&
0x80)DI=1;
elseDI=0;
CLK=0;
for(i=0;
8;
{
dat1<
CLK=1;
if(DO==1)
dat1|=0x01;
CLK=0;
CS=1;
returndat1;
}
voidmain()
//uchari;
uintd;
lcdinit();
while
(1)
{
d=result(0x0d)*500.0/2