freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的四路搶答器設(shè)計資料-在線瀏覽

2025-01-15 14:56本頁面
  

【正文】 3^7。 //定義 控制 MAX7219 的串行數(shù)據(jù)輸入端 sbit LOAD=P2^3。 //定義 控制 MAX7219 的時鐘信號 sbit BUZ=P0^1。 //設(shè)定的時間用需要產(chǎn)生的中斷次數(shù)表示 uchar bdata byte。 bit foul_flg。 //是否倒計時超時標(biāo)志 bit key_flg。 //初始化 MAX7219 void write_reg(uchar,uchar)。 //向字型寄存器寫數(shù)據(jù) void send_data(uchar)。 //函數(shù)功能:設(shè)置倒計時時間 bit control_key(void)。 //函數(shù)功能:檢測哪個參賽者按鍵 void display_time(void)。 //函數(shù)功能:犯規(guī)處理 void key_handle(uchar)。 //函數(shù)功能:超時處理 void init_t0(void)。 //函數(shù)功能:延時 20ms,按鍵去抖動 void buz_on(void) //函數(shù)功能:蜂鳴器響 500ms void main(void) { uchar key_number。 //初始化 MAX7219 while(1) { foul_flg=0。 TR0=0。//上電后 3 個數(shù)碼管全部顯示 0 write_digit(DIGIT1,LED_code[0x0])。 while((control_key()==1)amp。(foul_flg==0)) //如果主持人沒有按鍵 { key_number=getkey_num()。 else //如果有人犯規(guī) { foul_handle()。 //設(shè)置犯規(guī)標(biāo)志 } } if(foul_flg==1) //如果有人犯規(guī) { while(control_key()==1)。 //主持人按鍵后進(jìn)入下一輪 } else //如果沒有人犯規(guī),必定是主持人允許答題 { intr_counter=set_time()。 //定時器 T0 開始計時 buz_on()。amp。 //在規(guī)定時間內(nèi)檢查是否有按鍵 if(key_number!=0) //如果有 { key_handle(key_number)。 //設(shè)置有人按鍵答題標(biāo)志 TR0=0。 //并顯示剩余時間 continue。 //等待主持人按鍵以進(jìn)入下一輪 continue。 //超時處理 while(control_key==1)。 //主持人按鍵后進(jìn)入下一輪 } } } } bit control_key(void) //檢測主持人是否按鍵 { if(KEY5==1) //如果 KEY5 為高,說明沒有按鍵 return 1。 //延時 20ms,去抖動 if(KEY5==1) //如果 20ms 后 KEY5 變?yōu)楦唠娖剑歉蓴_ return 1。 //返回 0 } uchar set_time(void) //根據(jù)設(shè)置決定倒計時時間 { uchar intr_counter。 //10s else if(P3^5==0) intr_counter= //6s else if (P3^3==0) intr_counter=80。 //如果沒有設(shè)置,默認(rèn)為 10s return intr_counter。 key_state=P1。=0x0f。 //返回 1 else { key_state^=0xff。0x01) return 1。0x02) return 2。0x04) return 3。 //如果 KEY4 被按下,返回 4 } } void foul_handle(uchar key_number) //犯規(guī)處理 { write_digit(DIGIT0,key_number)。 //顯示 “FF” write_digit(DIGIT2,0x0f)。 //蜂鳴器響 } void time_over_handle(void) //超時處理 { write_digit(DIGIT0,0x0)。 //顯示 “EE” write_digit(DIGIT2,0x0e)。 //蜂鳴器響 } void key_handle(uchar key_number) //按鍵處理 { write_digit(DIGIT0,key_number)。 } void display_time(void) //顯示倒計時剩余時間 { uchar number。 number=int_counter/20。 //秒數(shù)的十位數(shù)字 write_digit(DIGIT2,number%10)。 BUZ=0。i=25。 BUZ=1。 //T0 選擇工作方式 1, 16 位定時器 TH0=TIMER_HBYTE。 EA=1。 //使能 T0 溢出中斷 TR0=1。 //定時時間為 50ms TL0=TIMER_LBYTE。 //中斷次數(shù) if(intr_counter==0) //倒計時時間到 { time_over_flg=1。//禁止 T0 運行 } } void delay_20ms(void) //延時 20ms {} void max7219_reset(void) //初始化 MAX7219 {} void write_reg(uchar reg,uchar sdata) //寫入命令 {} void write_digit(uchar digit,uchar number) //顯示數(shù)字 {} void send_data(uchar byte) //MAX7219 的驅(qū)動程序 {} 基于 MCS51 單片機的四路搶答器 搶答器是為智力競賽參賽者答題時進(jìn)行搶答而設(shè)計的一種優(yōu)先判決器電路,廣泛應(yīng)用于各種知識競賽、文娛活動等場合。 曾經(jīng)咱們用的是 可以采用前期的模擬電路、數(shù)字電路或模擬與數(shù)字電路相結(jié)合的方式,但這種方式制作過程復(fù)雜,而且準(zhǔn)確性與可靠性不高,成品面積大,安裝、維護(hù)困難。 硬件設(shè)計 硬件電路應(yīng)能完成以下功能:參加競賽者對主持人提出的問題要在最短的時間內(nèi)作出判斷,并按下?lián)尨鸢存I回答問題。若有人在可以搶答之前按鍵,應(yīng)該有違規(guī)提示?;卮鹜昊虺瑫r后,由主持人將所有按鍵恢復(fù),重新開始下一輪。 各電路模塊的功能如下。 單片機部分:通過讀取 ~ 的狀態(tài)決定倒計時時間;通過讀取 P1.3~ 的狀態(tài)讀取按鍵情況;通過 ~ 控制顯示模塊以顯示按鍵者的號碼和倒計時所剩時間;通過 控制蜂鳴器。 時間設(shè)定模塊:以撥碼開關(guān) U3 作為倒計時時間的選擇信號。判斷時 優(yōu)先級最高, 優(yōu)先級最低。 按鍵模塊: KEY1~ KEY4的信息可以直接傳輸?shù)?~ 。 KEY1~ KEY4 為搶答按鍵, KEY5 為主持人控制按鍵。 數(shù)碼管顯示模塊:數(shù)碼管顯示模塊由一片 MAX7219 和 3 個數(shù)碼管組成。 程序設(shè)計 搶答器工作過程如下。 首先主持人選定倒計時時間,單片機掃描 U3以獲取此信息。 程序流程如圖 所示。 【例 134】用 8051 單片機控制的四路搶答 器程序。 include typedef unsigned char uchar。 sbit KEY5=P3^7。 //定義 控制 MAX7219 的串行數(shù)據(jù)輸入端 sbit LOAD=P2^3。 //定義 控制 MAX7219 的時鐘信號 sbit BUZ=P0^1。 //設(shè)定的時間用需要產(chǎn)生的中斷次數(shù)表示 uchar bdata byte。 bit foul_flg。 //是否倒計時超時標(biāo)志 bit key_flg。 //初始化 MAX7219 void write_reg(uchar,uchar)。 //向字型寄存器寫數(shù)據(jù) void send_data(uchar)。 //函數(shù)功能:設(shè)置倒計時時間 bit control_key(void)。 //函數(shù)功能:檢測哪個參賽者按鍵 void display_time(void)。 //函數(shù)功能:犯規(guī)處理 void key_handle(uchar)。 //函數(shù)功能:超時處理 void init_t0(void)。 //函數(shù)功能:延時 20ms,按鍵去抖動 void buz_on(void) //函數(shù)功能:蜂鳴器響 500ms void main(void) { uchar key_number。 //初始化 MAX7219 while(1) { foul_flg=0。 TR0=0。//上電后 3 個數(shù)碼管全部顯示 0 write_digit(DIGIT1,LED_code[0x0])。 while((control_key()==1)amp。(foul_flg==0)) //如果主持人沒有按鍵 { key_number=getkey_num()。 else //如果有人犯規(guī) { foul_handle()。 //設(shè)置犯規(guī)標(biāo)志 }
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1