久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11702|回復: 20
收起左側

基于GSM的遠程撥號開鎖設計 電話or短信都可以 含仿真 源碼 論文

  [復制鏈接]
ID:161768 發表于 2017-2-13 01:20 | 顯示全部樓層 |閱讀模式
0.png

包括51和調壓電路的PCB,
protues仿真
代碼工程(51單片機)
手機短信界面圖片和演示視頻
全部設計資料下載地址(包含論文 仿真 源碼等):
電話or短信開鎖 仿真 程序 PCB 論文.zip (15.71 MB, 下載次數: 300)


下面是論文的部分內容預覽:

《單片機原理及應用》

課程設計

題目:基于GSM的遠程撥號開鎖

專業 電氣工程及其自動化

班級 13機電實驗班

學號

姓名


1.1 單片機課程設計內容

利用STC89C52單片機和GSM實現遠程開關門鎖的,用戶可在手機上撥號對門鎖進行開關。

1.2 單片機課程設計要求

1.能識別手機號并顯示;

2.能顯示密碼即號碼是否正確;

3.能通過短信通知用戶門鎖是否已打開。

1.3 系統運行流程

程序首先進行串口和LCD初始化,在主程序的開啟GSM模塊,并通過串口發送測試命令測試是否開機以及是否注冊到網絡;GSM模塊正常工作后通過串口發送指令指示模塊顯示來電號碼,單片機中斷程序接收到反饋的數據后對數據進行處理,并調用步進電機程序、短信發送程序、LCD 顯示程序和蜂鳴器程序。

相關程序調用是靠對來電號碼的識別。

第二部分設計方案

2.1 總體設計方案說明

1.程序設計及調試

根據單片機課程設計內容和要求,完成Protues仿真電路的設計和KEIL軟件編寫程序,并運行仿真模擬調試。

2.硬件焊接及調試

    根據仿真電路完成電路板的焊接并進行軟、硬件的調試,達到預期目的。

3.后期處理

對設計過程進行總結,完成設計報告。

2.2單片機系統方框圖

第一部分設計任務和要求


1.002.jpg

2.3 單片機系統流程圖

1.003.jpg 1.004.jpg
主程序圖                 號碼識別中斷子程序

第三部分主要器件及簡介

    1. STC89C52單片機簡介

STC89C52是采用8051核的ISP(In System Programming)在系統可編程芯片,最高工作時鐘頻率為80MHz,片內含8K Bytes的可反復擦寫1000次的Flash只讀程序存儲器,器件兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進單片機內部,省去了購買通用編程器,而且速度更快。

2.GSM模塊簡介

SIM900A是一個2頻的GSM/GPRS模塊,工作頻段為EGSM900MHz和DCS1800MHz。該模塊與單片機通過串口進行數據的收發,具有功率密度集中,傳輸距離遠、抗干擾能力強等特點。因為SIM900A模塊進行通信時需要插入SIM卡,方便簡單,而且通過通信基站進行數據的傳輸,安全可靠。

3. 步進電機簡介

步進電機28BYJ48型四相八拍電機,電壓為DC5V—DC12V。當對步進電機施加一系列連續不斷的控制脈沖時,它可以連續不斷地轉動。每一個脈沖信 號對應步進電機的某一相或兩相繞組的通電狀態改變一次,也就對應轉子轉過一定的角度(一個步距角)。當通電狀態的改變完成一個循環時,轉子轉過一個齒距。四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A…),雙(雙相繞組通電)四拍(AB-BC- CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A…)。

4.LCD1602液晶顯示屏簡介

LCD1602可以顯示2行16個字符,有8位數據總線D0—D7,和RS、R/W、EN三個控制端口,工作電壓為5V,并且帶有字符對比度調節和背光。

LCD1602引腳說明如下所示:

VDD:電源正極,4.5V—5.5V,通常使用5V電壓;

VL:LCD對比度調節端,電壓調節范圍為0—5V。接正極時對比度最弱,接地電源時對比度最高,但對比度過高會產生“鬼影”,因此通常使用一個10K的電位器來調整對比度,或者直接串接一個電阻到地;

RS:MCU寫入數據或者指令選擇端。MCU要寫入指令時,使RS為低電平;MCU要寫入數據時,使RS為高電平;

R/W:讀寫控制端。R/W為高電平時,讀取數據;R/W為低電平時,寫入數據;

