版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)習(xí)情境1 籃球計(jì)時(shí)計(jì)分控制系統(tǒng)的設(shè)計(jì)之 整體模塊系統(tǒng)設(shè)計(jì) 點(diǎn)名,復(fù)習(xí)1、 簡(jiǎn)述數(shù)碼管動(dòng)態(tài)顯示技術(shù).2、 矩陣鍵盤的硬件電路設(shè)計(jì)以及軟件程序代碼設(shè)計(jì)3、 簡(jiǎn)述74HC573的基本功能以及各引腳的作用.4、 簡(jiǎn)述74HC154的基本功能以及各引腳的作用。 新課講授前面我們分別設(shè)計(jì)好了計(jì)時(shí)模塊(24秒計(jì)時(shí)和單節(jié)時(shí)間計(jì)時(shí))和計(jì)分模塊,把各個(gè)模塊綜合起來(lái)就構(gòu)成了籃球計(jì)時(shí)計(jì)分控制系統(tǒng)。因?yàn)楦鱾€(gè)子模塊都經(jīng)過(guò)了調(diào)試,軟件和硬件都沒(méi)有什么問(wèn)題,在整合這些子模塊時(shí)只需做些簡(jiǎn)單的修改.1。4 整機(jī)硬件電路設(shè)計(jì)整機(jī)硬件電路具體如下圖所示:1。5 整機(jī)軟件設(shè)計(jì)(完整C程序代碼)#includereg51.hdefin
2、e uchar unsigned char#define uint unsigned int/*-數(shù)碼管顯示代碼-/ucharcodeshuma=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xFF; /共陽(yáng)/ucharcodeshuma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40; /共陰uchar Attack_time,Temp,m_cou
3、nt; uchar part; /定義第幾節(jié)的變量。第1,2,3,4節(jié)uchar Key_Num=16, Pro_Key_Num=9;uint count1,count2,t_count; /時(shí)間全局變量,count1,count2用于在中斷函數(shù)中記錄中、/斷次數(shù)sbit attack_begin=P30; / 24秒進(jìn)攻開始按鍵K1sbit attack_pause=P31; / 24秒進(jìn)攻暫停按鍵K2int Game_time1,Game_time2; /定義每節(jié)時(shí)間的分鐘和秒鐘的時(shí)間變量sbit key_start=P32; / 比賽開始按鍵sbit item_dec=P33; / 比賽
4、減分按鍵 sbit item_add=P34; / 設(shè)置比賽為第1,2,3,4節(jié),籃球比賽有4節(jié),每節(jié)12分鐘bit flag,flag1,first_end; / 定義1秒的標(biāo)志位,flag,flag1分別用于表示T0和T1定/時(shí)器產(chǎn)生了1秒的時(shí)間 bit game_over,OR_ZERO,k1,k2,k3,k4,l,p,h; / 定義一些標(biāo)志位uchar Temp_attack_time,dis_time1,dis_time2; uint attack_sec_shi; / 進(jìn)攻 秒 十位uint attack_sec_ge; / 進(jìn)攻 秒 個(gè)位 uint game_point1,gam
5、e_point2; /比賽比分變量uint Tgame_sec_ge; / 單節(jié)比賽時(shí)間 秒鐘 個(gè)位 uint Tgame_sec_shi; / 單節(jié)比賽時(shí)間 秒鐘 十位 uint Tgame_min_ge; / 單節(jié)比賽時(shí)間 分鐘 個(gè)位 uint Tgame_min_shi; / 單節(jié)比賽時(shí)間 分鐘 十位 /-子程序聲明-/void delay(uint K); /延時(shí)子程序void Display(); / 顯示子程序void Attack_key_event();/進(jìn)攻24秒子程序void Pause_key_event(); / 暫停子程序void Initialization();
6、/初始化子程序void Game_start(); /單節(jié)比賽啟動(dòng)子程序,K3按鍵處理子程序void Increase_part(); /單節(jié)自加子程序,每節(jié)結(jié)束時(shí),單節(jié)變量part自動(dòng)加1void Key_Scan() ; / 矩陣鍵盤掃描子程序void Add_point(); /加分按鍵處理子程序void Dec_point(); /減分按鍵處理子程序/*-主程序-*/void main(void) Initialization();/P2=0xff; while(1) Display(); / 顯示子程序 Game_start();/籃球比賽開始子程序 Attack_key_event
7、(); /24秒進(jìn)攻開始子程序 Pause_key_event(); / 暫停子程序 Increase_part();/ 比賽每節(jié)自加處理子程序 /Key_Scan(); / 矩陣鍵盤掃描子程序 Add_point();/ 加分按鍵處理子程序 Dec_point(); /減分按鍵處理子程序 /*-T0中斷服務(wù)程序-/void T0_int()interrupt 1 / 使用定時(shí)器T0,方式1,定時(shí)1s TH0 = -50000/256; / 設(shè)置定時(shí)器初值(定時(shí)50ms) TL0 = -50000%256; count1+; if(count1=10) / 循環(huán)20次 count1=0; fl
8、ag=1; /-T1中斷服務(wù)程序-*/void T1_int()interrupt 3 / 使用定時(shí)器T1,方式1,定時(shí)1s TH1 = -50000/256; / 設(shè)置定時(shí)器初值(定時(shí)50ms) TL1 = -50000%256; count2+; if(count2=10) / 循環(huán)20次 count2=0; flag1=1; /*-延時(shí)子程序-*/void delay(uint K) uint i,j; for(i=K;i>0;i-) for(j=120;j>0;j-); /*-24秒進(jìn)攻按鍵(attack_begin,k1按鍵P3。0口)處理子程序-/void Attack
9、_key_event() if(attack_begin=0) /判斷進(jìn)攻按鍵是否按下 delay(15); /按鍵消抖 if(attack_begin=0) /再次判斷暫停健是否按下。 k1=1; /k1為進(jìn)攻按鍵按下標(biāo)志 TR0=1; / 開T0計(jì)時(shí) if(k2=0) /沒(méi)有按下暫停鍵. Attack_time=24; if(k2=1&&Attack_time=0) /有按下暫停鍵. Attack_time=24; if(k1=1&&flag=1) flag=0; Attack_time-; OR_ZERO=1; if(OR_ZERO=1&&
10、Attack_time=0) OR_ZERO=0; if(flag=1) flag=0;Attack_time=24; TR0=0; /-顯示子程序-/void Display() /定義第幾節(jié)的數(shù)碼算法。第1,2,3,4節(jié) int j; uchar Group1_ge,Group1_shi,Group1_bai,Group2_ge,Group2_shi,Group2_bai; /uchar KeyNO; Temp_attack_time=Attack_time; attack_sec_shi=Temp_attack_time/10; attack_sec_ge=Temp_attack_tim
11、e10; dis_time1=Game_time1; dis_time2=Game_time2; Tgame_sec_shi=dis_time1/10; Tgame_sec_ge=dis_time110; Tgame_min_ge=dis_time210; Tgame_min_shi=dis_time2/10; Group1_bai= game_point1/100; Group1_shi= game_point1%100/10; Group1_ge = game_point1%100%10; Group2_bai= game_point2/100; Group2_shi= game_poin
12、t2%100/10; Group2_ge = game_point2100%10; for(j=0;j<10;j+) P2=0x0f; /位選,選中百位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup1_bai; / 段選,把百位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x01; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup1_shi; / 段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x02; /位選,選中個(gè)位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup1_ge; / 段選,把個(gè)位數(shù)的字形碼送到上面選通的數(shù)碼管中 del
13、ay(1); P2=0x03; /位選,選中百位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup2_bai; / 段選,把百位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x04; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup2_shi; / 段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x05; /位選,選中個(gè)位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaGroup2_ge; / 段選,把個(gè)位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x0b; /位選,選中個(gè)位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 第6個(gè) 數(shù)碼管 P0=shumaTgame
14、_min_ge; /段選,把個(gè)位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x0a; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 第5個(gè) 數(shù)碼管 P0=shumaTgame_min_shi;/段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x09; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 第4個(gè) 數(shù)碼管 P0=shuma16; /段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x08; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 第3個(gè) 數(shù)碼管 P0=shuma16; /段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0
15、x07; /位選,選中個(gè)位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 第1個(gè) 數(shù)碼管 P0=shumaTgame_sec_ge; /段選把個(gè)位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x06; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 1 第2個(gè) 數(shù)碼管 P0=shumaTgame_sec_shi;/段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x0c; /位選,選中個(gè)位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaattack_sec_ge;/ 段選,把個(gè)位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x0d; /位選,選中十位數(shù)對(duì)應(yīng)的那個(gè)數(shù)碼管 P0=shumaat
16、tack_sec_shi;/段選,把十位數(shù)的字形碼送到上面選通的數(shù)碼管中 delay(1); P2=0x0e; /位選, P0=shumapart; /段選, delay(1); /-暫停子程序-*/ void Pause_key_event() if(attack_pause=0) delay(40); /按鍵消抖 if(attack_pause=0) /再次判斷暫停健是否按下。 k2=1; /k2為暫停按鍵按下標(biāo)志位。 TR0=0; TR1=0; /-初始化子程序-/ void Initialization() TMOD=0x11; / 中斷初始化 TH0 = -50000/256; /
17、設(shè)置定時(shí)器T0初值(定時(shí)50ms) TL0 = -50000%256; TH1= -50000/256; / 設(shè)置定時(shí)器T1初值(定時(shí)50ms) TL1 = -50000256; EA=1; / 開總中斷 ET0=1; / T0允許 ET1=1; / T1允許 part=1; Attack_time=24; Game_time1=3; Game_time2=0; game_point1=106; game_point2=104; /-單節(jié)比賽啟動(dòng)子程序,K3按鍵處理子程序-*/void Game_start() if(key_start=0) /判斷比賽開始按鍵K3是否按下? delay(40
18、); / 消抖 if(key_start=0) /再次判斷比賽開始按鍵K3是否按下? k3=1; /設(shè)置比賽開始標(biāo)志位K3 TR1=1;if(k2=0) /未按下暫停按鍵。 if(flag1=1) return; flag1=0; Game_time1=2; Game_time2=59; else if(k2=1&Game_time1=3&&Game_time2=0) if(flag1=1) return; Game_time1=2; Game_time2=59; if(k3=1&&flag1=1) flag1=0; p=1; m_count+; /1秒
19、鐘累加器,60秒為1分鐘 Game_time2-; if(Game_time2<0) Game_time2=59; if( p=1&m_count=60) if(Game_time1!=0) Game_time1-; Game_time2=59; else if(Game_time1=0) /記錄每節(jié)最后一分鐘的秒鐘。 Game_time1; if(Game_time1<0) TR1=0; first_end=1; /每節(jié)結(jié)束標(biāo)志 Game_time1=3; Game_time2=0; p=0;m_count=0; /-單節(jié)自加子程序,每節(jié)結(jié)束時(shí),單節(jié)變量part自動(dòng)加1-
20、/void Increase_part() if(first_end=1) first_end=0; if(+part>4) part=1; /-矩陣鍵盤掃描子程序-/ void Key_Scan() uchar key_temp;P1=0x0f;/高4位置1,放入4行delay(1);/按鍵后00001111將變成0000XXXX,X中有1個(gè)為0,其余3個(gè)仍能為1。key_temp=P10x0f; /判斷按鍵發(fā)生在03列中的哪一列。switch(key_temp) case 1:Key_Num=0;break; case 2:Key_Num=1;break; case 4:Key_Num=2;break; case 8:Key_Num=3;break; default:Key_Num=16; /說(shuō)明沒(méi)有按鍵按下 P1=0xf0; /低四位置零,放入四列delay(1);/按鍵后11110000將變成XXXX0000,X中有1個(gè)為0,其余3個(gè)仍能為1.key_temp= P140x0f; /將高4位移到低4位,并將其中唯一的0變?yōu)?,其余為0switch(key_temp) case 1:Key_Num+=0;break;/對(duì)03行分別附
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 固定資產(chǎn)管理合同
- 2024建筑工程勞務(wù)承包合同樣本
- 2024鈑金噴漆技術(shù)研發(fā)與創(chuàng)新實(shí)驗(yàn)室建設(shè)合同
- 二零二五年度智能設(shè)備生產(chǎn)許可合同2篇
- 遵義醫(yī)科大學(xué)《工程數(shù)學(xué)復(fù)變》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024餐飲勞務(wù)合同范本
- 二零二五年度電子信息產(chǎn)業(yè)投資合作合同2篇
- 2024輕工裝修材料研發(fā)與應(yīng)用合作協(xié)議3篇
- 二零二五年度煙臺(tái)加工承攬合同的標(biāo)的與義務(wù)3篇
- 浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《數(shù)學(xué)建模與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 強(qiáng)基計(jì)劃模擬卷化學(xué)
- 2022年江蘇省南京市中考?xì)v史試題(含答案)
- 商務(wù)溝通第二版第6章管理溝通
- 培訓(xùn)課件-核電質(zhì)保要求
- 過(guò)敏原檢測(cè)方法分析
- TSG_R0004-2009固定式壓力容器安全技術(shù)監(jiān)察規(guī)程
- 室外給水排水和燃?xì)鉄崃こ炭拐鹪O(shè)計(jì)規(guī)范
- 《三國(guó)演義》整本書閱讀任務(wù)單
- 外觀GRR考核表
- 大型平板車安全管理規(guī)定.doc
- 企業(yè)信用管理制度
評(píng)論
0/150
提交評(píng)論