原创 基于单片机的“乒乓球”游戏机智能控制系统

2009-8-13 23:10 2394 5 5 分类: MCU/ 嵌入式

基于单片机的“乒乓球”游戏机智能控制系统


发布: 2009-4-06 12:58 |  作者: hnrain |   查看: 17次



+i ` Mpoa44606摘  要: 单片机具有编程简单、易学、可靠性高、体积小等优点,广泛地应用于自动控制系统中。笔者设计利用AT89C2051单片机实现“乒乓球”智能游戏机系统,并且阐述了构成本系统的基本原理、硬件组成及相应的软件设计。 
6~0OPA/d,q'U44606关键词:AT89C2051;“乒乓球”游戏机;智能化 电子园51单片机学习网$j}Y}*? ?!j

KcT5E*F*PJ44606 电子园51单片机学习网6Y q7b7sA[.L,?

 电子园51单片机学习网Aa R ]U-i#]2F


'm3C,g~)T)] Q`446060        前言电子园51单片机学习网%suz4Y&pB D{


日常娱乐生活中,智能化的娱乐产品非常流行。单片机具有功能强、可靠性高、使用方便、体积小及重量轻等优点。国外已广泛应用于自动化控制的各个领域。近年来,国内的单片机技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用单片机控制系统且性价比高。本文从实用的角度以AT89C2051单片机为核心设计了一种智能“乒乓球”游戏机。实践证明,该游戏机运行状况稳定、可靠,满足了智能化要求。电子园51单片机学习网.}&yn"Om!Z

电子园51单片机学习网ZLa{,L#j

 

0\8wV)k&H*w'[D44606 电子园51单片机学习网lW{)^nCJ

系统的基本工作原理  

;zya5f7v"Y,Qxi44606 电子园51单片机学习网3VMDZ7u'Cl

本设计中,通过5只连续排列的发光二极管的依次点亮代表“乒乓球”的运动。再用两个按键模拟左右两个球拍,键按下代表球拍击球。“左拍”按下可使发光二极管从左向右依次点亮,如同“乒乓球”从左向右飞来;“右拍”按下则可使发光二极管从右向左依次点亮,代表“乒乓球”从右向左运动。在游戏过程中,用数码显示管实时显示双方比分。游戏规则如下:

0}6dl-Q9I5d$|!A7B1a~44606 电子园51单片机学习网0N2opt*S,?zAY0V

(1)“乒乓球”移动速度是固定的,设定每秒钟移动一位(发光二极管)。

1zVO$bs/_A+pmB44606

0gQ}#C$Y44606(2)在“乒乓球”移位一次的过程中,进行25次的测试(即每40毫秒一次),查询接球方是否有击球动作。

#K1~*fFnXYk44606 电子园51单片机学习网vOg:oE\A

安徽省教育厅基金项目。编号:2003JK093

