国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

微電腦控制簡易球賽計分牌的設(shè)計與制作

2015-02-05 08:05貴州電子信息職業(yè)技術(shù)學(xué)院通信工程系吳政江
電子世界 2015年13期
關(guān)鍵詞:球賽數(shù)碼管計分

貴州電子信息職業(yè)技術(shù)學(xué)院通信工程系 吳政江

微電腦控制簡易球賽計分牌的設(shè)計與制作

貴州電子信息職業(yè)技術(shù)學(xué)院通信工程系 吳政江

球類比賽中裁判需要計分時通常需要計分牌,以便及時、準(zhǔn)確、清楚地記錄并顯示比賽雙方的得分,體現(xiàn)比賽的公正性以及渲染比賽的緊張氣氛。傳統(tǒng)的計分牌采用黑板加粉筆方式,計分麻煩且不環(huán)保。用單片機(jī)來設(shè)計計分牌可謂得心應(yīng)手。本文介紹一款微電腦控制簡易球賽計分牌的設(shè)計與制作。硬件上,它是一個具有數(shù)碼管顯示、按鍵輸入、數(shù)據(jù)運(yùn)算等比較完整的單片機(jī)應(yīng)用系統(tǒng)。軟件上,采用C語言編程。旨在向廣大單片機(jī)愛好者介紹單片機(jī)應(yīng)用系統(tǒng)的基本開發(fā)過程以及C語言程序設(shè)計方法。

單片機(jī);計分牌;設(shè)計;制作

引言

電子信息類專業(yè)各骨干課程不但有較難理解的理論分析,也有大量的實(shí)際應(yīng)用電路,因而既要學(xué)習(xí)理論,更要動手實(shí)踐,理論性和實(shí)踐性均很強(qiáng)。然而,當(dāng)前職業(yè)學(xué)校學(xué)生普遍存在文化基礎(chǔ)不牢,接受能力不佳,學(xué)習(xí)積極性、分析問題與解決問題能力不高的現(xiàn)實(shí)情況。因此,長期以來,職業(yè)學(xué)校電子信息類專業(yè)各骨干課程理論教學(xué)方法枯燥,實(shí)驗(yàn)教學(xué)可操作性差,課程設(shè)計缺乏創(chuàng)新,結(jié)果大多數(shù)學(xué)生對這些課程理論理解不清,實(shí)驗(yàn)走過場,課程設(shè)計找槍手,考試弄虛作假。針對這一問題,我們提出了用計算機(jī)仿真技術(shù)對電子信息類專業(yè)各骨干課程進(jìn)行教學(xué)改革的思想。本文是用Proteus仿真軟件對單片機(jī)課程進(jìn)行教學(xué)改革的一個綜合應(yīng)用。用單片機(jī)設(shè)計一個簡易球賽計分牌。硬件上,它是一個具有數(shù)碼管顯示、按鍵輸入、數(shù)據(jù)運(yùn)算等比較完整的單片機(jī)應(yīng)用系統(tǒng)。軟件上,采用C語言編程。

1 電路結(jié)構(gòu)與工作原理

1.1 球賽計分牌功能模塊劃分

(1)人機(jī)對話功能模塊。計分牌應(yīng)能及時輸入比賽雙方得分,故電路要求有人機(jī)對話功能。這里用4個按鍵來改變比賽雙方得分,按鍵SW1與SW2用來增加及減少比賽一方(如A方)得分?jǐn)?shù);按鍵SW3與SW4用來增加及減少比賽另一方(如B方)得分?jǐn)?shù)。

(2)顯示模塊。采用4只共陽極數(shù)碼管顯示得分情況,最大顯示比分為99∶99,基本能滿足小型比賽要求。其中“∶”由兩只紅色發(fā)光二極管代替,開機(jī)時即亮。

(3)單片機(jī)模塊。這里采用AT89C51單片機(jī)加復(fù)位電路與時鐘電路即可,無需外擴(kuò)存儲器與I/O口。

(4)電源模塊。單片機(jī)所需的+5V電源可由220伏的交流市電經(jīng)降壓、整流、濾波與穩(wěn)壓得到。

1.2 硬件電路設(shè)計

根據(jù)以上功能模塊劃分,確定球賽計分牌硬件電路[1]如圖1所示(電源電路略去未畫,實(shí)際制作時應(yīng)補(bǔ)上)。對該電路簡要分析如圖1所示。

(1)核心部分是由AT89C51單片機(jī)與復(fù)位電路以及時鐘電路組成的單片機(jī)最小應(yīng)用系統(tǒng)。

