基于单片机STC89C52和GSM实现的远程拨号开锁设计(含文档、源码与proteus仿真,以及系统详细介绍)
本篇文章论述的是基于单片机STC89C52和GSM实现的远程拨号开锁设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。
目录
摘要
仿真图
单片机系统流程图
实物图
代码
系统论文
资源下载
摘要
本文介绍了一种基于单片机STC89C52和GSM模块实现的远程拨号开锁设计。该设计通过单片机控制锁的电路,并通过GSM模块实现与手机的通信。用户可以通过手机发送指定的短信命令来控制锁的开关。当收到开锁命令后,单片机会对锁的电路进行控制,从而实现远程开锁。本设计实现了智能化的远程控制,方便了用户的使用,并提高了安全性和便利性。通过实际测试,该设计稳定可靠,实用性较强。
关键词:STC89C52;单片机;远程拨号开锁
仿真图
单片机系统流程图
实物图
实物图
效果展示图
代码
/***************************************************************************** 程序名: 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
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。