压力传感器仿真程序Word文件下载.docx
- 文档编号:22778786
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:12
- 大小:16.58KB
压力传感器仿真程序Word文件下载.docx
《压力传感器仿真程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《压力传感器仿真程序Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
sbitAlarm_led_red=P1^5;
//超过压力表量程最大值红色led报警定义
sbitAlarm_led_green=P1^6;
//低于压力表量程最小值绿色led报警定义
//adc采样值存储单元
charpress_data;
//标度变换存储单元
unsignedcharad_alarm;
//报警值存储单元
unsignedcharpress_bai=0;
//显示值百位
unsignedcharpress_shi=0;
//显示值十位
unsignedcharpress_ge=0;
//显示值个位
unsignedcharpress_dot=0;
//显示值十分位
ucharcodestr0[]={"
Press:
.kpa"
};
ucharcodestr1[]={"
CheckBYJack"
voiddelay(uint);
voidlcd_wait(void);
voiddelay_LCM(uint);
//LCD延时子程序
voidinitLCM(void);
//LCD初始化子程序
//LCD检测忙子程序
voidWriteCommandLCM(ucharWCLCM,ucharBusyC);
//写指令到ICM子函数
voidWriteDataLCM(ucharWDLCM);
//写数据到LCM子函数
voidDisplayOneChar(ucharX,ucharY,ucharDData);
//显示指定坐标的一个字符子函数
voidDisplayListChar(ucharX,ucharY,ucharcode*DData);
//显示指定坐标的一串字符子函数
voiddisplay(void);
//系统显示子函数
ucharAdc0832(unsignedcharchannel);
voidalarm(void);
voiddata_pro(void);
/**********mainfuncation************/
voidmain(void)
{
delay(500);
//系统延时500ms启动
//ad_data=0;
//采样值存储单元初始化为0
initLCM();
WriteCommandLCM(0x01,1);
//清显示屏
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
while
(1)
{
ad_data=Adc0832(0);
alarm();
data_pro();
display();
}
}
/*********延时K*1ms,12.000mhz**********/
voiddelay(uintk)
{
uinti,j;
for(i=0;
i<
k;
i++)
for(j=0;
j<
60;
j++)
{;
}
/**********写指令到ICM子函数************/
voidWriteCommandLCM(ucharWCLCM,ucharBusyC)
if(BusyC)lcd_wait();
DATAPORT=WCLCM;
LCM_RS=0;
//选中指令寄存器
LCM_RW=0;
//写模式
LCM_EN=1;
_nop_();
LCM_EN=0;
/**********写数据到LCM子函数************/
voidWriteDataLCM(ucharWDLCM)
lcd_wait();
//检测忙信号
DATAPORT=WDLCM;
LCM_RS=1;
//选中数据寄存器
//写模式
/***********lcm内部等待函数*************/
voidlcd_wait(void)
DATAPORT=0xff;
//读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色
LCM_RW=1;
while(DATAPORT&
BUSY)
{LCM_EN=0;
}
LCM_EN=0;
/**********LCM初始化子函数***********/
voidinitLCM()
DATAPORT=0;
delay(15);
WriteCommandLCM(0x38,0);
//三次显示模式设置,不检测忙信号
delay(5);
WriteCommandLCM(0x38,1);
//8bit数据传送,2行显示,5*7字型,检测忙信号
WriteCommandLCM(0x08,1);
//关闭显示,检测忙信号
WriteCommandLCM(0x01,1);
//清屏,检测忙信号
WriteCommandLCM(0x06,1);
//显示光标右移设置,检测忙信号
WriteCommandLCM(0x0c,1);
//显示屏打开,光标不显示,不闪烁,检测忙信号
/****显示指定坐标的一个字符子函数****/
voidDisplayOneChar(ucharX,ucharY,ucharDData)
Y&
=1;
X&
=15;
if(Y)X|=0x40;
//若y为1(显示第二行),地址码+0X40
X|=0x80;
//指令码为地址码+0X80
WriteCommandLCM(X,0);
WriteDataLCM(DData);
/*******显示指定坐标的一串字符子函数*****/
voidDisplayListChar(ucharX,ucharY,ucharcode*DData)
ucharListLength=0;
=0x01;
=0x0f;
while(X<
16)
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;
X++;
/*****************系统显示子函数*****************/
voiddisplay(void)
WriteCommandLCM(0x0c,1);
//显示屏打开,光标不显示,不闪烁,检测忙信号
DisplayListChar(0,1,str1);
DisplayOneChar(7,0,press_bai+0x30);
DisplayOneChar(8,0,press_shi+0x30);
DisplayOneChar(9,0,press_ge+0x30);
DisplayOneChar(11,0,press_dot+0x30);
delay(1000);
//稳定显示
/************
读ADC0832函数
************/
//采集并返回
ucharAdc0832(unsignedcharchannel)//AD转换,返回结果
uchari=0;
ucharj;
uintdat=0;
ucharndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
ADCS=0;
//拉低CS端
ADCLK=1;
//拉高CLK端
ADCLK=0;
//拉低CLK端,形成下降沿1
ADDI=channel&
0x1;
//拉低CLK端,形成下降沿2
ADDI=(channel>
>
1)&
//拉低CLK端,形成下降沿3
//控制命令结束
dat=0;
8;
dat|=ADDO;
//收数据
//形成一次时钟脉冲
dat<
<
if(i==7)dat|=ADDO;
j=0;
j=j|ADDO;
j=j<
7;
ndat=ndat|j;
if(i<
7)ndat>
ADCS=1;
//拉低CLK端
ADDO=1;
//拉高数据端,回到初始状态
=8;
dat|=ndat;
return(dat);
//returnadk
voiddata_pro(void)
unsignedinttemp;
floatpress;
if(14<
ad_data<
243)//当压力值介于15kpa到115kpa之间时,遵循线性变换
{
intvary=ad_data;
//y=(115-15)/(243-13)*X+15kpa
press=((10.0/23.0)*vary)+9.3;
//测试时补偿值为9.3
temp=(int)(press*10);
//放大10倍,便于后面的计算
press_bai=temp/1000;
//取压力值百位
press_shi=(temp%1000)/100;
//取压力值十位
press_ge=((temp%1000)%100)/10;
//取压力值个位
press_dot=((temp%1000)%100)%10;
//取压力值十分位
}
/*****************报警子函数*******************/
voidalarm(void)
if(ad_data>
=243)//如果当前压力值大于115kpa,
{Alarm_led_red=0;
}//则启动报警
else
{Alarm_led_red=1;
}//关闭报警
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 压力传感器 仿真 程序