當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]利用單片機(jī)做搶答器,有很多種方案了,下面的鏈接,就是一個(gè)很簡(jiǎn)單的:按照這個(gè)方案,做而論道設(shè)計(jì)了如下電路圖:這是剛開(kāi)始(或者主持人按下了清零鍵)時(shí)的畫(huà)面。主持人此時(shí)正在敘述題目,還沒(méi)有按下開(kāi)始鍵。如果這

利用單片機(jī)做搶答器,有很多種方案了,下面的鏈接,就是一個(gè)很簡(jiǎn)單的:


按照這個(gè)方案,做而論道設(shè)計(jì)了如下電路圖:




這是剛開(kāi)始(或者主持人按下了清零鍵)時(shí)的畫(huà)面。


主持人此時(shí)正在敘述題目,還沒(méi)有按下開(kāi)始鍵。如果這時(shí)有選手違規(guī),提前按鍵,本控制器就會(huì)鳴音報(bào)警,《違規(guī)》指示燈也會(huì)發(fā)光。


主持人按清零鍵后,再按下開(kāi)始鍵,《搶答中》指示燈就會(huì)發(fā)光,數(shù)碼顯示器顯示?30?秒倒計(jì)時(shí),在這以后,選手才可以按下?lián)尨疰I。


下面就是?5?號(hào)選手搶答成功的畫(huà)面。




本電路使用的程序如下:

;==========================================

KAI??BIT??P3.5?????????;開(kāi)始

FUW??BIT??P3.6?????????;清零(復(fù)位)

GAI??BIT??P3.7?????????;修改時(shí)間

;----------------------

SPK??BIT??P2.5?????????;揚(yáng)聲器

GRE??BIT??P2.6?????????;綠燈(用于搶答期間)

YEL??BIT??P2.7?????????;黃燈(用于違規(guī)警告)

;------------------------------------------?

????ORG???0000H

????JMP???START

????ORG???0003H

????JMP???X0_INT

????ORG???000BH

????JMP???T0_INT

START:

????MOV???TMOD,?#01H

????MOV???IE,?#82H

????MOV???SP,?#60H

????SETB??IT0??????????;下降沿觸發(fā)中斷

;----------------------;下面是清零(復(fù)位)

FUWEI:

????MOV???TH0,?#4CH????;50ms@11.0592MHz

????MOV???TL0,?#0

????MOV???R2,?#20??????;預(yù)置中斷次數(shù)

????MOV???R3,?#0???????;顯示秒數(shù)0

????MOV???R4,?#0???????;選手號(hào)碼

????MOV???20H,?#0??????;各個(gè)標(biāo)志清零

????MOV???P2,?#255?????;關(guān)閉所有顯示


????CLR???IE0

????SETB??EX0??????????;開(kāi)中斷,誰(shuí)提前搶答,將出錯(cuò)

;----------------------;下面等待按下"開(kāi)始"鍵

KAISHI:

????CALL??DISP

????JB????20H.1,?WG????;有選手提前按鍵,?違規(guī)

????JB????KAI,?KAISHI??;沒(méi)有按"開(kāi)始",就循環(huán)

;----------------------;按下了

????MOV???R3,?#30??????;秒數(shù)30

????SETB??TR0??????????;開(kāi)始倒計(jì)時(shí)

????CLR???GRE

WAIT:??????????????????;等待搶答

????CALL??DISP

????JB????20H.1,?XS????;有選手按鍵則轉(zhuǎn)

????JB????20H.2,?CHAOSHI???;超時(shí)了則轉(zhuǎn)

????JMP???WAIT?????????;繼續(xù)等待

;----------------------

XS:????????????????????;查找選手按鍵的位置

????JNB???21H.0,?J0

????JNB???21H.1,?J1

????JNB???21H.2,?J2

????JNB???21H.3,?J3

????JNB???21H.4,?J4

????JNB???21H.5,?J5

????JNB???21H.6,?J6

;????JMP??????????J7

J7:?INC???R4

J6:?INC???R4

J5:?INC???R4

J4:?INC???R4

J3:?INC???R4

J2:?INC???R4

J1:?INC???R4

J0:?INC???R4

????CLR???TR0

????SETB??GRE

????SETB??20H.3

????MOV???R5,?#0

????CALL??DISP

????DJNZ??R5,?$?-?2

;----------------------;下面等待按下復(fù)位鍵

W_FW:

????CLR???20H.3

????CALL??DISP

????JB????FUW,?W_FW????;沒(méi)有按,則轉(zhuǎn)

????JMP???FUWEI

;----------------------

CHAOSHI:???????????????;超時(shí)處理

????CLR???TR0

