基于C8051F020车辆散热系统参数检测仪的设计(8)

2020-02-21 22:47

沈阳工业大学本科生毕业设计(论文)

Void SLA_SEND(char chip_select,char*wr_data,char number) {

SENDMODE=0x01; Totalnumber =number; Sendnumber=number; While(SM_BUSY); SM_BUSY=1; SMBOCN=0x44;

COMMAND=(chip_select|WRITE); STO=0; STA=1;

while(SM_BUSY); }

void Init18b20(void) {

SkipROMCode(); WriteDS18b20(0x44); }

void main(void) {

P26=1; tsound=0;

//关闭蜂鸣器

WDTCN=0xde;

WDTCN=0xad;

SystemInit();

void SYSCLK_Init(void); void PORT_Init(void); void Init18b20(void);

void uchar Adc0832(unsigned char channel) //获取压力参数

CH451_Init();

Temperture=Get_Tmp(); //读出当前温度 while(1) {

//测量压力、温度实时显示

if(flag) {

Display_Pres(Pressure);

Display_Temp(Temperature);

31

沈阳工业大学本科生毕业设计(论文)

}

//中断子程序 使用定时器中断T0// void Timer0_ISR() interrupt 1 {

TH0=Timer0_H; TL0=Timer0_L;

//定时器初值装载

static unsigned char counter=0; }

}

KeyControl(); if(Sendflag==1) { }

WarningControl();

//报警控制

//读出当前温度

Temperture=Get_Tmp(); Send(Send_Buf); Sendflag=0;

//键盘控制

DataChang(Pressure,Temperature); //串口通信,发送数据

counter++;

if(counter==50) { }

if(SensorFlag==0) { }

if(Warning_Flag==1) //报警服务程序 { }

P4=~P4; tsound=1; delay(20); tsound=0;

//发送触发信号

//至少延迟10us以上,保证超声波传感器被触发 //禁止触发信号,等待回波信号

//若测量标志清零,则触发下一次测量的触发信号

counter=0; Sendflag=1;

//串口通信,定时发送数据

SensorFlag=1;

32

沈阳工业大学本科生毕业设计(论文)

}

void Timer1_ISR(void)interrupt 3 //定时器1中断服务子程序 { }

void PCA0(void) interrupt 6 {

CCF1=0; csb=sound;

if(csb&&SensorFlag) { }

else if(Count_Flag) {

CR=0;

//停止计数,并取出计数值

stempl=CCAP1L; stemph=CCAP1H; CL=0; CH=0; CCAP1L=0x00; CCAP1H=0x00;

temp_l[SensorCounter] = Get_distance();

//若返回引脚为低,且测量标志位为高

CR=1;

//计数开始

Count_Flag=1;

//若返回引脚为高

//关模块1中断

else if(Warning_Flag==2) { } else { }

P4=1;

//防止结束时候是低电平

static char WFlag=0; WFlag++; if(WFlag==5) { }

P4=~P4; WFlag=0;

33

沈阳工业大学本科生毕业设计(论文)

}

void WarningControl_temp(void) { }

void WarningControl_pressure(void) {

if(pres>HIGH) //如果压力大于上限 {

if(pres>HIGH) //可以消除蜂鸣器非正常响 { }

Warning_Flag=1; //如果压力大于 HIGH,蜂鸣器报警

if(temp>HIGH) //如果温度大于上限 {

if(temp>HIGH) //可以消除蜂鸣器非正常响 { }

Warning_Flag=1; //如果温度大于 HIGH,蜂鸣器报警

}

SensorCounter++; { }

DistanceDataProcess(); SensorCounter=0;

//数据处理

//温度数据个数计数器自加

if(SensorCounter==60)

SensorFlag=0; Count_Flag=0;

}

else if(temp

Warning_Flag=0;

//其它情况蜂鸣器不报警

if(temp

Warning_Flag=2; //如果温度小于 LOW,蜂鸣器报警

}

34

沈阳工业大学本科生毕业设计(论文)

}

}

else if(pres

Warning_Flag=0;

//其它情况蜂鸣器不报警

if(pres

Warning_Flag=2; //如果压力小于 LOW,蜂鸣器报警

}

源代码二:MAX485串口通信部分

#include \

unsigned char Send_Buf[7]={'#',0x04,0,0,0,0,0x55}; //发送两个字节数据

void Send(unsigned char *S);

void DataChang(unsigned int Dis,unsigned int Tem); /*--------------------------------------------------*/ //函数名称:serial

//功能描述:串口接收中断服务 //入口参数:无 //返回值:无 void serial() interrupt 4 { }

/*--------------------------------------------------*/ //函数名称:Send

//功能描述:将串口发送数据缓冲区中所有数据发出 //入口参数:缓冲区地址 //返回值:无

void SendOneByte(uchar ch) // MAX485异步串行通信 {

ES = 0; TI = 0; SBUF=ch; while (TI == 0 ); TI= 0 ;

RI=0;

35


基于C8051F020车辆散热系统参数检测仪的设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:铁砂掌训练之痛

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: