包括51和調(diào)壓電路的PCB,
protues仿真
代碼工程(51單片機(jī))
手機(jī)短信界面圖片和演示視頻
全部設(shè)計(jì)資料下載地址(包含論文 仿真 源碼等):
電話or短信開鎖 仿真 程序 PCB 論文.zip
(15.71 MB, 下載次數(shù): 300)
2017-2-12 23:53 上傳
點(diǎn)擊文件名下載附件
下面是論文的部分內(nèi)容預(yù)覽:
《單片機(jī)原理及應(yīng)用》 課程設(shè)計(jì) 題目:基于GSM的遠(yuǎn)程撥號開鎖 專業(yè) 電氣工程及其自動化 班級 13機(jī)電實(shí)驗(yàn)班 學(xué)號 姓名
1.1 單片機(jī)課程設(shè)計(jì)內(nèi)容 利用STC89C52單片機(jī)和GSM實(shí)現(xiàn)遠(yuǎn)程開關(guān)門鎖的,用戶可在手機(jī)上撥號對門鎖進(jìn)行開關(guān)。 1.2 單片機(jī)課程設(shè)計(jì)要求 1.能識別手機(jī)號并顯示; 2.能顯示密碼即號碼是否正確; 3.能通過短信通知用戶門鎖是否已打開。 1.3 系統(tǒng)運(yùn)行流程 程序首先進(jìn)行串口和LCD初始化,在主程序的開啟GSM模塊,并通過串口發(fā)送測試命令測試是否開機(jī)以及是否注冊到網(wǎng)絡(luò);GSM模塊正常工作后通過串口發(fā)送指令指示模塊顯示來電號碼,單片機(jī)中斷程序接收到反饋的數(shù)據(jù)后對數(shù)據(jù)進(jìn)行處理,并調(diào)用步進(jìn)電機(jī)程序、短信發(fā)送程序、LCD 顯示程序和蜂鳴器程序。 相關(guān)程序調(diào)用是靠對來電號碼的識別。 第二部分設(shè)計(jì)方案 2.1 總體設(shè)計(jì)方案說明 1.程序設(shè)計(jì)及調(diào)試 根據(jù)單片機(jī)課程設(shè)計(jì)內(nèi)容和要求,完成Protues仿真電路的設(shè)計(jì)和KEIL軟件編寫程序,并運(yùn)行仿真模擬調(diào)試。 2.硬件焊接及調(diào)試 根據(jù)仿真電路完成電路板的焊接并進(jìn)行軟、硬件的調(diào)試,達(dá)到預(yù)期目的。 3.后期處理 對設(shè)計(jì)過程進(jìn)行總結(jié),完成設(shè)計(jì)報(bào)告。 2.2單片機(jī)系統(tǒng)方框圖 第一部分設(shè)計(jì)任務(wù)和要求
2.3 單片機(jī)系統(tǒng)流程圖 主程序圖 號碼識別中斷子程序 第三部分主要器件及簡介 1. STC89C52單片機(jī)簡介 STC89C52是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時(shí)鐘頻率為80MHz,片內(nèi)含8K Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進(jìn)單片機(jī)內(nèi)部,省去了購買通用編程器,而且速度更快。 2.GSM模塊簡介 SIM900A是一個(gè)2頻的GSM/GPRS模塊,工作頻段為EGSM900MHz和DCS1800MHz。該模塊與單片機(jī)通過串口進(jìn)行數(shù)據(jù)的收發(fā),具有功率密度集中,傳輸距離遠(yuǎn)、抗干擾能力強(qiáng)等特點(diǎn)。因?yàn)镾IM900A模塊進(jìn)行通信時(shí)需要插入SIM卡,方便簡單,而且通過通信基站進(jìn)行數(shù)據(jù)的傳輸,安全可靠。 3. 步進(jìn)電機(jī)簡介 步進(jìn)電機(jī)28BYJ48型四相八拍電機(jī),電壓為DC5V—DC12V。當(dāng)對步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),它可以連續(xù)不斷地轉(zhuǎn)動。每一個(gè)脈沖信 號對應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一個(gè)步距角)。當(dāng)通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過一個(gè)齒距。四相步進(jìn)電機(jī)可以在不同的通電方式下運(yùn)行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A…),雙(雙相繞組通電)四拍(AB-BC- CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A…)。 4.LCD1602液晶顯示屏簡介 LCD1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0—D7,和RS、R/W、EN三個(gè)控制端口,工作電壓為5V,并且?guī)в凶址麑Ρ榷日{(diào)節(jié)和背光。 LCD1602引腳說明如下所示: VDD:電源正極,4.5V—5.5V,通常使用5V電壓; VL:LCD對比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0—5V。接正極時(shí)對比度最弱,接地電源時(shí)對比度最高,但對比度過高會產(chǎn)生“鬼影”,因此通常使用一個(gè)10K的電位器來調(diào)整對比度,或者直接串接一個(gè)電阻到地; RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時(shí),使RS為低電平;MCU要寫入數(shù)據(jù)時(shí),使RS為高電平; R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫入數(shù)據(jù); EN:LCD模塊使能信號控制端。寫數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊。 D0—D7:8為數(shù)據(jù)總線,三態(tài)雙向。 A:LED背光正極。需要背光時(shí), A串接一個(gè)限流電阻接VDD, K接地。 K:LED背光地端 第四部分系統(tǒng)硬件設(shè)計(jì) 4.1 最小系統(tǒng) 復(fù)位時(shí)單片機(jī)的初始化操作,只要給RST引腳加上兩個(gè)機(jī)器周期以上的高電平信號,就可以使單片機(jī)復(fù)位。本次采用的是12M晶振,按鈕復(fù)位電路。 4.2 GSM通信電路 SIM900A芯片采用+5V電壓輸入,SIM900A的POWER接口與P2.7連接,高電平時(shí)間持續(xù)1s可開啟模塊;通過串口RX、TX與單片機(jī)連接進(jìn)行數(shù)據(jù)傳輸。 4.3步進(jìn)電機(jī)電路 28BYJ-48步進(jìn)電機(jī)通過ULN2003PAC驅(qū)動芯片與單片機(jī)相連,采用+5V輸入,IN1-IN4分別與單片機(jī)的P1.0-P1.3相連。 4.4 LCD顯示電路 LCD顯示屏的D0到D7與單片機(jī)P0口相連,LCD顯示屏EN口與單片機(jī)P1.2口相連,RW與P1.1相連RS與P1.0相連。通過滑動變阻器改變LCD顯示屏的顯示對比度。 4.5 蜂鳴器 蜂鳴器采用TMB12A05無源蜂鳴器,通過三極管與單片機(jī)P1.5相連。P1.5輸出高電平蜂鳴器不響,輸出低電平蜂鳴器響。 第五部分仿真電路
第六部分課程設(shè)計(jì)總結(jié) 本次單片機(jī)課程設(shè)計(jì),在老師的指導(dǎo)和同學(xué)的幫助下順利完成了。在設(shè)計(jì)過程中,從仿真電路的設(shè)計(jì),源程序的書寫和修改以及實(shí)物電路的焊接中都遇到了不少問題,但在我的努力下解決了,并且從中學(xué)到了不少知識。我在設(shè)計(jì)過程中還不斷提出自己的疑點(diǎn)以及新的想法,聯(lián)系實(shí)際應(yīng)用,將課本上學(xué)習(xí)的東西運(yùn)用到實(shí)際中,這些都令我們受益匪淺。 課程設(shè)計(jì)需要很大的耐心,尤其是遇到困難的時(shí)候,這也是對我們的考驗(yàn)。在設(shè)計(jì)過程中,我們遇到問題不是感到急躁,而是耐心地尋找解決的辦法,與老師、同學(xué)進(jìn)行交流討論,尋求最佳的解決辦法。 總之,在此次的課程設(shè)計(jì)中,我們不僅動手、動腦,也學(xué)會了不少東西,同時(shí),謝謝對我的設(shè)計(jì)帶來建議、意見和幫助的老師和同學(xué)們!
附錄一實(shí)物圖
下面是單片機(jī)仿真:
gms遠(yuǎn)程開鎖的單片機(jī)源碼:
- /*****************************************************************************
- 程序名: GSM接聽電話
- *****************************************************************************/
- #include
- #include "UART.h"
- #include "Delay.h"
- #include "LCD1602.h"
- #include "FMQ.h"
- #include "28BYJ.h"
- #define Yes 1
- #define No 0
- sbit Power_key=P2^7;
- sbit led=P2^ 6;
- /********測試GSM是否啟動**********/
- int test_boot;
- /********測試GSM是否注冊網(wǎng)絡(luò)**********/
- int test_net_register;
- /********測試是否有電話打入**********/
- int test_have_call;
- /********GSM串口接收數(shù)據(jù)緩存**********/
- unsigned char GSM_receive[60];
- /********GSM串口接收計(jì)數(shù)器**********/
- unsigned char GSMDATA_count;
- /********號碼緩存*******************/
- unsigned char number_get;
- unsigned char door;
- /********短信發(fā)送程序********/
- void message()
- {
- Send_String("AT+CMGF=1");//指定信息的輸入輸出格式為文本格式
- Delay_Ms(100);
-
- Send_String("AT+CSMP=17,167,2,25");
- Delay_Ms(100);
-
- Send_String("AT+CSCS=\"UCS2\"");
- Delay_Ms(100);
-
- Send_String("AT+CMGS=\"00310033003200300038003000330038003000300035\"");
- Delay_Ms(100);
-
- Send_String("4E3B94F6007E95E85F004E86007E");
- Delay_Ms(100);
- Send_Char(0x1A);
- Delay_Ms(200);
- }
- void main()
- {
- unsigned char m;
- //初始化狀態(tài)
- Power_key=0;
- test_boot=No;
- test_net_register=No;
- test_have_call=No;
- door=No;
- fmq=1;
- P2=0x00;
- number_get=No;
- //GSM啟動
- Power_key=1;
- Delay_Ms(1000);
- Power_key=0;
-
- Uart_Init(); //串口初始化
- LcdInitiate();
- Print_String(line_1,0x00,"calling test--HM");
- //測試是否已經(jīng)開機(jī)
- while(test_boot==No)
- {
- Send_String("AT");
- Delay_Ms(1000);
- }
- //測試是否注冊到網(wǎng)絡(luò)
- while(test_net_register==No)
- {
- Send_String("AT+COPS?");
- Delay_Ms(1000);
- }
- //等待電話打入
- Send_String("AT+CLIP=1");
- Delay_Ms(100);
- while(1)
- {
- while(test_have_call==Yes)
- {
- if(number[10]=='5'&&number[9]=='0'&&number[8]=='0'&&number[7]=='8')
- {
- // if(door==No)
- // {
- for(m=0;m<200;m++)
- {
- forward();
-
- }
- Print_String(line_2,0x0B,"open!");
- FMQ_0();
- Delay_Ms(100);
- FMQ_1();
- message();
- // door=Yes;
- // }
- }
- else
- {
- Print_String(line_2,0x0B,"close");
- led=1;
- }
- }
-
- }
-
- }
- /*****************************************************************************
- 串口中斷
- /****************************************************************************/
- void uart(void) interrupt 4
- {
- unsigned char UART_data;
- unsigned char i;
- if(RI)
- {
- UART_data=SBUF;
- if(UART_data=='')
- {
- if(GSM_receive[0]=='O'&&GSM_receive[1]=='K')
- test_boot=Yes;
- else
- test_boot=No;
-
- if(GSM_receive[12]=='C')
- test_net_register=Yes;
- else
- test_net_register=No;
-
- if(GSM_receive[0]=='R'&&GSM_receive[1]=='I'&&GSM_receive[2]=='N'&&GSM_receive[3]=='G')
- {
- test_have_call=Yes;
- }
- else
- {
- test_have_call=No;
- }
-
- if(GSM_receive[0]=='+'&&GSM_receive[1]=='C'&&GSM_receive[2]=='L'&&GSM_receive[3]=='I'&&GSM_receive[4]=='P')
- {
- for(i=0;i<11;i++)
- {
- number[i]=GSM_receive[i+8];
- }
- display_number(line_2,0x00);
-
-
- }
- GSMDATA_count=0;
- }
- else
- {
- GSM_receive[GSMDATA_count]=UART_data;
- GSMDATA_count++;
- }
- }
- RI=0;
- }
復(fù)制代碼
請到本帖頂部下載.
|