(2)根據(jù)計分牌功能要求,用4個共陽極數(shù)碼管顯示比賽雙方得分,數(shù)字顯示中間分隔符“∶”利用兩只紅色發(fā)光二極管來實(shí)現(xiàn)。

(3)Q1、Q2、Q3、Q4為4個共陽極數(shù)碼管驅(qū)動三極管,目的是增強(qiáng)單片機(jī)I/O口的電流驅(qū)動能力。

(4)由于本項(xiàng)目涉及到的按鍵數(shù)較少,故采用獨(dú)立式鍵盤結(jié)構(gòu)。4只按鍵分別連接單片機(jī)的P1.4~P1.7口(實(shí)際制作時可任選單片機(jī)其他I/O口,但程序應(yīng)作相應(yīng)的調(diào)整)。

2 軟件規(guī)劃與設(shè)計

根據(jù)硬件電路,設(shè)比賽雙方為A與B,按鍵SW1與SW2設(shè)為A方得分加、減按鍵;按鍵SW3與SW4設(shè)為B方得分加、減按鍵。程序采用模塊化設(shè)計,由主函數(shù)及相關(guān)子函數(shù)組成。

2.1 主函數(shù)

完成對四個獨(dú)立按鍵的無限循環(huán)判斷,并調(diào)動態(tài)掃描函數(shù)顯示比賽雙方得分?jǐn)?shù)。其流程圖[2]如圖2所示。

2.2 動態(tài)掃描函數(shù)

完成BCD碼轉(zhuǎn)換、動態(tài)數(shù)碼管顯示,同時用于按鍵延時消抖。

圖1 球賽計分牌電路

2.3 5ms延時函數(shù)

完成5ms延時,供動態(tài)掃描函數(shù)調(diào)用。

這里給出C語言參考源程序如下所示。

#include〈reg51.h〉

#define uchar unsigned char

#define uint unsigned int

sbit sw1=P1?7; //定義A方增加鍵

sbit sw2=P1?6; //定義A方減少鍵

sbit sw3=P1?5; //定義B方增加鍵

sbit sw4=P1?4; //定義B方減少鍵

uchar duanma[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x 92,0x82,0xF8,0x80,0x90}; //共陽極數(shù)碼管0到9的段碼

uchar weima[4]={0x7f,0xbf,0xdf,0xef}; //共陽極數(shù)管位碼

uchar xianshi[4]={0,0,0,0}; //顯示緩存器

uint jishu=0,affs=0,bffs=0; //定義變量

void dtsm(void); //聲明動態(tài)掃描函數(shù)

/*延時約5毫秒函數(shù)*/

void delay05ms(void)

{

uchar j,k;

for(j=10;j〉0;j--)

for(k=110;k〉0;k--);

}

如圖2所示。

/*主函數(shù)*/

void main(void)

{

while(1) //無限循環(huán)

{

dtsm(); //*******************按鍵判斷**** ********************************

if(sw1==0) //A方加分鍵按下嗎

{

dtsm(); //調(diào)動態(tài)掃描函數(shù)兼作延時消抖

if(sw1==0) //A方加分鍵還按下嗎

圖2 計分牌主函數(shù)流程圖

{

affs++; //A方分?jǐn)?shù)加1

if(affs==100)affs=99; //最大為99

while(sw1==0)dtsm(); //等待A方加分鍵釋放

}

}

if(sw2==0) //A方減分鍵按下嗎

{

dtsm(); //調(diào)動態(tài)掃描函數(shù)兼作延時消抖

if(sw2==0) //A方減分鍵還按下嗎

{

affs--; //A方分?jǐn)?shù)減1

if(affs==-1)affs=0; //最小為0

while(sw2==0)dtsm(); //等待A方減分鍵釋放

}}

if(sw3==0) //判斷B方加分鍵

{

dtsm();

if(sw3==0)

{

bffs++;

if(bffs==100)bffs=99;

while(sw3==0)dtsm();

}}

if(sw4==0) //判斷B方減分鍵

{

dtsm();

if(sw4==0)

{

bffs--;

if(bffs==-1)bffs=0;

while(sw4==0)dtsm();

}}}}

/*動態(tài)掃描函數(shù)*/

void dtsm(void)

