单片机智能控制系统具有功能强、可靠性高、使用方便、体积小及重量轻等优点,本文从实用的角度介绍以AT89C2O5l微控制器为核心设计的一种“乒乓球”游戏机的智能控制系统,该系统运行稳定、可靠,满足智能化要求。
硬件设计
硬件电路由单片机、发光二极管显示电路、按键电路和数码显示电路等组成,系统原理图如下图所示。
本文通过5只连续排列的发光二极管依次点亮代表乒乓球的运动,采用两个按键模拟左、右球拍,键接下代表球拍击球,“左拍"按下发光二极管从左向右依次点亮,模拟乒乓球从左向右飞来;“右拍”按下发光二极管从右向左依次点亮,模拟乒乓球从右向左运动。游戏过程中用数码显示管显示双方比分,游戏规则如下:
(1)“乒乓球”移动速度国定,设定每秒移动一位发光二极管;(2)在“乒乓球”一次移位过程中,进行25次检测(每40ms检测一次),检测接球方是否有击球动作;(3)接球方的击球动作发生在“乒乓球”到达本方最后一位发光二极管点亮的1s内,若接球方在此1s内按键,则接球成功接球方得分,“乒乓球”转为相反方向运动,此后,原接球方变为发球方,原发球方变为接球方,游戏继续进行;(4)如接球方提前或滞后击球,则接球方失误,双方都不得分,“乒乓球”熄灭,数码显示管显示双方的比分不变,然后仍由原发球方发球。
控制电路系统采用AT89C2O5l微控制器,R1、C1组成单片机复位电路,接通电源瞬间,电源电压通过电阻R1对C1充电,AT89C2O51复位端1脚得到一个高电平的复位脉冲信号后,单片机进入初始状态。
显示和按键电路P3.O~P3.4端口连接5只发光二极管,P3.7端口作为“左拍”按键,模拟左拍击球信号,P3.5端口作为“右拍”按键,模拟右拍击球信号。由3-8译码器组成的6位共阴极LED静态显示电路,P1.
4=1译码器导通,P15~P1.7端口经译码器控制各芯片,依次选通6位LED;P1.O~P1.3端口将欲显示的十六进制数直接输出到MCl4459芯片中,同时使能控制端锁存 P1.O~P1.3 输出的数据进行译码驱动显示。
软件设计
软件设计主要由主程序、“乒乓球”左移子程序、“乒乓球”右移子程序和比分显示子程序等组成。
主程序设计主程序流程图如下图所示,
包括开始初始化CPU、控制模拟“乒乓球左、右拍”游戏。游戏开始时,数码管显示比分零比零,然后“左拍”接下“乒乓球”右移,“右拍”按下“乒乓球”左移,四个通用寄存器分别作为右方得分寄存器、左方得分寄存器、1s计时常数寄存器及“乒乓球”移位计数器。
“乒乓球”左移子程序左移子程序控制“乒乓球”向左移动,在逐位移动过程中判断是否有“左拍”击球动作,当“乒乓球”移动到最左边的1s内击球才有效,“左拍”得分,除此之外其它的“左拍”击球都算失误,重新开始“乒乓球”左移子程序,相当于由右方重新发球,流程图如下图所示。
“乒乓球”右移子程序及流程图与左移子程序相似。
本文的创新点在于整个设计以AT89C2O51单片机为核心,充分利用AT89C2O51有限的外围引脚资源,实现对“乒乓球”
游戏机的左、右操作及比分显示控制,系统操作方便、运行稳定、抗干扰能力强、故障率低,达到了设计的要求,实现了产品的智能化。