基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统

这篇具有很好参考价值的文章主要介绍了基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、系统方案
本设计采用52单片机作为主控器,GSM模块,液晶1602显示,矩阵键盘输入,蜂鸣器报警。
基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统,51单片机,智能手机,嵌入式硬件

二、硬件设计
原理图如下:
基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统,51单片机,智能手机,嵌入式硬件

三、单片机软件设计
1、首先是系统初始化
/*******************************************************************************

  • 函 数 名 : LcdInit()
  • 函数功能 : 初始化LCD屏
  • 输 入 : 无
  • 输 出 : 无
    *******************************************************************************/
    #ifndef LCD1602_4PINS
    void LcdInit() //LCD初始化子程序
    {
    LcdWriteCom(0x38); //开显示
    LcdWriteCom(0x0c); //开显示不显示光标
    LcdWriteCom(0x06); //写一个指针加1
    LcdWriteCom(0x01); //清屏
    LcdWriteCom(0x80); //设置数据指针起点
    }
    #else
    void LcdInit() //LCD初始化子程序
    {
    LcdWriteCom(0x32); //将8位总线转为4位总线
    LcdWriteCom(0x28); //在四位线下的初始化
    LcdWriteCom(0x0c); //开显示不显示光标
    LcdWriteCom(0x06); //写一个指针加1
    LcdWriteCom(0x01); //清屏
    LcdWriteCom(0x80); //设置数据指针起点
    }
    #endif

2、液晶显示程序

/*******************************************************************************

  • 函 数 名 : LcdWriteCom

  • 函数功能 : 向LCD写入一个字节的命令

  • 输 入 : com

  • 输 出 : 无
    *******************************************************************************/
    #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
    void LcdWriteCom(uchar com) //写入命令
    {
    LCD1602_E = 0; //使能
    LCD1602_RS = 0; //选择发送命令
    LCD1602_RW = 0; //选择写入

    LCD1602_DATAPINS = com; //放入命令
    Lcd1602_Delay1ms(1); //等待数据稳定

    LCD1602_E = 1; //写入时序
    Lcd1602_Delay1ms(5); //保持时间
    LCD1602_E = 0;
    }
    #else
    void LcdWriteCom(uchar com) //写入命令
    {
    LCD1602_E = 0; //使能清零
    LCD1602_RS = 0; //选择写入命令
    LCD1602_RW = 0; //选择写入

    LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1; //写入时序
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;

// Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);

LCD1602_E = 1;	 //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;

}
#endif
/*******************************************************************************

  • 函 数 名 : LcdWriteData

  • 函数功能 : 向LCD写入一个字节的数据

  • 输 入 : dat

  • 输 出 : 无
    *******************************************************************************/
    #ifndef LCD1602_4PINS
    void LcdWriteData(uchar dat) //写入数据
    {
    LCD1602_E = 0; //使能清零
    LCD1602_RS = 1; //选择输入数据
    LCD1602_RW = 0; //选择写入

    LCD1602_DATAPINS = dat; //写入数据
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1; //写入时序
    Lcd1602_Delay1ms(5); //保持时间
    LCD1602_E = 0;
    }
    #else
    void LcdWriteData(uchar dat) //写入数据
    {
    LCD1602_E = 0; //使能清零
    LCD1602_RS = 1; //选择写入数据
    LCD1602_RW = 0; //选择写入

    LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1; //写入时序
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;

    LCD1602_DATAPINS = dat << 4; //写入低四位
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1; //写入时序
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;
    }
    #endif
    3、按键程序

void KeyDown()
{
char a = 0;
GPIO_KEY=0x0f;

while(1)
{

	if(GPIO_KEY!=0x0f)//读取按键是否按下
	{		
		Delay10ms(1);//延时10ms进行消抖
		if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
		{		
			//测试列
			GPIO_KEY=0X0F;
			switch(GPIO_KEY)
			{
				case(0X07):	KeyValue=0;break;
				case(0X0b):	KeyValue=4;break;
				case(0X0d): KeyValue=8;break;
				case(0X0e):	KeyValue=12;break;
			}
			//测试行
			GPIO_KEY=0XF0;
			switch(GPIO_KEY)
			{
				case(0X70):	KeyValue=KeyValue+3;break;
				case(0Xb0):	KeyValue=KeyValue+2;break;
				case(0Xd0): KeyValue=KeyValue+1;break;
				case(0Xe0):	KeyValue=KeyValue;break;
			}
				
				while((a<50) && (GPIO_KEY!=0xf0))	 //检测按键松手检测
				{
					BEEP = 0;

					Delay10ms(1);
					a++;
				}

				switch(KeyValue)
				{	
				case 0:	 num = 10;
					break;
				case 1:	 num = 7;
					break;
				case 2:	 num = 4;
					break;
				case 3:	 num = 1;
					break;
				case 4:	 num = 0;
					break;
				case 5:	 num = 8;	
					break;		 	
				case 6:	 num = 5;
					break;
				case 7:	 num = 2;
					break;
				case 8:	 num = 11;
					break;
				case 9:	 num = 9;
					break;
				case 10: num = 6;
					break;
				case 11: num = 3;
					break;
				case 12: num = 15;
					break;
				case 13: num = 14;
					break;
				case 14: num = 13;
					break;
				case 15: num = 12;
					break;
				}				    
				BEEP = 1;
				break;				
		}
	}
}

}

