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

正文內(nèi)容

基于51單片機(jī)的數(shù)字搶答器-閱讀頁

2024-11-28 07:06本頁面
  

【正文】 switch(weicro) // I/O 口狀態(tài)查詢 { 11 case 0xfe:P2=table[num%10]。 case 0xfd:P2=table[time/10]。 case 0xfb:P2=table[time%10]。 case 0xf7:P2=table[num/10]。 } } } 本次設(shè)計使用了 P0 口作為顯示掃描的位選信號, P2 口作為顯示碼的輸出。 按鍵掃描程序模塊 此設(shè)計可實(shí)現(xiàn) 16 位搶答的功能,并可以在有人按下?lián)尨疰I后,報警器報警3 秒,同時按鍵鎖定,不再響應(yīng)后面的按鍵信息。 搶答按鍵部分程序如下: void key_num() { weicro=0xef。i0。 // I/O 狀態(tài)右移循環(huán) P1=weicro。j0。 //鍵值賦值 flag0=0。 } } } } } 程序利用 P1 口完成 16 個按鍵的掃描查詢,并由查表得方式查詢鍵值,賦給num,送入顯示程序中處理顯示。 flag1 是報警器響鈴標(biāo)志,將在報警程序中介紹。完成此部分功能的程序如下: void alarm() { if(flag1==1 || time==0) //報警判斷 { flag0=0。 TR1=1。 //報警器開關(guān)開 } } void timer() interrupt 3 //定時 /計數(shù)器中斷 1 { d。 flag1=0。 //報警器開關(guān)關(guān) time=10。 } } 由按鍵程序中可以看到,當(dāng)有搶答鍵按下時, flag1=1,或者在倒計時結(jié)束時,time=0,都將使得報警器判斷成立,進(jìn)入報警狀態(tài)并鎖定搶答鍵按鍵。當(dāng) yes=0 時,報警電路的 PNP 管導(dǎo)通,報警器響。 當(dāng)定時結(jié)束后, flag1=0, yes=1,退出報警模式,同時將倒計時復(fù)位( time=10)。最終,我們設(shè)計出的搶答器的可以實(shí)現(xiàn)的功能是:①,能用軟件設(shè)定搶答時限。②,有人搶答以后倒計時停止計時,并且數(shù)碼管后兩位顯示選手的組號,并且蜂鳴器短時報警三秒,其余選手的搶答將無效。③,主持人控制按鍵按下以后,顯示復(fù)位,并顯示倒計時的初值,進(jìn)入了新一輪的搶答。 根據(jù)我們的設(shè)計,完全完成了預(yù)期的搶答器功能,在本設(shè)計過程中,重點(diǎn)是軟件設(shè)計的合理規(guī)劃。我們采用兩個定時器中斷,和標(biāo)志位( 51 單片機(jī)內(nèi)部 CPU 自帶的布爾處理機(jī)),解決了這個問題。通過本次設(shè)計,我們從中也收獲了很多,培養(yǎng)了自己的工程意識和團(tuán)隊(duì)合作的精神,同時也要向在本次設(shè)計過程中給與我們幫助的老師和同學(xué)致以誠摯的謝意。 bit flag0。 unsigned int i,j,d,c,num,time。 unsigned char table[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}。 void display()。 void delay(unsigned int z)。 void init()。 while(1) { display()。 alarm()。 ET0=1。 EX0=1。 TMOD=0x22。 TH0=0x9C。 d=30000。 } void display() { weicro=0xef。i0。 weicro=_cror_(weicro,1)。 switch(weicro) { case 0xfe:P2=table[num%10]。 case 0xfd:P2=table[time/10]。 case 0xfb:P2=table[time%10]。 case 0xf7:P2=table[num/10]。 } } } void key_num() { weicro=0xef。i0。 P1=weicro。j0。 flag0=0。 } } } } } void begin() interrupt 0 18 { flag0=1。 TR0=1。 if(c==0) { time。 } } void alarm() { if(flag1==1 || time==0) { flag0=0。 TR1=1。 } } void timer() interrupt 3 { d。 flag1=0。 time=10。 } } void delay(unsigned int z) { unsigned int x,y。x0。y0。 } 19
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1