單片機籃球積分器_第1頁
單片機籃球積分器_第2頁
單片機籃球積分器_第3頁
單片機籃球積分器_第4頁
單片機籃球積分器_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、湖南工程學院課 程 設 計課程名稱課程名稱 單片機原理與應用單片機原理與應用 課題名稱課題名稱 比賽計分器設計比賽計分器設計 專專 業業 自動化自動化 班班 級級 1001 班班 學學 號號 201001020121 姓姓 名名 劉朝露劉朝露 指導教師指導教師 王迎旭王迎旭 汪超汪超 李曉秀等李曉秀等 2013 年年 6 月月 7 日日湖南工程學院課 程 設 計 任 務 書課程名稱 單片機原理與應用 課 題 比賽計分器設計 專業班級 自動化 1001 班 學生姓名 劉朝露 學 號 201001020121 指導老師 王迎旭 汪超 李曉秀等 審 批 李曉秀 任務書下達日期 2013 年 6 月

2、7 日任務完成日期 2013 年 6 月 21 日設設計計內內容容與與設設計計要要求求設計內容:設計內容:設計一個甲,乙兩隊用的比賽計分器,要求實現以下功能:1、給甲,乙兩隊分別設置 1 個加分按鈕,按一下能分別實現加一分。2、給甲,乙兩隊分別設置 1 個減分按鈕,按一下能分別實現減一分。3、設置一個清零按鈕,按一下能實現清零4、設置預置分按鈕。5、設置一個加減一分、兩分和三分的切換按鈕。6、比賽時間結束后蜂鳴器提醒。設計要求:設計要求:1、設計方案要合理、正確;2、系統硬件設計及焊接制作;3、系統軟件設計及調試;4、系統聯調;5、寫出設計報告。主主 要要 設設 計計 條條 件件1、MCS-5

3、1 單片機實驗操作臺 1 臺;2、PC 機及單片機調試軟件;3、單片機應用系統板 1 套; 4、制作工具 1 套;5、系統設計所需的元器件。說 明 書 格 式1.封面2.課程設計任務書3.目錄4.系統總體方案設計5.系統硬件設計6.軟件設計(包括流程圖)7.系統的安裝調試說明8、 總結 9、參考文獻10、附錄(源程序清單及硬件原理圖等) ;11、課程設計成績評分表。進 度 安 排設計時間為兩周設計時間為兩周第一周星期一、上午:布置課題任務,講課及課題介紹 下午:借閱有關資料,總體方案討論星期二、確定總體設計方案星期三、硬件模塊方案設計星期四、軟件模塊方案設計星期五、設計及調試第二周星期一、設計

4、及調試星期二、設計及調試星期三、總調星期四、寫說明書星期五、上午:寫說明書,整理資料下午:交設計資料,答辯參 考 文 獻1、 微型計算機原理及應用許立梓編 機械工業出版社 20022、 微型計算機接口技術及應用劉樂善編 華中理工大學出版社 2000 3、 計算機硬件技術基礎試驗教程鄒逢興編 高等教育出版社 20004、 16 位微型計算機原理接口及其應用周佩玲編 中國科學技術大學出版社 2000 5、 微型計算機原理與接口技術吳秀清編 中國科學技術出版社 20016、 微型計算機接口技術鄧亞平編 清華大學出版社 20017、 單片機原理及及應用王迎旭編 機械工業出版社 20018、 單片機應用

5、程序設計技術 周航慈 著 北京航空航天大學出版社 2002 目目 錄錄第一章第一章 系統的概述系統的概述111.1 系統的功能1 11.2 設計內容及要求1 11.2.1 設計內容1 11.2.2 設計要求1 11.3 按鈕設置2 2第第 2 2 章章 總體方案設計總體方案設計2 22.1 總體系統框圖3 32.2 系統組成5 5第第 3 3 章章 系統硬件設計系統硬件設計6 63.1 控制電路設計6 6 3.1.1 復位電路4 4 3.1.2 矩陣按鈕電路4 43.2 數碼管顯示電路設計6第第 4 4 章章 軟件設計軟件設計110 04.1 主程序設計10104.2 各子程序設計1111 4

