|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
兩條I/O,接六個按鍵的電路(無附加集成塊),歡迎各位排磚. |
| 作者:啊龍 欄目:單片機 |
平時I/O在輸入態(tài),S1按下10,S2按下01,S3按下00,當(dāng)為11時--S4按下,I/O1及I/O2無論誰輸出0,借口均為0.S5按下時,I/O1為0時,I/O2不為0.S6按下,同S5判斷相反. 沒有試過,準備用,從原理上看應(yīng)該可以,各位看一下有什么問題嗎?誰有更好的電路,請指導(dǎo)一下.
|
| 2樓: | >>參與討論 |
| 作者: heloo 于 2006/6/15 19:38:00 發(fā)布:
第一眼看就不知道S1和S2按下有什么區(qū)別 |
|
| 3樓: | >>參與討論 |
| 作者: HWM 于 2006/6/15 19:56:00 發(fā)布:
狗屁東西!!!! |
|
| 4樓: | >>參與討論 |
| 作者: heloo 于 2006/6/15 20:00:00 發(fā)布:
就算s2 |
|
| 5樓: | >>參與討論 |
| 作者: heloo 于 2006/6/15 20:06:00 發(fā)布:
就算s2上的節(jié)點放在IO1口,也弄不清楚 如下: input OUTPUT input OUTPUT VALUE IO1 IO2 IO2 IO1 0 0 0 0 S4 0 1 0 0 S5 0 0 0 1 S6 0 0 0 1 S1 0 1 0 0 S2 0 0 0 0 S3 不了解S4與S3,S5與S2,S6與S1如何區(qū)分開來? 事實上,我認為用兩個IO口是不可能區(qū)分6種狀況的,最多只能4種。 |
|
| 6樓: | >>參與討論 |
| 作者: maychang 于 2006/6/15 21:50:00 發(fā)布:
樓上各位 這個圖確實有錯,但樓主的意圖很明顯,而且能夠?qū)崿F(xiàn)。 希望樓主繼續(xù)努力。 |
|
| 7樓: | >>參與討論 |
| 作者: 啊龍 于 2006/6/15 22:02:00 發(fā)布:
對不住各位,圖畫錯了.重傳一下.見諒,見諒. heloo你好,S3按下,是輸入為00.S4按下,是雙向接通IO1,IO2. S5,S6是單向接通IO1,IO2.
|
|
| 8樓: | >>參與討論 |
| 作者: 啊龍 于 2006/6/15 22:04:00 發(fā)布:
謝maychang理解支持. |
|
| 9樓: | >>參與討論 |
| 作者: xwj 于 2006/6/15 22:24:00 發(fā)布:
行的通的,不管看不看得懂都不要出口成臟哦 |
|
| 10樓: | >>參與討論 |
| 作者: xwj 于 2006/6/15 22:29:00 發(fā)布:
前提是最多只有一個鍵按下,有多鍵按下就亂套了 |
|
| 11樓: | >>參與討論 |
| 作者: conwh 于 2006/6/16 3:10:00 發(fā)布:
不按鍵呢?11 |
|
| 12樓: | >>參與討論 |
| 作者: heloo 于 2006/6/16 8:40:00 發(fā)布:
不好意思 如果只檢測單鍵按下的情況應(yīng)該是行的通的,但是如果想檢測雙鍵同時按下就難了,如我之前所述 |
|
| 13樓: | >>參與討論 |
| 作者: heloo 于 2006/6/16 8:43:00 發(fā)布:
不過這個電路還是不錯的 我收下了,謝謝了 |
|
| 14樓: | >>參與討論 |
| 作者: wangkj 于 2006/6/16 9:18:00 發(fā)布:
IO 是雙向的 所以狀態(tài)應(yīng)該是2x2 *2 應(yīng)該至少可以判斷8個單鍵。但是,外圍電路的復(fù)雜讀增加太多。 |
|
| 15樓: | >>參與討論 |
| 作者: xwj 于 2006/6/16 10:01:00 發(fā)布:
寫了個配套程序,有興趣的可以去看看 To wangkj : 理論上是有8種狀態(tài),但有2種狀態(tài)是無鍵按下 因此實際上可區(qū)分出的狀態(tài)是(2個)無鍵狀態(tài)和6個單獨按鍵共7種狀態(tài) |
|
| 16樓: | >>參與討論 |
| 作者: 啊龍 于 2006/6/16 11:27:00 發(fā)布:
xwj好快啊,程序收了。謝各位關(guān)心. |
|
| 17樓: | >>參與討論 |
| 作者: xxdcq 于 2006/6/16 14:49:00 發(fā)布:
看看我的程序呵呵! io1 equ p1.0 io2 equ p1.1 . . . keyscan: setb io1 setb io2 nop mov a,p1 orl a,#11111100b cpl a jnz keyscan1 ;不為0則可能有s1,s2,s3按下 keyscan0: clr io1 nop mov a,p1 anl a,#00000010b jz keyscan2 ;為0則可能有s4,s6按下 keyscan01: setb io1 clr io2 nop mov a,p1 anl a,#00000001b jz keyscan3 ;為0則可能有s5按下 keyscan02: ljmp keyscan ;沒有任何鍵按下 keyscan1: lcall dt20ms ;延時20ms去抖 mov a,p1 orl a,#11111100b cpl a jz keyscan0 ;為0則s1,s2,s3沒有按下 cjne a,#02h,keyscan11 ;確定有s1,s2,s3按下 ljmp s1 keyscan11: cjne a,#01h,keyscan12 ljmp s2 keyscan12: ljmp s3 keyscan2: lcall dt20ms ;延時20ms去抖 mov a,p1 anl a,#00000010b jnz keyscan01 setb io1 ;確定有s4,s6按下 clr io2 nop mov a,p1 anl a,#00000001b jnz keyscan21 ljmp s4 keyscan21: ljmp s6 keyscan3: lcall dt20ms ;延時20ms去抖 mov a,p1 anl a,#00000001b jnz keyscan02 ljmp s5 ;確定有s5按下 s1: ;s1鍵處理 ljmp upkey1 s2: ;s2鍵處理 ljmp upkey1 s3: ;s3鍵處理 ljmp upkey1 s4: ;s4鍵處理 ljmp upkey2 s5: ;s5鍵處理 ljmp upkey3 s6: ;s6鍵處理 ljmp upkey2 upkey1: ;松鍵 mov a,p1 orl a,#11111100b cpl a jnz upkey1 ;不為0則未松鍵s1,s2,s3 lcall dt20ms ;延時20ms去抖 mov a,p1 orl a,#11111100b cpl a jnz upkey1 ;不為0則未松鍵s1,s2,s3 ljmp keyscan upkey2: setb io2 clr io1 nop mov a,p1 anl a,#00000010b jz upkey2 ;為0則未松鍵s4,s6 lcall dt20ms ;延時20ms去抖 mov a,p1 anl a,#00000010b jz upkey2 ;為0則未松鍵s4,s6 ljmp keyscan upkey3: mov a,p1 anl a,#00000001b jz upkey3 ;為0則未松鍵s5 lcall dt20ms ;延時20ms去抖 mov a,p1 anl a,#00000001b jz upkey3 ;為0則未松鍵s5 ljmp keyscan |
|
| 18樓: | >>參與討論 |
| 作者: hotpower 于 2006/6/18 18:33:00 發(fā)布:
哈哈,原帖在此呀~~~暈菜~~~ 延時消抖都很暈~~~ |
|
| 19樓: | >>參與討論 |
| 作者: lijay 于 2007/1/17 15:17:00 發(fā)布:
終于看明白了 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |