單片機課程論文_第1頁
單片機課程論文_第2頁
單片機課程論文_第3頁
單片機課程論文_第4頁
單片機課程論文_第5頁
已閱讀5頁,還剩19頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 塔里木大學信息工程學院單片機原理及外圍電路課程論文籃球賽計時計分器姓名:迪麗努爾阿力甫學號: 5011212238 班級:計算機16-2 目錄摘要1正文2技術背景2設計意義2設計目標3硬件電路設計31、CPU部分32.管腳說明:43. 振蕩器特性:74.按鍵部分8軟件設計12結論21參考文獻22摘要籃球是一項充滿樂趣的運動,打籃球可以學到很多課本里沒有的東西,比如信任,合作,鼓勵等,現在籃球普及率已經很高,不僅僅是專業運動員的運動,也是普通老百姓的活動,不管是走在學校里,還是公園里,甚至是鄉村里,都能看到籃球場,都能看到打籃球的人,籃球已成為我們大部分人生活里不可或缺的組成部分,每天都能聽到

2、有人在談論籃球,說說自己喜歡的NBA巨星因為喜歡籃球,所以打籃球,時不時會來場激烈的比賽,籃球計分器將讓我們擺脫用粉筆或記分牌計分帶來的不便,輕輕松松幾個按鈕開關就能讓我們記下分數,讓我們感受到科技給我們帶來的巨變。隨著微電子技術的不斷發展與進步,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成CPU、存儲器、定時器計數電路,這就很容易將計算機技術與測量控制技術結合,組成智能化測量控制系統。利用一些與單片機相關的硬器件設計一個關于籃球計時計分器對的設計,其中最主要設計倆部分:一是數碼管顯示器的顯示部分,二是按鍵處理的判斷。在此處輸入中文摘要(字數一般不少于300字)。摘要必須反

3、映全文中心內容,內容應包括目的、過程及方法、結論。要求論述簡明、邏輯性強、盡量用短句。采用第三人稱的寫法,并請用過去時態敘述作者工作,用現在時態敘述作者結論?!娟P鍵詞】詞1單片機;詞2數碼管;詞3定時器;正文技術背景單片機是現代電子技術的新興領域,它的出現極大地推動了電子工業的發展,已成為電子系統設計中最為普遍的應用手段。近年來單片機技術得到了突飛猛進的發展,各種單片機開發工具層出不窮。虛擬仿真就是近年來興起的一種新型應用技術,采用虛擬仿真技術,在原理圖設計階段就可以對單片機應用設計進行評估,驗證所設計電路是否達到所要求的技術指標,還可以通過改變元器件參數使整個電路性能達到最優化。這樣就無須多

4、次購買元器件及制作印刷電路板,節省了設計時間與經費,提高了設計效率與質量。設計意義 通過籃球計分計時器的制作,可以使我熟悉,了解單片機開發設計實例的過程,并能使讀者加深對單片機的理解和運用以及掌握單片機與外圍接口的一些方法和技巧,這主要表現在以下的一些方面:(1)籃球計分計時器包含了AT89C51系列單片機的最小應用系統的構成,同時在此基礎上擴展了一些實用性強的外圍接口。(2)掌握鍵盤接口原理,能正確地把鍵盤使用到單片機系統中,可以了解到LED顯示器的結構,工作原理以及這種顯示器的接口實例。(3)學會調試電路,分析電路故障,積累電路調試經驗。設計目標 設計并制作一個用于賽場的籃球賽計時計分器,

5、實現如下基本功能:(1)能記錄整個賽程的比賽時間,并能修改比賽時間,暫停比賽時間。(2)能隨時刷新甲,乙兩隊在整個賽程中的比分。(3)中場交換場地時,能交換甲,乙兩隊比分的位置。(4)比賽時間結束時,能發出報警指令。硬件電路設計電路主要包括CPU部分、電源部分、按鍵部分、LED顯示部分。1、CPU部分51單片機為單芯片微控制器,常見封裝形式為40腳雙列直插式塑料封裝DIP-40,其引腳識別為:正面面向用戶,缺口向上,左上面第一腳為1腳,然后按逆時針方向依次為240腳。通常第一腳有標志符號。51單片機管腳圖如圖2所示。AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROMFals

6、h Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。圖2 單片機引腳圖2.管腳說明: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內部提供上

7、拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八

8、位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.

