注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! • 打開購物車 • 查看留言 • 付款方式 • 聯系我們 |
![]() |
首頁 | 電子入門 | 學單片機 | 免費資源 | 下載中心 | 商品列表 | 象棋在線 | 在線繪圖 | 加盟五一 | 加入收藏 | 設為首頁 |
選擇分類:當前分類——學單片機 相關聯或者相類似的文章: 三十分鐘一個小時學會單片機(9045) 什么是單片機?單片機有什么用? (8723) 如何用STC板將代碼燒錄進IC(8681) 怎樣安裝AT51編程板的USB轉串口軟件?(8206) 送給單片機愛好者——LED在線編碼器(1814) 送給單片機愛好者——LED點陣在線編碼器(1544) 單片機系統中的漢字顯示(1492) 帶語音報數功能的搶答器(1489) 用VB進行串口實時數據采集(1347) 用AT89C2051設計超聲波測距儀(1171) 小小電子鬧鐘 生活學習良伴(1165) DS1820測溫原理(1129) 幾句代碼實現控制攝像頭(轉)(1117) STC單片機選型指南(1111) 自制PIC單片機編程器(1105) USB轉串口芯片CH340(1010) 快速學習單片機之黃金機會!(1010) 告戒購單片機開發實驗板初學者(970) 新款實用旋轉LED顯示屏A(890) 使用市售 USB轉RS232串口與PLC通信的測試報告 (881) 首頁 前頁 后頁 尾頁 本站推薦: | 32. 電子密碼鎖設計 1.實驗任務
根據設定好的密碼,采用二個按鍵實現密碼的輸入功能,當密碼輸入正確之后,鎖就打開,如果輸入的三次的密碼不正確,就鎖定按鍵3秒鐘,同時發現報警聲,直到沒有按鍵按下3種后,才打開按鍵鎖定功能;否則在3秒鐘內仍有按鍵按下,就重新鎖定按鍵3秒時間并報警。
2.電路原理圖
![]() 圖4.32.1
3.系統板上硬件連線
(1). 把“單片機系統”區域中的P0.0/AD0用導線連接到“音頻放大模塊”區域中的SPK IN端子上;
(2). 把“音頻放大模塊”區域中的SPK OUT端子接喇叭和;
(3). 把“單片機系統”區域中的P2.0/A8-P2.7/A15用8芯排線連接到“四路靜態數碼顯示”區域中的任一個ABCDEFGH端子上;
(4). 把“單片機系統“區域中的P1.0用導線連接到“八路發光二極管模塊”區域中的L1端子上;
(5). 把“單片機系統”區域中的P3.6/WR、P3.7/RD用導線連接到“獨立式鍵盤”區域中的SP1和SP2端子上;
4.程序設計內容
(1). 密碼的設定,在此程序中密碼是固定在程序存儲器ROM中,假設預設的密碼為“12345”共5位密碼。
(2). 密碼的輸入問題:
由于采用兩個按鍵來完成密碼的輸入,那么其中一個按鍵為功能鍵,另一個按鍵為數字鍵。在輸入過程中,首先輸入密碼的長度,接著根據密碼的長度輸入密碼的位數,直到所有長度的密碼都已經輸入完畢;或者輸入確認功能鍵之后,才能完成密碼的輸入過程。進入密碼的判斷比較處理狀態并給出相應的處理過程。
(3). 按鍵禁止功能:初始化時,是允許按鍵輸入密碼,當有按鍵按下并開始進入按鍵識別狀態時,按鍵禁止功能被激活,但啟動的狀態在3次密碼輸入不正確的情況下發生的。
5.C語言源程序
#include <AT89X52.H>
unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i<pslen;i++)
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0) && (rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
} 1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。 2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! |
本站協議。
版權信息。
關于我們。
本站地圖。
營業執照。
發票說明。
付款方式。
聯系方式
深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102 E-mail:51dz$163.com($改為@);Tel:(0755)27947428 工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389 |