压力传感器仿真程序
{
delay(500);//系统延时500ms启动
//ﻩad_data=0;//采样值存储单元初始化为0
initLCM( );
WriteCommandLCM(0x01,1);ﻩ //清显示屏
DisplayListChar(0,0,str0);
ﻩDisplayListChar(0,1,str1);
ﻩwhile(1)
voidinitLCM( )
{
DATAPORT=0;ﻩ
delay(15);
ﻩWriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号
delay(5);
WriteCommandLCM(0x38,0);
delay(5);
WriteCommandLCM(0x38,0);
dБайду номын сангаасlay(5);
sbitAlarm_led_green=P1^6;//低于压力表量程最小值绿色led报警定义
//adc采样值存储单元
char press_data;//标度变换存储单元
unsignedcharad_alarm;//报警值存储单元
unsigned charpress_bai=0;//显示值百位
unsignedcharpress_shi=0;//显示值十位
void delay_LCM(uint);ﻩﻩﻩﻩﻩ//LCD延时子程序
voidinitLCM(void);ﻩﻩﻩﻩﻩﻩ//LCD初始化子程序
voidlcd_wait(void);ﻩﻩﻩﻩﻩﻩﻩﻩ//LCD检测忙子程序
voidWriteCommandLCM(uchar WCLCM,uchar BusyC);//写指令到ICM子函数
void WriteDataLCM(uchar WDLCM);//写数据到LCM子函数
void DisplayOneChar(uchar X,ucharY,ucharDData);//显示指定坐标的一个字符子函数
voidDisplayListChar(uchar X,ucharY,ucharcode*DData);//显示指定坐标的一串字符子函数
LCM_RW=0;ﻩ//写模式ﻩ
LCM_EN=1;
ﻩ_nop_();
_nop_();
ﻩ_nop_();
LCM_EN=0;
}
/**********写数据到LCM子函数************/
void WriteDataLCM(ucharWDLCM)
{
lcd_wait( );//检测忙信号
ﻩDATAPORT=WDLCM;
unsignedcharpress_ge=0;//显示值个位
unsignedcharpress_dot=0;//显示值十分位
uchar codestr0[]={"Press:.kpa "};
ucharcode str1[]={"CheckBYJack "};
voiddelay(uint);
void lcd_wait(void);
LCM_RS=1;//选中数据寄存器
LCM_RW=0;ﻩ//写模式
LCM_EN=1;
_nop_();
ﻩ_nop_();
_nop_();
LCM_EN=0;
}
/***********lcm内部等待函数*************/
void lcd_wait(void)
{
DATAPORT=0xff;ﻩ//读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色
ﻩLCM_EN=1;
LCM_RS=0;
LCM_RW=1;
_nop_();
_nop_();
_nop_();
while(DATAPORT&BUSY)
ﻩ{ LCM_EN=0;
_nop_();
ﻩ_nop_();
ﻩLCM_EN=1;
ﻩ_nop_();
ﻩ_nop_();
ﻩ }
ﻩLCM_EN=0;
ﻩ
}
/**********LCM初始化子函数***********/
WriteCommandLCM(0x38,1);//8bit数据传送,2行显示,5*7字型,检测忙信号
{
ad_data=Adc0832(0);ﻩ//采样值存储单元初始化为0
ﻩ
ﻩalarm();
ﻩ
ﻩdata_pro();
ﻩﻩdisplay();
ﻩﻩ
}
}
/*********延时K*1ms,12.000mhz**********/
voiddelay(uint k)
{
uinti,j;
for(i=0;i<k;i++)
{
for(j=0;j<60;j++)
ﻩ{;}
}
}
/**********写指令到ICM子函数************/
void WriteCommandLCM(ucharWCLCM,uchar BusyC)
{
if(BusyC)lcd_wait();
DATAPORT=WCLCM;
LCM_RS=0;//选中指令寄存器
voiddisplay(void);//系统显示子函数
ucharAdc0832(unsigned charchannel);ﻩﻩﻩﻩﻩﻩ
voidalarm(void);
void data_pro(void);
/**********mainfuncation************/
voidmain(void)
#defineuchar unsigned char
#defineuintunsignedint
#define BUSY 0x80//常量定义
#define DATAPORTP0
//ADC0832的引脚
sbitADCS=P3^5; //ADC0832 chip seclect
sbit ADDI=P3^7; //ADC0832kin
sbitADDO =P3^7;//ADC0832kout
sbit ADCLK=P3^6;//ADC0832clocksignal
sbit LCM_RS=P2^0;
sbitLCM_RW=P2^1;
sbit LCM_EN=P2^2;
ucharad_data;//采样值存储
sbit Alarm_led_red =P1^5;//超过压力表量程最大值红色led报警定义
压力传感器仿真程序
———————————————————————————————— 作者:
———————————————————————————————— 日期:
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#include<math.h>