51单片机制作简易密码锁

这篇具有很好参考价值的文章主要介绍了51单片机制作简易密码锁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机期末考试设计题目

设计要求:

设计具有16个按键和1个数码管显示的密码锁,具体要求: 输入一位密码(为0~9,A~F之间的数字),密码输入正确显示“F”并将锁打开;否则显示“E”,继续保持锁定状态。

基本要求:

密码锁的基本功能如下:16个按键,分别代表数字0、1、2......9和英文字符A~F;密码在程序中事先设定为:“8”;系统上电时,数码管显示“-”,表示等待密码输入;密码输入正确时显示字符“F”约3s,并通过P3.0端口将锁打开;否则显示字符“E”约3s,继续保持锁定状态。

原理图设计如下:

51单片机制作简易密码锁

 程序设计如下:

#include "regx52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

#define GPIO_DIG P0   //数码管
#define GPIO_KEY P3		//按键
 

u8 KeyValue,mark;	//KeyValue用来存放读取到的键值,mark用来存取按键按下标志位

u8 code smgduan[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//显示0~F的值

/*******************************************************************************
* 函 数 名         : Delay
* 函数功能		   : 延时xms个1ms时间
***+****************************************************************************/
void Delay(u16 xms)
{
	u8 i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

/*******************************************************************************
* 函 数 名         : KeyDown
* 函数功能		   : 按键检测并返回键值
***+****************************************************************************/
void KeyDown(void)
{
	char a=0;
	GPIO_KEY=0x0f;
	if(GPIO_KEY!=0x0f)//读取按键是否按下
	{
		Delay(10);//延时10ms进行消抖
		if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
		{	
			mark=1;
			//测试列
			GPIO_KEY=0X0F;			//逐列
			switch(GPIO_KEY)
			{
				case(0X07):	KeyValue=0;break;				//左1列
				case(0X0b):	KeyValue=1;break;				//  2
				case(0X0d): KeyValue=2;break;				//	3
				case(0X0e):	KeyValue=3;break;				//	4
			}
			//测试行
			GPIO_KEY=0XF0;			//逐行
			switch(GPIO_KEY)
			{
				case(0X70):	KeyValue=KeyValue;break;     //	第一行
				case(0Xb0):	KeyValue=KeyValue+4;break;		//   2
				case(0Xd0): KeyValue=KeyValue+8;break;		//   3
				case(0Xe0):	KeyValue=KeyValue+12;break;		//	4
			}
			
		}
	}
	while((a<10)&&(GPIO_KEY!=0xf0))	 //检测按键松手检测
	{
		Delay(1);
		a++;
	}
}

/*******************************************************************************
* 函 数 名     : main

* 函数功能		   : 无按键按下显示默认值-,当按键按下显示键值,
									如果正确显示F并亮led灯,错误显示E,各阶段延时1秒钟。
***+****************************************************************************/
void main()
{	
	while(1)
	{	
		KeyDown();		   //按键判断函数
		P0=0xbf;		//初始值 -
		if(mark==1)	//如果按键按下
		{
			if(KeyValue==8)
			{
				GPIO_DIG=smgduan[KeyValue];
				Delay(1000);
				GPIO_DIG=smgduan[15];
				P2_1=0;
				Delay(1000);
				P2_1=1;
				mark=0;
			}
			else
			{
				GPIO_DIG=smgduan[KeyValue];
				Delay(1000);
				GPIO_DIG=smgduan[14];
				Delay(1000);
				mark=0;
			}	
		}
	}		
}

注意事项:

1.原理图的矩阵按键,引脚不用接错了,引脚接错那扫描结果就不一样,而且容易出现乱码的情况。

2.如果密码正确和密码错误需要显示的不是E,F,自己可以在段码表加在后面你想要的段码值,自己二进制转16进制计算咯,然后让数码管显示【你那个段码值】。

3.还有啥了,大概其实也没有什么写的应该比较简单易懂,而且可移植性很强,比如按键扫描函数,你以后需要用到矩阵按键,(噢,这个矩阵按键接线方法都和单片机开发板的一样)完全可以照搬,你只要知道怎么用就可以了。至于他的扫描方式,那注释也比较清楚,洒洒水了。

4.我这里有一整套的,程序+原理图+实验报告,需要可以私信,绝得可以,打赏一点也可以的。文章来源地址https://www.toymoban.com/news/detail-507745.html

到了这里,关于51单片机制作简易密码锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机-电子密码锁

    实物演示效果: https://www.bilibili.com/video/BV1xh4y1K7uV/?vd_source=6ff7cd03af95cd504b60511ef9373a1d 电子密码锁的主要功能 1.按键设置6位密码,输入密码若密码正确,则锁打开。显示open! 2.密码可以自己修改(6位密码),必须是锁打开时才能改密。为防止误操作,修改密码得输入两次。

    2024年01月17日
    浏览(44)
  • 51单片机“密码锁”代码详解

    注:此代码一经过验证,读者不必怀疑其正确性,如果烧录进去没有反应,请自行检查引脚端口配置,以及仔细分析代码实现原理。倘若能静下心来分析代码,一定能受益匪浅。 废话不多说,,直接上代码。如有问题,请下方评论并私信我,收到后一定及时回复!     功能

    2024年02月08日
    浏览(51)
  • 51单片机实现矩阵键盘密码锁

    使用51单片机的矩阵键盘模块以及led1602显示屏,实现模拟密码锁。 当程序烧录到单片机中后,led1602屏幕会显示文字。 第一行会显示单词“PASSWORD”,第二行显示4个0,表示我们要写入的四位密码,每位默认为0。 矩阵键盘前两行与第三行的前两个分别代表输入1-9与0,第三行第

    2024年02月03日
    浏览(55)
  • 基于51单片机的密码锁设计

    电子密码锁设计,以AT89C51为主控,晶振电路和复位电路共同组成最小系统,使得单片机可以正常运行。矩阵按键作为输入模块,输入密码,LCD1602作为显示设备,显示输入的密码和提示语句,AT24C02作为EEPROM存储器,使用LED模拟“锁”,表示锁的开启和关闭状态。系统掉电后,

    2024年02月11日
    浏览(57)
  • 基于51单片机的电子密码锁

    主要功能: 1、6位密码开锁 可以修改用户密码和管理员密码 断电记忆 3次错误报警锁住键盘

    2024年02月11日
    浏览(45)
  • C51单片机密码锁课程设计

    提示:文章写完后,目录可以自动加粗样式生成,如何生成可参考右边的帮助文档 微机原理及单片机应用技术的课程设计,C51设计一个密码锁; 要求:键盘上有0-9个数字按键,功能键:确认和取消等,可设置复合键。密码的位数及密码可以任意设定,,当输入数字和设置的密

    2023年04月10日
    浏览(50)
  • 基于51单片机的电子密码锁设计

    一.硬件方案         本系统由STC89C52单片机、4*4矩阵键盘,蜂鸣器,复位电路和晶振电路、继电器等组成,4*4键盘主要用于密码的输入和修改,蜂鸣器报警,复位电路和晶振电路与STC89C52单片机组成单片机最小系统。它具有设置、修改6位用户密码、输错报警、密码错误报

    2024年02月16日
    浏览(43)
  • 51单片机学习--矩阵键盘、电子密码锁

    矩阵键盘的模块原理图: 功能:按下矩阵按键,在LCD上显示对应的数值。 采用模块化编程,在此只给出MatrixKey.c 和 main.c 两部分代码 这里要注意必须先判断KeyNum是否为0,否则while不断循环会不断显示0,导致看不到按下按钮显示的数字 要利用写好的矩阵键盘来制作一个密码锁

    2024年02月16日
    浏览(50)
  • (含代码)基于51单片机电子密码锁设计

    一.硬件说明 采用STC89C51作为主控芯片,结合矩阵按键输入模块、数码管显示模块、LCD1602液晶显示、LED、蜂鸣器报警器等电路模块实现开锁、上锁、报警、密码更改等功能,设计一款可修改密码且具有报警功能的液晶显示电子密码锁。 主要由STM32单片机+最小系统+LCD1602液晶显

    2024年01月16日
    浏览(47)
  • 【Proteus仿真】【51单片机】电子密码锁设计

    本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶、矩阵按键、蜂鸣器、EEPROM模块、继电器模块等。 系统运行后,LCD1602显示密码输入提示界面,系统存储在EEPROM的初始密码为123456, 用户可通过矩阵按键S1-S10输入数值0-9,当在密码输入过程中有误,可按S11键回删并重新输

    2024年02月13日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包