乒乓游戏机设计
乒乓游戏机的硬件包括单片机电路、译码电路、发光二极管电路、按键电路、显示电路等电路。其中单片机电路包括:晶振电路,复位电路;由译码器接P2的5个I/O口控制16个模拟乒乓球台桌LED灯;由单片机的P0口接上拉电阻,感应按键电路的输入;有P1.2到P1.5给LCD进行数据的输入,P3.2-P3.3给LCD进行写入控制。
17
西南石油大学本科毕业设计(论文)
4 乒乓游戏机的软件设计及编程
本系统的软件主要采用模块化结构设计,具体的程序有主程序、按键组程序(球拍模拟和暂停/开始子程序)、发球程序、线路程序(包括线路选择和LED点阵子程序)、回球程序、LCD显示程序。系统流程图如图4.1所示。
是 结 束 图4.1 系统流程图
18
开 始 初始化 主程序 否 是 发球指示灯 是否点亮 B发球 A发球 线路程序 回球程序 是 AB回球是否成功 A失败 B加1分 否 否 B失败 A加1分 显示程序 否 得分11 乒乓游戏机设计
通过程序实现的功能为:在主程序进入初始化,LCD屏的清零,及初始化显示设置;然后进入发球程序,绿色指示灯亮起时,B得到球权,否则A得到球权;当发球成功后,进入线路模块,在不同的情况进入相应的线路,依据线路的选择依次点亮线路所包含的LED灯;而后进入回球程序,回球成功继续进入线路程序,回球失败,对手分数加1,并进入LCD显示程序;当AB队 任一队11分后进入相应win子程序。暂停/开始程序在定时扫描,当暂停键按下时,游戏暂停,在游戏暂停时当开始按下游戏继续。
4.1 主程序的设计及功能实现
主程序的功能是进行初始化工作,并控制“乒乓球”游戏的开始。LED灯组接单片机的P2口上,按键组接单片机P0口上,LCD显示屏由单片机控制。游戏开始时,程序控制显示上行A:0;下行B:0。
void main() {
write_com(0x01);//显示器清屏 P2=0;//LED点阵全部熄灭 fuwei();//数据初始化 EA=1; EX0=1; EX1=1; ET0=1; IT0=1; IT1=1; TMOD=0X01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; TR0=1;//定式扫描初始化设置 qiuquan(); //跳转到发球程序
while(1)//循环扫描并点亮相应LED {
int t=1000+w*1000; P2=q[n];
delay_1(t);//延时处理程序 xianlu();//线路控制程序 } }
4.2 按键组的设计及功能实现
此程序贯穿了整个系统框图中,包括球拍模拟子程序和暂停/开始子程序。
19
西南石油大学本科毕业设计(论文)
4.2.1 球拍模拟子程序
单片机P0口在相应时间段内感应来自由按键组传来的数据,如果在delay_1(t)中作出正确的选择,进入回球程序,否则对方加1分。
图4.2 按键组流程图
回球程序 对方分数加1 是 是否成功 按下按键 否 4.2.2 暂停/开始子程序
当暂停键被按下后,程序进入中断,暂停灯亮起,当按下开始按键时,程序继续。其流程图如图4.3所示。
否 继续游戏 是否暂停 是 是 回到游戏 定时程序 是否解除 暂停 继续暂停 否 图4.3 暂停/开始程序流程图
4.3 发球程序的设计及功能实现
绿色指示灯亮起时,B得到发球球权,否则A得到发球球权。 void qiuquan(void) {
w=1;//球速控制变量
20
乒乓游戏机设计
v=0;//发球控制变量
if(f>=3)//球权控制变量0-3循环。 f=0; else f++;
if(f<2)//当f小于2时A得到球权 Ajiqiu();
else//当f大于2时B得到球权 Bjiqiu(); }
4.4 线路程序的设计及功能实现
线路程序包括线路选择子程序和LED点阵子程序。
4.4.1 线路选择子程序
游戏发球有8个线路选择,AB分别4个线路选择,发球的4个选择由线路b[16]和初始点亮灯一起组成。回球总的线路有16个,存在数组b[16]中。 void xianlu(void)//线路程序按顺序给LED点阵输入相应数据 {
if(m>256)//m取自b[]中得数据 {n=m/256;m=m%6;} else if(m>16) {n=m/16;m=m;} else if(m<16&&m>=0) {n=m;m=-1;} else if(m<0)//当m取完数据时,按键都没做出正确输入时,表明A或B回球失败。 { P2=0; if(n<8) chang3(); else if(n>=8) chang1(); qiuquan(); } }
4.4.2 LED点阵子程序
由单片机线路和delay_1(t)控制74LS138译码器,74LS138译码器译码控制LED点阵得点亮顺序和相应点亮时间。q[16]寄存数组,列如P2=q[0]时点亮A边的第一个灯,单片机将数据传输给74LS138进行译码点亮相应的LED实现乒乓球的移动。
21