EN:LCD模塊使能信號控制端。寫數據時,需要下降沿觸發模塊。

D0—D7:8為數據總線,三態雙向。

A:LED背光正極。需要背光時, A串接一個限流電阻接VDD, K接地。

K:LED背光地端

第四部分系統硬件設計

4.1 最小系統

復位時單片機的初始化操作,只要給RST引腳加上兩個機器周期以上的高電平信號,就可以使單片機復位。本次采用的是12M晶振,按鈕復位電路。

4.2 GSM通信電路

SIM900A芯片采用+5V電壓輸入,SIM900A的POWER接口與P2.7連接,高電平時間持續1s可開啟模塊;通過串口RX、TX與單片機連接進行數據傳輸。

1.005.jpg

4.3步進電機電路

28BYJ-48步進電機通過ULN2003PAC驅動芯片與單片機相連,采用+5V輸入,IN1-IN4分別與單片機的P1.0-P1.3相連。

4.4 LCD顯示電路

LCD顯示屏的D0到D7與單片機P0口相連,LCD顯示屏EN口與單片機P1.2口相連,RW與P1.1相連RS與P1.0相連。通過滑動變阻器改變LCD顯示屏的顯示對比度。

4.5 蜂鳴器

    蜂鳴器采用TMB12A05無源蜂鳴器,通過三極管與單片機P1.5相連。P1.5輸出高電平蜂鳴器不響,輸出低電平蜂鳴器響。

第五部分仿真電路

1.006.jpg

第六部分課程設計總結

本次單片機課程設計,在老師的指導和同學的幫助下順利完成了。在設計過程中,從仿真電路的設計,源程序的書寫和修改以及實物電路的焊接中都遇到了不少問題,但在我的努力下解決了,并且從中學到了不少知識。我在設計過程中還不斷提出自己的疑點以及新的想法,聯系實際應用,將課本上學習的東西運用到實際中,這些都令我們受益匪淺。

課程設計需要很大的耐心,尤其是遇到困難的時候,這也是對我們的考驗。在設計過程中,我們遇到問題不是感到急躁,而是耐心地尋找解決的辦法,與老師、同學進行交流討論,尋求最佳的解決辦法。

總之,在此次的課程設計中,我們不僅動手、動腦,也學會了不少東西,同時,謝謝對我的設計帶來建議、意見和幫助的老師和同學們!




附錄實物圖

1.007.jpg

0.png
下面是單片機仿真:
0.png

