一.硬件方案
本设计基于STC89C52单片机的快递货柜模拟设计GSM短信发送验证码。该装置主要由单片机、电源模块、继电器电路、LED灯光报警模块、控制模块、GSM模块、键盘模块、LCD显示模块、机械开关等组成,借助成熟的GSM移动网络,当货物柜检测到快递的存在,会自动发送验证码给用户手机上,真正实现了远距离、高效率传递信息。
主要由51单片机+LCD1602液晶+GSM模块+按键+继电器设计而成;如图:
二.设计功能
(1)采用LCD1602液晶显示当前快递柜的状态。
(2)有数字按键(0-6)可以输入短信验证码,进行开柜。
(3)快递员将货物存入柜子中,可以通过GSM模块向指定人发送随机的验证码。
(4)验证码成功打开柜子之后失效。
所有资料:
三.设计原理图
原理图主要采用AD软件进行设计,如图:
四.软件设计
主程序源码
void main (void)
{
unsigned char i;
Init_Timer0(); //定时器0初始化
UART_Init();
P1=0xff;
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear();
sprintf(displaytemp,"AutomaticMachine");//打印输入界面
LCD_Write_String(0,0,displaytemp);//显示第一行
sprintf(displaytemp,"____ pass word ");//打印输入值 提示电机确定
LCD_Write_String(0,1,displaytemp);//显示第二行
LED=0;
for(i=0;i<20;i++) //短暂延时gsm稳定
{DelayMs(50);}
// SendStr("ready ok!",9);
RELAY=1;
LED=1;
while(1) //主循环
{
KeyScanDeal();
if(KEYFAS==0) //按键按下
{
DelayMs(20); //消除抖动
if(KEYFAS==0)
{
while(KEYFAS==0); //按键送掉发送验证码
SendMsg=TRUE; //发送消息置位
}
}
if(SendMsg==TRUE)
{
LED=0;
SendMsg=FALSE; //发送消息置位取消
SendStr("AT+CMGF=1\r\n",11); //设置字符
for(i=0;i<20;i++) //延时
{DelayMs(50);}
SendStr("AT+CSCS=\"GSM\"\r\n",15); //设置gsm格式
for(i=0;i<20;i++) //延时
{DelayMs(50);}
SendStr("AT+CMGS=\"+8618799697649\"\r\n",26);//此处可修改信息接收手机的号码 第一个手机号
for(i=0;i<2;i++) //延时
{DelayMs(50);}
SendStr("The PW :",8); //此处可修改信息,9代表字节数
if(PwCount==0)
{remempw[0]=pw01[0];remempw[1]=pw01[1];remempw[2]=pw01[2];remempw[3]=pw01[3];} //记录发送出去的号码
else if(PwCount==1)
{remempw[0]=pw02[0];remempw[1]=pw02[1];remempw[2]=pw02[2];remempw[3]=pw02[3];} //记录发送出去的号码
else if(PwCount==2)
{remempw[0]=pw03[0];remempw[1]=pw03[1];remempw[2]=pw03[2];remempw[3]=pw03[3];} //记录发送出去的号码
else if(PwCount==3)
{remempw[0]=pw04[0];remempw[1]=pw04[1];remempw[2]=pw04[2];remempw[3]=pw04[3];} //记录发送出去的号码
else if(PwCount==4)
{remempw[0]=pw05[0];remempw[1]=pw05[1];remempw[2]=pw05[2];remempw[3]=pw05[3];} //记录发送出去的号码
else if(PwCount==5)
{remempw[0]=pw06[0];remempw[1]=pw06[1];remempw[2]=pw06[2];remempw[3]=pw06[3];} //记录发送出去的号码
else if(PwCount==6)
{remempw[0]=pw07[0];remempw[1]=pw07[1];remempw[2]=pw07[2];remempw[3]=pw07[3];} //记录发送出去的号码
SendStr(remempw,4);
for(i=0;i<2;i++) //延时
{DelayMs(50);}
SendByte(0x1a);
for(i=0;i<20;i++) //延时
{DelayMs(50);}
// SendStr("AT+CMGS=\"+8618119677903\"\r\n",26);//此处可修改信息接收手机的号码 第二个手机号
// for(i=0;i<2;i++) //延时
// {DelayMs(50);}
// SendStr("The PW :",8); //此处可修改信息,9代表字节数
// SendStr(remempw,4);
// for(i=0;i<2;i++) //延时
// {DelayMs(50);}
// SendByte(0x1a);
// for(i=0;i<20;i++) //延时
// {DelayMs(50);}
LED=1;
}
}
}
全套资料下载链接: