0.png (69.24 KB, 下載次數(shù): 87)
下載附件
2017-2-13 01:10 上傳
包括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)擊文件名下載附件
下載積分: 黑幣 -5
下面是論文的部分內(nèi)容預(yù)覽:
《單片機(jī)原理及應(yīng)用》 課程設(shè)計(jì) 題目:基于GSM的遠(yuǎn)程撥號(hào)開鎖 專業(yè) 電氣工程及其自動(dòng)化 班級(jí) 13機(jī)電實(shí)驗(yàn)班 學(xué)號(hào) 姓名
1.1 單片機(jī)課程設(shè)計(jì)內(nèi)容 利用STC89C52單片機(jī)和GSM實(shí)現(xiàn)遠(yuǎn)程開關(guān)門鎖的,用戶可在手機(jī)上撥號(hào)對(duì)門鎖進(jìn)行開關(guān)。 1.2 單片機(jī)課程設(shè)計(jì)要求 1.能識(shí)別手機(jī)號(hào)并顯示; 2.能顯示密碼即號(hào)碼是否正確; 3.能通過(guò)短信通知用戶門鎖是否已打開。 1.3 系統(tǒng)運(yùn)行流程 程序首先進(jìn)行串口和LCD初始化,在主程序的開啟GSM模塊,并通過(guò)串口發(fā)送測(cè)試命令測(cè)試是否開機(jī)以及是否注冊(cè)到網(wǎng)絡(luò);GSM模塊正常工作后通過(guò)串口發(fā)送指令指示模塊顯示來(lái)電號(hào)碼,單片機(jī)中斷程序接收到反饋的數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行處理,并調(diào)用步進(jìn)電機(jī)程序、短信發(fā)送程序、LCD 顯示程序和蜂鳴器程序。 相關(guān)程序調(diào)用是靠對(duì)來(lái)電號(hào)碼的識(shí)別。 第二部分設(shè)計(jì)方案 2.1 總體設(shè)計(jì)方案說(shuō)明 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.后期處理 對(duì)設(shè)計(jì)過(guò)程進(jìn)行總結(jié),完成設(shè)計(jì)報(bào)告。 2.2單片機(jī)系統(tǒng)方框圖 第一部分設(shè)計(jì)任務(wù)和要求
1.002.jpg (15.62 KB, 下載次數(shù): 82)
下載附件
2017-2-13 01:17 上傳
2.3 單片機(jī)系統(tǒng)流程圖
1.003.jpg (10.84 KB, 下載次數(shù): 88)
下載附件
2017-2-13 01:17 上傳
1.004.jpg (9.26 KB, 下載次數(shù): 89)
下載附件
2017-2-13 01:17 上傳
主程序圖 號(hào)碼識(shí)別中斷子程序 第三部分主要器件及簡(jiǎn)介 1. STC89C52單片機(jī)簡(jiǎn)介 STC89C52是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時(shí)鐘頻率為80MHz,片內(nèi)含8K Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進(jìn)單片機(jī)內(nèi)部,省去了購(gòu)買通用編程器,而且速度更快。 2.GSM模塊簡(jiǎn)介 SIM900A是一個(gè)2頻的GSM/GPRS模塊,工作頻段為EGSM900MHz和DCS1800MHz。該模塊與單片機(jī)通過(guò)串口進(jìn)行數(shù)據(jù)的收發(fā),具有功率密度集中,傳輸距離遠(yuǎn)、抗干擾能力強(qiáng)等特點(diǎn)。因?yàn)镾IM900A模塊進(jìn)行通信時(shí)需要插入SIM卡,方便簡(jiǎn)單,而且通過(guò)通信基站進(jìn)行數(shù)據(jù)的傳輸,安全可靠。 3. 步進(jìn)電機(jī)簡(jiǎn)介 步進(jìn)電機(jī)28BYJ48型四相八拍電機(jī),電壓為DC5V—DC12V。當(dāng)對(duì)步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),它可以連續(xù)不斷地轉(zhuǎn)動(dòng)。每一個(gè)脈沖信 號(hào)對(duì)應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對(duì)應(yīng)轉(zhuǎn)子轉(zhuǎn)過(guò)一定的角度(一個(gè)步距角)。當(dāng)通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過(guò)一個(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液晶顯示屏簡(jiǎn)介 LCD1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0—D7,和RS、R/W、EN三個(gè)控制端口,工作電壓為5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光。 LCD1602引腳說(shuō)明如下所示: VDD:電源正極,4.5V—5.5V,通常使用5V電壓; VL:LCD對(duì)比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0—5V。接正極時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,但對(duì)比度過(guò)高會(huì)產(chǎn)生“鬼影”,因此通常使用一個(gè)10K的電位器來(lái)調(diào)整對(duì)比度,或者直接串接一個(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模塊使能信號(hào)控制端。寫數(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ī)器周期以上的高電平信號(hào),就可以使單片機(jī)復(fù)位。本次采用的是12M晶振,按鈕復(fù)位電路。 4.2 GSM通信電路 SIM900A芯片采用+5V電壓輸入,SIM900A的POWER接口與P2.7連接,高電平時(shí)間持續(xù)1s可開啟模塊;通過(guò)串口RX、TX與單片機(jī)連接進(jìn)行數(shù)據(jù)傳輸。
1.005.jpg (14.05 KB, 下載次數(shù): 78)
下載附件
2017-2-13 01:17 上傳
4.3步進(jìn)電機(jī)電路 28BYJ-48步進(jìn)電機(jī)通過(guò)ULN2003PAC驅(qū)動(dòng)芯片與單片機(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相連。通過(guò)滑動(dòng)變阻器改變LCD顯示屏的顯示對(duì)比度。 4.5 蜂鳴器 蜂鳴器采用TMB12A05無(wú)源蜂鳴器,通過(guò)三極管與單片機(jī)P1.5相連。P1.5輸出高電平蜂鳴器不響,輸出低電平蜂鳴器響。 第五部分仿真電路
1.006.jpg (72.45 KB, 下載次數(shù): 83)
下載附件
2017-2-13 01:17 上傳
第六部分課程設(shè)計(jì)總結(jié) 本次單片機(jī)課程設(shè)計(jì),在老師的指導(dǎo)和同學(xué)的幫助下順利完成了。在設(shè)計(jì)過(guò)程中,從仿真電路的設(shè)計(jì),源程序的書寫和修改以及實(shí)物電路的焊接中都遇到了不少問(wèn)題,但在我的努力下解決了,并且從中學(xué)到了不少知識(shí)。我在設(shè)計(jì)過(guò)程中還不斷提出自己的疑點(diǎn)以及新的想法,聯(lián)系實(shí)際應(yīng)用,將課本上學(xué)習(xí)的東西運(yùn)用到實(shí)際中,這些都令我們受益匪淺。 課程設(shè)計(jì)需要很大的耐心,尤其是遇到困難的時(shí)候,這也是對(duì)我們的考驗(yàn)。在設(shè)計(jì)過(guò)程中,我們遇到問(wèn)題不是感到急躁,而是耐心地尋找解決的辦法,與老師、同學(xué)進(jìn)行交流討論,尋求最佳的解決辦法。 總之,在此次的課程設(shè)計(jì)中,我們不僅動(dòng)手、動(dòng)腦,也學(xué)會(huì)了不少東西,同時(shí),謝謝對(duì)我的設(shè)計(jì)帶來(lái)建議、意見和幫助的老師和同學(xué)們!
附錄一實(shí)物圖
1.007.jpg (47.34 KB, 下載次數(shù): 100)
下載附件
2017-2-13 01:17 上傳
0.png (24.29 KB, 下載次數(shù): 71)
下載附件
2017-2-13 01:10 上傳
下面是單片機(jī)仿真:
0.png (36.58 KB, 下載次數(shù): 78)
下載附件
2017-2-13 01:09 上傳
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;
- /********測(cè)試GSM是否啟動(dòng)**********/
- int test_boot;
- /********測(cè)試GSM是否注冊(cè)網(wǎng)絡(luò)**********/
- int test_net_register;
- /********測(cè)試是否有電話打入**********/
- int test_have_call;
- /********GSM串口接收數(shù)據(jù)緩存**********/
- unsigned char GSM_receive[60];
- /********GSM串口接收計(jì)數(shù)器**********/
- unsigned char GSMDATA_count;
- /********號(hào)碼緩存*******************/
- 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啟動(dòng)
- Power_key=1;
- Delay_Ms(1000);
- Power_key=0;
-
- Uart_Init(); //串口初始化
- LcdInitiate();
- Print_String(line_1,0x00,"calling test--HM");
- //測(cè)試是否已經(jīng)開機(jī)
- while(test_boot==No)
- {
- Send_String("AT");
- Delay_Ms(1000);
- }
- //測(cè)試是否注冊(cè)到網(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ù)制代碼
0.png (77.45 KB, 下載次數(shù): 81)
下載附件
2017-2-13 01:08 上傳
請(qǐng)到本帖頂部下載.
|