~7E.p-[n,k p w44606 电子园51单片机学习网~9ze,Yf3vEl

(3)接球方的击球动作应发生在“乒乓球”到达本方最后一位发光二极管(即点亮)一秒钟时间之内。如接球方在此一秒钟之内按键,则接球成功,接球方得分。“乒乓球”转为相反方向运动。此后,原接球方变为发球方,原发球方变为接球方。游戏继续进行。

,`&LJ%A0Zq+h44606

QL,]\!p"hW44606(4)如接球方提前或滞后击球,则接球方失误。双方都不得分。这时“乒乓球”熄灭,数码显示管显示双方的比分不变。然后仍由原发球方发球。

Y1Yk] x6U`44606

9JE7RJ6Ec\!^44606 电子园51单片机学习网{&`Fd8Z8Y8V


R!OX*ftm&G44606硬件组成 

#C/`_N;e%V44606 电子园51单片机学习网 B6AL+}xj$T;^

具体电路由单片机电路、发光二极管显示电路、按键电路和数码显示电路等部分组成。电子园51单片机学习网;~s? Y:r!SI(b7?


~d;^F"G!Dnl446062.1 单片机电路电子园51单片机学习网m$G8lV,pF` p

电子园51单片机学习网?"fi"D|0hKt

AT89C2051、X1、R1、C1等组成单片机电路,R1、C1组成单片机的复位电路,接通电源的瞬间,由于电源电压通过R1对C1的充电过程,单片机AT89C2051复位端1脚获得一个高电平复位脉冲,使得单片机进入初始状态。见图1。电子园51单片机学习网T*V\^UG io K

电子园51单片机学习网r[,G*Uc-~x:J

2.2  发光二极管显示和按键电路

.\}Wn I ^,x44606 电子园51单片机学习网O'mO*ou;F w~3\)S

利用AT89C2051作发光二极管和按键的接口电路。P3.0~P3.4口接5只发光二极管,P3.7口接左按键,模拟左拍击球动作;P3.5口接右按键,模拟右拍击球动作。见图1。

EL7SvH.e5r1T44606 电子园51单片机学习网 rb o1|"Vf

2.3  数码显示电路电子园51单片机学习网x9[8zAT.o'y


C|Q ih)e.~B)H44606利用显示译码器MC14459组成6位共阴极LED静态显示电路。当P1.4=1时,译码器74LS138开通,由P1.5~P1.7口经译码器74LS138控制各MC14459芯片依次选通各LED,同时由P1.0~P1.3口将欲显示的十六进制数直接输出到各MC14459芯片中,再使控制端为高电平,锁存P1.0~P1.3口输出的数据,并进行译码驱动显示。见图1。电子园51单片机学习网2qZ^Chp3e:C


#r7RY1D'S44606点击看大图

fM-a CN44606

)wixM] X0eO |a?44606电子园51单片机学习网L8z;|Q8`i D0qO

电子园51单片机学习网N b:wNV K;E

图1  系统原理框图电子园51单片机学习网Z7X9c8C7O&g4~#z

电子园51单片机学习网+cc$HFmM

软件设计

1rU{E"N,{ Y44606 电子园51单片机学习网 v!]N^EO9|/J!m

为了便于调试,本系统的软件主要采用模块化结构设计,具体的程序由主程序、“乒乓球”左移子程序、“乒乓球”右移子程序和比分显示子程序等模块组成。下面给出了主程序、“乒乓球”左移子程序、“乒乓球”右移子程序及显示子程序的流程图。

8v@,BYn T5q8[#@44606

SF]*Y-V7]!Pb446063.1  主程序电子园51单片机学习网.PT_~N6svo

电子园51单片机学习网:dL5b:h,y7M^

主程序的功能是进行初始化工作,并控制“乒乓球”游戏的开始。模拟左拍的按键接P3.7口,模拟右拍的按键接P3.5口。游戏开始时,显示的比分是零比零,此后,如左拍按下则“乒乓球”右移;如右拍按下则“乒乓球”左移。在主程序中,需要用四个通用寄存器分别作为右方得分寄存器、左方得分寄存器、1秒计时常数寄存器及“乒乓球”移位计数器。其流程图见图2。电子园51单片机学习网+W L%qN$\hqY


6Y7RPO^q9c7M446066136_200904061259002AkGF.jpg

U r:UqEN44606 电子园51单片机学习网;Z0I)I1^0T4x*]

 

-Ly&[W8FFh44606 电子园51单片机学习网rL:iXyS0H

图2  主程序流程图

8L2J v#{O/D8W44606

z-vOm aM*F-T'T-A-f_446063.2  “乒乓球”左移子程序

Vi/Fx;N8] n't%D/q44606

AP g*K,U S44606左移子程序的主要功能是控制“乒乓球”的向左移动,并在逐位移动过程中判断是否有左拍击球动作。只有当“乒乓球”移动到最左的一秒时间内击球才是有效的,左拍得分,并转乒乓球右移子程序,使“乒乓球”向右移动,即相当于左方发球。除此之外,所有的左拍击球都算失误,重新开始“乒乓球”左移子程序,相当于由右方重新发球。其流程图见图3。

*s4s*{1U0@^pD44606

A t ?1tqnD~C446066136_200904061259003zvtL.jpg

I+T8i-r e"Q0z-P.Y44606 电子园51单片机学习网9u&bj-p0ZW

图3  “乒乓球”左移子程序流程图电子园51单片机学习网*rx^6LbC}E.y:C


%@u6}bD*n?446063.3  “乒乓球”右移子程序

0yr_!I@&zr*L44606 电子园51单片机学习网 }r"\H,XE

“乒乓球”的右移子程序的原理与左移子程序的原理相同,只要把左移子程序流程图中的“右”与“左”互换即可。

&D c*k k`p o44606 电子园51单片机学习网2J X ca7RU:@,J+v w1i

3.4  显示子程序

}4}#F(y8qm44606 电子园51单片机学习网"G? H6X"?sA:VC

3.4.1  比分显示格式

O#w Il wM%NQ44606

| c;lO9Q44606比分显示用六位数码显示管进行显示。其显示格式见图4。

3]'Wx6n#efFR3DS44606 电子园51单片机学习网W }-C(J1W wL(e ?.j

6136_200904061259004Os74.jpg电子园51单片机学习网@|C oO


"?D Iy K(r(Z7E'g44606图4  “乒乓球”游戏比分显示格式电子园51单片机学习网|Xr { q,Y Y4AEW9I


xu y5L `5axm5mq446063.4.2  显示原理

3pgc'G p44606

)?xfs;^N/]C![K3C44606  “乒乓球”游戏的左右拍得分分别存在左方得分寄存器和右方得分寄存器中(在主程序中已设置好两个寄存器)。首先设置初值,使二极管熄灭并使比分显示为“00——00”,然后游戏开始,如左拍或右拍正确击球,相应方的比分加1分,否则比分保持原来比分不变。其流程图见图5。电子园51单片机学习网c)iU'}{&v

电子园51单片机学习网"ev CI4E4tM-D5e"SP y

6136_200904061259005MjY6.jpg电子园51单片机学习网2E yUv\5twE

电子园51单片机学习网J,N kb!mXb T

图5  显示子程序流程图电子园51单片机学习网k4z.k2W,w@y/V7g3D4]

电子园51单片机学习网1?/I,^(D0H8M[-M

 电子园51单片机学习网x/x9]8vC

电子园51单片机学习网+s%Hl$e q l5^z

结束语电子园51单片机学习网(r8l"Zu+Za


本文作者创新点:整个设计以AT89C2051单片机为核心,充分利用了AT89C2051有限的外围引脚资源,实现了对“乒乓球”游戏机的左右操作及比分显示的控制。整个系统通过按键可以很方便地操作。且运行稳定,抗干扰能力强。真正实现了娱乐产品的智能化。电子园51单片机学习网 }M [O| TCK


Uj.QM_ y!S44606参考文献电子园51单片机学习网^)l:o9iuV:uj,x b


VK/N pq7W9e44606[1] 李广第.单片机基础[M].北京:北京航空航天大学出版社,1993.

7U2J!L)C|FU5lm"k44606

K2\,Mg1Pjv5S44606[2] 卢存伟,钱捷.微机原理及应用系统设计[M].南京:河海大学出版社,1992.电子园51单片机学习网qi$P)SG&}


b@8QJ-_ Dzz44606[3] 刘淑荣,丁录军.基于单片机控制的温度智能控制系统[J].微计算机信息,2003,19-7:29-30。

V9PeF A8Ow44606
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条