基于51单片机的取餐柜超市存包柜自助快递柜proteus仿真原理图程序

【单片机毕业设计】【mcuclub-jj-005】电子密码锁 | 智能锁 | 多功能锁 | 智能门锁 else if(flag_reset_password == 3) //重置密码模式3,再次输入新密码。else if(flag_reset_password == 1) //重置密码模式1。else if(flag_reset_password == 2) //重置密码模式2。 阅读详情

功能:
0.本项目采用STC89C52作为单片机系统的控制MCU
1.点击存入,LCD显示随机的4位密码,继电器短暂打开,表示开锁
2.点击取出,输入之前的4位密码,再点击确认,继电器短暂打开,表示开锁
3.本系统采用的是5V的电磁锁来模拟演示锁扣的开关状态,继电器通电后会自动弹开,人为合上。
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:
在这里插入图片描述

PCB :
在这里插入图片描述

主程序:

#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#include <string.h>
#include <absacc.h>
#include "lcd1602.h"
#include "main.h"
#include "key.h"

sbit LOCK = P1^2;		//代表锁控的继电器IO   高电平关锁,低电平开锁
sbit LED_RED = P1^0;	//代表密码输入错误的红灯IO  高电平熄灭,低电平点亮
sbit LED_GREEN = P1^1; //代表密码输入正确的绿灯IO  高电平熄灭,低电平点亮
sbit BUZZER = P3^7;
uchar genPasswd[4];					   //存储生成的四位随机数密码
uchar inpPasswd[4];					   //存储取包时输入的四位密码
uchar code welcome[8] = "welcome";	   //开机显示的欢迎标语
uchar code set[7] = "Passwd";		   //显示生成的密码标题
uchar code close[12] = "close door!";  //提示关门
uchar code input[13] = "input passwd"; //提示请输入密码

/****************定时器设置相关的变量***********************/
unsigned char TL0_temp;		   /*暂存TL0的初值*/
unsigned char TH0_temp;		   /*暂存TH0的初值*/
#define INT_CLOCK 10		   /*INT_CLOCK为定时值,单位为ms ,此处定义为10ms*/
#define CRY_FREQUENCY 11059200 /*CRY_FREQUENCY为晶振频率,单位为Hz*/

/*延时程序*/
void delay(uint z)
{
	unsigned int i, j;
	for (i = 0; i < z; i++)
		for (j = 0; j < 100; j++)
			;
}
/******************************
显示首页 welcome
******************************/
void display1()
{
	unsigned char i;
	for (i = 0; i < 7; i++)
	{
		wr_com(0x85 + i);
		wr_dat(welcome[i]);
	}
}

/************************************
显示密码生成界面
************************************/
void display2()
{
	unsigned char i;

	for (i = 0; i < 6; i++)
	{
		wr_com(0x85 + i);
		wr_dat(set[i]);
	}
	for (i = 0; i < 4; i++)
	{
		wr_com(0xc6 + i);
		wr_dat(genPasswd[i] + 0x30);
	}
}

/************************************
显示请关门界面
************************************/

void display3()
{
	unsigned char i;
	for (i = 0; i < 11; i++)
	{
		wr_com(0x83 + i);
		wr_dat(close[i]);
	}
}

/************************************
显示密码输入界面
************************************/
void display4()
{
	unsigned char i;
	for (i = 0; i < 12; i++)
	{
		wr_com(0x82 + i);
		wr_dat(input[i]);
	}
	for (i = 0; i < 4; i++)
	{
		wr_com(0xc6 + i);
		wr_dat(inpPasswd[i] + 0x30);
	}
}

/***********************************
定时器0初始化
***********************************/
void Timer0_init()
{
	unsigned long T0_temp;										 /*暂存T0的初始值	*/
	T0_temp = 65536 - ((INT_CLOCK * CRY_FREQUENCY / 1000) / 12); /*T0初始值计算公式,参考教科书*/
	TL0_temp = T0_temp & 0xff;
	TH0_temp = T0_temp >> 8;
	TL0 = TL0_temp;
	TH0 = TH0_temp;
	TMOD |= 0x01;
	TR0 = 1; /*开定时器0中断*/
	ET0 = 1;
	EA = 1; /*开总中断*/
}

