導航:首頁 > 操作系統 > asd單片機四路搶答器英文

asd單片機四路搶答器英文

發布時間:2022-09-22 11:08:45

『壹』 求四路搶答器電路原理圖

原理圖:

工作原理

搶答器由74LS148、74LS279、74LS48組成,LED顯示器 開始時,當支持人按鈕還未按是,CLR為0,所以輸出Q1~Q4為0;

放光二極體全為滅的,當主持人按鈕按下時CLR為1,可以輸入,誰先搶答,相應的誰的燈亮,利用74LS279和74LS148輸出的是cp等於0,鎖存其他的,不能使其他的輸出。

(1)asd單片機四路搶答器英文擴展閱讀:

利用51單片機建立四路搶答器

單片機,當然不只是51,51單片機是一種稍通用型的單片機,通過I/O口的定義,可以實現多種控制功能。

搶答器,原理:如果為四路,當其中任一路控下後,其他幾路即失效,結果為第一次按下的,可以用數碼管或是LED燈來顯示,當然這里只是講原理與編程,具體可以根據搶答器路數及顯示方式更改程序即可。

源程序如下:

<div class="blockcode"><blockquote>/*用的是AT89S52開發板,獨立按鍵介面如下,就用這四路。先按下的用LED燈來顯示,對應第一個到第四個LED燈,其他再按無效,如果想再次實現,可手動復位單片機*/

#include <reg52.h>

sbit key1=P3^0; //定義按鍵,根據需要連接線路,如獨立按鍵(4路)

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

/*void delay(unsigned int cnt) //如果有抖動或是干擾,可以用個小延時去抖

{

while(--cnt);

}*/

void main()

{

bit Flag;

while(!Flag)

{

if(!key1)

{

P1=0xFE;

Flag=1;

}

/*LED燈來顯示按下的鍵,第一個燈,我這里是8位LED燈,即:0111 1111,反過來讀數為:1111 1110 即:0xFE *,P1口對應LED燈,給P1賦值*/

else if(!key2)

{

P1=0xFD;

Flag=1;

}

//第二個燈亮

else if(!key3)

{P1=0xFB;Flag=1;}

//第三個燈亮

else if(!key4)

{

P1=0xF7;

Flag=1;

}

//第四個燈亮,意味著第四路首先按下

}

while(Flag); //可以再加個I/O,控制Flag,這樣初始化,繼續搶答,還可以設計按下時的聲音

}

『貳』 求proteus單片機c語言程序代碼,四路搶答器

能把問題描述清楚看來程序實現對你來說不成問題,我用偽代碼給你寫出來你自己補充完整即可。
void main()
{
unsigned char key,cont;
bit flag = 0;
初始化IO口;\\關閉紅燈點亮綠燈,數碼管顯示0
while(1)
{
key = P1&0xF;
if(key!=0xF)
{
/*按下的按鍵相應綠燈關閉*/
LED_G1 = (bit)(key&0x1);
LED_G2 = (bit)(key&0x2);
LED_G3 = (bit)(key&0x4);
LED_G4 = (bit)(key&0x8);
/*按下的按鍵相應紅色LED閃爍*/
for(cont=0;cont<5;cont++)
{
LED_R1 = (~LED_G1)|flag;
LED_R2 = (~LED_G2)|flag;
LED_R3= (~LED_G3)|flag;
LED_R4 = (~LED_G4)|flag;
Delay();//延時
flag = ~flag;
}
關閉所有紅色LED並開啟所有綠色LED;
}
}
}

注意:代碼是允許有同時按下的情況,當然也可以改為不允許同時按下的情況發生,即如果發生同時按下則隨便選擇一個按鍵,這樣覺得有點不公平。

『叄』 用PLC設計4人搶答器,4人搶答按鈕為X0~X3,對應燈為Y0~Y3,主持人按鈕為X4,求畫出梯形圖

