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

2024-07-17 1062阅读

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

目录

摘要

仿真图

单片机系统流程图 

实物图

代码

系统论文

资源下载


摘要

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

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


仿真图


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

单片机系统流程图 


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

实物图


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

 实物图

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

 效果展示图

代码


/*****************************************************************************
程序名:	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\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
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]