{

xianshi[0]=duanma[affs/10]; //分離A方分?jǐn)?shù)十位

xianshi[1]=duanma[affs%10]; //分離A方分?jǐn)?shù)個位

xianshi[2]=duanma[bffs/10]; //分離B方分?jǐn)?shù)十位

xianshi[3]=duanma[bffs%10]; //分離B方分?jǐn)?shù)個位

//*******************動態(tài)掃描**************** *****************

jishu++;

if(jishu==4)jishu=0;

P2=0x00;

P2=weima[jishu]; //送位碼

P0=xianshi[jishu]; //送段碼

delay05ms();

}

本程序采用模塊化設(shè)計有利于程序的升級與修改。程序中按鍵“去抖”不用延時子函數(shù)而用動態(tài)掃描函數(shù)代替,可以提高程序效率,避免在調(diào)用延時子函數(shù)時數(shù)碼管亮度下降甚至出現(xiàn)閃爍現(xiàn)象。調(diào)用一次動態(tài)掃描函數(shù)相當(dāng)于延時約8ms。這是采用動態(tài)數(shù)碼管顯示時的應(yīng)用技巧之一。

3 系統(tǒng)調(diào)試

(1)啟動Proteus軟件,并用其繪制圖1所示電路原理圖。

(2)啟動Keil軟件。建立工程,輸入上述C語言源程序并編譯調(diào)試生成二進(jìn)制的目標(biāo)文件。

(3)將第(2)步生成的二進(jìn)制目標(biāo)文件加載到第(1)步所繪電路原理圖的AT89C51單片機(jī)中,然后仿真運(yùn)行。按下SW1~SW4中的任一按鍵,觀察相應(yīng)的數(shù)碼管顯示是否變化,其變化是否符合要求。

(4)購買元器件,按硬件電路焊好電路板,將參考程序?qū)懭階T89C51單片機(jī),通電。按下SW1~SW4中的任一按鍵,觀察相應(yīng)的數(shù)碼管顯示是否變化,其變化是否符合要求。調(diào)試完成后,將產(chǎn)品投入實(shí)際的球類比賽(如籃球比賽)中使用,看是否能適應(yīng)實(shí)際的現(xiàn)場比賽。

4 結(jié)束語

文中從電路結(jié)構(gòu)與工作原理、軟件規(guī)劃與設(shè)計以及系統(tǒng)調(diào)試等三個方面簡要介紹了微電腦控制簡易球賽計分牌的設(shè)計與制作。是采用Proteus仿真軟件對單片機(jī)原理及應(yīng)用課程進(jìn)行教學(xué)改革的一個綜合性應(yīng)用實(shí)例。硬件上,它是一個具有數(shù)碼管顯示、按鍵輸入、數(shù)據(jù)運(yùn)算等比較完整的單片機(jī)應(yīng)用系統(tǒng)。軟件上,采用C語言編程。涉及單片機(jī)的內(nèi)部結(jié)構(gòu)及最小應(yīng)用系統(tǒng)、獨(dú)立式鍵盤結(jié)構(gòu)與設(shè)計、LED數(shù)碼管接口技術(shù)及其動態(tài)顯示原理以及C語言程序設(shè)計等單片機(jī)知識。旨在向廣大單片機(jī)愛好者介紹單片機(jī)應(yīng)用系統(tǒng)的基本開發(fā)過程以及C語言程序設(shè)計方法。

[1]吳政江,張定祥.單片機(jī)原理及應(yīng)用(基于C語言)[M].北京:化學(xué)工業(yè)出版社,2013.

[2]舒?zhèn)ゼt.單片機(jī)原理與實(shí)訓(xùn)教程[M].北京:科學(xué)出版社,2008.

2014年貴州省高校人文社會科學(xué)研究項(xiàng)目“基于計算機(jī)仿真技術(shù)的電子信息類骨干課程課改研究”(負(fù)責(zé)人:吳政江;編號:14ZC261)。

吳政江,貴州電子信息職業(yè)技術(shù)學(xué)院副教授,主要研究方向:單片機(jī)與嵌入式系統(tǒng)、電子信息技術(shù)、職業(yè)教育等。

猜你喜歡
球賽數(shù)碼管計分
帶定性判斷的計分投票制及其公理刻畫
微課教學(xué)設(shè)計之“數(shù)碼管動態(tài)顯示”
雪中馬球賽
Arduino編程
引導(dǎo)素質(zhì)教育的新高考計分模式構(gòu)想:線性轉(zhuǎn)化計分模式
MC9S08FL16單片機(jī)數(shù)碼管靜態(tài)顯示分析
基于單片機(jī)的中國式摔跤比賽計分器開發(fā)設(shè)計
單片機(jī)控制的四位數(shù)碼管動態(tài)顯示編程
球賽輸了
計分考核表在績效管理中的應(yīng)用效果