《籃球記分器的設(shè)計(jì).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《籃球記分器的設(shè)計(jì).doc(23頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
中北大學(xué)
課程設(shè)計(jì)任務(wù)書
學(xué)生姓名: 學(xué) 號(hào):
學(xué) 院: 信息與通信工程學(xué)院
專 業(yè): 電子信息工程
題 目: 專業(yè)綜合實(shí)踐之單片機(jī)系統(tǒng)部分:
籃球計(jì)分器設(shè)計(jì)
指導(dǎo)教師: 王偉 職稱: 副教授
2015 年 12 月28日
中北大學(xué)
課程設(shè)計(jì)任務(wù)書
2015/2016 學(xué)年第 一 學(xué)期
學(xué) 院: 信息與通信工程學(xué)院
專 業(yè): 電子信息工程
學(xué) 生 姓 名: 學(xué) 號(hào):
學(xué) 生 姓 名: 學(xué) 號(hào):
學(xué) 生 姓 名: 學(xué) 號(hào):
題 目: 專業(yè)綜合實(shí)踐之單片機(jī)系統(tǒng)部分:
籃球計(jì)分器設(shè)計(jì)
起 迄 日 期: 12 月 28 日~ 1 月 8 日
課程設(shè)計(jì)地點(diǎn): 中北大學(xué)
指 導(dǎo) 教 師: 王偉 張敏娟
系 主 任: 王浩全
下達(dá)任務(wù)書日期: 2015 年 12月 28日
課 程 設(shè) 計(jì) 任 務(wù) 書
1.設(shè)計(jì)目的:
在學(xué)習(xí)專業(yè)基礎(chǔ)課和專業(yè)課的基礎(chǔ)上,主要在電子儀器、微機(jī)綜合設(shè)計(jì)與實(shí)踐、單片機(jī)與A/D和D/A和光、計(jì)、電綜合應(yīng)用等幾個(gè)方面開展實(shí)踐活動(dòng),鞏固所學(xué)知識(shí)、培養(yǎng)動(dòng)手能力。
2.設(shè)計(jì)內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、條件、設(shè)計(jì)要求等):
1. 設(shè)計(jì)一款能夠顯示籃球比分的記分牌。
2. 通過加分按鈕可以給A隊(duì),或B隊(duì)加分。
3. 設(shè)計(jì)對(duì)調(diào)功能,更換場地后,AB隊(duì)分?jǐn)?shù)互換。
4.增加局?jǐn)?shù)比分功能。
5.增加比賽時(shí)間倒計(jì)時(shí)功能。
6.其他功能。
3.設(shè)計(jì)工作任務(wù)及工作量的要求〔包括課程設(shè)計(jì)計(jì)算說明書(論文)、圖紙、實(shí)物樣品等〕:
1) 設(shè)計(jì)說明書符合要求;
2) 相應(yīng)器件的工作原理及應(yīng)用;
3) 系統(tǒng)工作原理圖;
4) 參考文獻(xiàn)原文不少于3篇。
課 程 設(shè) 計(jì) 任 務(wù) 書
4.主要參考文獻(xiàn):
[1] 萬文略編著. 單片機(jī)原理及應(yīng)用[M]. 重慶:重慶大學(xué)出版社,2004.
[2] 孫德文編著. 微型計(jì)算機(jī)技術(shù)[M]. 北京:高等教育出版社,2005.
[3] 張建勛編著. C語言程序設(shè)計(jì)教程[M]. 北京:清華大學(xué)出版社,2008.
[4] 于海生編著. 計(jì)算機(jī)控制技術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2007.
[5] 唐俊翟編著. 單片機(jī)原理及應(yīng)用[M].北京:冶金工業(yè)出版社,2003.
[6] 彭為編著. 單片機(jī)典型系統(tǒng)應(yīng)用設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社, 2006.
5.設(shè)計(jì)成果形式及要求:
設(shè)計(jì)說明書及相關(guān)電路圖
6.工作計(jì)劃及進(jìn)度:
12月 28 日 ~ 12 月 31 日:查閱資料;
1 月 1 日 ~ 1 月 5 日:方案設(shè)計(jì)、實(shí)驗(yàn)驗(yàn)證;
1 月 6 日 ~ 1 月 7 日:完成課程設(shè)計(jì)說明書;
1 月 8 日:答辯。
系主任審查意見:
簽字:
年 月 日
目 錄
1 概述 1
2 硬件方案設(shè)計(jì)及描述 1
3 軟件設(shè)計(jì)流程及描述 4
4 運(yùn)行結(jié)果 14
5 總結(jié) 16
參考文獻(xiàn) 18
附錄 19
1 概述
1.1 設(shè)計(jì)意義
目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。通過此次基于單片機(jī)設(shè)計(jì)的籃球計(jì)時(shí)計(jì)分系統(tǒng),我們可以更清楚詳細(xì)的了解單片機(jī)程序設(shè)計(jì)的基本指令功能、編程步驟和技巧來講述單片機(jī)編程,并對(duì)AT89S51單片機(jī)的結(jié)構(gòu)和原理進(jìn)行講述,以及基于單片機(jī)開發(fā)應(yīng)用的相關(guān)芯片的工作原理,和相關(guān)外圍電路的設(shè)計(jì)和調(diào)試過程進(jìn)一步了解,有助于今后的工作和學(xué)習(xí)生活。
本次設(shè)計(jì)用由AT89S51編程控制LCD作顯示的球賽計(jì)時(shí)計(jì)分系統(tǒng)。該系統(tǒng)具有賽程時(shí)間暫停,及時(shí)刷新甲、乙雙方的成績等功能。它具有價(jià)格低廉,性能穩(wěn)定,操作方便并且易于攜帶等特點(diǎn)。廣泛適合各類學(xué)?;蛘咝⌒蛨F(tuán)體作為賽程計(jì)時(shí)計(jì)分。
1.2 系統(tǒng)的主要功能
本系統(tǒng)有三項(xiàng)主要主要功能:1. 設(shè)計(jì)一款能夠顯示籃球比分的記分牌。2. 通過加分按鈕可以給A隊(duì),或B隊(duì)加分。3. 設(shè)計(jì)對(duì)調(diào)功能,更換場地后,AB隊(duì)分?jǐn)?shù)互換。4.增加局?jǐn)?shù)比分功能。5.增加比賽時(shí)間倒計(jì)時(shí)功能。
2 硬件方案設(shè)計(jì)及描述
2.1 方案選擇及設(shè)計(jì)思想
通過分析之后我們覺得此次設(shè)計(jì)主要是兩大模塊,一是系統(tǒng)顯示模塊,二是單片機(jī)設(shè)計(jì)模塊,在顯示模塊的設(shè)計(jì)中,開始想到了常用的LED顯示,但是考慮的后續(xù)硬件實(shí)現(xiàn)的復(fù)雜性(超過10以上的LED實(shí)物連接將十分復(fù)雜),于是選取了方便但是沒有接觸過的LCD顯示,因此也導(dǎo)致了一定程度的難度,在選取單片機(jī)方面,我們選取了課堂上講授的51單片機(jī),對(duì)于簡單的輸入和輸出控制,51機(jī)顯然最合適,51單片機(jī)是8位的,采用總線結(jié)構(gòu),但是具有變成控制簡便,接口簡單,工作可靠,價(jià)格經(jīng)濟(jì),能耗少,容易實(shí)現(xiàn)系統(tǒng)小型化等特點(diǎn)。
因?yàn)榛@球計(jì)分系統(tǒng)電路結(jié)構(gòu)比較簡單,只有按鍵控制和數(shù)碼顯示兩個(gè)部分,P0口接12個(gè)開關(guān),分別作為比分的加一,加二,加三,減一,設(shè)置節(jié)次,暫停,交換場地的按鍵控制。P2口和P3口控制LCD的比分及時(shí)間顯示。該系統(tǒng)包括AT89S51,時(shí)鐘及復(fù)位電路,按鍵電路,及LCD顯示器。該電路控制簡單,清晰明了,用LCD液 晶顯示,避免了用LED的復(fù)雜接線,便于實(shí)體硬件電路的焊接。
2.2 原理框圖
1602a LCD
按鍵電路
AT89S51
L
C
D
顯
示
器
復(fù)位電路
時(shí)
鐘
電
路
圖1.1 原理圖
2.3 工作原理
LCD顯示器
該顯示器的RS,RW,E端與P2相連,引腳的作用分別是:
RS=0輸入指令,RS=1輸入數(shù)據(jù),RW=0向LCD寫入指令或數(shù)據(jù),RW=1從LCD讀取信息,E是使能信號(hào)。D0~D7與P3相連是數(shù)據(jù)總線。
時(shí)鐘電路
時(shí)鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是為保證系統(tǒng)正常工作的基礎(chǔ),在一個(gè)單片機(jī)系統(tǒng)中,時(shí)鐘是保障系統(tǒng)正常工作的基準(zhǔn)震蕩定時(shí)信號(hào),主要有晶振和外圍電路組成,晶振頻率大小決定單片機(jī)的快慢,我們這里采用的是12MHZ,另外有2個(gè)30P的電容。
復(fù)位電路
單片機(jī)系統(tǒng)的復(fù)位電路我們采用的是上電加按鈕的復(fù)位電路形式,電阻采用220歐的阻值,采用22μ的電容。
按鍵電路
本設(shè)計(jì)共有12個(gè)設(shè)置按鍵,分別為+1,+2,+3,-1,暫停,設(shè)置節(jié)次按鍵和交換場次按鍵。
2.4 電路圖
3 軟件設(shè)計(jì)流程及描述
3.1 系統(tǒng)模塊層次結(jié)構(gòu)圖
主函數(shù)
定時(shí)器初始
化函數(shù)
化函數(shù)
寫指令函數(shù)
寫字符函數(shù)
LCD初始化函數(shù)
寫數(shù)據(jù)函數(shù)
按鍵掃描函數(shù)
延時(shí)函數(shù)
顯示時(shí)間函數(shù)
讀忙信號(hào)判斷函數(shù)
3.2 程序流程圖
開始
定時(shí)器0,LCD初始化
顯示當(dāng)前時(shí)間
讀取P0口的值
是否有按鍵按下
N
Y
哪個(gè)按鍵按下
加一
交換場次
節(jié)次
暫停
減一
加三
加二
待按鍵釋放
將時(shí)間,分?jǐn)?shù),節(jié)次經(jīng)P2,P3口輸出顯示
3.3 源程序代碼
#include
#include "intrins.h" //_nop_();延時(shí)函數(shù)用
#define uchar unsigned char
#define uint unsigned int
#define Lcd_Port P3 //定義數(shù)據(jù)端口
#define KEY_IO P0 //鍵盤接口
sbit RS = P2^1; //定義和LCM的連接端口
sbit RW = P2^2;
sbit E = P2^5;
sbit Busy = P3^7;
sbit speaker=P1^0;
uchar data keytemp,key;
uchar L=0;
uchar k=0;
uchar c = 0;
uchar b=0;
uchar j=0;
uchar e=1;
uchar d = 0;
uchar hour =24;
uchar hour1=0;
uchar min = 11;
uchar sec = 59; //賦初值
uchar data flag=0x00;
bit flag_key=0;
uchar code Lcddata[] = {"0123456789:"};
//uchar code Lcddata[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/******************************************************************************************
* 函數(shù)名稱 :Timer0Init
* 功能描述 :定時(shí)器0初始化
******************************************************************************************/
void Timer0Init(void)
{
TMOD=0x11;
TH0 = 0x3c;
TL0 = 0xb0;
TH1=-10300/256;
TL1=-10300%256; //25MS定時(shí)初值(T1計(jì)時(shí)用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
/******************************************************************************************
* 函數(shù)名稱 :IsrTimer0
* 功能描述 :T0 50mS中斷程序
******************************************************************************************/
void IsrTimer0(void) interrupt 1 using 1 //T0 50mS中斷程序
{
static uchar count = 0;
TH0 = 0x3c;
TL0 = 0xb0;
count++;
if(count ==20) //定時(shí)1s時(shí)間到
{
count = 0;
sec--;
if(sec == 0) //1分鐘時(shí)間到
{
if(min == 0) //1小時(shí)時(shí)間到
{
min = 0;
EA=0;
speaker=~speaker;
}
else
{
sec = 59;
min--;
}
}
}
}
void IsrTimer1(void) interrupt 3 using 3//T1 50mS中斷程序
{uchar i=0,m=0,a=0;
static uchar ta20ms= 0;
TH1=-10300/256;
TL1=-10300%256;
ta20ms++;
if(ta20ms== 1 ) //定時(shí)1s時(shí)間到
{
ta20ms=0;
hour1--;
if(hour1 ==-1) //1分鐘時(shí)間到
{
hour--;hour1 =99;
if(hour==0)
{
hour=24;hour1=0;
k=1;
//EA=0;
L=1;
speaker=~speaker;
while(a<=2){
while(m<=225){for(i=0;i<=225;i++)
a++;m++;}}
speaker=1;}
}
}
}
/******************************************************************************************
* 函數(shù)名稱 :Delay
* 功能描述 :延時(shí)子程序,延時(shí) (1MS*t) S
******************************************************************************************/
void Delay(uchar t)
{
uchar a;
while(t-- != 0)
{
for(a = 0; a < 125; a++);
}
}
/******************************************************************************************
* 函數(shù)名稱 :Read_Busy
* 功能描述 :讀忙信號(hào)判斷
******************************************************************************************/
void Read_Busy(void)
{
uchar i=50;
Lcd_Port=0xff;
RS = 0;
RW = 1;
E = 1;
while((i--)&&Busy);
E=0;
}
/******************************************************************************************
* 函數(shù)名稱 :Write_Comm
* 功能描述 :寫指令函數(shù) ok
******************************************************************************************/
void Write_Comm(uchar lcdcomm)
{
Read_Busy();
RS = 0;
RW = 0;
E = 1;
Lcd_Port=lcdcomm;
E = 0;
}
/******************************************************************************************
* 函數(shù)名稱 :Write_Char
* 功能描述 :寫字符函數(shù) ok
******************************************************************************************/
void Write_Char(uint num)//寫字符函數(shù)
{
Read_Busy();
RS = 1;
RW = 0;
E = 1;
Lcd_Port = Lcddata[num];
E = 0;
}
/******************************************************************************************
* 函數(shù)名稱 :Write_Data
* 功能描述 :寫數(shù)據(jù)函數(shù) ok
******************************************************************************************/
void Write_Data(uchar lcddata)
{
Read_Busy();
RS = 1;
RW = 0;
E = 1;
Lcd_Port = lcddata;
E = 0;
}
/******************************************************************************************
* 函數(shù)名稱 :Init_LCD
* 功能描述 :初始化LCD
******************************************************************************************/
void Init_LCD(void)
{
//Delay(400); //稍微延時(shí),等待LCM進(jìn)入工作狀態(tài)
Write_Comm(0x38); //8位2行5*8
Write_Comm(0x0c); //顯示開/關(guān),光標(biāo)開閃爍開
Write_Comm(0x01); //清顯示
Write_Comm(0x06); //文字不動(dòng),光標(biāo)右移
Write_Comm(0x02); //光標(biāo)歸位
}
/******************************************************************************************
* 函數(shù)名稱 :Show_Time
* 功能描述 :LCD上顯示當(dāng)前時(shí)間
******************************************************************************************/
void Show_Time(void)
{
Write_Comm(0x80+0x08); //顯示首地址
Write_Char( hour / 10 );//顯示小時(shí)
Write_Char( hour % 10 );
Write_Char( 10 ); //顯示:
Write_Char( hour1 / 10 );//顯示小時(shí)
Write_Char( hour1 % 10 );
Write_Comm(0x80+0x4b);
Write_Char( min / 10 ); //顯示分鐘
Write_Char( min % 10 );
Write_Char( 10 ); //顯示:
Write_Char( sec / 10 ); //顯示秒
Write_Char( sec % 10 );
Write_Comm(0x80+0x45);
Write_Char( c / 10 );
Write_Char( c % 10 );
Write_Comm(0x85);
Write_Char(d / 10 );
Write_Char(d % 10 );
}
//***************按鍵掃描函數(shù)/*************
void keyscan()
{
uchar i,t=0xef,temp=0; //1110 1111
KEY_IO=0x0f;
keytemp=(~KEY_IO)&0x0e;
if(keytemp!=0) //0000 0000 ;0000 1000; 0000 0100; 0000 0010; 0000 0001;
{
Delay(20);
for(i=0;i<4;i++)
{
KEY_IO=t;
keytemp=(~KEY_IO)&0x0e;
if(keytemp!=0&flag_key==0)
{
flag_key=1;
switch(keytemp)
{
case 0x08:key=0*3+i;break;
case 0x04:key=1*4+i;break;
case 0x02:key=2*4+i;break;
default:break;
}
switch(key)
{
case 0:{c++; j=1;if(c>=99){ Write_Comm(0x84);Write_Data(1);d=0;}b=0;}break;
case 1:{c++;c++; j=1;if(c>=99){ Write_Comm(0x84);Write_Data(1);d=0;}b=0;}break;
case 2:{c++;c++;c++;if(c>=99){ Write_Comm(0x84);Write_Data(1);d=0;} j=1;b=0;}break;
case 4:{d++;if(d>=99){ Write_Comm(0x80+0x44);Write_Data(1);c=0;};b=1;j=0;}break;
case 5:{d++;d++;if(d>=99){ Write_Comm(0x80+0x44);Write_Data(1);c=0;}b=1;j=0;}break;
case 6:{d++;d++;d++;if(d>=99){ Write_Comm(0x80+0x44);Write_Data(1);c=0;}b=1;j=0;}break;
case 8:{if(b==1){d--;if (d==0) d=0;};if(j==1) c--;}break;
case 9:if (k==1)hour=24;EA=~EA;speaker=1;L=0;k=0;break;
case 10: e++;if (e==5)e=1;Write_Comm(0x80+0x0d);Write_Char(e%10); break;
case 3:{ Write_Comm(0x80);
Write_Data(C);
Write_Data(B);
Write_Data(A);
Write_Data(:);
Write_Comm(0x80+0x0d);
Write_Char(e%10);
Write_Data(S);
Write_Data(t);
Write_Comm(0x80+0x40);
Write_Data(N);
Write_Data(B);
Write_Data(A);
Write_Data(:);
temp=c;
c=d;
d=temp;
}break;
case 7:{ Write_Comm(0x80);
Write_Data(N);
Write_Data(B);
Write_Data(A);
Write_Data(:);
Write_Comm(0x80+0x0d);
Write_Char(e%10);
Write_Data(S);
Write_Data(t);
Write_Comm(0x80+0x40);
Write_Data(C);
Write_Data(B);
Write_Data(A);
Write_Data(:);
temp=c;
c=d;
d=temp;}break;
default:break;
}
}
t=(t<<1)|0x01;
}
}
else flag_key=0;
}
/******************************************************************************************
* 函數(shù)名稱 :main
* 功能描述 :主函數(shù)
******************************************************************************************/
void main(void)
{
Init_LCD(); //初始化 LCM
Timer0Init(); //初始化定時(shí)器
Write_Comm(0x80);
Write_Data(N);
Write_Data(B);
Write_Data(A);
Write_Data(:);
Write_Comm(0x80+0x0d);
Write_Char(e%10);
Write_Data(S);
Write_Data(t);
Write_Comm(0x80+0x40);
Write_Data(C);
Write_Data(B);
Write_Data(A);
Write_Data(:);
while(1)
{
Show_Time(); //顯示時(shí)間
keyscan();
}
}
4 運(yùn)行結(jié)果
圖2.1 比賽倒計(jì)時(shí)24s燈亮
圖2.2 顯示比分、本場比分時(shí)間圖
圖2.3 交換場地圖
5 總結(jié)
參考文獻(xiàn)
[1] 萬文略編著. 單片機(jī)原理及應(yīng)用[M]. 重慶:重慶大學(xué)出版社,2004.
[2] 孫德文編著. 微型計(jì)算機(jī)技術(shù)[M]. 北京:高等教育出版社,2005.
[3] 張建勛編著. C語言程序設(shè)計(jì)教程[M]. 北京:清華大學(xué)出版社,2008.
[4] 于海生編著. 計(jì)算機(jī)控制技術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2007.
[5] 唐俊翟編著. 單片機(jī)原理及應(yīng)用[M].北京:冶金工業(yè)出版社,2003.
[6] 彭為編著. 單片機(jī)典型系統(tǒng)應(yīng)用設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社, 2006.
附件
鏈接地址:http://zhongcaozhi.com.cn/p-6656779.html