gms遠程開鎖的單片機源碼:
  1. /*****************************************************************************
  2. 程序名:        GSM接聽電話                             
  3. *****************************************************************************/

  4. #include
  5. #include "UART.h"
  6. #include "Delay.h"
  7. #include "LCD1602.h"
  8. #include "FMQ.h"
  9. #include "28BYJ.h"
  10. #define Yes                1
  11. #define No                0


  12. sbit Power_key=P2^7;
  13. sbit led=P2^ 6;

  14. /********測試GSM是否啟動**********/
  15. int test_boot;
  16. /********測試GSM是否注冊網絡**********/
  17. int test_net_register;
  18. /********測試是否有電話打入**********/
  19. int test_have_call;
  20. /********GSM串口接收數據緩存**********/
  21. unsigned char GSM_receive[60];
  22. /********GSM串口接收計數器**********/
  23. unsigned char GSMDATA_count;
  24. /********號碼緩存*******************/
  25. unsigned char number_get;
  26. unsigned char door;
  27. /********短信發送程序********/

  28. void message()
  29. {
  30.         Send_String("AT+CMGF=1");//指定信息的輸入輸出格式為文本格式
  31.         Delay_Ms(100);
  32.         
  33.         Send_String("AT+CSMP=17,167,2,25");
  34.         Delay_Ms(100);
  35.         
  36.         Send_String("AT+CSCS=\"UCS2\"");
  37.         Delay_Ms(100);
  38.         
  39.         Send_String("AT+CMGS=\"00310033003200300038003000330038003000300035\"");
  40.         Delay_Ms(100);
  41.         
  42.         Send_String("4E3B94F6007E95E85F004E86007E");
  43.         Delay_Ms(100);
  44.         Send_Char(0x1A);
  45.         Delay_Ms(200);
  46. }

  47. void main()
  48. {
  49.         unsigned char m;
  50.         //初始化狀態
  51.         Power_key=0;
  52.         test_boot=No;
  53.         test_net_register=No;
  54.         test_have_call=No;
  55.         door=No;
  56.         fmq=1;
  57.         P2=0x00;
  58.         number_get=No;
  59.         //GSM啟動
  60.         Power_key=1;
  61.         Delay_Ms(1000);
  62.         Power_key=0;
  63.         
  64.         Uart_Init();                                //串口初始化
  65.         LcdInitiate();
  66.         Print_String(line_1,0x00,"calling test--HM");
  67.                 //測試是否已經開機
  68.                 while(test_boot==No)
  69.                 {
  70.                         Send_String("AT");
  71.                         Delay_Ms(1000);
  72.                 }
  73.                 //測試是否注冊到網絡
  74.                 while(test_net_register==No)
  75.                 {
  76.                         Send_String("AT+COPS?");
  77.                         Delay_Ms(1000);        
  78.                 }
  79.                 //等待電話打入
  80.                 Send_String("AT+CLIP=1");
  81.                 Delay_Ms(100);
  82.                 while(1)
  83.                 {
  84.                         while(test_have_call==Yes)
  85.                         {
  86.                                 if(number[10]=='5'&&number[9]=='0'&&number[8]=='0'&&number[7]=='8')
  87.                                 {
  88. //                                        if(door==No)
  89. //                                        {
  90.                                                 for(m=0;m<200;m++)
  91.                                                 {
  92.                                                         forward();
  93.                                                         
  94.                                                 }
  95.                                                 Print_String(line_2,0x0B,"open!");
  96.                                                 FMQ_0();
  97.                                                 Delay_Ms(100);
  98.                                                 FMQ_1();
  99.                                                 message();                                       

  100.                                                 //                                                door=Yes;
  101. //                                        }        
  102.                                 }
  103.                                 else
  104.                                 {
  105.                                         Print_String(line_2,0x0B,"close");        
  106.                                         led=1;
  107.                                 }                                
  108.                         }
  109.                         
  110.                 }        
  111.                
  112. }

  113. /*****************************************************************************
  114. 串口中斷
  115. /****************************************************************************/
  116. void uart(void) interrupt 4
  117. {
  118.         unsigned char UART_data;
  119.         unsigned char i;

  120.         if(RI)
  121.         {
  122.                 UART_data=SBUF;
  123.                 if(UART_data=='')
  124.                 {
  125.                         if(GSM_receive[0]=='O'&&GSM_receive[1]=='K')
  126.                                 test_boot=Yes;
  127.                         else
  128.                                 test_boot=No;
  129.                         
  130.                         if(GSM_receive[12]=='C')
  131.                                 test_net_register=Yes;
  132.                         else
  133.                                 test_net_register=No;
  134.                         
  135.                         if(GSM_receive[0]=='R'&&GSM_receive[1]=='I'&&GSM_receive[2]=='N'&&GSM_receive[3]=='G')
  136.                         {
  137.                                 test_have_call=Yes;                                
  138.                         }
  139.                         else
  140.                         {
  141.                                 test_have_call=No;
  142.                         }
  143.                         
  144.                         if(GSM_receive[0]=='+'&&GSM_receive[1]=='C'&&GSM_receive[2]=='L'&&GSM_receive[3]=='I'&&GSM_receive[4]=='P')
  145.                         {
  146.                                 for(i=0;i<11;i++)
  147.                                 {
  148.                                         number[i]=GSM_receive[i+8];
  149.                                 }
  150.                                 display_number(line_2,0x00);        
  151.                                 
  152.                                 
  153.                         }
  154.                         GSMDATA_count=0;
  155.                 }
  156.                 else
  157.                 {
  158.                         GSM_receive[GSMDATA_count]=UART_data;
  159.                         GSMDATA_count++;
  160.                 }
  161.         }
  162.         RI=0;
  163. }
復制代碼

0.png

請到本帖頂部下載.



評分

參與人數 2黑幣 +10 收起 理由
tjjjy86 + 5 贊一個!
zhaok2013 + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:166174 發表于 2017-2-23 14:33 | 顯示全部樓層
好厲害,寫的很好很棒
回復

使用道具 舉報

ID:165046 發表于 2017-2-24 09:52 | 顯示全部樓層
好棒,挺喜歡這類小制作!
回復

使用道具 舉報

ID:186018 發表于 2017-4-16 22:42 來自觸屏版 | 顯示全部樓層
請問大神,你這個是不是沒有頭文件
回復

