<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR單片機密碼鎖程序

AVR單片機密碼鎖程序

作者: 時(shí)間:2012-08-02 來(lái)源:網(wǎng)絡(luò ) 收藏

這是一款用單片機實(shí)現的,它分別由硬件16個(gè)、數碼管以及蜂鳴器組成的。系統正確的初始密碼為0、1、2、3。當我們按下按鍵次數在4次以?xún)?,系統才判斷密碼對與否,當輸入密碼正確時(shí),蜂鳴器報響起,即表示密碼是正確的,當我們按下按鍵的次數超過(guò)4次,即使按下的密碼正確,蜂鳴器也不響,還有按下密碼順序必須是0、1、2、3,如果按下0、2、1、3或者是其它的,都不能正常開(kāi)蜂鳴器。如果按鍵次數超過(guò)4次了,密碼就無(wú)法正常輸入了,此時(shí)只要按下第16個(gè)按鍵時(shí),就可以回到初始狀態(tài),即清除我們以前按鍵按下的次數,(因為密碼輸入時(shí)必須在4次以?xún)韧瓿傻?,超過(guò)了4次你怎么輸,也進(jìn)入密碼判斷模式)此時(shí)就可以重新輸入正確的密碼了。另外當按下按鍵時(shí),可以在數碼管上顯示我們按下的數,以方便我們看我們按下的數是否正確。
硬件連接:矩陣按鍵接PD口,數碼管段接PB口,位控制端接PC低4位,蜂鳴器接PA1口。
以下是完整程序下載地址:http://www.51hei.com/f/mmsavr.rar

#includeiom16v.h>
#includemacros.h>
#define uchar unsigned char
#define uint unsigned int
#define setb(val,bitn) (val|=(1(bitn)))//設置某IO口某位為1,即設置IO口進(jìn)行位操縱
#define clr(val,bitn) (val=~(1(bitn)))//設置某IO口某位為0 即設置IO口進(jìn)行位操縱
#define get(val,bitn) (val(1(bitn)))//讀取某位狀態(tài)如if(get(PORTC,7))即判斷PC7口是否為1 即設置IO口進(jìn)行位操縱
#pragma data:code//定義程序存在ROM里面
uchar yin,yin1,yin2,yin3;//4位密碼初始變量
uchar qing,qing1,qing2,qing3;//4位密碼比較變量
uchar num;//按鍵按下次數變量
uchar temp;//比較標志位變量,即按下后比較變量與初始密碼變量比較,如果是相等,則些標志位生效,它自動(dòng)變量加1
const table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e,0xff
};
/***********************************************/
/*******************延時(shí)子程序******************/
/***********************************************/
void delay(uint z)
{
uint x,y;
for(x=0;x50;x++)
for(y=0;yz;y++);
}
/***********************************************/
/*****************蜂鳴器響子程序****************/
/***********************************************/
void bbt()
{
setb(DDRA,1);
clr(PORTA,1);
delay(2550);
setb(PORTA,1);
delay(2550);
}
/***********************************************/
/*******************顯示子程序******************/
/***********************************************/
void xian(uchar num)
{
uchar i;
PORTB=table[num];
PORTC=0x00;//打開(kāi)位選端
}
/***********************************************/
/***************按鍵按下處理程序***************/
/***********************************************/
uchar key_press()
{
uchar i;
DDRD=0XFF;//設置PD口全為輸出
PORTD=0XF0;//設置PD高四位為高電平,以便進(jìn)行判斷
DDRD=0X0F;//設置高4位為輸入,低4位為輸出
i=PIND;//讀出IO口狀態(tài)
if(i==0XF0)//如果它等于0XF0就執返回0
{
DDRD=0XFF;//將IO口值讀回來(lái)
return 0;
}
else//否則它就執返回1
{
DDRD=0XFF;
return 1;
}
}
/***********************************************/
/***************按鍵鍵值處理程序***************/
/***********************************************/
uchar key_scan()
{
uchar key,i=0X7F,j;//將變量I設置為01111111B
if(key_press())//判斷按鍵是否被按下了
{
delay(10);//如果被按下了,消下抖
if(key_press())//再次判斷下按鍵是否被按下了
{

do//先執行一次
{
i=(i1|i>>7);/*將變量I內容左移1位,11111110
然后將I右移7位,11111110,即實(shí)現11111110
11111101 11111011 11110111*/
PORTD=i;//將移位后的值給PD口
DDRD=0X0F;//將PD口高位設為輸入,低位設為輸出
key=PIND;//將IO口高位值讀一下
j=key0XF0;//只需要讀高4位
}
while(j==0XF0);//如果按鍵沒(méi)有按下,則再執行上面的do語(yǔ)句

while(key_press());//如果有按下則釋放一下
num++;//計數改變變量值
//if(num>3)
//num=0;

蜂鳴器相關(guān)文章:蜂鳴器原理

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: AVR 密碼鎖 矩陣鍵盤(pán)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>