導航:首頁 > 操作系統 > 單片機多個開關組合

單片機多個開關組合

發布時間:2022-05-26 18:39:17

❶ 多個光電開關與單片機怎麼連接比如說有12個光電開關,89C52單片機需要外接8255嗎求電路圖

不需要 如果單片機io不夠用可以嘗試用74hc595

❷ 兩個單片機的空氣開關加在一起可不可以當雙片的用

不能連在一起使用的,因為是不可以聯動的,只能當做手動開關使用。

❸ 單片機c語言多個開關優先選擇問題

整理如下:

當p0.1口輸入低電平(持續時間8秒左右)情況下,

如果p0.2出現低電平,即後面不做任何操作。

當p0.1口輸入低電平(持續時間8秒左右)情況下,

如果p0.2不出現低電平,

當p0.3出現低電平後,即進行p0.4的賦值和延時輸出操作;

p0.3不出現低電平即不對p0.4操作。

等到p0.1口的低電平消失後,又繼續進行下一次重復的。


程序結構如下:

START:

IF(P0.1 == 1)GOTOSTART;

延時次數 = 0;

LP1:

延時 10ms;

IF(P0.1 == 1)GOTOSTART;

延時次數++;

IF (延時次數 < 800)GOTOLP1;

//以上,就確認了:P0.1輸入低電平持續8秒左右

IF ((P0.2 == 1)AND(P0.3 == 0))

//如果p0.2不出現低電平,p0.3出現低電平後

P0.4 = 0;延時 10ms;

//即進行p0.4的賦值和延時輸出操作;

LP2:

IF(P0.1 == 1)GOTOLP2

//等到p0.1口的低電平消失,

GOTOSTART;

//又繼續進行下一次重復的

別忘了採納。











❹ 單片機對開關狀態進行檢測時,兩個開關量的狀態有多少種組合

兩個開關量,顯然有:00、01、10、11四種狀態。

❺ 單片機開關名稱

開關在單片機中叫蜂鳴器。

掃描矩陣式按鍵陣列:多個按鍵組成矩陣形式接到I/O口上,單片機通過一定的掃描規則掃描按鍵狀態。這種方式可以通過較少I/O口掛接很多按鍵,主要是解決方式1的埠有限問題。比如,8X8的鍵盤矩陣可以實現64個按鍵,而只佔用16個I/O口,用方式1則需要64個I/O口。

硬體特徵:

(1)單片機的體積比較小, 內部晶元作為計算機系統,其結構簡單,但是功能完善,使用起來十分方便,可以模塊化應用。

(2)單片機有著較高的集成度,可靠性比較強,即使單片機處於長時間的工作也不會存在故障問題。

(3) 單片機在應用時低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產與研發提供便利。

(4)單片機對數據的處理能力和運算能力較強,可以在各種環境中應用,且有著較強的控制能力。



❻ 單片機開關控制LED數碼管的編碼

一,什麼是數碼管

數碼管,其實就是由多個led組合在一起的組合顯示塊;有共陰極的,也有共陽極的。使用的數碼管不同,裡麵包含的led個數也會有相關的差異。我們通常使用的數碼管,裡面有8個led燈,大家可以參照生活中的數碼管器件就一目瞭然了,你會發現,數碼管顯示的每一個數字或字母,都是一段一段組合拼接起來的,並不是像寫的那樣圓滑。其中,組合的每一個段,就是一個led燈。

二,點亮一個數碼管

2.1.在點亮數碼管之前,你還必須弄清楚,改數碼管的接是共陰極還是共陽極的接法;其次,還得弄清楚是那幾個(或一個) IO口是IO口 的斷選位(也就是控制顯示哪一個數碼管,通常由IO口控制一個解碼器來實現,因為這樣更節約IO口資源)。

2.2.弄清楚斷選位之後,還得知道,是哪些IO口控制我們的數碼管上的led;

比如:

P0.0 控制數碼管上的led.0;(注意:數碼管上對應的led位,可以參照原理圖上的或查閱相關資料獲得,這里僅僅舉列)

P0.1-->led.1 P0.2-->led2 ......

2.3.想要點亮數碼管很容易,只要開啟對應的數碼管斷選位,再設置數碼管上led的值為點亮(有的數碼管是共陰極接法,有的是共陽極接法,根據具體的設計,給出相關的高或低電平即可)就OK了。但是,我們要在數碼管上顯示我們想要的數字增么辦呢?這個時候,就是考研創造力的時候了,有的數碼管的資料會直接給出它的真值表,但有的卻不一定找得到。在這個時候,我們就得根據我們想要顯示的數字,點亮並熄滅對應數碼管上的led來實現。(推薦:你可以自己先實驗,找出0-9,或其他想要顯示的字元所對應的IO口的值,來保存起來,這樣你就可以重復利用啦!)

三,點亮多個數碼管

3.1 我們想要點亮多個數碼管,首先可以根據2.1,弄清楚你的數碼管的斷選位,然後周期性的改變斷選位的值,以此動態逐個顯示你的數碼管。

3.2 在顯示多個數碼管時,建議周期大於100hz,這樣人眼難以識別起關和開的瞬間,我們看起來就像時很多個數碼管同時點亮了一樣。

四,動態顯示數碼管