6、.2.1 延時子程序1111 4.2.2 初始化子程序1 12 2 4.2.3 交換按鈕程序1 12 2 4.2.4 狀態部分程序1 11 1 4.2.5 加減部分程序1 13 3仿真圖仿真圖16設計總結設計總結1 17 7參考文獻參考文獻1 18 8附錄附錄: :源程序清單源程序清單1 19 9電氣信息學院課程設計評分表電氣信息學院課程設計評分表3 37 71第第 1 1 章章 系統概述系統概述1.1 系統功能系統功能設計一個甲、乙兩隊比賽計分器,主要用于各種體育比賽記錄分數。采用矩陣式鍵盤作為輸入。基于以上思路,本次設計使用 80C51 實現一基于單片機的電子計分器的設計,其主要具有如下功

7、能:(1)用戶可分別對兩隊比分進行加 1、加 2、加 3 和減 1,減 2,減 3 操作。(2)比分通過 6 個 8 段共陰極數碼管顯示器進行顯示,每隊比分顯示三位,可以交換兩隊的比分。(4)具有復位功能,通過復位鍵實現。(5)預置分可通過加或減分按鈕實現。 (6)比賽時間倒計時及其結束后蜂鳴器自動提醒。1.2 設計內容及要求設計內容及要求1.2.1 設計內容:設計內容:(1)給甲乙兩隊分別設置一個分數控制按鈕,此按鈕有 7 種狀態,分別為+1、+2、+3、-1、-2、-3,+10(置數) 。(2)設置一個切換狀態按鈕,可以分別切換每一種狀態,然后每一種狀態會有相應的發光二極管點亮以區別是哪種

8、狀態。(3)設置一個復位按鈕,按下實現甲、乙隊總分回到初試分及顯示(4)設置一個交換分按鈕,用于交換甲乙比分。1.2.2 設計要求:設計要求:方案合理、正確,系統穩定、可靠。軟件設計要求盡可能精練、簡短和運行可靠。硬件電路要求簡單明了,以節約成本。21.3 按鈕設置按鈕設置本設計的宗旨是用最少的按鍵實現最多的功能。設計中一共用到了 5個按鈕,分別為:清零按鈕、甲的加分減分按鈕,乙的加分減分按鈕,切換狀態按鈕和交換比分按鈕。每個按鈕的功能如下:控制甲的按鈕:實現+1、+2、+3、-1、-2、-3,+10(置數)功能;控制乙的按鈕:實現+1、+2、+3、-1、-2、-3,+10(置數)功能;切換按

9、鈕:實現甲乙的各種狀態的切換;減緩比分按鈕:交換甲乙的比分;清零按鈕:實現甲乙比分清零;3第第 2 2 章章 總體方案設計總體方案設計2.1 總體系統框圖總體系統框圖此次設計 80C51 單片機為核心,配以一定的外圍電路和軟件,以實現比賽計分器的功能。利用 6 個 8 段共陰級數碼管顯示器.采用動態顯示輸出比分,用戶信息輸入則采用 44 矩陣式鍵盤,起狀態切換用發光二極管的狀態表示。用一片單片機可滿足本設計的輸入輸出。系統設計方案的硬件電路設計框圖如圖 2-1 所示。4圖 2-1 硬件電路設計2.2 系統組成系統組成系統由硬件部分和軟件部分組成。硬件電路由復位按鈕、80C51 單片機、矩陣鍵盤

10、和 7 個發光二極管,6 個數碼管等組成。 軟件部分主程序主要由系統初始化段、鍵盤識別、鍵值處理、8 段共陰極 LED 顯示器掃描顯示子程序組成。軟件設計主要分為四個部分:信息輸入、信息處理、顯示輸出。信息輸入時采用矩陣式鍵盤來實現,所以需要檢測鍵盤有無按鍵的子程序;信息處理需要對用戶通過鍵盤輸入的不同信息進行辨別并執行相應的處理;顯示輸出考慮到成本和電路體積,決定采用動態輸出,從而達到設計的目的。 5 第第 3 3 章章 系統硬件設計系統硬件設計3.1 控制電路設計控制電路設計3.1.1 復位電路復位電路如圖 3-1 所示,按鈕與單片機的 RST 引腳相連,當每次按下該按鈕后,系統將通過軟件