/*主函数*/
uchar global_state = 0;
uchar count_num = 0; //输入的数字个数
void main()
{
	uchar i; 
	uchar j;
	uchar passwd;

	uchar key_value = 0;
	uchar temp_key_value = 0xff;
	LOCK = 1;	   //刚上电 锁是需要保持闭合
	Timer0_init(); //定时器初始化
	lcd_init();	   //LCD1602初始化

	while (1) //进入不断循环
	{
		temp_key_value = Calkey_scan(); //读取矩阵按键的键值
		if (temp_key_value != 0xff)
		{
			key_value = temp_key_value;
		}
		switch (global_state)
		{
		case 0:			//初始化状态
			display1(); //显示欢迎语句	-- "welcome"

			if (key_value == 13) //存包按键被按下
			{
				key_value = 0xff; //将按键值清除
				LOCK = 0;		  //开锁

				display3();					 //显示关门提示语	-- "close door!"
				delay(1900);				 //等待关门 大约3秒
				LOCK = 1;					 //关锁
				clear();					 //清屏,准备下一屏的显示
				global_state = 1;			 //切换运行状态
				passwd = TL0;				 //采用定时器寄存器的值作为密码
				genPasswd[0] = passwd / 100; //存储密码
				genPasswd[1] = passwd % 100 / 10;
				genPasswd[2] = passwd % 10;
				genPasswd[3] = (genPasswd[1] + genPasswd[2]) % 10;
			}
			if (key_value == 14) //取包按键被按下
			{
				key_value = 0xff;		//将按键值清除
				clear();				//清屏,准备下一屏的显示
				global_state = 2;		//切换运行状态
				count_num = 0;			//清除数字按键变量
				for (i = 0; i < 4; i++) //清空输入的密码数组
					inpPasswd[i] = ' ' - 0x30;
			}
			break;
		case 1:				  //密码生成状态
			display2();		  //显示密码生成界面
			delay(1900);	  //等待大约3秒
			global_state = 0; //返回到初始界面
			clear();		  //清屏,准备下一屏的显示

			break;
		case 2:										  //输入密码状态
			display4();								  //显示输入密码界面
			if ((key_value >= 0) && (key_value <= 9)) //如果按下的为0-9的数字按键
			{

				if (count_num <= 3) //如果按键次数小于4次
				{
					inpPasswd[count_num] = key_value; //将按键值存入数组,并显示
					count_num++;
				}
				key_value = 0xff; //将按键值清除
			}
			if (key_value == 15) //清除按键被按下
			{
				key_value = 0xff; //将按键值清除
				count_num = 0;
				for (i = 0; i < 4; i++)
					inpPasswd[i] = ' ' - 0x30; //清除刚刚输入的密码
			}
			if (key_value == 16) //确认按键被按下
			{
				key_value = 0xff; //将按键值清除
				for (i = 0; i < 4; i++)
				{
					if (inpPasswd[i] != genPasswd[i])
						break;
				}
				if (i == 4) //密码输入正确
				{
					LED_RED = 1;	  //红灯熄灭
					LED_GREEN = 0; //绿灯亮
					LOCK = 0;	  //开锁
					delay(1900);  //等待大约3秒
					LOCK = 1;	  //关锁
					LED_GREEN = 1; //绿灯熄灭
				}
				else //密码输入错误
				{

					for (j = 0; j < 200; j++)
					{
						BUZZER = ~BUZZER;
						delay(10);
						LED_RED = 0;	  //红灯亮
						LED_GREEN = 1; //绿灯熄灭
					}
					LOCK = 1;	 //关锁
					delay(1900); //等待大约3秒
					LED_RED = 1;	 //红灯熄灭
				}
				clear();		  //清屏,准备下一屏的显示
				global_state = 0; //返回到初始界面
			}
			break;
		}
	}
}

void T0_interrupt(void) interrupt 1
{
	TH0 += TH0_temp;
	TL0 += TL0_temp;
}