4.1 ,在動態顯示數碼管的值時,建議先根據2.2和2.3,把對應的數碼管顯示參數照準,並保存下來,這樣你用起來也方便。

4.2, 動態顯示數碼管,我們可以在規定的時間周期,改變數碼管對應led的開關個數來實現,比如說:

0 在數碼管中顯示的值為0xc0 1是0xf9

那麼我們就可以在規定的時間里,切換該值,從而達到動態效果。

4.3 我們應該注意的時,掃描數碼管(即顯示多個數碼管)應該與設置數碼管的值(數碼管中led的狀態更新)區分開,掃描周期我們可以放短一點,而改變它的值的周期我們可以一秒或者是2秒改變一次。

4.4 消除余暉,大家實驗後,可能會發現,你顯示的值有的時候並不是想要的,它會跳動或者是亮滅不清晰,這個我們就叫做余暉效應。

產生余暉效應的原因是因為你在選則下一個數碼管的時候,還保留了上一個數碼管的顯示值,所以我們消除余暉,只需要在改變數碼管顯示值的時候,先關閉所有數碼管的顯示,在值跟新完成後我們再打開顯示。這里你不用擔心關閉和開啟會有閃爍,更新值的時間會很短,肉眼時幾乎察覺不到滴。

5,示列代碼

/*

晶元:stc89c52

器件:38解碼器等

編譯環境:UV4,C語言

*/

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = {undefined

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

};//數碼管顯示值真值表緩存數組

unsigned char LedBuff[6] = {undefined

0xff,0xff,0xff,0xff,0xff,0xff

};//數碼管顯示值緩存數組

void main()

{undefined

unsigned char i =0;

unsigned int cnt = 0;

unsigned long sec = 0;

ENLED = 0;

ADDR3 = 1;

TMOD = 0x01;

TH0 = 0xfc;

TL0 = 0x67;

TR0 = 1;

while(1)

{undefined

if(TF0==1)

{undefined

TF0 = 0;

TH0 = 0xfc;

TL0 = 0x67;

cnt++;

if(cnt>=1000)

{undefined

cnt = 0;

sec++;

LedBuff[0] = LedChar[sec%10];

LedBuff[1] = LedChar[sec/10%10];

LedBuff[2] = LedChar[sec/100%10];

LedBuff[3] = LedChar[sec/1000%10];

LedBuff[4] = LedChar[sec/10000%10];

LedBuff[5] = LedChar[sec/100000%10];

}

switch(i)

{undefined

case 0:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];ENLED = 0;break;

case 1:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];ENLED = 0;break;

case 2:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];ENLED = 0;break;

case 3:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];ENLED = 0;break;

case 4:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];ENLED = 0;break;

case 5:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];ENLED = 0;break;

default:break;

}

}

}

}

以上代碼,僅供參考,您需要根據自己原理圖的設計來實現。

❼ 該如何理解單片機這種東西

單片機好比一個辦公室,裡面的人員就是程序,這個辦公室有很多扇門(引腳),裡面的人決定這些門是打開還是關閉,打開門是進來貨還是出貨。可以在單片機的datasheet里看到每扇門是干什麼的。然後單片機有一個心臟,也就是晶振,它決定了辦公室里人的工作效率,是快還是慢。

❽ 單片機如何與多個接近開關連接

我的解決辦法是:因為對射式光電開關根據是否被擋光輸出高低電平,將這個電平信號輸入單片機的一個引腳,在程序里寫一個數組,將輸入的電平信號記錄下來(就是各種010101...),然後通過串口再把這些信號輸出到電腦;在電腦上下載一個串口助手,通過串口助手就可以接收並記錄光電的開關的狀態。

❾ 家裡的所有的電器開關用一個單片機組合起來,然後用遙控器遙控開與關,需要購買哪些元器件,謝謝!

這個么說簡單也簡單說復雜還是挺復雜的,就看你做事的態度,現在先請你說說想要控制的具體電器名稱(列出不同類型的幾個電器即可),然後跟你說會遇到什麼困難,先把困難都說了,考考你的恆心與毅力;

❿ 單片機實現雙開關控制

/*程序功能:兩個開關各按下一次時,計數器加一 */ /* */ /* 歡迎單片機愛好者學習交流! */ /* */ /***/ #include

閱讀全文

與單片機多個開關組合相關的資料

熱點內容
兩個數字的加減乘除運算編程 瀏覽:221
給手機加密碼忘記了怎麼辦 瀏覽:598
單片機運算符 瀏覽:296
移動端微信商城源碼 瀏覽:442
編程貓下一個背景在哪裡 瀏覽:357
javaclasstype 瀏覽:238
樂高編程和樂高課的延伸 瀏覽:354
蘋果手機怎麼切換app美國賬號 瀏覽:865
編譯程序輸入一個字元串 瀏覽:407
圓命令畫法 瀏覽:308
如果給電腦e盤文件加密 瀏覽:802
javaswing項目 瀏覽:778
androidsdksetup 瀏覽:1005
pdf怎麼設置中文 瀏覽:128
安卓手機用什麼軟體看倫敦金 瀏覽:966
魅族文件夾無名稱 瀏覽:792
蘇黎世無人機演算法 瀏覽:876
核桃編程和小碼王的融資 瀏覽:686
微積分教材pdf 瀏覽:728
寫python給微信好友發消息 瀏覽:340