使用道具 舉報

ID:182806 發表于 2017-4-22 19:44 | 顯示全部樓層
這個地方很疑惑,到底接的是1.5還是2.7?因為程序里你分別將其設置了一次高電平和一次低電平。這樣總感覺有點問題。而且1.5端口是專門寫了一個頭文件來調用的。
捕獲.JPG
回復

使用道具 舉報

ID:182806 發表于 2017-4-23 10:33 | 顯示全部樓層
明白了,1.5接的蜂鳴器。
回復

使用道具 舉報

ID:130231 發表于 2017-4-23 12:31 | 顯示全部樓層
很給力
回復

使用道具 舉報

ID:185661 發表于 2017-4-28 10:57 | 顯示全部樓層
好強,值得一學
回復

使用道具 舉報

ID:248551 發表于 2017-11-13 23:37 來自觸屏版 | 顯示全部樓層
樓主你好,你的步進電機電路圖和SIM900A的資料能分享一下嗎?
回復

使用道具 舉報

ID:147616 發表于 2017-11-26 16:59 | 顯示全部樓層
好貼  學習一下
回復

使用道具 舉報

ID:257716 發表于 2017-12-5 15:14 | 顯示全部樓層
這是我大二的時候做的課程設計,不知道是誰把我的東西貼到這個論壇了!!!!!
回復

使用道具 舉報

ID:257716 發表于 2017-12-5 15:16 | 顯示全部樓層
很生氣!!!,我的課程設計作品!!
回復

使用道具 舉報

ID:257716 發表于 2017-12-5 15:17 | 顯示全部樓層
還刪我貼媽賣批
回復

使用道具 舉報

ID:257716 發表于 2017-12-5 15:17 | 顯示全部樓層

這是我的課程設計作品,被別人放到網上了
回復

使用道具 舉報

ID:96011 發表于 2018-4-22 16:06 | 顯示全部樓層
謝謝分享!!!感激!!!
回復

使用道具 舉報

ID:79874 發表于 2018-6-30 09:24 | 顯示全部樓層
下載不了希望能下載
回復

使用道具 舉報

ID:380389 發表于 2018-7-29 10:19 來自觸屏版 | 顯示全部樓層
很強,樓主很厲害
回復

使用道具 舉報

ID:390236 發表于 2018-8-28 13:08 | 顯示全部樓層
下載不了希望能下載
我要繼續學習
回復

使用道具 舉報

ID:372961 發表于 2018-9-18 13:38 | 顯示全部樓層
joeq168 發表于 2017-4-22 19:44
**** 作者被禁止或刪除 內容自動屏蔽 ****

SIM900A的開機啟動需要Power口高電平和低電平之間存在大于800ms的延遲,所以你可以看見一個高電平和一個低電平,中間還有一個延遲,作用就是開啟Sim900模塊。還有P1^5接的是蜂鳴器。
回復

使用道具 舉報

ID:370943 發表于 2018-9-18 14:35 | 顯示全部樓層
前來學習,大神
回復

使用道具 舉報

ID:727538 發表于 2020-5-30 10:36 | 顯示全部樓層
需要號碼位數驗證嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区二区 | 午夜久久久久久久久久一区二区 | 午夜寂寞网站 | 成人免费观看网站 | 久久久91 | 成人在线免费观看 | 91网在线播放 | 日韩中文字幕2019 | 中文字幕乱码一区二区三区 | 欧美一级黄色片免费观看 | 天堂av免费观看 | 丝袜一区二区三区 | 国产最好的av国产大片 | 日本久久网站 | 中文字幕第一页在线 | 日韩欧美1区2区 | 亚洲精品电影网在线观看 | 日韩超碰 | 97精品超碰一区二区三区 | 日本在线黄色 | 成人免费视频一区二区 | 日韩在线视频免费观看 | 成人h动漫精品一区二区器材 | 一本一道久久a久久精品蜜桃 | 亚洲一区二区三区免费视频 | 欧美精品乱码99久久影院 | 亚洲精品乱码久久久久久按摩 | 在线视频h | 99在线国产 | 亚洲网站观看 | 欧洲一区二区三区 | 99久久精品一区二区成人 | av大片在线 | 日韩电影a | 亚洲第一福利视频 | 免费色网址 | av永久| 福利视频一区二区三区 | 精品久久久久久久久亚洲 | av在线一区二区 | 日本免费视频在线观看 |