基于单片机STC89C52和GSM实现的远程拨号开锁设计(含文档、源码与proteus仿真,以及系统详细介绍)

news2024/9/20 16:52:46

本篇文章论述的是基于单片机STC89C52和GSM实现的远程拨号开锁设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。

目录

摘要

仿真图

单片机系统流程图 

实物图

代码

系统论文

资源下载


摘要

本文介绍了一种基于单片机STC89C52和GSM模块实现的远程拨号开锁设计。该设计通过单片机控制锁的电路,并通过GSM模块实现与手机的通信。用户可以通过手机发送指定的短信命令来控制锁的开关。当收到开锁命令后,单片机会对锁的电路进行控制,从而实现远程开锁。本设计实现了智能化的远程控制,方便了用户的使用,并提高了安全性和便利性。通过实际测试,该设计稳定可靠,实用性较强。

关键词:STC89C52;单片机;远程拨号开锁


仿真图


单片机系统流程图 


实物图


 实物图

 效果展示图

代码


/*****************************************************************************
程序名:	GSM接听电话                             
*****************************************************************************/

#include <reg52.h>
#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\r\n");//指定信息的输入输出格式为文本格式
	Delay_Ms(100);
	
	Send_String("AT+CSMP=17,167,2,25\r\n");
	Delay_Ms(100);
	
	Send_String("AT+CSCS=\"UCS2\"\r\n");
	Delay_Ms(100);
	
	Send_String("AT+CMGS=\"00310033003200300038003000330038003000300035\"\r\n");
	Delay_Ms(100);
	
	Send_String("4E3B94F6007E95E85F004E86007E\r\n");
	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\r\n");
			Delay_Ms(1000);
		}
		//测试是否注册到网络
		while(test_net_register==No)
		{
			Send_String("AT+COPS?\r\n");
			Delay_Ms(1000);	
		}
		//等待电话打入
		Send_String("AT+CLIP=1\r\n");
		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=='\n')
		{
			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;
}

系统论文


Abstract

This article introduces a remote dialing and unlocking design based on the STC89C52 microcontroller and GSM module. This design controls the lock circuit through a microcontroller and communicates with the mobile phone through a GSM module. Users can control the lock switch by sending specified SMS commands through their mobile phones. After receiving the unlock command, the microcontroller will control the lock circuit to achieve remote unlocking. This design realizes intelligent remote control, which facilitates user use and improves security and convenience. Through actual testing, the design is stable, reliable, and highly practical.

Keywords: STC89C52; singlechip; Remote dialing unlocking

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输出高电平蜂鸣器不响,输出低电平蜂鸣器响。


资源下载


如果有需要这个系统的源码、仿真、论文等资源的可以私信我。感谢你的阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编教程1

本教程主要教大家如何使用vscode插件编写汇编语言&#xff0c;这样更方便&#xff0c;不用在32位虚拟机中编写汇编语言&#xff0c;后续的汇编实验代码都是使用vscode编写&#xff0c;话不多说&#xff0c;开始教学 安装vscode 如果已经安装过vscode&#xff0c;可以跳过这一…

Spring事务原理、Spring事务传播机制