11、實現對計分回到初始值功能。復位GNDX1CRYSTALC1C2XTAL218XTAL119ALE30PSEN29RST9U1VCCR1圖 3-1 復位控制接口電路3.1.2 矩陣按鈕電路矩陣按鈕電路鍵盤的讀取方式:行與列各有 4 條線檔其中一個按鍵被按下后,它所在的行列線就導通了,所以如果一條線上是低電平,那么按鍵的另一條線也是低電平。先給第一行送一個低電平,讀取列值,就可以判定第一行上是否有按鍵按下,如果有按鍵,那么列線里面就有一條線為低電平。如果都為高電平,說明第一行上沒有按鍵被按下,接著給第二行送6低電平,重復上述步驟,就可以讀取按鍵了。也可以用另外一種方法:先給行線全部寫“0” ,然后

12、看列線是否有為低電平的,如果有說明那一列上有鍵被按下,讓后要確定按鍵所在的行的,給所有列線寫“0” ,讀取行線的值就可以確定按鍵的具體位置了, 讓后將兩次讀取的值,組成一個值 j 就得到了鍵值。圖 3-2 矩陣鍵盤的接口電路3.2 數碼管顯示電路設計數碼管顯示電路設計 顯示器采用 8 段共陰極數碼管顯示器,來實現顯示器的動態掃描,八個二極管連接一個陰極的結構,只要另一段為高電平,二極管就會發光,從而形成一段。將八段順序排列后就成為具有一定編碼的共陰顯示器了。動態掃描的頻率有一定的要求,頻率太低,LED 將出現閃爍現象。如頻率太高,由于每個 LED 點亮的時間太短,LED 的亮度太低,肉眼無法看

13、清,所以一般均取幾個 ms 左右為宜,這就要求在編寫程序時,選通某一位 LED 使其點亮并保持一定的時間,程序上常采用的是調用延時子程序。顯示電路如圖 4 所示。7共陰極數碼管顯示顯示 小數點 G FEDCBA HE代碼 0 00111111 3FH 1 00 00 011006H 2 0101 1 0 1 15BH 3 0 1 0011114FH 4 011 0 01 1066H 5 0110 1 1017DH 6 011 1 1 101 07H 7 00 000 111 7FH 8 01 1 11 1 116FH 9 0 110 11 1 140H 圖 3-3 數碼管顯示電路 數碼管顯示采

14、用 8 個 8 段數碼管顯示器,來實現顯示器的動態掃描8顯示采用動態掃描顯示方法,即由顯示器掃描顯示子程序控制顯示器逐個循環從左至右依次點亮各個顯示器。由單片機的 P0 口控制顯示。9第第 4 4 章章 軟件設計軟件設計4.1 主程序設計主程序設計 主程序主要由系統初始化段、鍵盤識別、鍵值處理、6 個 8 段共陰極LED 顯示器掃描顯示子程序組成。通過對以上各段和子程序的結合,以實現系統功能。該系統主程序流程圖如下圖所示。圖 4-1 系統主程序流程圖10圖 4-2 掃描刷新顯示子程序流程圖4.2 各子程序設計各子程序設計 4.2.1 延時子程序延時子程序void delay(uint z)ui

15、nt x,y;11for(x=z;x0;x-)for(y=110;y0;y-);此段程序是根據實驗板各硬件的參數具體設置的。4.2.2 初始化子程序初始化子程序void init()cnt=0;num=0;wela=0;dula=0;temp=0;TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;初始化程序是用來對各定義的變量初始化的,每一次主程序執行之前都要先執行初始化程序以保證變量的值為初值。4.2.3 交換按鈕程序交換按鈕程序if(key4=0) /當交換鍵按下 delay(10); if(ke

16、y4=0)12 m=bai;bai=aa;aa=m; n=shi;shi=bb;bb=n;p=ge;ge=cc;cc=p; while(!key4); /去抖 delay(10); while(!key4);此程序就是當交換按鍵按下時,利用中間變量改變甲乙的每一位的數值,這樣就能實現交換甲乙兩隊的比分,然后再給電路去抖動,就不會出現問題了。4.2.4 狀態部分程序狀態部分程序for(i=0;i4;i+)if(key3=0)if(key3=0) num+;if(num=7)num=0;delay(5);switch(num)13 case 0: cnt=-3;d7=0;d6=1;break;ca

