欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于GPRS的環(huán)境實(shí)時(shí)遠(yuǎn)程監(jiān)測系統(tǒng)設(shè)計(jì)資料與源碼下載
[打印本頁]
作者:
偉超時(shí)代121
時(shí)間:
2018-1-15 19:32
標(biāo)題:
基于GPRS的環(huán)境實(shí)時(shí)遠(yuǎn)程監(jiān)測系統(tǒng)設(shè)計(jì)資料與源碼下載
分享一個基于GPRS網(wǎng)絡(luò)的遠(yuǎn)程氣體檢測系統(tǒng),用到了煙霧傳感器、0.96寸的oled
四、畢業(yè)論文﹙設(shè)計(jì)﹚的內(nèi)容要求:
隨著越來越多的場合向自動化無人職守邁進(jìn),尤其在安全、監(jiān)控等領(lǐng)域。為了進(jìn)一步降低成本,減少人力的投資,以及更集中、更方便的掌握現(xiàn)場情況,許多場合都采用了電子監(jiān)控設(shè)備。而這些電子設(shè)備的設(shè)計(jì)無疑涉及到這些領(lǐng)域的安全性,這就對監(jiān)控設(shè)備的成本,穩(wěn)定性,以及性能三方面都提出了更高的要求。
本設(shè)計(jì)主要是利用GPRS無線網(wǎng)絡(luò)實(shí)現(xiàn)環(huán)境的實(shí)時(shí)在線監(jiān)測。該系統(tǒng)由監(jiān)測端、通信網(wǎng)絡(luò)和監(jiān)測中心組成,監(jiān)測端由煙霧等傳感器、微處理器和控制電路部分組成,實(shí)現(xiàn)環(huán)境參數(shù)的實(shí)時(shí)測量和數(shù)據(jù)的處理。采通信網(wǎng)絡(luò)由GPRS無線發(fā)送模塊組成,將實(shí)時(shí)監(jiān)測到的數(shù)據(jù)發(fā)送到監(jiān)測中心。系統(tǒng)工作過程為:首先傳感器進(jìn)行環(huán)境監(jiān)測數(shù)據(jù)的采集,經(jīng)信號處理模塊處理后送到單片機(jī),經(jīng)過單片機(jī)串口送到GPRS模塊發(fā)射,經(jīng)GPRS通信網(wǎng)絡(luò)接入internet網(wǎng),將數(shù)據(jù)送到監(jiān)測中心。并對數(shù)據(jù)進(jìn)行實(shí)時(shí)處理
具體要求如下:
1 完成系統(tǒng)硬件和軟件設(shè)計(jì);
2利用GPRS網(wǎng)絡(luò)實(shí)現(xiàn)液位數(shù)據(jù)的實(shí)時(shí)遠(yuǎn)程傳輸和液位實(shí)時(shí)控制。
五、畢業(yè)論文﹙設(shè)計(jì)﹚應(yīng)收集資料及參考文獻(xiàn):
收集關(guān)于單片機(jī)應(yīng)用、GPRS在數(shù)據(jù)采集和遠(yuǎn)程監(jiān)控方面的專業(yè)資料,閱讀和學(xué)習(xí)下列參考文獻(xiàn):
[1] 陳蒙蒙.雨量水位監(jiān)測系統(tǒng)設(shè)計(jì)[D].杭州:杭州電子科技大學(xué),2013.
[2] 張廣馳.基于GPRS的水資源遠(yuǎn)程監(jiān)測系統(tǒng)研究[D].淮南:安徽理工大學(xué),2014.
[3] 胡勝利,萬晉軍.基于GPRS的地下水自動監(jiān)測系統(tǒng)設(shè)計(jì)[J].水利水電技術(shù).2011,4
[4] 湯新龍. GPRS數(shù)據(jù)通訊程序設(shè)計(jì)方法及應(yīng)用研究[D]. 蘇州: 蘇州大學(xué),2014.
[5] 潘驍 . 基于ZigBee與GPRS的無線倉儲環(huán)境參數(shù)監(jiān)測系統(tǒng)設(shè)計(jì) [D], 廣西師范大學(xué),2016
六、畢業(yè)論文﹙設(shè)計(jì)﹚的進(jìn)度安排:
1月10日——3月20日:查閱資料,完成外文翻譯原文和開題報(bào)告。
3月21日——4月20日:完成系統(tǒng)監(jiān)測終端的設(shè)計(jì)并提交中期檢查報(bào)告。
4月21日——5月20日:完成環(huán)境監(jiān)測參數(shù)的遠(yuǎn)程傳輸設(shè)計(jì),準(zhǔn)備作品驗(yàn)收。
5月21日——6月15日:撰寫、修改畢業(yè)設(shè)計(jì)論文,準(zhǔn)備并完成答辯。
接線說明:
STC89C52RC ADC0832
P3.5 ----------------------- 1
P3.4 ----------------------- 5
P3.3 ----------------------- 7
VCC ----------------------- 8
GND ----------------------- 4
OLED
P1.0 --------------------- CLK
P1.1 -------------------- SDA
DHT11
P2.0 -------------------- DATA
MQ7 A0------------------ ADC0832 2管腳
單片機(jī)源程序如下:
/*************************************************************/
#include <REG51.H>
#include <string.H>
#include <intrins.h>
#include <oled.h>
#include "bmp.h"
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 無符號8位整型變量 */
typedef signed char S8; /* defined for signed 8-bits integer variable 有符號8位整型變量 */
typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 無符號16位整型變量 */
typedef signed int S16; /* defined for signed 16-bits integer variable 有符號16位整型變量 */
typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 無符號32位整型變量 */
typedef signed long S32; /* defined for signed 32-bits integer variable 有符號32位整型變量 */
typedef float F32; /* single precision floating point variable (32bits) 單精度浮點(diǎn)數(shù)(32位長度) */
typedef double F64; /* double precision floating point variable (64bits) 雙精度浮點(diǎn)數(shù)(64位長度) */
#define FOSC_110592M
sbit P13=P1^3;
sbit p32=P3^2;
sbit P2_0 = P2^0 ;
/*********************************端口定義**********************************/
sbit CS = P3^5; //接adc0832 1口
sbit Clk = P3^3;
sbit DATI = P3^4;
sbit DATO = P3^4;
sbit P20=P2^0 ;
/*******************************定義全局變量********************************/
unsigned char dat = 0x00; //AD值
unsigned char CH; //通道變量
//以下是開機(jī)后發(fā)送到手機(jī)的內(nèi)容,發(fā)送的號碼在程序中修改。
unsigned int rec_data_len_uart=0; //標(biāo)記Buffer_Uart0接收數(shù)組
unsigned char idata Buffer_Uart0_Rec[25]={0}; //Uart0中斷接收數(shù)組
char fasong[25] = "wen du:";
int fasong1[];
int a = 37;
//----------------------------------------------//
//----------------定義區(qū)--------------------//
//----------------------------------------------//
U8 U8FLAG,U8comdata,U8temp;
U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
void Delay(U16 j)
{ U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delay_10us(void)
{
U8 i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void COM(void)
{
U8 i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!P2_0)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(P2_0)U8temp=1;
U8FLAG=2;
while((P2_0)&&U8FLAG++);
//超時(shí)則跳出for循環(huán)
if(U8FLAG==1)break;
//判斷數(shù)據(jù)位是0還是1
U8comdata<<=1;
U8comdata|=U8temp; //0
}
}
//--------------------------------
//-----濕度讀取子程序 ------------
//--------------------------------
//----以下變量均為全局變量--------
//----溫度高8位== U8T_data_H------
//----溫度低8位== U8T_data_L------
//----濕度高8位== U8RH_data_H-----
//----濕度低8位== U8RH_data_L-----
//----校驗(yàn) 8位 == U8checkdata-----
//----調(diào)用相關(guān)子程序如下----------
//--------------------------------
void RH(void)
{
//主機(jī)拉低18ms
P2_0=0;
Delay(180);
P2_0=1;
//總線由上拉電阻拉高 主機(jī)延時(shí)20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主機(jī)設(shè)為輸入 判斷從機(jī)響應(yīng)信號
P2_0=1;
//判斷從機(jī)是否有低電平響應(yīng)信號 如不響應(yīng)則跳出,響應(yīng)則向下運(yùn)行
if(!P2_0) //T !
{
U8FLAG=2;
//判斷從機(jī)是否發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束
while((!P2_0)&&U8FLAG++);
U8FLAG=2;
//判斷從機(jī)是否發(fā)出 80us 的高電平,如發(fā)出則進(jìn)入數(shù)據(jù)接收狀態(tài)
while((P2_0)&&U8FLAG++);
//數(shù)據(jù)接收狀態(tài)
COM();
U8RH_data_H_temp=U8comdata;
COM();
U8RH_data_L_temp=U8comdata;
COM();
U8T_data_H_temp=U8comdata;
COM();
U8T_data_L_temp=U8comdata;
COM();
U8checkdata_temp=U8comdata;
P2_0=1;
//數(shù)據(jù)校驗(yàn)
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
if(U8RH_data_H>20)
{
U8RH_data_H = 0.6* U8RH_data_H;
}
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}//fi
}//fi
}
/****************************************************************************
函數(shù)功能:AD轉(zhuǎn)換子程序
入口參數(shù):CH 出口參數(shù):dat
****************************************************************************/
unsigned char adc0832(unsigned char CH)
{
unsigned char i,test,adval;
adval = 0x00;
test = 0x00;
Clk = 0; //初始化
DATI = 1;
_nop_();
CS = 0;
_nop_();
Clk = 1;
_nop_();
if ( CH == 0x00 ) //通道選擇
{
Clk = 0;
DATI = 1; //通道0的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 0; //通道0的第二位
_nop_();
Clk = 1;
_nop_();
}
else
{
Clk = 0;
DATI = 1; //通道1的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 1; //通道1的第二位
_nop_();
Clk = 1;
_nop_();
}
Clk = 0;
DATI = 1;
for( i = 0;i < 8;i++ ) //讀取前8位的值
{
_nop_();
adval <<= 1;
Clk = 1;
_nop_();
Clk = 0;
if (DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //讀取后8位的值
{
test >>= 1;
if (DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
Clk = 1;
_nop_();
Clk = 0;
}
if (adval == test) //比較前8位與后8位的值,如果不相同舍去。若一直出現(xiàn)顯示為零,請將該行去掉
dat = test;
_nop_();
CS = 1; //釋放ADC0832
DATO = 1;
Clk = 1;
return dat;
}
/***************************顯示處理函數(shù)********************************/
//注意,無論接收到信號還是發(fā)送完信號,都會進(jìn)中斷服務(wù)程序的
/************************************按鍵作為外部中斷的初始化*******************************************/
void key_init(void)
{
IT0 = 1; //外部中斷0,使用端口P3.2.
EX0 = 1;
}
/*初始化程序(必須使用,否則無法收發(fā)),次程序?qū)褂枚〞r(shí)器1*/
void SerialInti()//初始化程序(必須使用,否則無法收發(fā))
{
TMOD=0x20;//定時(shí)器1操作模式2:8位自動重載定時(shí)器
#ifdef FOSC_12M //在這里根據(jù)晶振大小設(shè)置不同的數(shù)值初始化串口
TH1=0xf3;//裝入初值,波特率2400
TL1=0xf3;
#else
TH1=0xfd;//裝入初值,波特率9600
TL1=0xfd;
#endif //end of SOC_12M
TR1=1;//打開定時(shí)器
SM0=0;//設(shè)置串行通訊工作模式,(10為一部發(fā)送,波特率可變,由定時(shí)器1的溢出率控制)
SM1=1;//(同上)在此模式下,定時(shí)器溢出一次就發(fā)送一個位的數(shù)據(jù)
REN=1;//串行接收允許位(要先設(shè)置sm0sm1再開串行允許)
EA=1;//開總中斷
ES=1;//開串行口中斷
}
unsigned char hand(unsigned char *data_source,unsigned char *ptr)
{
if(strstr(data_source,ptr)!=NULL)
return 1;
else
return 0;
}
void clear_rec_data()
{
uchar i,temp_len;
temp_len=strlen(Buffer_Uart0_Rec);
if(temp_len>25)
{
temp_len=25;
}
for(i=0;i<temp_len;i++)
{
Buffer_Uart0_Rec[i]='\0';
}
rec_data_len_uart=0;
}
/*串行通訊中斷,收發(fā)完成將進(jìn)入該中斷*/
void Serial_interrupt() interrupt 4
{
unsigned char temp_rec_data_uart0;
temp_rec_data_uart0 = SBUF;//讀取接收數(shù)據(jù)
RI=0;//接收中斷信號清零,表示將繼續(xù)接收
Buffer_Uart0_Rec[rec_data_len_uart]=temp_rec_data_uart0; //接收數(shù)據(jù)
rec_data_len_uart++;
if(rec_data_len_uart>24)
{
rec_data_len_uart=0; //從頭開始接收數(shù)據(jù)
}
}
void Uart1Send(uchar c)
{
SBUF=c;
while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)
TI=0;
}
//串行口連續(xù)發(fā)送char型數(shù)組,遇到終止號/0將停止
void Uart1Sends(uchar *str)
{
while(*str!='\0')
{
SBUF=*str;
while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)
TI=0;
str++;
}
}
void chuli(int c)
{
char bai,shi,ge;
bai =((char) c/100)+48;
shi =((char) c%100/10)+48;
ge =((char) c%10)+48;
Uart1Send(bai);
Uart1Send(shi);
Uart1Send(ge);
//Uart1Send(ge);
}
//延時(shí)函數(shù)大概是1s鐘,不過延時(shí)大的話不準(zhǔn)...
void DelaySec(int sec)
{
uint i , j= 0;
for(i=0; i<sec; i++)
{
for(j=0; j<65535; j++)
{
}
}
}
void main()
{
uchar i = 0;
int j;
u8 t;
CH = 0x00; //在這里選擇通道 0x00或0x01
P1 = 0XFF;
key_init();
SerialInti();
OLED_Init(); //初始化OLED
OLED_Clear();
P13=0;
while(1)
{
RH();
dat = adc0832(CH);
OLED_ShowString(18,3,"CO",72);
OLED_ShowCHinese(36,2,4); //濃
OLED_ShowCHinese(54,2,5); //度
OLED_ShowNum(78,2,dat,3,16);//顯示ASCII字符的碼值
OLED_ShowCHinese(18,4,0); //溫
OLED_ShowCHinese(36,4,1); //度
OLED_ShowCHinese(54,4,6); //為
OLED_ShowNum(72,4,U8RH_data_H,4,16);//顯示ASCII字符的碼值
OLED_ShowCHinese(18,6,3); //濕
OLED_ShowCHinese(36,6,1); //度
OLED_ShowCHinese(54,6,6); //為
OLED_ShowNum(72,6,U8T_data_H,4,16);//顯示ASCII字符的碼值
}
}
void getkey() interrupt 0
{
Delay_1ms(20);
if(p32==0) //軟件消抖
{
P13=1;
Uart1Sends("AT+CSCS=\"GSM\"\r\n");
DelaySec(1);//延時(shí)大約3秒
Uart1Sends("AT+CMGF=1\r\n");
DelaySec(1);//延時(shí)3秒
Uart1Sends("AT+CSCA?\r\n");
DelaySec(1);//延時(shí)3秒
Uart1Sends("AT+CSMP=17,167,0,241\r\n");
DelaySec(1);//延時(shí)3秒
Uart1Sends("AT+CMGS=\"13772830544\"\r\n");//此處修改為對方的電話號
DelaySec(1);//延時(shí)3秒
//fasong[20] = 2;
Uart1Sends("CO concentration: ");//修改短信內(nèi)容,短信內(nèi)容可為英文和數(shù)字
chuli(dat); //顯示一氧化碳濃度
Uart1Sends("\nThe current hemperature is: ");//修改短信內(nèi)容,短信內(nèi)容可為英文和數(shù)字
chuli(U8RH_data_H); //顯示一氧化碳濃度
Uart1Sends("\nThe current humidity is: ");//修改短信內(nèi)容,短信內(nèi)容可為英文和數(shù)字
chuli(U8T_data_H); //顯示一氧化碳濃度
Uart1Send(0x1a);
P13=0;
}
}
復(fù)制代碼
0.jpg
(35.43 KB, 下載次數(shù): 32)
下載附件
2018-1-16 01:09 上傳
所有資料51hei提供下載:
學(xué)長畢業(yè)設(shè)計(jì)GPRS.rar
(5.94 MB, 下載次數(shù): 55)
2018-1-15 19:31 上傳
點(diǎn)擊文件名下載附件
GPRS煙霧檢測
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1