控制/MCU
要求:
设计一个电子密码锁
1.输入密码即可开锁,可删除信息,可通过输入123456789ABCDEF等字符
2.密码错误发出警报
3.用LCD1602显示相关信息
当输入正确时 D2会亮灯,表示输入正确
密码输入错误时蜂鸣器会发出警报
部分程序:
#include
typedef unsigned char u8;
typedef unsigned int u16;
//sbit 特殊功能位声明:声明某特殊功能寄存器中的一位
#define key P1 //按键io口
sbit fen=P3^0; //蜂鸣器io口
sbit rs=P3^1; //LCD控制口
sbit rw=P3^2;
sbit e=P3^3;
sbit led=P3^4; //LED灯io口
//bit 位变量声明:定义一个位变量的值
u8 keyz=17,j=0,biao1=0,a=10,b=10,c=10,d=10;
bit biao=0;
u16 zh;
u8 shu[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
u8 zi[]={"lnput password:"};
u8 num[]={"0123456789ABCDEF"};
void delay(u16 i){
while(i--);
}
/ 蜂鸣器 /
void Fen(u8 a,b) //蜂鸣器发声函数
{
u8 i,j;
for(i=0;i
{
for(j=0;j<100;j++)
{fen=~fen;delay(b);}
}
}
/ LCD /
void writecom(u8 com){ //LCD写指令
rs=0;
rw=0;
e=0;
P0=com;
delay(5);
e=1;
e=0;
}
void writedat(u8 dat){ //LCD写数据
rs=1;
rw=0;
e=0;
P0=dat;
delay(5);
e=1;
e=0;
}
void initlcd(){ //LCD初始化函数
writecom(0x38); //显示模式设置
writecom(0x0c);
writecom(0x06);
}
void xian(){ //LCD显示数字函数
writedat(num[keyz]);
if(a==10){a=keyz; } //对abcd,四位数的单独赋值
else if(b==10){b=keyz;}
else if(c==10){c=keyz;}
else{d=keyz;}
if(j!=3){j++;}biao=0;
}
/ 键盘 /
void Key(){u8 a=0; //矩形式键盘函数
if(key!=0x0f){delay(1000);
if(key!=0x0f){
key=0x0f;
switch(key){
case 0x07: keyz=0;biao=1;break;
case 0x0b: keyz=1;biao=1;break;
case 0x0d: keyz=2;biao=1;break;
case 0x0e: keyz=3;biao=1;break;
}
key=0xf0;
switch(key){
case 0x70: keyz=keyz;biao=1;break;
case 0xb0: keyz=keyz+4;biao=1;break;
case 0xd0: keyz=keyz+8;biao=1;break;
case 0xe0: keyz=keyz+12;biao=1;break;
}
}
全部0条评论
快来发表一下你的评论吧 !