标题: 基于GSM的远程拨号开锁设计 电话or短信都可以 含仿真 源码 论文 [打印本页]
作者: 51黑电子迷 时间: 2017-2-13 01:20
标题: 基于GSM的远程拨号开锁设计 电话or短信都可以 含仿真 源码 论文
包括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单片机系统方框图
第一部分设计任务和要求
2.3 单片机系统流程图
主程序图 号码识别中断子程序
第三部分主要器件及简介
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与单片机连接进行数据传输。
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输出高电平蜂鸣器不响,输出低电平蜂鸣器响。
第五部分仿真电路
第六部分课程设计总结
本次单片机课程设计,在老师的指导和同学的帮助下顺利完成了。在设计过程中,从仿真电路的设计,源程序的书写和修改以及实物电路的焊接中都遇到了不少问题,但在我的努力下解决了,并且从中学到了不少知识。我在设计过程中还不断提出自己的疑点以及新的想法,联系实际应用,将课本上学习的东西运用到实际中,这些都令我们受益匪浅。
课程设计需要很大的耐心,尤其是遇到困难的时候,这也是对我们的考验。在设计过程中,我们遇到问题不是感到急躁,而是耐心地寻找解决的办法,与老师、同学进行交流讨论,寻求最佳的解决办法。
总之,在此次的课程设计中,我们不仅动手、动脑,也学会了不少东西,同时,谢谢对我的设计带来建议、意见和帮助的老师和同学们!
附录一实物图
下面是单片机仿真:
gms远程开锁的单片机源码:
- /*****************************************************************************
- 程序名: 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是否注册网络**********/
- int test_net_register;
- /********测试是否有电话打入**********/
- int test_have_call;
- /********GSM串口接收数据缓存**********/
- unsigned char GSM_receive[60];
- /********GSM串口接收计数器**********/
- unsigned char GSMDATA_count;
- /********号码缓存*******************/
- unsigned char number_get;
- unsigned char door;
- /********短信发送程序********/
- 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;
- //初始化状态
- 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");
- //测试是否已经开机
- while(test_boot==No)
- {
- Send_String("AT");
- Delay_Ms(1000);
- }
- //测试是否注册到网络
- 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;
- }
复制代码
请到本帖顶部下载.
作者: 头发乱了 时间: 2017-2-23 14:33
好厉害,写的很好很棒
作者: zhaok2013 时间: 2017-2-24 09:52
好棒,挺喜欢这类小制作!
作者: 唐!宋元明清 时间: 2017-4-16 22:42
请问大神,你这个是不是没有头文件
作者: joeq168 时间: 2017-4-22 19:44
这个地方很疑惑,到底接的是1.5还是2.7?因为程序里你分别将其设置了一次高电平和一次低电平。这样总感觉有点问题。而且1.5端口是专门写了一个头文件来调用的。
-
捕获.JPG
(50.28 KB, 下载次数: 114)
作者: joeq168 时间: 2017-4-23 10:33
明白了,1.5接的蜂鸣器。
作者: zqy181818 时间: 2017-4-23 12:31
很给力
作者: jamyg 时间: 2017-4-28 10:57
好强,值得一学
作者: 李易峰 时间: 2017-11-13 23:37
楼主你好,你的步进电机电路图和SIM900A的资料能分享一下吗?
作者: 2100598336 时间: 2017-11-26 16:59
好贴 学习一下
作者: hongmiao4552 时间: 2017-12-5 15:14
这是我大二的时候做的课程设计,不知道是谁把我的东西贴到这个论坛了!!!!!
作者: hongmiao4552 时间: 2017-12-5 15:16
很生气!!!,我的课程设计作品!!
作者: hongmiao4552 时间: 2017-12-5 15:17
还删我贴妈卖批
作者: hongmiao4552 时间: 2017-12-5 15:17
这是我的课程设计作品,被别人放到网上了
作者: vincentzhong 时间: 2018-4-22 16:06
谢谢分享!!!感激!!!
作者: pengyongnet 时间: 2018-6-30 09:24
下载不了希望能下载
作者: xsj1877578806 时间: 2018-7-29 10:19
很强,楼主很厉害
作者: lcy960 时间: 2018-8-28 13:08
下载不了希望能下载
我要继续学习
作者: Vence 时间: 2018-9-18 13:38
SIM900A的开机启动需要Power口高电平和低电平之间存在大于800ms的延迟,所以你可以看见一个高电平和一个低电平,中间还有一个延迟,作用就是开启Sim900模块。还有P1^5接的是蜂鸣器。
作者: 挖掘机在垃圾也 时间: 2018-9-18 14:35
前来学习,大神
作者: sheji 时间: 2020-5-30 10:36
需要号码位数验证吗?
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |