該項目并不完美,如果要做這個項目的朋友,有此項目幫助相信會容易很多。
在此說明一下該GSM發送短信的方式,這里采用的是PDU模式,但不是直接發送PDU短信,而是先把要發送的短信存到SIM卡上,再從SIM卡上轉發出去。如果要直接發送,只要再代碼內改一下相應的AT指令即可。
另外,PCB上與實際電路有點不符,因為當時做出板來后,焊上元件,但是還是有小小的問題,所以在硬件上調好后,就沒有把PCB上的也改了。放心,原理圖上是正確滴。
沐雨青林在此多謝各位的支持。
若需要該項目的相關芯片資料或者GSM實際調試返回指令的可以聯系俺。對此有疑問的也可以問俺。
沐雨青林原創
基于AT89S52單片機的安防系統設計論文
指導老師: 譚雄樂
開發人員: 林國友 徐健俊 任務分配:林國友(編寫程序、硬件測試、硬件焊接、程序調試)。 徐健。ó婸CB電路)。
- 功能介紹
通過AT89S52單片機主控,掃描檢測紅外、煙霧、煤氣等傳感器信號達到監控家里情況的效果。當信號發生時,S52單片機就會通過串口通信連接GSM模塊向預先設定好的手機號碼發送相應的警報情況。此時,單片機控制的外圍電路會發生警報聲,同時亮燈。只有當單片機接收到目標號碼發送過來的控制短信后,才會關閉警報和指示燈。(由于本人勢單力薄,所以程序的功能并不完善。在控制方面沒有用定時控制警報發生后每隔一段時間發送短信到目標號碼,直到接收到相應的控制短信才停止。同時在解除警報后也沒有再發送短信到目標號碼以示情況。)
警報發生:紅外警報→發送“紅外警報”短信 燃氣警報→發送“燃氣警報”短信 煙霧警報→發送“煙霧警報”短信 收到短信:“家里情況”→發送短信“一切正!保o警報時) “關閉紅外”→關閉紅外警報,關閉蜂鳴器,關紅外指示燈 “關閉燃氣”→關閉燃氣警報,關閉蜂鳴器,關燃氣指示燈 “關閉煙霧”→關閉煙霧警報,關閉蜂鳴器,關煙霧指示燈 “關閉所有”→關所有警報,關蜂鳴器,關警報指示燈,開正常指示燈 實物圖: 硬件接線圖請參考:AT89S52單片機的安防系統硬件接線圖.doc
1.004.jpg (40.97 KB, 下載次數: 78)
下載附件
2016-10-11 15:49 上傳
1.001.jpg (4.19 KB, 下載次數: 93)
下載附件
2016-10-11 15:49 上傳
1.002.jpg (3.22 KB, 下載次數: 85)
下載附件
2016-10-11 15:49 上傳
1.003.jpg (4.44 KB, 下載次數: 87)
下載附件
2016-10-11 15:49 上傳
1.005.jpg (40.97 KB, 下載次數: 81)
下載附件
2016-10-11 15:49 上傳
1.006.jpg (99.32 KB, 下載次數: 85)
下載附件
2016-10-11 15:49 上傳
2、 鍵盤中斷流程圖
1.007.jpg (64.2 KB, 下載次數: 85)
下載附件
2016-10-11 15:49 上傳
原理圖:
1.008.jpg (47.73 KB, 下載次數: 104)
下載附件
2016-10-11 15:49 上傳
AT89S52外圍I/O接口: P1.0~P1.7為矩陣鍵盤輸入,P1.0~P1.3為行,P1.4~P1.7為列。 P0.3為蜂鳴器(低電平有效),P0.4~P0.7為LED指示燈(低電平有效) P2.0~P2.2為安防信號掃描入口P2.1、P2.2、P2.0(高電平有效) P2.0接紅外探測器,P2.1接燃氣探測器,P2.2接煙霧探測器 P3.0、P3.1用作串口接收發送,P3.2用作鍵盤外部中斷輸入,P3.6、 P3.7分別接24C02的SCL和SDA RST按鍵復位,XTAL1、XTAL2接12M晶振 P0.0、P2.4~P2.7用作NOKIA5110顯示屏。 PCB(硬件在調試時有更改,但相差不大):
1.009.jpg (111.33 KB, 下載次數: 84)
下載附件
2016-10-11 15:49 上傳
主函數代碼: - /****************************************************************
- ****************************************************************
- **** main.c 主函數 *****
- **** *****
- **** 本程序都是采用PDU格式 *****
- ****************************************************************
- ****************************************************************/
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- extern bit scan_Security();//安全監控掃描
- //警報掃描初始化 初始化所有檢測電平,等待警報電平進入
- extern void init_security();
-
- extern uchar idata phonenum[15];//存放要發送對象的號碼
- extern uchar Nindex[];//存放發送到SIM卡中短信返回的index
- extern void test_code(uchar n_delay,uchar n_wait);/*測試函數*/
- void init_pho_msg();//號碼和短信初始化
- void main()
- {
-
- lcd_disp0();
- I2C_Init();//I2C總線初始化
- P0_4=0;//
- LCD_clear();//清屏
- LCD_write_String(8,4,"GSM");
- disp16_16(2,2,16);//安
- disp16_16(4,2,17);//防
- disp16_16(6,2,18);//系
- disp16_16(8,2,19);//統
- delayms_100ms();
- init_interrupt(); //外部中斷0初始化 鍵盤
- init_security(); //警報掃描初始化
- P0_4=1;//
- P0_5=0;//
- LCD_clear();//清屏
- disp16_16(0,0,29);//指
- disp16_16(2,0,30);//導
- disp16_16(4,0,31);//老
- disp16_16(6,0,32);//師
- LCD_write_char(':');
- disp16_16(2,2,33);//譚
- disp16_16(4,2,34);//雄
- disp16_16(6,2,35);//樂
- init_uart(); //初始化串口
- while(!connect_gsm()); //發送聯機指令
- test_code(1,0);//
- P0_5=1;//
- P0_6=0;//
- LCD_clear();//清屏
- disp16_16(0,0,20);//制
- disp16_16(2,0,21);//作
- disp16_16(4,0,22);//人
- LCD_write_char(':');
- init_gsm(); //禁止回顯,設置為pdu模式
-
- P0_6=1;//
- P0_7=0;//
- // LCD_clear();//清屏
- disp16_16(2,2,23);//林
- disp16_16(4,2,24);//國
- disp16_16(6,2,25);//友
-
- disp16_16(2,4,26);//徐
- disp16_16(4,4,27);//健
- disp16_16(6,4,28);//俊
- while(!connect_gsmnet()); //獲取網絡注冊情況
- init_sim(); //不接受廣播短信
- test_code(5,0);//響鈴500ms提示初始化成功
- init_pho_msg();//號碼和短信初始化
- P0_7=1;//
-
- test_code(1,0);//響鈴100ms提示進入系統監控狀態
- while(1)
- {
- scan_Security();//安全監控掃描
- key_out();//鍵盤處理跳出
- Chk_Read_Do();//檢測讀取新短信執行控制命令
- }
-
- }
- //號碼和短信初始化
- void init_pho_msg()
- {
- uchar i,n_addr=0x0;
- //讀取目標號碼到phonenum
- for(i=0,n_addr=0x0;i<13;i++)
- I2C_On(I2C_SrRECV, 0xA0, n_addr++, &phonenum[i], 1);//讀n_addr地址內容到phonenum
- phonenum[13] = '';
- if(phonenum[12]<0 && phonenum[12]>9)
- {
- strcpy(phonenum,"8618998361948");//設定初始號碼
- for(i=0,n_addr=0x0;i<14;i++)
- {
- I2C_On(I2C_SEND, 0xA0, n_addr++, &phonenum[i], 1);//寫phonenum內容到n_addr地址
- delayms_10ms();
- }
- phonenum[13] = '';
- while( !init_Send_sms_sim(phonenum) ); //初始化將所有要發送的短信寫到SIM卡
- }
- LCD_clear();//清屏
- LCD_write_String(0,0,"Read Phone number");
- LCD_write_String(0,2,phonenum);
-
- delayms_1000ms();
- }
復制代碼
AT89S52單片機的安防系統硬件接線說明 紅外:藍(信號負輸入)青(信號正輸入)黑(9V電源負)紅(9V電源正) 燃氣:藍(信號負輸入)青(信號正輸入)黑(9V電源負)紅(9V電源正) 煙霧:藍(信號負輸入)青(信號正輸入)黑(9V電源負)紅(9V電源正) 具體接線請看圖上注解
1.005.jpg (40.97 KB, 下載次數: 92)
下載附件
2016-10-11 15:40 上傳
1.012.jpg (42.91 KB, 下載次數: 88)
下載附件
2016-10-11 15:40 上傳
注意:燃氣和紅外的藍色線不需要接上
1.018.jpg (40.67 KB, 下載次數: 87)
下載附件
2016-10-11 15:40 上傳
1.019.jpg (39.28 KB, 下載次數: 80)
下載附件
2016-10-11 15:40 上傳
1.020.jpg (39.13 KB, 下載次數: 93)
下載附件
2016-10-11 15:40 上傳
1.021.jpg (36.47 KB, 下載次數: 103)
下載附件
2016-10-11 15:40 上傳
1.022.jpg (33.69 KB, 下載次數: 81)
下載附件
2016-10-11 15:40 上傳
1.023.jpg (37.1 KB, 下載次數: 82)
下載附件
2016-10-11 15:40 上傳
1.024.jpg (34.68 KB, 下載次數: 79)
下載附件
2016-10-11 15:40 上傳
1.025.jpg (40.97 KB, 下載次數: 72)
下載附件
2016-10-11 15:40 上傳
1.026.jpg (39.71 KB, 下載次數: 91)
下載附件
2016-10-11 15:40 上傳
元件清單: 芯片:AT89S52、MAX232、TLP521-4光耦。 傳感器:紅外、煙霧、燃氣
按鍵 17個 串口(針) 1個 AT89S52 底座 1個 16針底座 2個 DC直插式電源座(普通) 1個 蜂鳴器 1個 11.0592晶振 1個 PNP管 1個 HT7133A 1個 LM7805穩壓管 1個 電容104 電容22uF(復位鍵用) 1個 電容22pF(晶振用) 2個 LED燈 5個 電阻10K(復位) 1個 (R10) 電阻1K 7個 (R1,R2,R3,R5,R6,R14,R15,R16,R20) 電阻330 3個 (R4,R7,R8) 二極管(鍵盤用) 4個 排針、排座若干
注意:原理圖中的C1電容在PCB封裝中刪除了,那是不對的,當時我們做好后,就因為這個原因,屏幕顯示就出問題了。
具體請看原件參數圖
0.png (392.17 KB, 下載次數: 83)
下載附件
2016-10-11 16:07 上傳
0.png (481.13 KB, 下載次數: 76)
下載附件
2016-10-11 16:05 上傳
0.png (563.99 KB, 下載次數: 75)
下載附件
2016-10-11 16:07 上傳
0.png (56.67 KB, 下載次數: 76)
下載附件
2016-10-11 16:07 上傳
0.png (76.98 KB, 下載次數: 88)
下載附件
2016-10-11 15:43 上傳
所有資料打包下載地址(包含論文+程序+原理圖等全套資料):
http://www.zg4o1577.cn/bbs/dpj-4591-1.html |