国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
51單片機(jī)電子密碼鎖程序 3x3矩陣按鍵Proteus仿真
[打印本頁(yè)]
作者:
eng
時(shí)間:
2021-6-25 02:47
標(biāo)題:
51單片機(jī)電子密碼鎖程序 3x3矩陣按鍵Proteus仿真
3*3矩陣按鍵 繼電器控制密碼正確與錯(cuò)誤
兩個(gè)LED燈顯示報(bào)警和密碼正確
LCD1602顯示屏顯示密碼
仿真原理圖如下(proteus仿真工程文件和完整單片機(jī)c源碼可到本帖附件中下載)
1.gif
(140.19 KB)
下載附件
2021-6-25 02:45 上傳
部分源碼:完整源碼見附件
include<reg51.h>
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,flag,r;
uchar code table1[]="welcome! ";
uchar code table2[]="enter password";
uchar code table3[]="012345";
uchar code table4[]="code is wrong!";
uchar code table5[]="you are right!";
uchar code table6[]="the second time!";
uchar code table7[]="the last time!";
uchar code table8[]="Input new code:";
uchar code table9[]="calling.....";
uchar code table10[]="password";
uchar code table11[]=" ";
uchar code table12[]="Modify right!!!";
uchar code table13[]="Input again:";
uchar code table14[]="Modify error!!!";
uchar init_pswd[4]={2,3,0,5};
uchar pswd[4]={0};
sbit lcdrs=P2^0; //LCD數(shù)據(jù)/指令(H/L)選擇端
sbit lcdrw=P2^1;
sbit lcden=P2^2; //LCD使能
sbit P1_6=P1^6;
sbit P2_6=P2^6;//報(bào)警指示燈
sbit P2_7=P2^7;
sbit P3_7=P3^7; //蜂鳴器
/****************子函數(shù)聲明*/
void delay(uint z);
void init();//初始化子函數(shù)
void write_com(uchar com);//寫指令子函數(shù)
void write_data(uchar dat1);//寫數(shù)據(jù)子函數(shù)
uint keyscan();
void mima();//密碼處理子函數(shù)
void mima1();//修改密碼函數(shù)
void Alarm(uchar t);//報(bào)警函數(shù)
/***************液晶驅(qū)動(dòng)*/
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat1)
{
lcdrs=1;
lcdrw=0;
P0=dat1;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void delay(uint z) //延時(shí)子函數(shù) z*1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint keyscan() //鍵盤掃描程序
{
P1=0xfe; //先選定第一行
temp=P1;
temp=temp&0xf8; //列線全為1,行線為0
while(temp!=0xf8)
{
delay(15); //延時(shí)去抖
temp=P1;
temp=temp&0xf8;
while(temp!=0xf8)
{
temp=P1;
switch(temp) //判斷哪列按下
{
case 0xf6:num=0;flag=1;break;//第一列按下
case 0xee:num=1;flag=1;break;//第二列按下
case 0xde:num=2;flag=1;break;//第三列按下
}
while(temp!=0xf8)
{
temp=P1;
temp=temp&0xf8;
}
}
}
P1=0xfd; //選定第二行,列線為1
temp=P1;
temp=temp&0xf8;
while(temp!=0xf8)
{
delay(15);
temp=P1;
temp=temp&0xf8;
while(temp!=0xf8)
{
temp=P1;
switch(temp) //判斷哪列按下
{
case 0xf5:num=3;flag=1;//第一列按下
break;
case 0xed:num=4;flag=1;//第二列按下
break;
case 0xdd:num=5;flag=1;//第三列按下
break;
}
while(temp!=0xf8)
{
temp=P1;
temp=temp&0xf8;
……………………
…………限于本文篇幅 余下代碼請(qǐng)下載附件…………
復(fù)制代碼
完整單片機(jī)源程序和proteus仿真文件.zip
(101.18 KB, 售價(jià): 2 E幣)
2021-6-25 02:47 上傳
點(diǎn)擊文件名下載附件
售價(jià): 2 E幣
[記錄]
[
購(gòu)買
]
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0