????SETB??20H.3????????;允許發(fā)音

????MOV???R5,?#100

????CALL??DISP?????????;邊顯示邊發(fā)音

????DJNZ??R5,?$?-?2

????JMP???W_FW?????????;去等待按下復(fù)位

;----------------------

WG:????????????????????;違規(guī)按鍵處理

????CLR???YEL

????SETB??20H.3

????MOV???R5,?#200

????CALL??DISP

????DJNZ??R5,?$?-?2

????JMP???W_FW?????????;去等待按下復(fù)位

;==========================================

;外部中斷0,?選手按鍵將觸發(fā)本中斷

;==========================================

X0_INT:????????????????;有選手按鍵了

????MOV???21H,?P1??????;立即讀入

????CLR???EX0??????????;關(guān)閉中斷,再也不響應(yīng)后來(lái)的按鍵

????SETB??20H.1????????;設(shè)置標(biāo)志

????RETI

;==========================================

;T0定時(shí)中斷,?每隔50ms中斷一次

;==========================================

T0_INT:????????????????;到了預(yù)定時(shí)間

????MOV???TH0,?#4CH;???;重裝50ms初始值

????DJNZ??R2,?T0_EXIT??;未滿20次,跳出

????MOV???R2,?#20

????DEC???R3???????????;秒數(shù)減一

????CJNE??R3,?#255,?T0_EXIT???;不到-1則轉(zhuǎn)

????INC???R3

????SETB??20H.2????????;超時(shí)標(biāo)志

T0_EXIT:

????RETI

;==========================================

;顯示子程序,?逐個(gè)顯示一遍

;==========================================

DISP:??????????????????;顯示一遍約有10ms

????PUSH??ACC

????PUSH??B

;------------------------

????MOV???A,?R4????????;取來(lái)選手號(hào)碼

????CALL??OUT_DM????;輸出段碼

????CLR???P2.3??????;顯示

????CALL??DELAY

????SETB??P2.3

;------------------------

????MOV???A,?#10

????CALL??OUT_DM????;輸出段碼

????CLR???P2.2??????;顯示'-'

????CALL??DELAY

????SETB??P2.2

;------------------------

????MOV???A,?R3????????;取來(lái)秒數(shù)

????MOV???B,?#10

????DIV???AB

????CALL??OUT_DM????;輸出段碼

????CLR???P2.1??????;顯示十位

????CALL??DELAY

????SETB??P2.1

;------------------------

????MOV???A,?B

????CALL??OUT_DM????;輸出段碼

????CLR???P2.0??????;顯示個(gè)位

????CALL??DELAY

????SETB??P2.0

;------------------------

????POP???B

????POP???ACC

????RET

;------------------------

OUT_DM:

????ADD???A,?#(D_TAB?-?$?-?3)

????MOVC??A,?@A?+?PC

????MOV???P0,?A

????RET

;------------------------

D_TAB:????

????DB???0C0H,0F9H,0A4H,0B0H,?99H?;共陽(yáng)極0-9

????DB????92H,?82H,0F8H,?80H,?90H,0BFH?;-

;------------------------------------------

DELAY:??????;延時(shí)約2500us

????JB????20H.3,?BEEP

????MOV???R6,?#5

????MOV???R7,?#50

????DJNZ??R7,?$

????DJNZ??R6,?$?-?2

????RET

;------------------------------------------

BEEP:

????MOV???R6,?#2????;

????CLR???SPK

????DJNZ??R7,?$

????SETB??SPK

????DJNZ??R7,?$

????DJNZ??R6,?BEEP?+?2

????RET

;==========================================

????END


程序有些長(zhǎng),故此,刪除了設(shè)置倒計(jì)時(shí)時(shí)間的程序段。


本程序?qū)Ω鱾€(gè)選手的按鍵處理,使用了中斷方式,這在一定的程度上,提高了對(duì)按鍵先、后的甄別能力。


當(dāng)有任意一個(gè)搶答鍵被按下,在?2us?之內(nèi),就會(huì)被單片機(jī)保存起來(lái)。

后按鍵的選手,只要晚了?2us,就不會(huì)進(jìn)入單片機(jī)。


如果有兩個(gè)或多個(gè)選手,都是在?2us?之內(nèi)按鍵,本程序?qū)⒄J(rèn)定其中編號(hào)最小的選手,是最先按下的。

呵呵,還是有些不公平啊?!


提高單片機(jī)的晶振頻率,可以提高對(duì)按鍵先后的甄別能力。


如果對(duì)甄別要求很高,就應(yīng)該使用純電子器件構(gòu)成的搶答判別電路。

這樣的電路,可以參考做而論道前面發(fā)表的博文。



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