Spring的EnableTransactionManagement 和Transactional原理 Configuration EnableTransactionManagement public class AppConfig { // 配置类内容 } Service public class MyService { Transactional public void processPayment(Payment payment) { // 这里是业…

聚焦 Navicat 17 新特性 | 数据字典提升数据结构清晰度

随着 Navicat 17 的发布&#xff0c;在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性&#xff0c;包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级&#xff0c;以及它如何原生适配国产 Linux ARM 平台和麒麟操作系统等&#xff0c;这些新特性实…

Maven学习——Maven的下载、安装与配置(详细攻略!)

目录 前言 1.下载与安装 2.配置Maven的环境变量 3.配置Maven的本地仓库 4. 配置Maven的镜像远程仓库 前言 我在之前写了一篇博客&#xff0c;是介绍Maven的基本概念和下载安装&#xff0c;但是由于篇幅过长&#xff0c;Maven的下载与安装写的并不详细&#x1f436;&#x…

redis删除策略和淘汰策略

1、redis的删除策略 Redis 是一种内存级数据库&#xff0c;数据都存在内存中&#xff0c;但是针对于已经过期的数据&#xff0c;reids 不 会立刻删除只是会存储在 expires 中&#xff0c;当执行删除策略的时候&#xff0c;才会从 expires 中寻找对应的数据存储的地址&#xff…

React@16.x(60)Redux@4.x(9)- 实现 applyMiddleware

目录 1&#xff0c;applyMiddleware 原理2&#xff0c;实现2.1&#xff0c;applyMiddleware2.1.1&#xff0c;compose 方法2.1.2&#xff0c;applyMiddleware 2.2&#xff0c;修改 createStore 接上篇文章&#xff1a;Redux中间件介绍。 1&#xff0c;applyMiddleware 原理 R…

二、GD32F407VET6使用定时器点灯

零、所需文件及环境&#xff1a; 1、第一章建立好的LED灯闪烁程序 2、编译环境MDK5(KEIL5) 3、一个GD32F407VET6硬件 4、一个下载器j-link 或 st-link等 5.代码编辑器 Notepad &#xff08;可以不要 用记事本也能编译 都是习惯的问题&#xff09; 壹、复制LED灯闪烁程序…

Spark的动态资源分配算法

文章目录 前言基于任务需求进行资源请求的整体过程资源申请的生成过程详解资源申请的生成过程的简单例子资源调度算法的代码解析 申请资源以后的处理&#xff1a;Executor的启动或者结束对于新启动的Container的处理对于结束的Container的处理 基于资源分配结果进行任务调度Pen…

【事件排查】网络问题排查H3C无线优化方案

目录 背景 问题一 排查思路 解决方法 问题二 排查思路 解决方法 背景 公司进行搬迁&#xff0c;网络进行了调整 基于上篇文章《H3C Intelligent Management Center无线认证新增设备如何配置》 来做了一些网络配置&#xff0c;公司后续出现以下2个问题&#xff1a; …

【大型实战】企业网络实验(华为核心交换、ESXI7.0vmware虚拟机、DHCP中继、服务端网络及用户端网络配置)

需求 实验 vmware网络配置&#xff08;企业内部一般为ESXI&#xff09; 这样服务器虚拟机使用192.168.200.X网段才能与用户侧互通 vmware虚拟机配置&#xff08;DHCP服务器网络配置&#xff09; 打开网络管理页面 nmtui重置一下网络连接&#xff08;重启网卡&#xff09; …

VUE3实现两张图片滑动对比效果实现

封装组件 <template><div id"bottomImg" class"bottomImg" :style"{ height: imgHeigth, width: imgWidth, backgroundImage: url( props.bottomImg ) }"><span class"imgLabel">{{ props.bottomLabel }}</sp…

Dify v0.6.14源码部署

一.前置条件 1.安装和配置poetry 通过Windows PowerShell安装poetry&#xff1a; (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -关于poetry相关配置参考文献[1]。 2.下载dify和启动中间件容器 克隆Dify v0.6.14代码&am…

Ubuntu/Kali简洁高效安装最新版的docker-compose

基于docker已安装的情况下&#xff0c;通过执行一下代码完成docker-compose的安装 sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep \"tag_name\": | sed …

Unity不用脚本实现点击按钮让另外一个物体隐藏

1.首先在场景中创建一个按钮和一个其他随便什么东西 2.点击按钮中的这个加号 3.然后将刚刚你创建的物体拖到这里来 4.然后依次点击下面这些给按钮绑定事件 5.运行游戏并点击按钮&#xff0c;就会发现拖进来的物体消失了 总结&#xff1a;如果按钮的功能单一&#xff0c;可以使用…

数据结构之线性表表示集合详解与示例(C,C#,C++)

文章目录 基本特征线性表的特点&#xff1a;线性表的表示方法&#xff1a;C、C#和C语言如何实现一个线性表表示集合1. C实现2. C#实现3. C实现 总结 线性表是计算机数据结构中的一个基本概念&#xff0c;它是一种最简单的抽象数据类型。在线性表中&#xff0c;数据元素之间的关…

相对定位语法:css+xpath基础语法使用-定位页面元素

文章目录 CSS相对定位获取元素关系定位顺序关系 XPath相对定位基础语法顺序关系-通过索引获取元素选取元素 总结 ✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来&#xff01; 编程真是一件很奇妙的东西。你只是浅尝辄止&#xff0c;那么只会觉得枯燥乏味&#xff0c…

图片压缩python

linux粘贴文本格式错乱&#xff1a; vi/vim :set paste然后再 insert &#xff0c;粘贴 centos安装pillow图像处理库&#xff1a; 引用&#xff1a;https://blog.csdn.net/newbieLCQ/article/details/125345335 linux赋予执行权限&#xff1a; # 创建文件 touch comperss.p…

docker快速安装(环境CentOS7)

1. 查看自己的Linux系统 cat /etc/redhat-release 2. 安装依赖插件 yum -y install gcc yum -y install gcc-c yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y insta…

uniapp开发钉钉小程序流程

下载开发工具 1、小程序开发工具 登录钉钉开发平台&#xff0c;根据自己的需求下载合适的版本&#xff0c;我这里下载的是Windows &#xff08;64位&#xff09;版本 小程序开发工具 - 钉钉开放平台 2、HBuilder X HBuilderX-高效极客技巧 新建项目及相关配置 新建项目 …

图示 JVM 可达性分析算法

可达性分析算法&#xff1a; 以 GC Roots 为起始点进行搜索&#xff0c;可达的对象都是存活的&#xff0c;不可达的对象可被回收。 Java 虚拟机使用该算法来判断对象是否可被回收&#xff0c;GC Roots 一般包含以下内容&#xff1a; 虚拟机栈中局部变量表中引用的对象本地方法栈…