標題:
遠程報警單片機程序
[打印本頁]
作者:
707548342
時間:
2019-5-17 15:26
標題:
遠程報警單片機程序
#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; //臨時暫存變量
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); //延時子程序
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); //開啟顯示,光標顯示,字符閃爍關閉
lcdsendc(0x02); //光標歸位
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);
}
//------------------延時子程序----------------------
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級延時函數(shù)*****************/
void delay2(unsigned int num)
{
while( --num ) ;
}
/***************ds18b20模塊********************/
Reset_DS18B20(void) //復位ds1820
{ DQ = 1 ; //DQ復位
delay2(8) ; //稍做延時
DQ = 0 ; //單片機將DQ拉低
delay2(90) ; //精確延時 大于 480us
DQ = 1 ; //拉高總線
delay2(8) ;
flag3 = DQ ; //如果=0則初始化成功 =1則初始化失敗
delay2(50) ;
DQ = 1 ;
return(flag3) ; //返回信號,0=presence,1= no presence
}
復制代碼
作者:
admin
時間:
2019-5-18 03:41
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1