仿真演示视频:
https://www.bilibili.com/video/BV1FM411r7ro/

实物演示视频:
https://www.bilibili.com/video/BV1X44y1S7Vz/

毕业设计 基于51单片机的电子密码锁的设计 单片机是电子密码锁控制系统的核心控制器件,设计中选择了STC89C52单片机,这是一款可以完美的兼容传统的51 单片机,无论从功能上还是从结构上都可以进行完整的替换,而且这款单片机的性价比非常的高,单片机FLASH的大小为8K,可以存放程序。单片机功能简单,学起来非常的容易。硬件设计指的是和设计相关的硬件电路图的设计,因此硬件调试主要的功能就是设计的硬件电路图进行检查和功能调试,同时还包括硬件电路板焊接情况的调试,在硬件调试的过程中应用的最大的测量工具如电压表、电流表、示波器等检测设备。 阅读详情

相关推荐

基于51单片机的电子密码锁设计

​ 这个设计功能比较简单,也有些地方功能不全,后面更新,欢迎交流。

wan1234512的博客 1万+

基于单片机的指纹密码锁系统

基于单片机的指纹密码锁系统本设计开发了一款基于单片机的指纹识别电子密码锁系统。该系统以STM32f103C8T6单片机作为模块核心,通过控制AS608指纹模块实现录取指纹并存储指纹数据,并通过2864液晶显示录入和比对结果,辅以直流继电器与发光二极管模拟开锁的动作。本系统具有体积小、性价比高、传输速度快、适合家庭及单位使用。

咸鱼弟的博客 5477

基于89C52单片机密码锁的毕业设计

这是基于89C52单片密码锁的毕业设计 采用1602液晶显示屏显示 用矩阵键盘输入密码 有报警功能 还有proteus软件的仿真 还带有源程序 希望能帮上大家的忙

117、51单片机智能快递柜收取件存储柜快递箱自助存储柜(程序+原理图+PCB文件+Proteus仿真+参考论文+开题报告+任务书+器件清单等)

