基于单片机无线火灾检测与报警系统设计 - 图文(8)

2019-08-31 21:09

附录 B 源程序

#include #include #include #include #include #include #include typedef unsigned int uint; typedef unsigned char uchar; sbit lcden

= P2^0;

sbit lcdrs = P2^1; sbit dula = P2^6; sbit wela = P2^7; sbit DS=P2^2; sbit FM=P2^3;

uint temp; uchar flag1; uchar sum,led1,led2;

uchar code table3[]=\ uchar num;,a

uchar code table3[]=\ uchar Byte_num[]=\ uchar code Sms2_Pdu[]=\ sbit key=P3^7; sbit led=P1^1; sbit ST=P2^4; sbit ATE=P2^5; sbit EOC=P2^6; sbit EN=P2^7; sbit FM=P3^5; void delay(uint ms) {

uchar i; while(ms--) for(i=0;i<120;i++); }

void Print_Char(uchar ch) {

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

36

void Print_Str(uchar *str) {

while(*str!='\\0') {

Print_Char(*str++); } }

void Ini_UART(void) {

TMOD = 0x20; TH1 = 0xFD; TL1 = 0xFD; SCON = 0x50; REN=1; PCON = 0x00; TF1 = 1; TR1 = 1; ES=1; ET0=1; EA=1; }

void GSM_PDU() {

Print_Str(GMS); Print_Str(\ delay(1000);

Print_Str(SMS_PDU); Print_Str(\ ES=1; delay(1000); delay(1000); delay(1000); delay(1000); }

void GSM_PDU_SMS() {

Print_Str(SMS_send); Print_Str(Byte_num);

Print_Str(\ delay(900);

Print_Str(Sms2_Pdu); delay(500);

37

Print_Char(0x1A); ES=1; delay(5000); delay(5000); } void delay1(uint a ) { uint z,y; for(z=1;z>0;z--)

for(y=110;y>0;y--);

}

void delay(uint count) {

uint i; while(count) { i=200; while(i>0) i--; count--; } }

void write_com(uchar com)

{ lcdrs=0; P0=com;

delay1(5); lcden=1; delay1(5); lcden=0;

}

void write_data(uchar date)

{ lcdrs=1;

`

P0=date;

delay1(5); lcden=1;

delay1(5); lcden=0;

}

void dsreset(void) {

uint i;

// 初始化液 晶,写命令

// 初始化液 晶,写数据

// 50ns // send reset and initialization command 38

DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; }

bit tmpreadbit(void) // read a bit { uint i; bit dat;

DS=0;i++; DS=1;i++;i++; dat=DS; i=8;while(i>0)i--; return (dat); }

uchar tmpread(void) {

uchar i,j,dat; dat=0;

for(i=1;i<=8;i++) {

j=tmpreadbit();

dat=(j<<7)|(dat>>1); }

return(dat); }

void tmpwritebyte(uchar dat) { uint i; uchar j; bit testb; for(j=1;j<=8;j++) {

testb=dat&0x01; dat=dat>>1; if(testb)

{ DS=0; i++;i++;

// i++ for delay

// read a byte date

// 读出的数据最低位在最前面,这样刚好一个字节在DAT里

// write a byte to ds18b20

// write 1 39

DS=1;

i=8;while(i>0)i--; } else {

DS=0; // write 0 i=8;while(i>0)i--; DS=1; i++;i++; } } }

void tmpchange(void) //DS18B20 begin change {

dsreset(); delay(1);

tmpwritebyte(0xcc); // address all drivers on bus

tmpwritebyte(0x44); // initiates a single temperature conversion }

uint tmp() // get the temperature { float tt; uchar a,b; dsreset(); delay(1);

tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b;

temp<<=8; temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return temp; }

void deal() {

uchar temp1,flag1=0; if((temp1=tmp())>25.5)

40


基于单片机无线火灾检测与报警系统设计 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:船舶薄板焊接防变形技术

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

马上注册会员

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