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

正文內(nèi)容

單片機籃球比賽記分器(編輯修改稿)

2025-07-23 09:40 本頁面
 

【文章內(nèi)容簡介】 件自動清“0”,在查詢方式下用軟件清“0”。TR1:定時器1運行控制位。由軟件清“0”關(guān)閉定時器1。當GATE=1,且為高電平時,TR1置“1”啟動定時器1;當GATE=0,TR1置“1”啟動定時器1。TF0:定時器0溢出標志。其功能及操作情況同TF1。TR0:定時器0運行控制位。其功能及操作情況同TR1。IE1:外部中斷1請求標志位。IT1:外部中斷1觸發(fā)方式選擇位。當IT1=0,為低電平觸發(fā)方式;當IT1=1,為下降沿觸發(fā)方式。IE0:外部中斷0請求標志位。IT0:外部中斷0觸發(fā)方式選擇位。 當IT0=0,為低電平觸發(fā)方式;當IT0=1,為下降沿觸發(fā)方式。TCON中低4位與中斷有關(guān)。由于TCON是可以位尋址的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。 聲音的產(chǎn)生我們知道,聲音的產(chǎn)生是一種音頻振動的效果。振動的頻率越高,則為高音;振動的頻率越低,則為低音。聲音的頻率范圍為20Hz200kHz之間,人類耳朵比較容易辨識的聲音頻率范圍是200Hz20kHz,一般音響電路是用正旋波信號驅(qū)動喇叭,從而產(chǎn)生悅耳的音樂;在數(shù)字電路里,則是用數(shù)字脈沖信號驅(qū)動喇叭,從而產(chǎn)生聲音。若要AT89C51產(chǎn)生聲音,可利用程序來控制單片機某個I/O口的“高”電平或者“低”電平,則在該I/O口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”、“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào)。系統(tǒng)主程序流程圖如下:停止比賽結(jié)束讀取功能鍵等待按鍵釋放N比賽開始,并初始化YYN讀P3口的值啟動按鍵是否按下去抖確認是否有按鍵按下B隊加1分B隊減1分NY將BCD碼轉(zhuǎn)化為7段碼顯示出來,并確認比賽是否結(jié)束將當前的分數(shù)轉(zhuǎn)化為BCD碼確認按下的是哪個鍵鳴笛休息A隊減1分A隊加1分圖34 主程序流程圖系統(tǒng)按鍵部分流程圖: 開始 YKey4=0? 初始化定時器 N 比賽開始 設(shè)定比賽時間 B減一分 Y時間到?Key1=0? N N A隊加一分 Y Y 蜂鳴器響Key2=0? N Key=0?開始 Y A隊減一分 YY Y 關(guān)閉蜂鳴器 N Key3=0? 結(jié)束 Y B隊加一分圖35 按鍵部分流程圖(一)在主程序循環(huán)中,主要工作是掃描是否有鍵按下,若有鍵按下則要確認是哪個鍵按下并做相應(yīng)的處理,并做同步顯示處理。void main(void){ TMOD=0x01。 //設(shè)置T0為工作方式1,作為16位計數(shù)器 TH0=(6553550000)/256。 //設(shè)置T0的高8位,并且T0的計數(shù)值為50ms TL0=(6553550000)%256。 //設(shè)置T0的低8位 music=0。 //初值喇叭不響 EA=1。 //開放所有中斷 ET0=1。 //允許定時/計數(shù)器T0溢出中斷 EX0=1。 //允許外部中斷0 IT0=1。 //設(shè)置外部中斷0為邊沿觸發(fā)方式(下降沿) while(1) //無窮循環(huán),程序一直運行 { Key_Y()。 //預(yù)置場次比賽時間 if(Star==0amp。amp。f!=0amp。amp。Puse!=0) //按下“開始鍵”,設(shè)置好比賽時間,并且未按“停止”鍵時,比賽正式開始 { TR0=1。 //啟動定時器T0,開始計時 Key_if()。 //開始計分 } else { TR0=0。 //比賽還未開始或比賽結(jié)束時間到,停止計時 } Js_Jf_Scan()。 //將相應(yīng)的分數(shù)、時間同步進行顯示 }}(二)時間顯示設(shè)計系統(tǒng)要實現(xiàn)時間的計時功能,所以要用定時/計數(shù)器的定時功能進行時間處理,在本程序設(shè)計中,用一個定時50ms的時間中斷函數(shù)void Js_50ms(void),一個時間處理函數(shù)void Ptime(uchar)。由于時間顯示屏用的是4位的數(shù)碼管進行顯示,用動態(tài)掃描顯示驅(qū)動,用void Js_Scan(void)處理動態(tài)掃描顯示。時間預(yù)置用按鍵實現(xiàn),首先進行按鍵判斷處理,用void Key_Y(void)函數(shù)處理。嵌入式籃球計分屏實現(xiàn)時間顯示屏的部分源程序如下:/*******************設(shè)置場次比賽時間********************/void Key_Y(void){ if(YK1==0) //初始狀態(tài),分鐘的十位為0 { delay(1)。 //延時去抖動 fs=fs+1。 //分十位加1分 fy=fs*10+fg。 //求出預(yù)置時間的分鐘值 f=fy。 //中間變量 } if(YK2==0) //初始狀態(tài),分鐘的個位為0 { delay(1)。 //延時去抖動 fg=fg+1。 //分個位加1分 fy=fs*10+fg。 //求出預(yù)置時間的分鐘值 f=fy。 //中間變量 } Js_Scan()。}/********T0中斷服務(wù)函數(shù),每隔50ms產(chǎn)生一次中斷********/void Js_50ms(void)interrupt 1 using 1 //定時器T0中斷,用工作寄存器組1{ TH0=(6553550000)/256。 //定時器T0的高8位 TL0=(6553550000)%256。 //定時器T0的低8位 num++。 //每50ms累加一次 Ptime(num)。 //調(diào)用時間處理函數(shù)}/**********************時間處理函數(shù)********************/void Ptime(uchar time){ if(time==20) //如果為1s(50ms*20=1s) { num=0。 m++。 //每到1s,計時器累加1次 ms=m/10。 //秒的十位 mg=m%10。 //秒的個位 if(m==60) //如果為1min { m=0。 //秒鐘置0 mg=m%10。 //秒鐘的個位置0 ms=m/10。 //秒鐘的十位置0 f。 //分鐘開始在預(yù)設(shè)的比賽時間基礎(chǔ)上倒計時 fs=f/10。 //分鐘的十位 fg=f%10。 //分鐘的個位 if(f==0) //分鐘數(shù)倒計時到0 { TR0=0。 //時間到,停止計時 } } }}/****************數(shù)碼管動態(tài)掃描顯示******************/void Js_Scan(void){ uchar j。 for(j=0。j=5。j++) {S4=0。P0=LED_Num[mg]。delay(1)。S4=1。 /*將秒鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/S3=0。P0=LED_Num[ms]。delay(1)。S3=1。 /*將秒鐘的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/S2=0。P0=LED_Num[fg]。delay(1)。S2=1。 /*將分鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/S1=0。P0=LED_Num[fs]。delay(1)。S1=1。 /*將分鐘的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/ }}(三)計分顯示設(shè)計本系統(tǒng)是利用按鍵來實現(xiàn)兩隊的計分功能的,當按一次加分鍵,在程序中要用兩個整形的變量作為A、B隊的分值計分器,程序里用sum及sum1分別表示B和A隊的分值。如分別要在數(shù)碼管的每位上動態(tài)掃描顯示出來,就必須對兩隊所得的分數(shù)進行分位計算。程序里分別用q、b、s、g表示B隊顯示屏的千位、百位、十位、個位;用qbsg1表示A隊顯示屏的千位、百位、十位、個位。通過按鍵判斷處理,判斷是加分還是減分,用函數(shù)void Key_if(void)來實現(xiàn),用void Jf_Scan(void)函數(shù)進行動態(tài)掃描顯示分值。嵌入式籃球計分屏計分顯示的部分實現(xiàn)程序如下:/*******************數(shù)碼管動態(tài)掃描顯示********************/void Jf_Scan(void){ uchar j。 for(j=0。j=5。j++) {KL4=0。P0=LED_Num[g1]。delay(1)。KL4=1。 /*將A隊分數(shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/KL3=0。P0=LED_Num[s1]。delay(1)。KL3=1。 /*將A隊分數(shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/ KL2=0。P0=LED_Num[b1]。delay(1)。KL2=1。 /*將A隊分數(shù)的百位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/ KL1=0。P0=LED_Num[q1]。delay(1)。KL1=1。 /*將A隊分數(shù)的千位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/CL4=0。P0=LED_Num[g]。delay(1)。CL4=1。 /*將B隊分數(shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/CL3=0。P0=LED_Num[s]。delay(1)。CL3=1。 /*將B隊分數(shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/CL2=0。P0=LED_Num[b
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1