基于51单片机的简易密码锁设计
- 1.主要功能:
- 资料下载链接:
- 实物图:
- 2.仿真
- 3. 程序代码
- 4. 设计报告
- 5. 设计资料内容清单
【普中】基于51单片机的简易密码锁设计
( proteus仿真+程序+设计报告+讲解视频)
仿真图proteus8.16(有低版本)
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:P10
1.主要功能:
基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)
基于51单片机的简易密码锁设计数码管显示
以单片机为核心,设计一个六位电子密码锁。利用矩阵键盘输入密码,8位数码管显示输入的内容,要求如下:
1、初始状态数码管为熄灭状态,不显示内容,系统等待按键按下。
2、矩阵键盘按下,数码管按顺序显示被按下的按键数字,共六位。
3、每按下六次按键,系统判断一次密码。密码正确,数码管显示open,然后回到初始状态;密码错误,数码显示------,持续2秒,然后回到初始状态。
4、密码错误3次以上,禁止输入,如需再输入,需按下复位按键。
4、密码为六位,初始密码为000 000。
5、使用keil编程,proteus仿真调试,普中开发板完成实物演示。
(目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)
需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
资料下载链接:
P系列单片机设计下载链接(复制到浏览器打开)
https://docs.qq.com/doc/DS2pPenNRaHB6SlR1
以下为本设计资料展示图:
实物图:
2.仿真
开始仿真
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。
3. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。
#include<reg52.h>
完整代码在文章开头下载链接
#define uchar unsigned char
#define uint unsigned int
uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5=1,new6=1; //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp,num1;
uint tt=100;
uchar allow,wanbi,cwflag; //各个状态位
sbit beep=P1^7;
sbit jdq=P1^0;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, //数码管段码
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,
0x3f,0x73,0x79,0x37 //open
}; //
uchar code table[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; //数码管位选
void delay(unsigned int i) //延时
{
uint j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) //数码管显示
{
P0=0x00; //数码管关闭
P0=led[a]; //段选
P2=table[7]; //位选
delay(5); //延时
P0=0x00;
P0=led[b];
P2=table[6];
delay(5);
P0=0x00;
P0=led[c];
P2=table[5];
delay(5);
P0=0x00;
P0=led[d];
P2=table[4];
delay(5);
P0=0x00;
P0=led[e];
P2=table[3];
delay(5);
P0=0x00;
P0=led[f];
P2=table[2];
delay(5);
}
void delay_uint(uint i)//延时
{
while(i--);
}
uchar scan_key=0;
uchar Matrix_buttons_scan(){
uchar i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //检测有无按下
{
delay_uint(10000);
if(P1!=0x0f) //检测有无按下
{
switch(P1)//检测行
{
case 0x0e:i=3;break;
case 0x0d:i=2;break;
case 0x0b:i=1;break;
case 0x07:i=0;
}
P1=0xf0;
switch(P1)//检测列
{
case 0xe0:j=13;break;
case 0xd0:j=9;break;
case 0xb0:j=5;break;
case 0x70:j=1;
}
}
}
if(scan_key!=i+j)
{
scan_key=i+j;
return scan_key;
}else{
return 0;
}
}
//按键扫描子函数
void keyscan()
{
uchar i=0;
i=Matrix_buttons_scan();//按键检测
if(i==1)
{
key=0; //按键0定义
wei++; //输入位数+1
}else if(i==2)
{
key=1; //按键1定义
wei++; //输入位数+1
}else if(i==3)
{
key=2; //按键2定义
wei++; //输入位数+1
}else if(i==4)
{
key=3; //按键3定义
wei++; //输入位数+1
}else if(i==5)
{
key=4; //按键4定义
wei++; //输入位数+1
}else if(i==6)
{
key=5; //按键5定义
wei++; //输入位数+1
}else if(i==7)
{
key=6; //按键6定义
wei++; //输入位数+1
}else if(i==8)
{
key=7; //按键7定义
wei++; //输入位数+1
}else if(i==9)
{
key=8; //按键8定义
wei++; //输入位数+1
}else if(i==10)
{
key=9; //按键9定义
wei++; //输入位数+1
}
}
4. 设计报告
6198字设计报告,内容包括目录,硬件设计、软件设计、软硬件框图、调试、结论等
5. 设计资料内容清单
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、仿真图
2、程序源码注释
3、功能要求
4、开题报告
5、设计报告
6、软硬件流程框图
7、烧录工具
8、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
普中-2&普中-3&普中-4开发板原理图.pdf
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url