//实例80:矩阵式键盘实现的电子密码锁
#include<reg51.h> //包含51单片机寄存器定义的头文件
sbit P14=P1^4; //将P14位定义为P1.4引脚
sbit P15=P1^5; //将P15位定义为P1.5引脚
sbit P16=P1^6; //将P16位定义为P1.6引脚
sbit P17=P1^7; //将P17位定义为P1.7引脚
sbit sound=P3^7; //将sound位定义为P3.7
unsigned char keyval; //储存按键值
/**************************************************************
函数功能:延时输出音频
**************************************************************/
void delay(void)
{
unsigned char i;
for(i=0;i<200;i++)
;
}
/**************************************************************
函数功能:软件延时子程序
**************************************************************/
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
{
unsigned char D[ ]={0,8,0,8,7,4,11}; //设定密码
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TMOD=0x01; //使用定时器T0的模式1
TH0=(65536-500)/256; //定时器T0的高8位赋初值
TL0=(65536-500)%256; //定时器T0的高8位赋初值
TR0=1; //启动定时器T0
keyval=0xff; //按键值初始化
while(keyval!=D[0]) //第一位密码输入不正确,等待
;
while(keyval!=D[1]) //第二位密码输入不正确,等待
;
while(keyval!=D[2]) //第三位密码输入不正确,等待
;
while(keyval!=D[3]) //第四位密码输入不正确,等待
;
while(keyval!=D[4]) //第五位密码输入不正确,等待
;
while(keyval!=D[5]) //第六位密码输入不正确,等待
;
while(keyval!=D[6]) //没有输入“OK”,等待
;
P3=0xfe; //P3.0引脚输出低电平,点亮LED
}
/**************************************************************
函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位
**************************************************************/
void time0_interserve(void) interrupt 1 using 1 //定时器T0的中断编号为1,使用第一组寄存器
{
unsigned char i;
TR0=0; //关闭定时器T0
P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”
if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下
delay20ms(); //延时一段时间、软件消抖
if((P1&0xf0)!=0xf0) //确实有键按下
{
P1=0xfe; //第一行置为低电平“0”(P1.0输出低电平“0”)
if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”
keyval=1; //可判断是S1键被按下
if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”
keyval=2; //可判断是S2键被按下
if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”
keyval=3; //可判断是S3键被按下
if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”
keyval=4; //可判断是S4键被按下
P1=0xfd; //第二行置为低电平“0”(P1.1输出低电平“0”)
if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”
keyval=5; //可判断是S5键被按下
if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”
keyval=6; //可判断是S6键被按下
if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”
keyval=7; //可判断是S7键被按下
if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”
keyval=8; //可判断是S8键被按下
P1=0xfb; //第三行置为低电平“0”(P1.2输出低电平“0”)
if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”
keyval=9; //可判断是S9键被按下
if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”
keyval=0; //可判断是S10键被按下
if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”
keyval=11; //可判断是S11键被按下
if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”
keyval=12; //可判断是S12键被按下
P1=0xf7; //第四行置为低电平“0”(P1.3输出低电平“0”)
if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”
keyval=13; //可判断是S13键被按下
if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”
keyval=14; //可判断是S14键被按下
if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”
keyval=15; //可判断是S15键被按下
if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”
keyval=16; //可判断是S16键被按下
for(i=0;i<200;i++) //让P3.7引脚电平不断取反输出音频
{
sound=0;
delay();
sound=1;
delay();
}
}
TR0=1; //开启定时器T0
TH0=(65536-500)/256; //定时器T0的高8位赋初值
TL0=(65536-500)%256; //定时器T0的高8位赋初值
}
温馨提示:内容为网友见解,仅供参考
如何用51单片机做出一个三位数的密码锁? - 知乎
基于51单片机密码锁设计,本文详细讲解如何实现一个三位数密码锁。设计功能包括:存有三个密码可开锁、通过按键输入与LCD1602显示信息、绿LED亮表示密码正确、红LED亮表示密码错误、连续输入错误三次锁定、密码可修改范围为0000-0255、串口传输显示操作信息。硬件设计中,使用AT89C52单片机作为核心。注意,不论选...
基于单片机的智能电子密码锁怎么做
keyval=0xff; \/\/按键值初始化 while(keyval!=D[0]) \/\/第一位密码输入不正确,等待 ;while(keyval!=D[1]) \/\/第二位密码输入不正确,等待 ;while(keyval!=D[2]) \/\/第三位密码输入不正确,等待 ;while(keyval!=D[3]) \/\/第四位密码输入不正确,等待 ;while(keyval!=D[...
基于单片机课程设计密码锁
用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可...
求问电子密码锁的具体详细工作原理!!!
智能密码锁的软件采用51系列单片机汇编语言编写,分别对智能监控器和电子锁具进行编程。软件设计采用模块化方法,便于阅读、调试和改进。通过在某型号保险柜上的安装使用,智能密码锁受到了用户的广泛好评。此外,稍作修改的智能密码锁还可构成智能化的分布式监控网络,实现集中式监控管理,具有广阔的应用前景。
基于单片机电子密码锁设计~
以前我在网上找到过密码锁的源代码,你可以找找。给你一个思路吧,先用7个端口做成3*4矩阵键盘,0~9 * #共12个键,另外用4个端口做红灯输出、绿灯输出、报警输出、开锁输出。*键为取消键,#键为确认键,密码可存入单片机的ROM中(不能改密码)或存入24CXX串行E2PROM(可改密码)。键盘处理方法...
求助:电子密码锁设计与制作
在图1所示电路中,P1口连接8个密码按键AN1~AN8,开锁 信号由P3.2输出,报警和提示音由P3.7输出。BL是用于报警与声音提示的喇叭,K是继电器控制电磁线圈。软件设计 图2给出了该单片机密码锁电路的软件流程图。图中�AA1~AA8以及START、SET、SAVE是程序中的标号,是为了理解程序而专门标...
基于单片机的电子密码锁设计
基于单片机的电子密码锁设计 设计一个由51单片机控制的电子密码锁,输入接口使用4×4键盘,输出接口使用6位7段数码管。单片机将输入的密码与设定的密码比较,若密码正确,则密码锁打开(绿色发光二极管亮一... 设计一个由51单片机控制的电子密码锁,输入接口使用4×4键盘,输出接口使用6位7段数码管。单片机将输入的密码与...
基于51单片机的密码锁程序是什么?
无输入时显示日历,温度,可进行调时设定,密码输入功能 51单片机系统版、ds1302时钟模块、4*4矩阵键盘、ds18b20温度传感器、12864液晶显示屏。这个设计构想其实老早就有了,由于快接近期末考试所以一直在构想中,等到考试完准备利用暑假的时候实现它。考试结束就去某宝购买器件,为了锻炼自己的焊接水平买了...
电子密码锁设计基于51单片机
html 单片机蓝牙密码锁系统 实现功能:1、 密码锁功能\/可以修改密码, 下次开机后新密码仍然有效 2、 支持一键恢复初始密码 3、 手机蓝牙可以实现输入密码进行开锁 4、 可进行功能定制 ☆已作出的实物优酷视频演示地址:http:\/\/v.youku.com\/v_show\/id_XMjgxNjQ0MjA4MA==.htm ...
求帮忙编一段 汇编语言,基于51单片机的密码锁,要求在下面。真心求帮忙啊...
;“F”键,将输入的4为密码与原始密码1234比较,如果正确相同则P0.0口接的继电器 ;工作灯亮。如果错误不相同,则恢复初始状态全显示0.;2.输入过程中,led会逐位‘-’,直到密码输入完成 ;3.密码正确以后,led显示open ;4.若要重新输入密码,按单片机复位键或者按键盘的“D”键即可重新输入 原理...