|
- #include <reg51.h>
- #include <stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit P0_0=P0^0;
- uchar code dt[]="abc";
- uchar code at[] = "AT";
- uchar code cmgf[]="AT+CMGF=1";
- uchar code csca[]="AT+CSCA=+8613800595500";
- uchar code cmgs[]="AT+CMGS=15159753072";
- uchar code cnmi[]="AT+CNMI=1,1,2;"; //短信提醒
- uchar code cmgr[]="AT+CMGR=1"; //短消息讀取命令
- uchar code cmgd[]="AT+CMGD=1"; //刪除短信
- uchar code cn[6]="+CMTI";
- uchar code cm[4]="GSM";
- /*******************TC35變量定義**************/
- uchar i_TC35_RECE=0;
- uchar i_receive, TC35_MAX, flag, flag0,flag1=0;
- xdata uchar TC35_RE[90];
- uchar flag4;
- uchar tltemp; //臨時(shí)暫存變量
- uchar temp_value,temp1_value; //temp_value溫度值正數(shù)部分
- xdata uchar TempBuffer[6];
- /************************變量定義************************/
- uint num,T2=0,TMPL,TMPH,tem;
- uchar tab[5]=0,tab1[4],flag3,h,flag2,flag5,count;
- uchar code str[20]={"bi ye she ji"};
- uchar code str2[10]={"wen du"};
- uchar code str3[10]={"nong du:"};
- /************************引腳定義*************************/
- sbit lcdrs=P3^7; //4腳
- sbit lcdrw=P3^6; //5腳
- sbit lcde=P3^5; //6腳
- sbit clk=P3^2;
- sbit dataout=P3^3;
- sbit cs=P3^4;
- sbit DQ=P2^0;
- sbit la_ba=P0^0 ;
- /*********************LCD子函數(shù)定義*************************/
- void lcdinit(void); //lcd初始化
- void lcdsendc(uchar c); //發(fā)送lcd指令
- void lcdsendd(uchar c); //發(fā)送lcd數(shù)據(jù)
- void lcdbusy(void); //判斷忙狀態(tài)
- void delay1ms(uint time); //延時(shí)子程序
- void display(uchar c1,uchar *str);
- void delay1ms(uint time);
- void display_yanwu();
- /*****************采集電壓,讀取AD轉(zhuǎn)換結(jié)果********************/
- unsigned char get_val(void)
- {
- unsigned i;
- unsigned char T;
- cs=1;
- clk=0;
- cs=0;
- for(i=0;i<8;i++)
- {
- clk=1;
- T=T<<1;
- if(dataout==1)
- T=T+1;
- clk=0;}
- cs=1;
- return T;
- }
- /***********************煙霧濃度顯示*************************/
- void display_yanwu()
- { uchar shidu_qian,shidu_bai,shidu_shi,shidu_ge;
- T2=get_val();
- num=((float)T2/255)*5000;
- if(num>4000){flag5=1;}
- shidu_qian=0x30+num/1000;
- shidu_bai=0x30+num/100%10;
- shidu_shi=0x30+num/10%10;
- shidu_ge=0x30+num%10;
- tab[0]=shidu_qian; tab[1]=shidu_bai; tab[2]=shidu_shi; tab[3]=shidu_ge;
- display(0x88,tab);
- }
- //--------------lcd初始化程序-------------------
- void lcdinit()
- {
- lcdsendc(0x01); //清屏
- delay1ms(100);
- lcdsendc(0x3c); //8位 2行 5X10字符
- delay1ms(3);
- lcdsendc(0x0e); //開(kāi)啟顯示,光標(biāo)顯示,字符閃爍關(guān)閉
- lcdsendc(0x02); //光標(biāo)歸位
- delay1ms(2);
- }
- //----------------發(fā)送lcd命令---------------------
- void lcdsendc(uchar c)
- {
- P1=c;
- lcdrs=0;
- lcdrw=0;
- lcde=0;
- lcdbusy();
- lcde=1;
- if(c==1)
- delay1ms(2);
- }
- //-----------------發(fā)送數(shù)據(jù)----------------------
- void lcdsendd(uchar c)
- {
- P1=c;
- lcdrs=1;
- lcdrw=0;
- lcde=0;
- lcdbusy();
- lcde=1;
- }
- //------------------判斷忙狀態(tài)--------------------
- void lcdbusy()
- {
- P1=0xff;
- lcdrs=0;
- lcdrw=1;
- lcde=0;
- lcde=0;
- lcde=1;
- //delay1ms(1);
- while((P1&0x80)==1);
- }
- //------------------延時(shí)子程序----------------------
- void delay1ms(uint time)
- {
- uint i,j;
- for(i=0;i<time;i++)
- for(j=0;j<100;j++);
- }
- //-----------------顯示子程序---------------------------
- void display(uchar c1,uchar *str)
- { uchar a;
- a=c1 ;
- lcdsendc(a);
- while((*str)!= '\0')
- {
- lcdsendd(*str);
- delay1ms(3);
- str++;
- }
- }
- /***************us級(jí)延時(shí)函數(shù)*****************/
- void delay2(unsigned int num)
- {
- while( --num ) ;
- }
- /***************ds18b20模塊********************/
- Reset_DS18B20(void) //復(fù)位ds1820
- { DQ = 1 ; //DQ復(fù)位
- delay2(8) ; //稍做延時(shí)
- DQ = 0 ; //單片機(jī)將DQ拉低
- delay2(90) ; //精確延時(shí) 大于 480us
- DQ = 1 ; //拉高總線
- delay2(8) ;
- flag3 = DQ ; //如果=0則初始化成功 =1則初始化失敗
- delay2(50) ;
- DQ = 1 ;
- return(flag3) ; //返回信號(hào),0=presence,1= no presence
- }
復(fù)制代碼
|
|