注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! • 打開購物車 • 查看留言 • 付款方式 • 聯系我們 |
![]() |
首頁 | 電子入門 | 學單片機 | 免費資源 | 下載中心 | 商品列表 | 象棋在線 | 在線繪圖 | 加盟五一 | 加入收藏 | 設為首頁 |
選擇分類:當前分類——套件實驗 相關聯或者相類似的文章: 9. 一鍵多功能按鍵識別技術(533) 致各職業學校、電子初學者、電子愛好者(533) 27. ADC0809A/D轉換器基本應用技術(533) 超短波物品遺留提醒報警器(533) 推薦一款小巧玲瓏的PDF閱讀軟件(533) “殘局”騙術要當心 (532) protel 使用的60個問題和解答(532) 一個男人的自白:找情人已經是件很老土的事了(532) 再度出擊,20元打造經典PC遙控器!(531) SQL轉ACCESS解決自動編號問題(531) 窮人為什么窮(530) LED顯示應用:生產電子看板系統(530) 用CD4046作鎳鎘電池快速充電器(529) 1.紅外遙控噐軟件解碼及其應用(529) 如何選擇入門的教材(529) 經濟實用的發射功率測試筆 (529) [轉帖]網戀是怎樣煉成的(528) PT2262/2272編解碼集成電路介紹(528) 如何理解電容的高頻和低頻特性(528) 電子元器件使用須知(四)(528) 首頁 前頁 后頁 尾頁 本站推薦: | 9. 一鍵多功能按鍵識別技術 1.實驗任務
如圖4.9.1所示,開關SP1接在P3.7/RD管腳上,在AT89S51單片機的P1端口接有四個發光二極管,上電的時候,L1接在P1.0管腳上的發光二極管在閃爍,當每一次按下開關SP1的時候,L2接在P1.1管腳上的發光二極管在閃爍,再按下開關SP1的時候,L3接在P1.2管腳上的發光二極管在閃爍,再按下開關SP1的時候,L4接在P1.3管腳上的發光二極管在閃爍,再按下開關SP1的時候,又輪到L1在閃爍了,如此輪流下去。
2.電路原理圖
![]() 圖4.9.1
3.系統板上硬件連線
(1. 把“單片機系統”區域中的P3.7/RD端口連接到“獨立式鍵盤”區域中的SP1端口上;
(2. 把“單片機系統”區域中的P1.0-P1.4端口用8芯排線連接到“八路發光二極管指示模塊”區域中的“L1-L8”端口上;要求,P1.0連接到L1,P1.1連接到L2,P1.2連接到L3,P1.3連接到L4上。
4.程序設計方法
(1. 設計思想由來
在我們生活中,我們很容易通過這個叫張三,那個叫李四,另外一個是王五;那是因為每個人有不同的名子,我們就很快認出,同樣,對于要通過一個按鍵來識別每種不同的功能,我們給每個不同的功能模塊用不同的ID號標識,這樣,每按下一次按鍵,ID的值是不相同的,所以單片機就很容易識別不同功能的身份了。
(2. 設計方法
從上面的要求我們可以看出,L1到L4發光二極管在每個時刻的閃爍的時間是受開關SP1來控制,我們給L1到L4閃爍的時段定義出不同的ID號,當L1在閃爍時,ID=0;當L2在閃爍時,ID=1;當L3在閃爍時,ID=2;當L4在閃爍時,ID=3;很顯然,只要每次按下開關K1時,分別給出不同的ID號我們就能夠完成上面的任務了。下面給出有關程序設計的框圖。
5.程序框圖
![]() 圖4.9.2
6.匯編源程序
ID EQU 30H
SP1 BIT P3.7
L1 BIT P1.0
L2 BIT P1.1
L3 BIT P1.2
L4 BIT P1.3
ORG 0
MOV ID,#00H
START: JB K1,REL
LCALL DELAY10MS
JB K1,REL
INC ID
MOV A,ID
CJNE A,#04,REL
MOV ID,#00H
REL: JNB K1,$
MOV A,ID
CJNE A,#00H,IS0
CPL L1
LCALL DELAY
SJMP START
IS0: CJNE A,#01H,IS1
CPL L2
LCALL DELAY
SJMP START
IS1: CJNE A,#02H,IS2
CPL L3
LCALL DELAY
SJMP START
IS2: CJNE A,#03H,IS3
CPL L4
LCALL DELAY
SJMP START
IS3: LJMP START
DELAY10MS: MOV R6,#20
LOOP1: MOV R7,#248
DJNZ R7,$
DJNZ R6,LOOP1
RET
DELAY: MOV R5,#20
LOOP2: LCALL DELAY10MS
DJNZ R5,LOOP2
RET
END
7.C語言源程序
#include <AT89X51.H>
unsigned char ID;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay02s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{delay10ms();
}
}
void main(void)
{ while(1)
{ if(P3_7==0)
{delay10ms();
if(P3_7==0)
{
ID++;
if(ID==4)
{
ID=0;
}
while(P3_7==0);
}
}
switch(ID)
{ case 0:
P1_0=~P1_0;
delay02s();
break;
case 1:
P1_1=~P1_1;
delay02s();
break;
case 2:
P1_2=~P1_2;
delay02s();
break;
case 3:
P1_3=~P1_3;
delay02s();
break;
}
} 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 |