設計題目:四路搶答器的PLC控制
設計要求
競賽者若要回答主持人所提問題時,必須先按下桌上的搶答按鈕(SB1—SB4)。
綠色指示燈亮後,須等主持人按下復位按鈕SB5後,指示燈才熄滅;
如果競賽者在主持人打開 SA1開關10s內搶先按下按鈕,電磁線圈將使綵球搖動,以示競賽者得到一次幸運的機會;
如果在主持人打開SA1 開關10s內無人搶答,則必須有聲音警示,同時紅色指示燈亮,以示競賽者放棄該題;
在競賽者搶答成功後應限定一定的時間回答問題,根據題目難易可設定時間(如2 min);
當主持人打開SA2開關後計時開始,如果競賽者在回答問題時超出設定時限,則紅色指示燈亮並伴有聲音提示,競賽者停止回答問題。
設計任務
畫出該搶答系統示意圖(A2) .
畫出PLC的I/O接線圖(A2)
畫出梯形圖(A2)
說明工作原理。
編寫30000字左右的設計說明書。
參考資料
黃凈主編,《電器及PLC控制技術》,機械工業出版社,2002.
廖常初主編,《FX系列PLC編程及應用》,機械工業出版社,2006.
揚長能、林小峰主編,《可編程序控制器例題習題及實驗指導》,重慶大學出版社,2001.

前言
在電氣控制系統中,控制裝置主要有兩類:一類是傳統的由繼電器構成的控制系統;另一類是以微處理器為基礎的可編程式控制制器。但由於可編程式控制制器具有可靠性高、通用性強、程序設計簡單及便於安裝調試等優點。它在工業中的各個領域中得到了廣泛的應用。
可編程式控制制器的機型較多,但其基本結構和工作原理相同,基本指令、控制功能和編程方法類似。本設計書以PLC控制的四路搶答器為例,主要介紹了可編程式控制制器的基礎知識、基本結構、指令系統、程序設計、控制系統等知識。本設計書結合了大量的圖形,使設計一目瞭然。最後給出了主要的流程圖、梯形圖、詳細注釋及助記符語言等。
本設計書參考了眾多可編程序控制器教學用書,結合自己所掌握的知識,並在韓金玲教師的認真幫助下完成。在此真誠的衷心的感謝韓金玲教師的幫助。
由於本人水平有限,錯誤和不妥之處再所難免,敬請各位老師批評指正。

編者
2008.

