单片机按键密码锁源代码单片机按键密码锁源代码
在这里和大家分享一个基于单片机按键密码锁的源代码。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define KeyPort P1
sbit Dula=P2^2; //段选
sbit Wela=P2^3; //位选
sbit Led =P2^0;
uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码
uchar code smg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码
uchar password[8];
uchar dis_smg[8];
bit Flag=0;
uchar KeyScan(void);
uchar KeyPro(void);
/**********************************************************************************
************************* 延 时 函 数 ******************************************
***********************************************************************************/
void delayus(uchar t)
{
while(--t);
}
void delayms(uchar t)
{
while(t--)
{
delayus(245);
delayus(245);
}
}
/**********************************************************************************
************************* 显 示 函 数 ******************************************
***********************************************************************************/
void Display(uchar Firstbit ,uchar Num)
{
static uchar i;
P0=0x00;
Dula=1;Dula=0;
P0=smg_we[i+Firstbit];
Wela=1;Wela=0;
P0=dis_smg[i];
Dula=1;Dula=0;
i++;
if(i==Num)
i=0;
}
/**********************************************************************************
*************************** 定时初始化 ******************************************
***********************************************************************************/
void Timer0_Init(void)
{
TMOD|=0X01;
TR0=1;
ET0=1;
EA=1;
}
/**********************************************************************************
************************* 设 置 密 码 ******************************************
***********************************************************************************/
void SetPassword(uchar KeyNum)
{
static uchar i=0;
uchar j,n;