[汇总]液体压力传感器C语言程序
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define BUSY 0x80 //常量定义
#define DATAPORT P0
//ADC0832的引脚
sbit ADCS =P3^5; //ADC0832 chip seclect sbit ADDI =P3^7; //ADC0832 k in sbit ADDO =P3^7; //ADC0832 k out sbit ADCLK =P3^6; //ADC0832 clock signal sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1;
sbit LCM_EN=P2^2;
uchar ad_data; //采样值存储
sbit Alarm_led_red =P1^5; //超过压力
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
量程最大值红色led报警定义
sbit Alarm_led_green=P1^6; //低于压力表量程最小值绿色led报警定义
//adc采样值存储单元 char press_data; //标度变换存储单元
unsigned char ad_alarm; //报警值存储单元
unsigned char press_bai=0; //显示值百位
unsigned char press_shi=0; //显示值十位
unsigned char press_ge=0; //显示值个位
unsigned char press_dot=0; //显示值十分位
uchar code str0[]={"Press: . kpa "};
uchar code str1[]={" Check BY Jack "};
void delay(uint);
void lcd_wait(void);
void delay_LCM(uint);
//LCD延时子程序
void initLCM( void);
//LCD初始化子程序
void lcd_wait(void);
//LCD检测忙子程序
void WriteCommandLCM(uchar WCLCM,uchar BusyC); //写指令到ICM子函数
void WriteDataLCM(uchar WDLCM); //写数据到LCM子函数
void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示指定坐标的一个字符子函数
void DisplayListChar(uchar X,uchar Y,uchar code *DData); //显示指定坐标的一串字符子函数
void display(void); //系统显示子函数
uchar Adc0832(unsigned char channel);
void alarm(void);
void data_pro(void);
/**********main funcation************/
void main(void)
{
delay(500); //系统延时500ms启动
initLCM( );
WriteCommandLCM(0x01,1); //清显示屏
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
while(1)
{
ad_data =Adc0832(0); //采样值存储单元初始化为0
alarm();
data_pro();
display();
}
}
/*********延时K*1ms,12.000mhz**********/
void delay(uint k) {
uint i,j;
for(i=0;i>1)&0x1;
_nop_();
_nop_();
,形成下降沿3 ADCLK=0;//拉低CLK端
ADDI=1;//控制命令结束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端,回到初始状态
dat<<=8;
dat|=ndat;
return(dat); //return ad k
}
void data_pro(void)
{
unsigned int temp;
float press;
if(14=243) //如果当前压力值大于115kpa,
{ Alarm_led_red=0; } //则启动red led报警
else
{ Alarm_led_red=1; } //关闭red led 报警
if(ad_data<=14) //如果当前压力值小于16kpa
{ Alarm_led_green=0; } //则启动green led报警
else
{ Alarm_led_green=1; } //关闭green led 报警
}
本程序是以51单片机的压力传感器处理的C语言程序,输入15~115kPA压力信号,输出00h~ffh数字信号(adc0832),在LCD上显示实际的压力值,如果超限则报警,线性区间标度变换公式:y=(115-15)/(243-13)*X+15kpa 。