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

07-17 1059阅读

本篇文章论述的是基于单片机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购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]