目錄
畢業設計任務書......................................(1)
一、前言.............................................(2)
二、可編程式控制制器的特點及基本.....................(3)
1、 PLC的特點......................................(2)
2、PLC的基本結構.................................. (5
3、PLC的基本功能..................................()

PLC的特點
可編程式控制制器(PLC)是一種新型的通用自動化控制裝置,它將傳統的繼電器控制技術、計算機技術和通訊技術融為一體,,具有通用性強、控制功能強,可靠性高,使用靈活方便、使用方便、適應面廣、抗干擾能力強、編程簡單等特點。易於擴展等優點而應用越來越廣泛。
為適應工業環境使用,與一般控制裝置相比較,PLC機有以下特點:
1. 可靠性高,抗干擾能力強
工業生產對控制設備的可靠性要求:
①平均故障間隔時間長
②故障修復時間(平均修復時間)短
任何電子設備產生的故障,通常為兩種:
①偶發性故障。由於外界惡劣環境如電磁干擾、超高溫、超低溫、過電壓、欠電壓、振動等引起的故障。這類故障,只要不引起系統部件的損壞,一旦環境條件恢復正常,系統也隨之恢復正常。但對PLC而言,受外界影響後,內部存儲的信息可能被破壞。
②永久性故障。由於元器件不可恢復的破壞而引起的故障。
為了滿足PLC「專為在工業環境下應用設計」的要求,PLC採用了如下硬體和軟體措施:

·硬體措施:
主要模塊均採用大規模或超大規模集成電路,大量開關動作由無觸點的電子存儲器完成,I/O系統設計有完善的通道保護和信號調理電路。
① 屏蔽——對電源變壓器、CPU、編程器等主要部件,採用導電、導磁良好的材料進行屏蔽,以防外界干擾。
② 濾波——對供電系統及輸入線路採用多種形式的濾波,如LC或π型濾波網路,以消除或抑制高頻干擾,也削弱了各種模塊之間的相互影響。
③ 電源調整與保護——對微處理器這個核心部件所需的+5V電源,採用多級濾波,並用集成電壓調整器進行調整,以適應交流電網的波動和過電壓、欠電壓的影響。
④ 隔離——在微處理器與I/O電路之間,採用光電隔離措施,有效地隔離I/O介面與CPU之間電的聯系,減少故障和誤動作;各I/O口之間亦彼此隔離。
⑤ 採用模塊式結構——這種結構有助於在故障情況下短時修復。一旦查出某一模塊出現故障,能迅速更換,使系統恢復正常工作;同時也有助於加快查找故障原因。
·軟體措施:
有極強的自檢及保護功能。
①故障檢測——軟體定期地檢測外界環境,如掉電、欠電壓、鋰電池電壓過低及強干擾信號等。以便及時進行處理。
②信息保護與恢復——當偶發性故障條件出現時,不破壞PLC內部的信息。一旦故障條件消失,就可恢復正常,繼續原來的程序工作。所以,PLC在檢測到故障條件時,立即把現狀態存入存儲器,軟體配合對存儲器進行封閉,禁止對存儲器的任何操作,以防存儲信息被沖掉。
③設置警戒時鍾WDT(看門狗)——如果程序每循環執行時間超過了WDT規定的時間,預示了程序進入死循環,立即報警。
④加強對程序的檢查和校驗——一旦程序有錯,立即報警,並停止執行。
⑤對程序及動態數據進行電池後備——停電後,利用後備電池供電,有關狀態及信息就不會丟失。
PLC的出廠試驗項目中,有一項就是抗干擾試驗。它要求能承受幅值為1000V,上升時間1nS,脈沖寬度為1μS的干擾脈沖。一般,平均故障間隔時間可達幾十萬~上千萬小時;製成系統亦可達4~5萬小時甚至更長時間。
2 .通用性強,控製程序可變,使用方便
PLC品種齊全的各種硬體裝置,可以組成能滿足各種要求的控制系統,用戶不必自己再設計和製作硬體裝置。用戶在硬體確定以後,在生產工藝流程改變或生產設備更新的情況下,不必改變PLC的硬設備,只需改編程序就可以滿足要求。因此,PLC除應用於單機控制外,在工廠自動化中也被大量採用。
3.功能強,適應面廣
現代PLC不僅有邏輯運算、計時、計數、順序控制等功能,還具有數字和模擬量的輸入輸出、功率驅動、通信、人機對話、自檢、記錄顯示等功能。既可控制一台生產機械、一條生產線,又可控制一個生產過程。
4.編程簡單,容易掌握
目前,大多數PLC仍採用繼電控制形式的「梯形圖編程方式」。既繼承了傳統控制線路的清晰直觀,又考慮到大多數工廠企業電氣技術人員的讀圖習慣及編程水平,所以非常容易接受和掌握。梯形圖語言的編程元件的符號和表達方式與繼電器控制電路原理圖相當接近。通過閱讀PLC的用戶手冊或短期培訓,電氣技術人員和技術工很快就能學會用梯形圖編制控製程序。同時還提供了功能圖、語句表等編程語言。
PLC在執行梯形圖程序時,用解釋程序將它翻譯成匯編語言然後執行(PLC內部增加了解釋程序)。與直接執行匯編語言編寫的用戶程序相比,執行梯形圖程序的時間要長一些,但對於大多數機電控制設備來說,是微不足道的,完全可以滿足控制要求。
5.減少了控制系統的設計及施工的工作量
由於PLC採用了軟體來取代繼電器控制系統中大量的中間繼電器、時間繼電器、計數器等器件,控制櫃的設計安裝接線工作量大為減少。同時,PLC的用戶程序可以在實驗室模擬調試,更減少了現場的調試工作量。並且,由於PLC的低故障率及很強的監視功能,模塊化等等,使維修也極為方便。
6.體積小、重量輕、功耗低、維護方便
PLC是將微電子技術應用於工業設備的產品,其結構緊湊,堅固,體積小,重量輕,功耗低。並且由於PLC的強抗干擾能力,易於裝入設備內部,是實現機電一體化的理想控制設備。以三菱公司的F1-40M型PLC為例:其外型尺寸僅為305×110×110mm,重量2.3kg,功耗小於25VA;而且具有很好的抗振、適應環境溫、濕度變化的能力。現在三菱公司又有FX系列PLC,與其超小型品種F1系列相比:面積為47%,體積為36%,在系統的配置上既固定又靈活,輸入輸出可達24~128點。

PLC的基本結構
一般講,PLC分為箱體式和模塊式兩種。但它們的組成是相同的,對箱體式PLC,有一塊CPU板、I/O板、顯示面板、內存塊、電源等,當然按CPU性能分成若干型號,並按I/O點數又有若干規格。對模塊式PLC,有CPU模塊、I/O模塊、內存、電源模塊、底板或機架。無任哪種結構類型的PLC,都屬於匯流排式開放型結構,其I/O能力可按用戶需要進行擴展與組合。PLC的基本結構框圖如下:

接受 驅動
現場信號 受控元件

一、CPU的構成
PLC中的CPU是PLC的核心,起神經中樞的作用,每台PLC至少有一個CPU,它按PLC的系統程序賦予的功能接收並存貯用戶程序和數據,用掃描的方式採集由現場輸入裝置送來的狀態或數據,並存入規定的寄存器中,同時,診斷電源和PLC內部電路的工作狀態和編程過程中的語法錯誤等。進入運行後,從用戶程序存貯器中逐條讀取指令,經分析後再按指令規定的任務產生相應的控制信號,去指揮有關的控制電路,
與通用計算機一樣,主要由運算器、控制器、寄存器及實現它們之間聯系的數據、控制及狀態匯流排構成,還有外圍晶元、匯流排介面及有關電路。它確定了進行控制的規模、工作速度、內存容量等。內存主要用於存儲程序及數據,是PLC不可缺少的組成單元。
CPU的控制器控制CPU工作,由它讀取指令、解釋指令及執行指令。但工作節奏由震盪信號控制。
CPU的運算器用於進行數字或邏輯運算,在控制器指揮下工作。
CPU的寄存器參與運算,並存儲運算的中間結果,它也是在控制器指揮下工作。
CPU雖然劃分為以上幾個部分,但PLC中的CPU晶元實際上就是微處理器,由於電路的高度集成,對CPU內部的詳細分析已無必要,我們只要弄清它在PLC中的功能與性能,能正確地使用它就夠了。
CPU模塊的外部表現就是它的工作狀態的種種顯示、種種介面及設定或控制開關。一般講,CPU模塊總要有相應的狀態指示燈,如電源顯示、運行顯示、故障顯示等。箱體式PLC的主箱體也有這些顯示。它的匯流排介面,用於接I/O模板或底板,有內存介面,用於安裝內存,有外設口,用於接外部設備,有的還有通訊口,用於進行通訊。CPU模塊上還有許多設定開關,用以對PLC作設定,如設定起始工作方式、內存區等。
二、I/O模塊:
PLC的對外功能,主要是通過各種I/O介面模塊與外界聯系的,按I/O點數確定模塊規格及數量,I/O模塊可多可少,但其最大數受CPU所能管理的基本配置的能力,即受最大的底板或機架槽數限制。I/O模塊集成了PLC的I/O電路,其輸入暫存器反映輸入信號狀態,輸出點反映輸出鎖存器狀態。
三、電源模塊:
有些PLC中的電源,是與CPU模塊合二為一的,有些是分開的,其主要用途是為PLC各模塊的集成電路提供工作電源。同時,有的還為輸入電路提供24V的工作電源。電源以其輸入類型有:交流電源,加的為交流220VAC或110VAC,直流電源,加的為直流電壓,常用的為24V。
四、底板或機架:
大多數模塊式PLC使用底板或機架,其作用是:電氣上,實現各模塊間的聯系,使CPU能訪問底板上的所有模塊,機械上,實現各模塊間的連接,使各模塊構成一個整體。
五、PLC 的外部設備
外部設備是PLC系統不可分割的一部分,它有四大類
編程設備:有簡易編程器和智能圖形編程器,用於編程、對系統作一些設定、監控PLC及PLC所控制的系統的工作狀況。編程器是PLC開發應用、監測運行、檢查維護不可缺少的器件,但它不直接參與現場控制運行。
監控設備:有數據監視器和圖形監視器。直接監視數據或通過畫面監視數據。
存儲設備:有存儲卡、存儲磁帶、軟磁碟或只讀存儲器,用於永久性地存儲用戶數據,使用戶程序不丟失,如EPROM、EEPROM寫入器等。
輸入輸出設備:用於接收信號或輸出信號,一般有條碼讀人器,輸入模擬量的電位器,列印機等。
六、PLC的通信聯網
PLC具有通信聯網的功能,它使PLC與PLC 之間、PLC與上位計算機以及其他智能設備之間能夠交換信息,形成一個統一的整體,實現分散集中控制。現在幾乎所有的PLC新產品都有通信聯網功能,它和計算機一樣具有RS-232介面,通過雙絞線、同軸電纜或光纜,可以在幾公里甚至幾十公里的范圍內交換信息。
當然,PLC之間的通訊網路是各廠家專用的,PLC與計算機之間的通訊,一些生產廠家採用工業標准匯流排,並向標准通訊協議靠攏,這將使不同機型的PLC之間、PLC與計算機之間可以方便地進行通訊與聯網。
了解了PLC的基本結構,我們在購買程式控制器時就有了一個基本配置的概念,做到既經濟又合理,盡可能發揮PLC所提供的最佳功能。

『肆』 求四路搶答器

四路原理很簡單,這在電子技術相關書籍上都有的介紹。我也懶得去翻書了,幫你找到點資料,參考一下:
也許加上你自己的想法可以得到一些改進。
http://www.jusi.cc/Sjjc/ShowArticle.asp?ArticleID=77

實戰四《簡易四路搶答器》
;該搶答器供不多於4個參賽隊或者個人的搶答比賽場合使用。每個參賽隊的座位前
;安裝1隻搶答按鈕開關(用板上的S9、S10、S11、S12)和一個信號燈(D4、D5、D6、D7)。
;主持人座位前裝一隻復原開關(板上S3)、1隻蜂鳴器(板上BUZ1)和一個搶答器工作狀態
;指示燈(D10),每當主持人口頭發出號令之後.哪個隊先按下座位上的按鈕開關,該座位的信
;號燈就先被點亮,同時封鎖其他按鈕開關的活動.並且熄滅主持人座位上的狀態指示燈和發出
;三聲類似於電話振鈴的提示聲,以聲明此次搶答動作已經完成.在主持人確認後,按下復原按鈕
;,狀態指示燈重新點亮,並且同時發出"笛-笛-"聲,為下一次搶答作好准備.
;PIC單片機學習網 陳學乾 http://www.pic16.com
;程序文件名:"MCD-INTBUZ.ASM"
;*********************************************************************
;程序清單
;*********************************************************************
tmr0 equ 1h ;定義定時器/計數器0寄存器地址
status equ 3h ;定義狀態寄存器地址
option_reg equ 81h ;定義選項寄存器地址
option_temp equ 0a6h ;(在BACK1)定義選項寄存器的備份寄存器的地址
intcon equ 0bh ;定義中斷控制寄存器地址
portc equ 7h ;定義埠RC的數據寄存器地址
trisc equ 87h ;定義埠RC的方向控制寄存器地址
portb equ 06h ;定義埠RB的數據寄存器地址
trisb equ 86h ;定義埠RB的方向控制寄存器地址
c equ 0 ;定義進位標志位的位地址
z equ 2 ;定義0標志位的位地址
w equ 0 ;定義傳送目標寄存器為W的指示位
f equ 1 ;定義傳送目標寄存器為RAM的指示位
t0if equ 2 ;定義TMR0中斷標志位的位地址
t0ie equ 5 ;定義TMR0中斷使能位的位地址
inte equ 4 ;定義外部中斷使能位的位地址
intf equ 1 ;定義外部中斷標志位的位地址
count equ 20h ;定義一個計數器變數
count1 equ 24h ;定義一個計數器變數
count2 equ 25h ;定義一個計數器變數
count3 equ 27h ;定義一個計數器變數
count4 equ 28h ;定義一個計數器變數
portb_b equ 21h ;為PORTC定義一個備份寄存器
w_temp equ 7fh ;為W在體0和體1定義2個備份寄存器
;w_temp equ 0ffh ;(若是16F873/4,則需保留FFH單元)
status_temp equ 23h ;為STATUS定義一個備份寄存器
rp0 equ 5h ;定義狀態寄存器中的頁選位RP0
;******************復位向量和中斷向量***********************
org 000h ;
nop ;設置一條ICD必須的空操作指令
goto main ;
org 0004h ;
goto serv ;跳轉到中斷服務子程序
;*******************主程序************************************
main
bsf status,rp0 ;
movlw 0 ;
movwf trisc ;設置RC口全部為輸出
movlw 0ffh ;
movwf trisb ;設置RB口全部為輸入
movlw 02h ;設置選項寄存器:上拉電阻啟用;INT下降沿觸發
movwf option_reg ;分頻器給TMR0;分頻比1:8
bcf status,rp0 ;
movlw 90h ;
movwf intcon ;開發INT中斷
clrf portc ;RC口燈全滅
loop
movf portb,w ;讀取RB口數據
iorlw b'11100001' ;送RB口的數到備份寄存器並將除S9、S10、S11、S12以外的位全部送1
movwf portb_b ;
xorlw 0ffh ;沒有鍵按下轉LOOP繼續檢測
btfsc status,z ;
goto loop ;
call delay10ms ;防抖動廷時
movf portb,w ;
iorlw b'11100001' ;
xorwf portb_b,0 ;再次讀取RB口的數據,與前一次讀的數相同則鍵值有效
btfsc status,z ;
goto loop ;
comf portb_b,w ;取反以便使被按下按鍵的位為1,其它位為0
movwf portc ;送RC口顯示
call tone3t ;調用發聲三次子程序
loop1
comf portb,w ;檢測按鍵是否有松開
andlw b'00011110' ;
btfsc status,z ;
goto loop ;松開了返回
goto loop1 ;沒松開繼續檢測
;*********************中斷服務子程序*****************************
serv
;********************保存護現場部分*******************************
movwf w_temp ;保護W
swapf status,w ;保護STATUS
clrf status ;選擇體0
movwf status_temp ;將STATUS存入體0的備份寄存器
;********************* 調查中斷源**********************************
btfsc intcon,intf ;檢查不是INT中斷,返回
goto intserv ;是!轉到INT中斷處理部分
goto retfie0 ;
;*********************INT中斷處理部分******************************
intserv
clrf portc ;令全部燈熄滅
bsf portc,7 ;點亮D10,表示就緒
call tone630 ;調用高音子程序
call delay ;調用1S廷時子程序
call tone630 ;調用低音子程序
bcf intcon,intf ;清除INT中斷標志位
;*************************恢復現場部分*****************************
retfie0
swapf status_temp,w ;恢復STATUS
movwf status ;
swapf w_temp,f ;恢復W
swapf w_temp,w ;
retfie ;中斷返加
;*************************低音調發生子程序(500HZ/50MS)*************
tone500
movlw .50 ;循環次數寄存器賦初值
movwf count ;50=500HZx0.05Sx2
t5lop
bcf intcon,t0if ;清除TRM0溢出中斷標志位
movlw .131 ;給TMR0裝入初值256-125=131
movwf tmr0 ;啟動定時器
t5here
btfss intcon,t0if ;定時器溢出否
goto t5here ;否!循環栓測
movlw b'01000000' ;只將BIT6置位
xorwf portc,f ;只將RC6(BUZ)腳電平反轉,其餘不變
decfsz count,f ;循環次數遞減,為0,跳一步
goto t5lop ;不為0,跳回
return ;返回
;**************************高音調發生子程序(630HZ/50MS)*****************
tone630
movlw .63 ;循環次數寄存器賦初值
movwf count1 ;63=630HZx0.05Sx2
t6lop
bcf intcon,t0if ;清除TRM0溢出中斷標志位
movlw .157 ;給TMR0裝入初值157=256-99
movwf tmr0 ;啟動定時器
t6here
btfss intcon,t0if ;定時器溢出否
goto t6here ;否!循環栓測
movlw b'01000000' ;只將BIT6置位
xorwf portc,f ;只將RC6(BUZ)腳電平反轉,其餘不變
decfsz count1,f ;循環次數遞減,為0,跳一步
goto t6lop ;不為0,跳回
return ;返回
;*********************發聲1S子程序(1S=10x(50ms+50ms)***********
tonels
movlw .10 ;循環次數寄存器賦初值
movwf count2 ;
t1lop
call tone500 ;調用低音子程序
call tone630 ;調用高音子程序
decfsz count2,f ;循環次數遞減,為0,跳一步
goto t1lop ;不為0,跳回
return ;返回
;*********************TMR0廷時子程序1S(1S=16x256x(256-12)US)********
delay
bsf status,rp0 ;設置文件寄存器體1
movf option_reg,w ;保護選項寄存器內容
movwf option_temp ;
movlw 07h ;重設選項寄存器;上拉電阻啟用,INT下降沿觸發
movwf option_reg ;分頻器給TRM0;分頻比值設為1:256
bcf status,rp0 ;恢復到文件寄存器體0
movlw .16 ;循環利用TMROP定時16次
movwf count3 ;溢出次數寄存器
d1lop
bcf intcon,t0if ;清除TMR0溢出中斷標志位
bcf intcon,t0ie ;清除TMR0溢出中斷使能位
movlw .12 ;給TMR0裝入初值12=256-244
movwf tmr0 ;啟動定時器
here
btfss intcon,t0if ;用查詢法檢測TMR0溢出否
goto here ;否!返回
decfsz count3,f ;是!溢出次數減1,為0,跳一步
goto d1lop ;否!循環利用TMR0
bsf status,rp0 ;設置文件寄存器體1
movf option_temp,w ;恢復選項寄存器內容
movwf option_reg ;
bcf status,rp0 ;恢復到文件寄存器體0
return ;返回
;*************************斷續發聲3次報警子程序***********************
tone3t
movlw .3 ;循環次數寄存器賦初值
movwf count4 ;
t3lop
call tonels ;調用發聲1S子程序
call delay ;調用廷時1S子程序
decfsz count4,f ;循環次數遞減,為0,跳一步
goto t3lop ;不為0,跳回
return ;返回
;**************************軟體廷時10MS子程序****************************
delay10ms
movlw .13 ;將外層循環參數值送到30H
movwf 30h ;
lp0
movlw 0ffh ;將內層循環參數值送到31H
movwf 31h ;
lp1
decfsz 31h,1 ;變數31H內容遞減,若為0則跳躍
goto lp1 ;跳轉到LP1
decfsz 30h,1 ;變數30H內容遞減,若為0則跳躍
goto lp0 ;跳轉到LP0
return ;返回主程序
end ;源程序結束
;***************************************************
; 進入該實戰演練的工序流程如下:
; 1.創建源文件和編輯源文件;在此介紹一種不同於前面講的創建源文件的方法,用Windows附件中的」記事本」
; 這個為大家所熟知和好用的文件編輯器,並且可以方便的加入中文注釋.不過有兩點需要注意,一是注釋前面的
; 分號」;」必須用西文半形輸入;二是必須用」.asm」擴展名存儲到事先建立的一個專用子目錄下.
; 2.打開MPLAB集成開發環境:首先在WINDOWS環境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動MPLAB
; 並進入MPLAB的桌面.
; 3.創建項目:選用菜單File>New或Project>New Project,在事先建立的一個專用子目錄下創建一個新項目,將
; 用記事本創建的源文件加入到該項目中.
; 4.建立項目中的目標文件:選擇菜單Project >Build All(項目>建立所有文件),MPLAB將自動調用MPASM將項目
; 文件管理下的源文件(.asm)匯編成十六進制的目標文件(.hex).
; 5.ICD參數設置:通過菜單命令Project>Edit Project或者Option>Development Mode,將開發模式設置為
; 」MPLAB ICD Debugger」,點擊OK按鈕,打開ICD的工作窗口,在調試階段,可以按照說明書圖2-10設置各項,但需注意
; OSCILLATOR應設置為XT方式,尤其需要說明的是,選中「Enable Debug Mode」(使能調試模式)選項,在向目
; 標單片機燒寫機器碼程序時,會將調試臨控程序同時寫入單片機的指定程序存儲器區域,然後才允許用ICD方式調試。
; 6.電路設置:將演示板的S1全部拔到ON,S4全部拔到OFF,S13的第1、第5拔到ON,第6、第7拔到OFF ,LCD不要插在演示板上,
; 以使埠C只與8隻發光二極體接通;將用於選擇頻率的插針跳線插到」XT OSC」位置上,板上93CXX、24CXX應拿下。
; 7.向目標單片機燒寫目標程序:用戶在點擊功能按鈕」Program」向目標單片機燒寫機器碼程序時,會等待一段時間,
; 並且在條狀的狀態信息欄中,出現提示信息。有一點需要引起注意,就是PIC16F87X單片機的FLASH程序存儲器的擦寫
; 周期是有限的,大約為1000次,應盡量節省它的使用壽命。
; 8.運行和調試用戶程序和用戶電路:在各項參數設置好後,將ICD的工作窗口最小化,利用前面講的」運行及調試」中介
; 紹的幾種方法進行調試.當用自動單步方式調試時,建議臨時禁止廷時子程序發揮作用,具體的方法是,可在CALL DELAY指
; 令前添加一個分號,並且重新匯編一次.為了學習目的,在調試過程中可以人為地加入一些軟體漏洞(BUG)或硬體故障,來模
; 仿單片機埠引腳的片內或片外故障.
; 9.定型燒寫目標單片機;經過多次重復上述步驟的反復修改和調試,使得程序和電路在聯機狀態完全正常,這時可以進行
; 定型燒寫,即將ICD窗口中的」Enable Debug Mode」(使能調試模式)選項消除,不再將調試臨控程序寫入單片機中.
; 10.獨立運行驗收:上一步中的燒寫過程完成後,即可將ICD模塊和ICD模擬頭(或演示板)之間的6芯電纜斷開,讓單片機在
; 演示板獨立運行,觀察實際效果.

『伍』 AT89C51單片機8路搶答器C語言代碼怎麼寫,急用,謝謝了

這個代碼沒有問題,我模擬過:
#include<reg51.h>
#defineucharunsignedchar
uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbitrstkey=P2^2;
sbitspeaker=P2^0;
voiddelay()//延時約400毫秒
{
uchari,j;
for(i=0;i<200;i++)
for(j=0;j<250;j++);
}
main()
{
uchari,key;
P2=0xff;
while(1)
{
i=0;
P1=table[i];
while(1)
{
key=P3;
if(key!=0)break;
}
switch(key)
{
case0x01:i=1;break;
case0x02:i=2;break;
case0x04:i=3;break;
case0x08:i=4;break;
case0x10:i=5;break;
case0x20:i=6;break;
case0x40:i=7;break;
case0x80:i=8;break;
default:break;
}
P1=table[i];//顯示按下搶答器的號
P0=key;//顯示按下鍵號的LED
while(1)
{
if(rstkey==0)break;//主持人按下復位鍵則重新開始
speaker=~speaker;//否則蜂鳴器報警
delay();
}
}
}

閱讀全文

與asd單片機四路搶答器英文相關的資料

熱點內容
演算法纂要學術價值 瀏覽:973
程序員你好是什麼意思 瀏覽:799
倩女幽魂老伺服器如何玩 瀏覽:559
電子鍾單片機課程設計實驗報告 瀏覽:997
看加密頻道 瀏覽:379
程序員算不算流水線工人 瀏覽:632
三星電視我的app怎麼卸載 瀏覽:44
簡述vi編譯器的基本操作 瀏覽:507
讓程序員選小號 瀏覽:91
加強數字貨幣國際信息編譯能力 瀏覽:584
購買的app會員怎麼退安卓手機 瀏覽:891
程序員的種類及名稱 瀏覽:293
美國程序員薪資 瀏覽:13
黑石通匯證券伺服器什麼時候到期 瀏覽:393
東方財富app里我的關注怎麼看 瀏覽:749
bm3d單反級降噪演算法 瀏覽:457
華為安卓機激活時間怎麼查詢 瀏覽:850
如何用優盤重裝伺服器系統 瀏覽:317
日本結婚三代演算法 瀏覽:920
皓強工具解壓步驟 瀏覽:691