4、核心算法程序
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
TH1=0XFd; //计数器初始值设置,注意波特率是9600的
TL1=0XFd; //11.0592晶振
// PCON=0X80; //波特率加倍
// TH1=0XF3; //计数器初始值设置,注意波特率是4800的
// TL1=0XF3; //12.0000晶振
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
//串行口连续发送char型数组,遇到终止号/0将停止
void Uart1Sends(uchar *str)
{
while(*str!=‘\0’)
{
SBUF=*str;
while(!TI);//等待发送完成信号(TI=1)出现
TI=0;
str++;
}
}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统,51单片机,智能手机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-709112.html

到了这里,关于基于51单片机超市快递寄存自动柜 GSM远程密码手机验证码系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机的特殊功能寄存器(SFR)

    阅读前提醒: 文中提到的8051指的是8051微控制器,即51单片机 在上一篇文章51单片机的存储结构中,提到8051微控制器的RAM被划分为通用寄存器、按位寻址寄存器、寄存器组、以及特殊功能寄存器。 这里讲一下特殊功能寄存器(SFR)。 8051的特殊功能寄存器用于控制各种外围硬

    2023年04月13日
    浏览(64)
  • 【C51】基于51单片机的自动输液监控系统设计与实现

      随着科技进步,我国的医疗设施不断完善,逐渐达到现代化水平。在当今的医疗环境下,病患更关心自己是否能够及时进行有效的治疗,医护人员对患者进行输液过程的全程监控。医生治疗的效果明显提高,不仅节约大量的时间,同时能够接受大量需要治疗的患者。自动输

    2024年02月04日
    浏览(33)
  • 【51单片机】利用【与或赋值法】优化【配置TMOD寄存器】

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本文是YY入门【【51单片机】从零开始手把手带你【查手册】配置定时器,并完成小项目(定时器&中断的应用)(代码演示&单片机现象对照LCD闪烁)】配合博客的其中一部分,

    2024年02月19日
    浏览(29)
  • 63、基于51单片机红外遥控人体感应自动门控制系统设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、Protues仿真 七、程序 部分代码 八、资料包括 伴随着电气技术的发展,电气控制控制技术已经成熟,针对电子自动门进行研究。基于8051内核的单片

    2024年02月03日
    浏览(32)
  • 35、基于51单片机自动灭火避障智能小车 消防灭火小车系统设计

    智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车, 以 STC89C 52单片机作为微控制器,设计出一种 可以寻

    2024年02月03日
    浏览(36)
  • 基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

    wx供重浩:创享日记 对话框发送:单片机浇花 获取完整源码源文件+仿真源文件+原理图源文件+论文报告等 单片机土壤湿度检测及自动浇花系统仿真(带时间显示) 具体功能: (1)液晶第一行显示实际湿度,液晶第二行显示当前时间; (2)按键说明:减键、加键、设置键。

    2024年02月05日
    浏览(41)
  • 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码

    目录 1. 串口通信原理 2. 51单片机串口通信  2.1 串口简要模式图  2.2 相关寄存器 (1)PCON、SCON、SBUF (2)IE、IPH、IP (3)配置T1定时器 2.3 波特率和系统时钟和TH1和TL1计算  3.串口通信简单收发使用代码   3.1 在STC-isp使用端口助手,从单片机发送字节  3.2 通过端口助手利用主

    2024年02月05日
    浏览(36)
  • 单片机毕设 基于单片机的智能快递柜设计与实现

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能快递柜设计与实现 大家可用于 课程设计 或 毕业设计 🧿 毕设项目分享:见文末! 一般来说,传统快递服务方式是人对人,即快递员进行揽件派送,与签收人进行面对面签收,确认无误后服务终

    2024年04月09日
    浏览(42)
  • 16、基于51单片机智能浇花自动浇水灌溉土壤湿度检测报警系统设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图   五、PCB图 六、Proteus仿真 七、程序源码 八、资料包括 本次盆栽植物自动浇灌系统,系统是用AT89C51单片机作为控制中心,使用YL-69作为土壤湿度传感模块,LC

    2024年02月06日
    浏览(31)
  • 基于单片机快递柜的设计与实现

       功能介绍 以51单片机作为主控系统; 液晶显示当前信息,最多可存储几十个; 按下存储按键液晶显示当前快递柜剩余数量; 继电器打开,表示用来放物品; 正次按下存储按键将取消存快递,继电器关闭快递柜可用数量减一; 按下设置按键用来设置取件人号码; 按下确

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包