17、se 1: cnt=10;d1=0;d7=1;break;case 2: cnt=1;d2=0;d1=1;break;case 3: cnt=2;d3=0;d2=1;break;case 4: cnt=3;d4=0;d3=1;break; case 5: cnt=-1;d5=0;d4=1;break;case 6: cnt=-2;d6=0;d5=1;break; while(!key3); delay(10);while(!key3);該程序是主函數里面的部分程序,當切換分按鈕按下時利用 switch case 語句來實現甲乙各種狀態之間的切換,并且同時控制了 7 個發光二極管的顯示來表明當前

18、處于什么狀態。切換到相應的狀態時在執行顯示掃描程序將實現切換功能。4.2.5 加減部分程序加減部分程序if(key1=0) /甲控制按鈕按下 delay(10); /延時 if(key1=0) temp=temp+cnt; /實現加減運算 if(temp=256) temp=0; while(!key1); /去抖delay(10);while(!key1); bai=temp/100; /分離處百位14shi=temp%100/10;ge=temp%10;該程序是通過前段調用一個變量 cnt 來作為本次運算的加數,然后通過切換狀態來做不同的運算。這樣就免去了很多不必要的程序,直接調用實現,簡

19、化了程序。15仿真圖:仿真圖:16設計總結設計總結這次課程設計雖然只有短短的兩周時間,但我受益匪淺學會了很多東西。剛開始拿到課題時,覺得自己無處入手,但通過老師的講解和查詢資料,開始有自己的思路,整理出了總體方案,然后設計出硬件原理圖,源程序等。 在這次課程設計中,我在整個設計過程中懂得了許多東西,也培養了獨立思考和設計的能力,樹立了對知識應用的信心,相信會對今后的學習工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設計過程中的成功喜悅。雖然這個設計做的不是很理想,但是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我受益良多。課程設計是結束了,不過

20、學習單片機知識的過程還沒有終結,探索學習的奧妙,培養學習的興趣,養成良好的學習習慣對我們來說才是最重要的。與此同時我感受到了老師對學生的那種悔人不卷的精神,每天的固定時間,老師都來給我們指導,使我們少走彎路,順利完成實習任務,感謝汪老師一路以來對我們的關心與幫助。17參考文獻參考文獻1單片機原理與應用王迎旭編 機械工業出版社 251 系列單片機原理與接口技術實驗指導周向紅編 湖南工程學院 3微型計算機原理及應用許立梓編 機械工業出版社 20024微型計算機接口技術及應用劉樂善編 華中理工大學出版社 2000 5計算機硬件技術基礎試驗教程鄒逢興編 高等教育出版社 2000616 位微型計算機原理

21、接口及其應用周佩玲編 中國科技大學出版社 2000 7微型計算機原理與接口技術吳秀清編 中國科學技術出版社 20018微型計算機接口技術鄧亞平編 清華大學出版社 20019單片機原理及及應用王迎旭編 機械工業出版社 200110單片機應用程序設計技術 周航慈 著 北京航空航天出版社 200211單片機實用技術問答 謝宜仁 主編 人民郵電出版社 200218附錄附錄 A:A:源程序清單源程序清單#include #define uchar unsigned char #define uint unsigned int #define TH_value 0 xb1#define TL_value

22、0 xe0/定時器工作于方式 1,每 20ms 產生一個中斷sbit speak=P37;sbit ext=P32;sbit led=P34;/*BCD 碼字*/uchar code bcd=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0A,0 x0B,0 x0C,0 x0D,0 x0E,0 x0F;/*09 數字顯示*/uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00;uchar munite;

23、/比賽剩余分位數uchar second; /比賽剩余秒位數uchar part;/當前比賽的節次uchar s24; /24 秒標志uchar red_mark;/紅隊得分19uchar blue_mark; /藍隊得分uchar key_move;/設置位移動uchar key_red_add;/紅隊得分增加 1uchar key_red_mul;/紅隊得分減少 1uchar key_blue_add;/藍隊得分增加 1uchar key_blue_mul;/藍隊得分減少 1uchar key_pause; /暫停uchar key_reset; /24 秒復位及進入下一節復位uchar

24、time_tick1,time_tick2;uchar station;/狀態標志位uchar flag;/跳亮標志位uchar talk1,talk2,num,num1; /報警信號標志/*函數聲明*/void init();void init_timer();void init_extra();uchar key_scan();void scanf(uchar p,uchar tw,uchar m,uchar s,uchar r,uchar b);void scanf1(uchar p,uchar r,uchar b);void scanf2(uchar tw,uchar r,uchar

25、b);void scanf3(uchar m,uchar r,uchar b);void scanf4(uchar s,uchar r,uchar b);void play24();void playstop1();void playstop2();/*延時程序,t=1 時,延時 1ms*/void delay(uchar t)20int i,j;for(j=0;jt;j+) for(i=0;i=4)talk2=1;/終場報警操作TR0=0;/關閉定時器中斷 0TR1=1;21elsetalk2=1;/小節結束報警TR1=1;TR0=0;elsemunite-;second=59;elsese