9、5 T1(記時器1外部輸入) P3.6 /WR(外部數據存儲器寫選通) P3.7 /RD(外部數據存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上

10、置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩

11、放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 3. 振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。單片機是一種微控制器,任何為控制器正常工作最基本的條件是要有正確的電源、時鐘電路好復位信號,三者缺一不可。 單片機正常工作最基本條件是:正確的電源、時鐘信號、復位信號。51系列單片機第40引腳接電源+5V,第20引腳接地。電壓過

12、高或者過低均會引起單片機CPU部工作。單片機指令執行時在時鐘脈沖控制下進行的,時鐘脈沖信號是由單片機內部時鐘電路及18腳、19腳外接晶振和電容組成的時鐘電路產生的。時鐘電路異常,也會引起單片機CPU部工作,可通過測量30腳(ALE) 是否有時鐘脈沖六分頻信號輸出來判斷振蕩電路是否起振。復位電路時在CPU通電后,給復位端9腳(RST)一個復位脈沖,使CPU內部處于初始工作狀態。51系列單片機是高電平復位,在正確的復位后(工作狀態)9腳應保持低電平。如果復位電路出現故障,CPU也將無法工作。由于CPU的復位電路只有在開機瞬間產生復位脈沖,周期一般為幾毫秒,用萬用表無法鑒別正常與否。對于只有上電復位

13、的復位電路,快速判斷CPU是否有故障可以采取強制復位的方法,將復位瞬時接電源正端,如果此時CPU恢復工作,說明CPU的復位電路出現故障。對于有按鍵復位的復位電路,按下復位鍵,測量復位端是否有高電平產生來判斷復位電路工作是否正常。圖3 CPU控制電路2、電源部分 圖4 電源部分4.按鍵部分ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP其中: ADD1 甲隊比分加1鍵,(暫停時為調整時間分鐘加1) DEC1 甲隊比分減1鍵,(暫停時為調整時間分鐘減1) EXCHANGE 換場鍵,半場休息時換場。 ADD2 乙隊比分加1鍵,(暫停時為調整時間秒鐘加1) DEC2 乙隊比分

14、減1鍵,(暫停時為調整時間秒鐘減1) RUN/STOP 啟動暫停鍵,比賽開始時按下啟動計時,比賽開始。比賽開始后,按下為暫停計時,比賽暫停。甲乙隊比分默認000,此時按下ADD1鍵,可以對比賽時間分鐘加1,按下DEC1鍵,可以對比賽時間的分鐘減1,按下ADD2鍵,可以對比賽時間秒加1,按下DEC2鍵,可以對比賽時間秒減1。 圖6 按鍵部分 系統的總電路圖圖7 系統總電路圖在proteus下的仿真。圖7 AT89C51單片機部分圖8 排阻部分圖9 蜂鳴器部分圖10 按鍵部分圖11 時間顯示部分圖12 比分顯示部分圖13 仿真全圖軟件設計代碼程序就是從主程序開始執行的,在主程序里可以調用子程序,調

15、用完成后還要返回主程序繼續執行。我們在主程序里對各個模塊進行初始化,用一個while循環不斷地循環執行各個子程序,例如按鍵掃描程序在這里可以一次一次地掃描按鍵,這樣實現簡單易行。延時子程序此次程序中單獨設立了一個帶有參數傳輸的延時子程序,以供其他程序塊的調用,且延時可以通過參數方便的控制,使程序更加的簡潔。:中斷服務子程序當T0中斷發生時轉入執行中斷服務子程序,本程序主要用于提供一個精確的時鐘實現定時。另外還用對數碼管的循環掃描顯示,每中斷一次就對數碼管進行掃描一次,從而提供一個穩定的顯示輸出,不受其他程序的延時影響。數碼管顯示子程序數碼管顯示采用動態顯示方式,這樣占用I/O口資源比較少,且易

16、于實現。在運行中可以隨時修改顯示分數及時間。按鍵處理模塊按鍵識別及處理程序主要由鍵盤識別和鍵值處理組成。其中鍵盤識別子程序不斷地對鍵盤進行判斷是否有鍵按下。當有鍵按下時則轉到相應按鍵進行相應處理,即可實現對甲、乙兩隊總分的計算與處理和對比賽時間的相應操作。源程序代碼#include#define LEDData P0/定時數碼管的段值從P0口輸出unsignedcharcodeLEDCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /數碼管0-9的編碼unsigned char minit,second,count,count1;

17、/分,秒,計數器unsigned char set_minit=12,set_second=0;sbit add1=P10; /甲隊加分,每按一次加1分 /比賽前為時間加1分sbit dec1=P11; /甲隊減分,每按一次減1分/比賽前為時間減1分sbit exchange=P12;/交換場地sbit add2=P13;/乙隊加分,每按一次加1分/比賽前為時間加1秒sbit dec2=P14;/乙隊減分,每按一次減1分/比賽前為時間減1秒sbit secondpoint=P07;/秒閃動點/-數碼管的位選控制腳,共有10位數碼管-sbit led1=P27;sbit led2=P26;sbi

18、t led3=P25;sbit led4=P24;sbit led5=P23;sbit led6=P22;sbit led7=P21;sbit led8=P20;sbit led9=P37;sbit led10=P36;sbit alam=P17;/報警bit playon=0;/比賽進行標志位,為1時表示比賽開始,計時開啟bit timeover=0;/比賽結束標志位,為1時表示比賽結束bit AorB=0;/甲乙隊交換位置標志位bit halfsecond=0;/半秒標志位unsigned int scoreA;/甲隊得分unsigned int scoreB;/乙隊得分/=延時=void

19、 Delay5ms(void)unsigned int i;for(i=100;i0;i-); void display(void)/-顯示時間(分鐘)-LEDData=LEDCodeminit/10; /顯示分鐘的十位led1=0;/開啟位選Delay5ms();/延時,以便足以點亮數碼管。led1=1;/關閉位選LEDData=LEDCodeminit%10;/顯示分鐘的個位led2=0;Delay5ms();led2=1;/-秒點閃動-if(halfsecond=1)LEDData=0x80;elseLEDData=0x00;led2=0;Delay5ms();led2=1;second

20、point=0;/-顯示時間(秒鐘)-LEDData=LEDCodesecond/10;/顯示秒鐘的十位led3=0;Delay5ms();led3=1;LEDData=LEDCodesecond%10;/顯示秒鐘的個位led4=0;Delay5ms();led4=1;/-顯示1組的分數百位-if(AorB=0)LEDData=LEDCodescoreA/100;elseLEDData=LEDCodescoreB/100;led5=0;Delay5ms();led5=1;/-顯示1組分數的十位-if(AorB=0)LEDData=LEDCode(scoreA%100)/10;elseLEDDa

21、ta=LEDCode(scoreB%100)/10;led6=0;Delay5ms();led6=1; /-顯示1組分數的個位-if(AorB=0)LEDData=LEDCodescoreA%10;elseLEDData=LEDCodescoreB%10;led7=0;Delay5ms();led7=1;/-顯示2組分數的百位-if(AorB=1)LEDData=LEDCodescoreA/100;elseLEDData=LEDCodescoreB/100;led8=0;Delay5ms();led8=1;/-顯示2組分數的十位-if(AorB=1)LEDData=LEDCode(scoreA

22、%100)/10;elseLEDData=LEDCode(scoreB%100)/10;led9=0;Delay5ms();led9=1; /-顯示2組分數的個位-if(AorB=1)LEDData=LEDCodescoreA%10;elseLEDData=LEDCodescoreB%10;led10=0;Delay5ms();led10=1; /=按鍵檢測程序=void keyscan(void)if(playon=0)/在比賽未開始的狀態下if(add1=0)/當add1按鍵按下時display();/調用顯示,同時作為延時消抖if(add1=0);/延時消抖后,依然檢查到按鍵按下if(m

23、init0)minit-;elseminit=0;dodisplay();while(dec1=0); if(add2=0)/調整秒,原理同上display();if(add2=0);if(second0)second-;elsesecond=0;dodisplay();while(dec2=0); if(exchange=0)/換場鍵display();if(exchange=0);TR1=0;/關閉T1計數器alam=1;/關報警 AorB=AorB;/開啟交換minit=set_minit;/并將時間預設為12:00second=0;dodisplay();while(exchange=

24、0);else/比賽開始。if(add1=0)/add1鍵按下display();/調用顯示,同時延時消抖if(add1=0);if(AorB=0)/當場地標志位=0時,if(scoreA999)/當A方的比分小于999時,比分加1scoreA+;elsescoreA=999;/否則最大值為999分else/當場地標志位=1時,if(scoreB0)scoreA-;elsescoreA=0;elseif(scoreB0)scoreB-;elsescoreB=0;dodisplay();while(dec1=0);if(add2=0)/原理同上 display();if(add2=0);if(A

25、orB=1)if(scoreA999)scoreA+;elsescoreA=999;elseif(scoreB0)scoreA-;elsescoreA=0;elseif(scoreB0)scoreB-;elsescoreB=0;dodisplay();while(dec2=0);/*主函數void main(void)TMOD=0x11;/TMOD設置 TL0=0xb0;/定時器0,初值為0x3CB0,既定時0.05s TH0=0x3c; TL1=0xb0;/定時器1,初值為0x3CB0,即定時0.05s TH1=0x3c;minit=set_minit;/初始值為12:00second=0;

26、 EA=1;/開總中斷ET0=1;/開T0中斷ET1=1;/開T1中斷 TR0=0;TR1=0;EX0=1;/開外部中斷0IT0=1;IT1=1;/EX1=1;PX0=1;/PX1=1;PT0=0;P1=0xFF;P3=0xFF; while(1) keyscan();/按鍵檢查display();/顯示程序 /=外部中斷0中斷程序=void PxInt0(void) interrupt 0Delay5ms();EX0=0;/關中斷使能alam=1;/關蜂鳴器TR1=0;/關定時器0if(timeover=1)/當一節比較時間結束時,結束標志位=1timeover=0;/清除標志位if(pla

27、yon=0)/當比賽結束或暫停時playon=1;/開始標志位TR0=1;/開啟計時elseplayon=0;/開始標志位清零,表示暫停TR0=0;/暫停計時EX0=1;/重新開中斷/=定時器0中斷服務函數=void time0_int(void) interrupt 1 TL0=0xb0;/重賦初值 TH0=0x3c; TR0=1;/啟動計時 count+;/軟件計數器加1if(count=10)/0.05s*10=0.5s,即0.5秒鐘時halfsecond=0;/半秒標志位清零 if(count=20)/0.05s*20=1s,即1秒鐘 count=0;/清除計數器halfsecond=1;/半秒標

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論