(1)有优异的性能价格比。(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性和抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。(3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。(4)低功耗、低电压,便于生产便携式产品。

ENGLISH_HHZ的专栏 4105

MCU 微控制器,在实际项目中如何选型(以 STM32为例)

1.MCU 选型需要考虑的一些因素 2.案例:传感器设备的 MCU 选型

创享 AIOT 的专栏 1万+

基于stc89c52单片机的密码锁制作

这一段的处理是对输入数字进行左移,并把输入个数限制在4个,而之所以选择4位,是因为LCD的数字显示最多到65535,超了会生成乱码。由于单片机弱上拉(也就是1的输出能力有限,而0的作用效果较好),所以即便按键按下,vcc直接到gnd(打个比方)也能够进行判断。若该列某个按键按下则通过行也为0,则可以通过行列的交叉判断出按键的位置。本人也是一枚新手小白,如文章中有错误,还请多多指教。创建一个.c文件,命名为MatrixKey.c。创建一个.c文件,LCD1602.c。最后,将文件烧录进单片机即可。

touchfishne的博客 1979

项目管理中 PMO 的关键职能解析

在企业数字化转型与战略落地的浪潮中,PMO(Project Management Office,项目管理办公室)逐渐从“项目辅助角色”升级为“组织级战略执行中枢”。然而,多数人对PMO的认知仍停留在“管项目的部门”或“文档审核机器”的层面。本文将打破误解,通过生活化类比(如“中枢神经”“导航系统”)、流程图解(战略对齐循环)、实际案例(制造企业PMO升级),深入解析PMO的五大核心职能:战略对齐、流程标准化、资源管理、绩效监控、知识沉淀。最终揭示PMO的本质——

项目管理的博客 1252

基于单片机快递柜的设计与实现

以51单片机作为主控系统;液晶显示当前信息,最多可存储几十个;按下存储按键液晶显示当前快递柜剩余数量;继电器打开,表示用来放物品;正次按下存储按键将取消存快递,继电器关闭快递柜可用数量减一;按下设置按键用来设置取件人号码;按下确定按键后发送4位随机验证码到用户手机进行提示并根据随机验证码进行取件操作;按下正确的取键后输入验证码继电器打开,5s后自动关闭;演示密码错误液晶显示error,输错号码后,按下“*”删除上一次输入信息;整个电路以5v供电;电路图。

best_do_it的博客 442

关于华为高斯数据库出现Invalid or unsupported by client SCRAM mechanisms定位解决的过程

最近公司有个新项目使用的是高斯数据库,因为我们的项目是直接从别的项目组拿来的,配置都是已经配好的,但是在放到正式环境上之后出现报错。起初我们以为是测试和正式的版本不一致,但是结果是版本一致的。最后这个问题搞了我们几个小时,都没法解决。

Curtisjia的博客 3185

Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)

在第一个脉冲期间,天线 1 通过天线 N-1 接收的杂波返回与第二个脉冲期间天线 2 通过天线 N 接收的杂波返回相同。该算法可能需要搜索角度和多普勒的所有组合来定位目标,但对于示例,由于确切知道目标的位置,因此可以将处理器定向到该点。然而,接收到的信号不仅包含来自目标的反射回波,还包含来自被照亮地表的回波。然而,由于干扰器的白噪声性质,接收到的干扰信号占据了整个多普勒频段。在以下部分中,您将模拟来自目标、杂波和干扰器的返回,并说明 STAP 技术如何过滤来自接收信号的干扰。假设元件间距是波形波长的一半。

珞瑜的博客 7135

【AT89C52单片机项目】数字密码锁设计

一套STC89C52RC开发板套件,包括STC89C52RC开发板,以及USB烧录线。优点:m*n个按键值需要一次反转(2次输入输出)就可以检测到结果,比行列扫面简单。2、可以每次都设置密码,也可以设置一次密码多次使用。输入密码“12345678”后,数码管显示open。输入其他密码后,数码管显示Err。1、有设置密码、开锁工作模式;本实验所需要的主要硬件电路介绍。使用单片机设计数字密码锁。3、列线输出上次读入的值。1、行线输出全为0;

xu_haiao的博客 3384

多测师肖sir_高级金牌讲师_数据库之存储练习题(8.13.1)

实验 一、 实验要求: 理解存储过程的概念 掌握存储过程的语法格式、使用方法 掌握存 储过程的创建、执行 二、实验前提: – drop table if exists student; – Create table student – (Id varchar(255), #学号 – Name varchar(255), #姓名 – Roomid varchar(255), #班级 – Sex char(1), #性别 – Degree varchar(3) );#成绩; Insert into stud

多测师肖sir的博客 706

51单片机开发实例 电子设计开发 基于52单片机的指纹密码锁

硬件系统功能稳定实现是离不开一个逻辑严谨的软件程序的,尤其是对于一些功能比较复杂的系统,设计开发一个严谨的、逻辑性强的软件程序是非常重要的,现如今单片机控制程序的开发基本都是使用Keil实现的,而且该软件经过数十年的升级优化,现在无论是从操作舒适度还是功能方面,都是有非常大的优势。控制器的软件程序开发语言支持汇编语言和C语言,通过汇编语言进行软件程序的开发,对设计者的硬件功底要求比较高,因此现在很多的设计者普遍采用相对来说比较高级的C语言进行硬件系统的软件程序开发。

XCHardware的博客 772

在Ubuntu上安装Node.js编程

在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。

CodeNexus的博客 3524

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

基于单片机的指纹密码锁双重加密设计

设计简介: 本设计是基于单片机的指纹密码锁双重加密设计,主要实现以下功能: LCD1602显示提示信息 具有指纹与密码双重加密(先确定指纹再确定相应指纹的密码) 步进电机与LED灯模拟开门关门 4*4矩阵按键进行添加指纹、输入密码、修改密码等操作 对指纹以及密码进行操作前需要先输入管理员密码 管理员密码只能程序修改 标签:51单片机、LCD1602、指纹模块、AT24C02 题目扩展:密码锁 指纹密码锁双重加密-实物设计 - 电子校园编号: CP-51-2021-035-SW 软件安装:

wfch0的博客 1009

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

基于51单片机超市快递寄存自动柜设计源程序

ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时。void Lcd1602_Delay1ms(uint c) //误差 0us。void one_data(uchar *str) //显示第一行数据。void two_data(uchar *str) //显示第一行数据。void LcdWriteData(uchar dat) //写入数据。void LcdWriteData(uchar dat) //写入数据。

bbxyliyang的博客 707

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

第一个STC89C52项目(密码锁)

这里可以用的语言有C,C++还有汇编,我用的是对于初学者比较友好的C语言。编译软件我用的是Keil uVision5,烧录用的是STC—ISP。

QinMou 1290

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【单片机毕业设计】【mcuclub-dz-184】基于STM32的智能快递柜的设计与实现

随着人们的网络消费水平的提高,快递作为其中的关键环节,发挥着关键作用,而快递柜的出现,降低了物流成本和人工成本,毫无疑问成为广大商家的不二之选,为了解决快递柜的智能化需求,本文基于STM32单片机设计一款智能快递柜监控系统,本设计通过DS18B20温度传感器检测快递柜柜内温度值;通过MQ-135监测快递柜内的有害气体浓度值;通过4个舵机模拟4个快递柜的打开和关闭;通过4*4矩阵键盘输入存入快递柜编号、存入8位取件码以及发送的手机号码,完成快递的存取操作;通过GSM模块发送快递滞留超时提醒;通过WIFI模块用

qq_40472627的博客 1317

基于STM32单片机智能快递柜储物柜扫码取件语音播报设计169

基于STM32单片机物联网智能家居储物柜快递柜扫码取件设计矩阵键盘输入舵机设计语音播报无线蓝牙/WiFi手机APP/视频监控快递员SNR6813语音识别169。

单片机设计开发 1417

107、基于51单片机智能快递柜收取件存储柜快递箱自助存储柜系统设计 (程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+设计资料+任务书+元器件清单等)

1.对于本设计快递包裹取件柜,利用单片机实现快递包裹取件柜的控制;当按下存储按键,后页面跳转可以输入手机号,完成后点击确定按键,则系统会通过GSM模块给手机号发送一条6位数验证码的短信。同时对应的存储的继电器会闭合模拟开门,一段时间后断开,对应的指示灯点亮,代表包裹已经存放。2.取物时,按下对应的取物按键,页面跳转到输入密码界面。此时输入,我们的6位验证码,若验证码正确则对应的继电器打开,一段时间后关闭,对应的指示灯会熄灭,代表取物成功,3.若验证码不正确,系统会进行报警提示。

2301_78172491的博客 1000

基于C语言STC89C52单片机电子密码锁的设计与仿真

<br />  arm完成较为简单, 功用较为完善, 用单片机控制的密码锁常运用汇编言语编写程序, 显示器少数用数码管。 便于修正和增减功用;同时采用显示清楚, 显示愈加直观, 采用STC89C52单片机设计出一种具有密码设置、报警和防止屡次试探密码功用的电子密码锁, 运用4×4矩阵键盘作为数据输出方式, 单片机通过密码逐个比较, 如果输出的6位密码和设定的密码完全相同, 那么能成功驱动开锁模仿灯将锁打开。 若输出6位密码与设定的密码不相同, 按下BESURE键后, 但是系统不允许有限次地按BACK键, 以

www.missun.info 谜尚missha 3832

113、51单片机的智能电子密码锁控制系统(程序+原理图+PCB文件+Proteus仿真+参考论文+开题报告+设计资料+焊接指导书+器件清单等)

(1)有优异的性能价格比。(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性和抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。(3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。(4)低功耗、低电压,便于生产便携式产品。

ENGLISH_HHZ的专栏 1709

基于单片机四位单片机液晶显示密码锁

*单片机设计介绍,基于单片机四位单片机液晶显示密码锁。

QQ2193276455的博客 1243
上一篇: 基于STM32单片机智能车位锁桩设计原理图程序
下一篇: 基于51单片机的空气质量环境检测proteus仿真原理图程序
极寒钛科技
博客等级 码龄7年 842粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值