26、cond-;if(s24=0)/24 秒計數TR0=0;elseif(s242)talk2=1;TR1=1;TR0=0;key_pause=0;22else if(s248)talk1=1;TR1=1;s24-;/6 秒提醒if(second=0&munite=0) /操作進入下一節比賽if(key_reset=1)s24=0 x18;part+;key_reset=0;if(part=10)talk2=1;/比賽太久,報警if(part5)/判斷是否為加時賽,不是,延長 12 分鐘if(key_red_add=1)/紅隊得分操作加key_red_add=0;if(red_mark0)

27、red_mark-;if(key_blue_add=1)/藍隊得分操作加key_blue_add=0;if(blue_mark0)blue_mark-;if(station=1)/比賽節次操作TR1=1;flag=0;while(station=1)if(flag=0)scanf1(part,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/比賽節次操作加24key_red_add=0;if(part1)part-;if(station!=1)TR1=

28、0;flag=0;TR1=1;flag=0;while(station=3)if(flag=0)scanf3(munite,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/分操作加,MAX=6025key_red_add=0;if(munite0)munite-;if(station!=3)TR1=0;flag=0;if(station=4)/計時秒操作TR1=1;flag=0;while(station=4)if(flag=0)scanf4(sec

29、ond,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/秒操作加,26MAX=60key_red_add=0;if(second0)second-;if(station!=4)TR1=0;flag=0;/*初始化*/void init()munite=0 x01;second=0 x00;red_mark=0 x00;blue_mark=0 x00;27part=0 x01;s24=0 x18;station=0 x00;key_pause=0;ke

30、y_move=0 x00;key_red_add=0 x00;key_red_mul=0 x00;key_blue_add=0 x00;key_blue_mul=0 x00;key_reset=0 x00;flag=0 x00;/*定時器 0 初始化*/void init_timer()TMOD=0 x11;TH0=TH_value;TL0=TL_value;TH1=TH_value;TL1=TL_value;ET0=1;ET1=1;time_tick1=0;time_tick2=0;/*外部中斷源初始化*/void init_extra()28EX0=1;EX1=1;IT0=1;IT1=1;

31、EA=1;/*定時器 0*/void timer0()interrupt 1time_tick1+;TH0=TH_value;TL0=TL_value;/*定時器 1*/void timer1()interrupt 3EA=0;TH1=TH_value;TL1=TL_value;time_tick2+;if(time_tick2=50)led=led;time_tick2=0 x00;if(flag=0)flag=1;/跳亮標志位elseflag=0;29if(talk1=1)EA=0;TH1=0 xFD;TL1=0 xF7;EA=1;speak=speak;num+;if(num=200)n

32、um=0;talk1=0;TR1=0;if(talk2=1)EA=0;TH1=0 xFD;TL1=0 xF7;EA=1;speak=speak;num+;if(num=200)num1+;num=0;30if(num1=4)num1=0;talk2=0;TR1=0;EA=1;/*外部中斷 0*/void extra0()interrupt 0if(key_pause=1)key_pause=0;TR0=0;elseif(s24=0);elsekey_pause=1;TR0=1;31/*外部中斷 1*/void extra1()interrupt 2uchar dtemp;dtemp=key_s

33、can();switch(dtemp)case 0 xFE:key_move=1;break;case 0 xFD:key_reset=1;break;case 0 xF7:key_red_add=1;break;case 0 xDF:key_red_mul=1;break;case 0 xEF:key_blue_add=1;break;case 0 xBF:key_blue_mul=1;break;default:break;if(key_move=1)station+;if(station=5)station=0;key_move=0;/*鍵盤掃描*/uchar key_scan()uchar temp;P1=0 xFF;32temp=P1;delay(3);if(temp=P1)return temp;/*數碼管驅動*/void scanf2(uchar tw,uchar r,uchar b)P2=bc

溫馨提示

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

評論

0/150

提交評論