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

正文內(nèi)容

畢業(yè)設(shè)計基于at89s52單片機的籃球計時計分器(編輯修改稿)

2025-01-06 19:42 本頁面
 

【文章內(nèi)容簡介】 語言的優(yōu)勢。 程序部分由主程序、 T0 中斷程序、掃描顯示子程序、計時加(減)1 秒的子程序、暫停子程序、快表和回表子程序、延時子程序等組成。 延時 模塊設(shè)計 void delay(int t) 調(diào)用該子程序能實現(xiàn)延時功能 { 通過參數(shù) t,可以調(diào)成延時時間 while(t) { unsigned int i。 設(shè)置變量 i 的變化范圍,能調(diào)整延時的單位時間 for(i=0。i200。i++)。 長度, i 越小,延時的單位時間越短,精度越高 } } 數(shù)碼管動態(tài)刷新顯示程序 void display(int i,int j,int x,int y) 變量 i, j, x, y 分別為分,秒, A分數(shù), B 分數(shù) { if(jie==1amp。amp。bujin!=2) 當中間變量 jie==1 時,為上半場,此時對 P1 賦值 P1=0xbf。 使 P1=0xbf, 即 P1=1011 1111B,上半場指示燈對應(yīng)點亮 P2=0xfe。 數(shù)碼管動態(tài)刷新顯示程序 P2=1111 1110, i 為 分鐘 P0=seg[i%100/10]。 P2=0xfe,所以刷新顯示時間的分鐘十位,調(diào)用延時程序, delay(1)。 延時數(shù)碼管的點亮 P2=0xff。 P0=0。 P2=0xfd。 同理,動態(tài)刷新時分鐘個位并延時點亮 P0=seg[i%10]。 delay(1)。 P2=0xff。 P0=0。 P2=0xfb。 同理,動態(tài)刷新時秒鐘十位并延時點亮 P0=seg[j%100/10]。 delay(1)。 P0=0。 P2=0xff。 P2=0xf7。 同理,動態(tài)刷新時秒鐘個位并延時點亮 P0=seg[j%10]。 delay(1)。 P0=0。 P2=0xff。 P2=0xef。 同理,動態(tài)刷新 A 分數(shù)十位并延時點亮 P0=seg[x%100/10]。 delay(1)。 P2=0xff。 P0=0。 P2=0xdf。 同理,動態(tài)刷新 A 分數(shù)個位并延時點亮 P0=seg[x%10]。 delay(1)。 P2=0xff。 P0=0。 P2=0xbf。 同理,動態(tài)刷新 B 分數(shù)十位并延時點亮 P0=seg[y%100/10]。 delay(1)。 P0=0。 P2=0xff。 P2=0x7f。 同理,動態(tài)刷新 B 分數(shù)十位并延時點亮 P0=seg[y%10]。 delay(1)。 P0=0。 P2=0xff。 } 本設(shè)計中各個數(shù)碼管采用 動態(tài)驅(qū)動 , 使各位數(shù)碼管逐個輪流受控顯示,由于掃描速度極快 (本實驗中大約每 20 毫秒刷新一次),所以 顯示效果與靜態(tài)驅(qū)動相同 。 T0 中斷程序 void t0(void) interrupt 1 本設(shè)計調(diào)用定時器 T0,計時單位為一秒 { TH0=0xb1。 對定時器 T0 送入計數(shù)初值,由于TH0=0xb。 TL0=0x10。 TL0=0x10 故定時器定時為 20 毫秒,即每 if(n==0) 20 毫 秒 調(diào) 用 一 次 void t0(void) interrupt 1 { n=60。 m。 } i++。 if(i==50) { 令 i 值為 50 50*20 毫秒 =1 秒,來實現(xiàn)計時 n。 單位為一秒 i=0。 } display(m,n1,x,y)。 調(diào)用動態(tài)刷新顯示程序,即每 20毫秒刷新一 } 次數(shù)碼管 加分子程序 void keyjiafen1() { 當檢測到 RXD 按鍵按下時,調(diào)用延時子程序 if(RXD==0) 實現(xiàn)消除按鍵抖動功能,即,當 delay(1)。, { 檢測到按鍵按下時候,延時,按鍵仍按下,說明 if(RXD==0) 按鍵確實按下,非抖動, A 對應(yīng)加分 { while(RXD==0)。 x++。 } } if(TXD==0) 檢測 TXD 加分按鍵時候按下, B加分 { delay(1)。 if(TXD==0) { while(TXD==0)。 y++。 } } } 減分子程序 void keyjianfen1() 減分按鍵檢測子程序,其基本算法及功能與加分 { 相同 if(WR==0) { delay(1)。 if(WR==0) { while(WR==0)。 x。 } } if(RD==0) { delay(1)。 if(RD==0) { while(RD==0)。 y。 } } } 調(diào)整時間子程序 調(diào)整時間子程序 ,使時間快速倒退或快進,實現(xiàn)回表功能,同時回表之后能自動暫停 void key2() { if(INT0==0) { delay(10)。 if(INT0==0) 回表子程序,檢測到 INT0 按下時,使時間回倒 { chuzanting==0。 chuzanting==0。 zanting=1。為附加變量,當回表按鍵 zanting=1。 松開時 ,表暫停,這兩個變量用來調(diào)用暫停 n++。 if(n==60) { m++。 n=1。 } } } if(INT1==0) 快表子程序,檢測到 INT1 按下時,使倒計加快, { 通常情況下與回表子程序配合使用,即當回表 回過的時候,按此鍵調(diào)整時間 delay(10)。 chuzanting==0。 zanting=1。作用同上 if(INT1==0) { chuzanting==0。 zanting=1。 n。 } } } void shijian() 該程序使回表和快表按鍵松開時候能自動暫停 { if(zanting==1amp。amp。INT0==1amp。amp。INT1==1amp。amp。chuzanting==0 ) { EA=0。 zanting==1amp。amp。INT0==1amp。amp。INT1==1amp。amp。chuzanting==0作用為 zanting=0。 當按鍵松開的時候,調(diào)用暫停程序條件 huzanting=0。 zanting=0。chuzanting=0,初始化,以便下次回表和快表 while(1) 按鍵松開時候仍能調(diào)用暫停程序 { display(m,n,x,y)。 if(P1_0==0) 當檢測暫停鍵按下,開中斷,跳出暫停 { delay(1)。 if(P1_0==0) { while(P1_0==0)。 EA=1。 break。 } } } } } 半場交換比分子程序 void key3() { int temp。 定義中間變量 temp,檢測到有按鍵按下時候 if(zidong==1amp。amp。jie==1) 通過 temp 交換甲隊,乙隊兩隊比賽分數(shù) { temp=x。 zidong==1amp。amp。jie==1是判斷半場的條件 y=temp。 display(m,n,x,y)。 刷新數(shù)碼管 zidong=0。 bujin=0。 } } 比賽暫停子程序 void key4() { if(P1_0==0) 檢測到暫停按鍵按下時候,令 EA=0 關(guān)閉中斷 { delay(1)。 同通過死循環(huán)程序 while(1),不斷刷新數(shù)碼管 if(P1_0==0) 當暫停鍵再次按下時候,開中斷,以使比賽時間 { 繼續(xù)倒計時,由于在暫停的時候,程序處于死循 while(P1_0==0)。 EA=0。 無法回到主程序,暫停時,除了暫停鍵 while(1) 其他按鍵按下均無效 { display(m,n,x,y)。 if(P1_0==0) { 當暫停鍵再次按下時候, EA=1 開中斷,計時數(shù)碼管 delay(1)。 繼續(xù)倒計時,同時通過 break 語句,跳出死循環(huán) if(P1_0==0) { while(P1_0==0)。 EA=1。 break。 } } } } } } 中場指示燈程序 void over() { if((m==0)amp。amp。(n==0)) 當 m, n 均為 0 的時候,通過變量 jie 的值判斷比賽 { 是否結(jié)束 if(jie1) 如果 jie1,說明半場到了,比賽沒有結(jié)束, { 令 m=2,n=0,關(guān)中 斷,再次按下暫停鍵時候繼續(xù)倒計時 m=2。 同是 T1=1; delay(400) ; delay(400
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1