基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计

合集下载

基于单片机的乒乓球发球机构设计及运动仿真

基于单片机的乒乓球发球机构设计及运动仿真
毕 业 设 计(论 文)
题目:基于单片机的乒乓球发球机构设计及运动仿真
(英文):Mechanism Design and Movement Simulation of Table Tennis Serving Machine Based on Single-chip
院别:机电学院
专业:机械电子工程
姓名:
随着乒乓球这项运动的广泛开展,使用乒乓球发球机进行辅助训练也越来越普及,因为发球机能代替许多对手之间练习中所练不到的东西。例如对于高水平的选手,使用乒乓球发球机练习具有极其重要、积极作用。很多人都知道在运动队有一种练习叫多球练习,即通过陪练员或教练员亲自挥拍,将一个一个的乒乓球发到对方台面,运动员连续击球不断,提高练习强度,使运动员的相持能力增强,另外也可作为一种体能训练,但由于是人手发球,速度及频率始终会有一个极点,而且教练员长时间发多球也不可能,所以选用发球机来代替就会事半功倍,虽然它没有人手发球的千变万化的效果,但由于它是机械的东西,速度及频率都可以调节到快于正常打球的极限,而且是一个连续过程,这些是人手发多球所做不到的。对初学者来讲,使用乒乓球发球机练习也具有不可忽视的功效。刚开始学打球的时候,由于击球动作不正确,所以不是您将球打出界就是我将球打下网,捡球的时间比真正在台上练球的时间还要多,所以要提高技术水平就会很慢,而且也会削弱自己打乒乓球的兴趣,但使用发球机作为辅助训练,效果就会大不一样。开始的时候,把发球机的出球速度和频率都调节慢一点,弧度稍调高一点。发球机发出的落点也是从单一定点开始,然后到半台,最后到全台两点。对旋转球的练习也是同一道理,开始的时候练习打上旋球,掌握好了以后慢慢开始练打下旋球、左侧旋、右侧旋等各种旋转的球,通过这样循序渐进,您的球技也自然会有很大的进步。大家都知道过去练武术的人,其中练一项打沙袋,开始袋里装的是幼沙,再是粗沙,最后是坚硬的石头。曾有记载,香港已故武打明星李小龙中国功夫练得炉火纯青,扬威国际,他的练习方法其中有一项就是与机械练拳器对打,虽然它不是一个有智慧的东西,但它的击拳速度,力量都高于一般对手,能征服它,说明您功夫到家。用发球机练习也是这个道理。只有运用高于和难于自己能应付的训练手段,技术水平才会提高得快。使用乒乓球发球机辅助练习可以说是帮助运动员提高技术水平多种途径之一。

51单片机实现模拟打乒乓球

51单片机实现模拟打乒乓球

51单片机实现模拟打乒乓球51单片机实现模拟打乒乓球电子乒乓球游戏机********************** 初始化********************** lw bit 20h.0rw bit 20h.1speed bit 20h.2sd bit 20h.3fs bit 20h.4jq bit 20h.5zy bit 20h.6fq bit 20h.7date equ p0led equ p1rp equ p3.0lp equ p3.3ks equ p3.2spe equ p3.1 bw equ p2.3qw equ p2.2gw equ p2.1sw equ p2.0 state equ 30h ball equ 31h lcode equ 32h rcode equ 33h sdbuf equ 34h ;............................. org 000hljmp mainorg 000bh ljmp int50ms ;..................... main:clr p3.4mov led,#0ffh mov lcode,#00h mov rcode,#00h mov state,#00h clr speedsetb gwsetb swsetb bwsetb qwmov ball,#0ffh mov tmod,#01h mov th0,#3chmov tl0,#0b0hsetb easetb et0setb tr0mov r7,#8mov r6,#20mov r0,#10mov r1,#5mov sdbuf,#00h;*********************main1:lcall dislcall keyjb lw,lwdojnb rw,main1clr rwinc rcodelcall rsdmov a,rcodecjne a,#21,main1lcall gofs; 比分为21分,分闪ljmp main1 ;.................lwdo: ;左得分clr lwinc lcodelcall lsd ;左得分,灯闪mov a,lcodecjne a,#21,main1lcall gofsljmp main1;************************************ int50ms:;中断,,包含移位,发球标志mov th0,#3chmov tl0,#0b0hlcall keymov a,statecjne a,#2,backmov a,sdbufcjne a,#00h,sd1djnz r6,backmov r6,#20sjmp spbacksd1:cjne a,#01h,sd2djnz r0,backmov r0,#10sjmp spbacksd2:djnz r1,backmov r1,#5spback: clr jqjnb zy,ldordo:mov a,ballcjne a,#0feh,rmovesetb lwmov state,#00hsjmp backrmove:mov a,ballrr amov led,amov ball,acjne a,#0feh,backsetb jqreti ;......................ldo:mov a,ballcjne a,#07fh,lmovesetb rwmov state,#00hsjmp backlmove:mov a,ballrl amov led,amov ball,acjne a,#07fh,backsetb jqback:reti;****键盘程序************** key:setb p3.0setb p3.1setb p3.2setb p3.3mov a,p3anl a,#0fhcjne a,#0fh,key1sjmp kse;键扫描key1:jnb ks,jksjnb lp,jlpjnb rp,jrpjnb spe,jspeljmp kse;加速键处理jspe: lcall del20msjb spe,kseinc sdbuflcall sdledretjks: ;开始键处理lcall del20msjb ks,kseclr fsclr sdcpl fqmov led,0ffhmov state,#01hjb fq,ks1 ;发球标志为1,右发球mov ball,#07fhmov led,ballsjmp ks2ks1:mov led,ballks2:clr cmov a,lcodecjne a,#21,ks3ljmp gofsks3:clr cmov a,#rcodecjne a,#21,kseljmp gofskse:ret;**************左拍处理jlp:mov a,statecjne a,#01,lp1jb fq,lpemov state,#02setb zy ;移位为1,球右移sjmp lpelp1:cjne a,#2,lpejb zy,lpe ;移位标致为0,球左移jnb jq,lp2setb zysjmp lpelp2:setb rwlpe:ret ;......右拍.................. jrp:mov a,statecjne a,#01,rp1jnb fq,rpemov state,#02clr zysjmp rperp1:cjne a,#2,rpejnb zy,rpejnb jq,rp2clr zysjmp rperp2:setb lwmov state,#00h rpe:ret ;.............sdled:mov a,sdbufcjne a,#01h,sdled1 clr p2.5setb p2.4setb p2.6retsdled1:cjne a,#02h,sdled2clr p2.6setb p2.5setb p2.4retsdled2:mov sdbuf,#00hclr p2.4setb p2.6setb p2.5ret;*********;**********分显****************** dis:mov a,rcodemov b,#10div abmov dptr,#xstabxch a,bmovc a,@a+dptrmov p0,aclr gwlcall delmssetb gwxch a,bmovc a,@a+dptrmov p0,aclr swlcall delmssetb swmov a,lcodemov b,#10div abxch a,bmovc a,@a+dptr mov p0,aclr bwlcall delmssetb bwxch a,bmovc a,@a+dptr mov p0,aclr qwlcall delmssetb qwret ;......................得分灯闪rsd: mov r5,#6 mov led,#0feh gosd2: cpl led.0 lcall del20mslcall del20msdjnz r5,gosd2 mov r5,#6retlsd: mov r5,#6 mov led,#07fhlsd2: cpl led.7lcall del20mslcall del20msdjnz r5,lsd2mov r5,#6retdelms:mov r4,#100mov r5,#10delms1: djnz r4,$ mov r4,#100djnz r5,delms1 mov r5,#6retdel20ms:mov r3,#200mov r2,#10del20ms1: djnz r2,$ mov r2,#200djnz r3,del20ms1ret ;.......................... gofs:mov r5,#6gofs1: mov p3,#00h lcall del20msmov p3,#0ffhdjnz r5,gofs1mov r5,#6mov lcode,#00h mov rcode,#00hretxstab:DB 3FH,05H,5BH,4FH ;"0","1","2","3" DB 65H,6eH,7eH,07H ;"4","5","6","7"DB 7FH,6FH,;**************。

基于单片机的乒乓球游戏机设计方案

基于单片机的乒乓球游戏机设计方案

基于单片机的乒乓球游戏机设计1、系统方案乒乓球比赛是由甲乙双方参赛,再加上裁判的三人游戏。

乒乓球比赛模拟机是一种用发光二极管模拟乒乓球运动的电子游戏机,同时可以容纳三人玩耍。

1. 用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置。

其中一只点亮的LED指示球的当前位置。

点亮的LED依次从左到右,或从右到左移动,其移动速度应能进行调节。

2. 当球(点亮的那只LED)运动到某方德最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球,若击中则使球向相反方向移动,若未击中,则对方得一分。

3. 一方得分时,电路自动响铃3s,这期间发球无效,等铃声停止后方能继续比赛。

4. 设置自动计分电路。

甲乙双方各用两位数码管进行计分显示,每记满11分为1局。

最好考虑双方各10分之后,领先2分者为胜。

5. 甲乙双方各设置一个发光二极管表示拥有发球权,每得2分自动交换发球权,拥有发球权的一方发球才能有效。

2、硬件设计原理图如下:3、单片机软件设计1、首先是系统初始化:InitTimer(); //初始化定时器EA=1; //全局中断开关TR0=0;TR1=0;ET0=1; //开启定时器0ET1=1;EX0=0;EX1=0;2、中断服务程序void timer1(void) interrupt 3 //用于产生报警信号{TH1=0x4c;TL1=0x00; //50msTR1=1;count_1miao++;if(count_1miao==60){count_1miao=0;flag_1miao=1;ALAM=1;TR1=0;}}3、数码管程序/*****显示分数子程序*****/void Disp_score(void) //显示温度{P0=LEDData[scoreL/10];P2=0x7F;Delay(200);P2=0xFF;P0=LEDData[scoreL%10];P2=0xBF;Delay(200);P2=0xFF;P0=LEDData[scoreR/10];P2=0xDF;Delay(200);P2=0xFF;P0=LEDData[scoreR%10];P2=0xEF;Delay(200);P2=0xFF;}4、核心算法程序if((start==0)&&(run==0)&&flag_1miao==1) //停止状态下,控下start键{Disp_score(); //调用数码管显示{if(start==0) //开始按键按下{if(((scoreL==11)&&(scoreR<10))||((scoreR==11)&&(s coreL<10))||((scoreL>11)&&(scoreL-scoreR==2))||((scoreR>11)&(scoreR-scoreL==2)))// 判断左右方到11,另一方小于10,或者大于12,两方差大于2,这局结束{TR1=0;ALAM=1;scoreL=0;scoreR=0;}run=1; // 运行标志位置1jiqiu_l=0;jiqiu_r=7;zongjiqiushu=0;if((scoreL+scoreR)%4<=1) //所得分数和4取余,(比如1+1和为2和4取余余数为2大于1)余数小于1就是左侧发球,大于一就是右侧发球,就是每侧发球两次,L_R=0;elseL_R=1;if(L_R==0){countt0=0;P1=PPQdata[0];EX0=1;EX1=0;}else{countt0=7;P1=PPQdata[7];EX0=0;EX1=1;}}}}4、proteus仿真设计Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。

基于单片机AT89C51的乒乓球程序_课程设计报告

基于单片机AT89C51的乒乓球程序_课程设计报告

宁波技师学院课程设计报告论文题目基于AT89C51的乒乓球程序摘要单片机自20世纪70年代问世以来,以极高的性价比,受到人们的重视和关注应用很广、发展很快。

单片机以体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发价位容易。

由于具有上述优点,在我国单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各方面,而51单片机是各个单片机中最典型最有代表性的一种。

这次课题设计通过对它的学习、应用,以AT89C51为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管显示时间,调整时间,从而达到学习、设计、开发软、硬件的目的。

关键词:单片机;乒乓球程序,数码管显示;LED灯显示乒乓球行程目录1 引言 (1)2 系统总体设计 (2)2.1系统结构 (2)2.2系统设计方案 (2)3 硬件设计 (3)3.1 单片机最小系统 (3)3.1.1复位电路 (3)3.1.2时钟电路 (5)3.2控制电路 (6)3.3.1数码管的引脚及其作用 (7)3.3.2数码管显示电路 (7)4软件设计 (8)4.1主程序流程图 (8)4.2按键扫描 (8)4.2.1按键扫描流程图......................................... 错误!未定义书签。

4.2.2按键扫描程序............................................. 错误!未定义书签。

5 制作与调试 (16)5.1制作步骤与重点 (16)6 结论 (18)7 致谢 (19)8 参考文献 (20)附录1 系统实物图 (21)附录2 实验原理图 (22)附录3 系统仿真图 (22)附录3 系统仿真图 (23)附录4 程序清单 (24)附录5 PCB图 (34)附录6 元器件清单 (35)1 引言当今,计算机技术带来了科研和生产的许多重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。

基于MCS-51仿真开发系统的乒乓球游戏的设计

基于MCS-51仿真开发系统的乒乓球游戏的设计

基于MCS-51仿真开发系统的乒乓球游戏的设计作者:杨冰来源:《商情》2009年第16期[摘要]设计一款乒乓球游戏能让大家更方便快捷的感受到国球的魅力。

该系统灵活方便,能任意改变球的球速和分制,采用开关操作,LED显示,分别对软件和硬件进行调试,最终达到了软件和硬件的良好结合。

该设计采用模块化的设计,程序结构简单,任务明确。

[关键词]单片机乒乓球速度分制1 引言乒乓球是我国的国球,乒乓球的各种规则也被大家熟知,让大家能更轻松的接触到乒乓球,这里所设计的系统让大家能更加方便快捷的享受到乒乓球的乐趣。

2 设计要求用8个LED发光管的来回滚动显示模拟打乒乓球时乒乓球在两边球台上的来回运动。

比赛双方用按按钮(双方各用1个按钮)的方法来模拟发球与接球,即发球方按动其控制的按钮,球从发球方一侧向对方运动(LED发光管从发球方到对方逐个点亮,滚动显示)。

当球运动至接球方时,接球方立即按动其控制的按钮,“击球”使球“弹回”发球方一侧。

如此周而复始,直至在规定的击球时间内有一方未能完成击球动作,从而对方得一分;然后继续比赛。

根据设计功能,设计思路如下:(1)由P1口控制,用LED灯模拟乒乓球运动。

(2)争球,击球,击球速度,分制等由开关控制,各开关定义如下:k1,k8双方击球键K2=1时,21分制;K2=0时,11分制K3=1时,五局三胜;K3=0时,三局两胜K5=1时,击球时间0.3秒K6=1时,击球时间0.4秒K5、K6同时为0时,击球时间0.5秒k7=1时,右方争球;K7=0时,左方争球K4为开始开关,K4=1,游戏开始,L4闪烁直到K4=0,开始争球每局结束后,令K4=0,开始争球游戏结束后,令K4=1,可重新开始游戏(3)8279控制数码管显示比分及获胜局数。

(4)每局开始时,争球决定发球方。

(5)发球采用一球轮换制。

(6)发球或争球前LED灯闪烁提示。

3 设计特点本系统简单易懂,易于操作。

同时本系统采用模块化的设计,其优点为:每个模块的程序结构简单,任务明确,易于编写、调试和修改。

基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计 精品

基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计 精品

目录1 绪论 (1)1.1 本设计的研究背景和研究目的 (1)1.2 国内外研究现状 (1)1.3 本设计的任务和设计方法 (2)1.3.1 设计任务 (2)1.3.2 设计方法 (2)2 乒乓游戏机设计方案 (3)2.1 基于单片机的乒乓游戏机设计 (3)2.1.1 硬件设计 (3)2.1.2 软件设计 (4)2.2 基于FPGA的乒乓游戏机设计 (4)2.3 方案比较与选择 (5)3硬件电路的设计 (6)3.1 硬件核心电路选择 (6)3.1.1 单片机STC89C51简介 (6)3.1.2 单片机端口分配 (6)3.2 电源电路的设计 (8)3.3 时钟电路的设计 (9)3.4 复位电路的设计 (9)3.5 按键电路的设计 (10)3.6 模拟球台电路的设计 (11)3.6.1 译码器简介 (11)3.6.2发光二极管简介 (13)3.6.3 模拟球拍电路的设计 (14)3.7 显示电路的设计 (14)3.7.1 LCD1602简介 (15)3.7.2 显示电路的设计 (16)3.8 乒乓游戏机总电路的设计 (16)4 乒乓游戏机的软件设计及编程 (18)4.1 主程序的设计及功能实现 (19)4.2 按键组的设计及功能实现 (19)4.2.1 球拍模拟子程序 (20)4.2.2 暂停/开始子程序 (20)4.3 发球程序的设计及功能实现 (20)4.4 线路程序的设计及功能实现 (21)4.4.1 线路选择子程序 (21)4.4.2 LED点阵子程序 (21)4.5 回球程序的设计及功能实现 (22)4.6 LCD显示程序设计及功能实现 (23)4.7 设计源程序 (23)5 系统调试及分析 (24)5.1 仿真调试及分析 (24)5.1.1 Proteus软件简介 (24)5.1.2 Keil uVision4软件简介 (25)5.1.3 仿真调试 (25)5.1.4 仿真调试的结果分析 (27)5.2 实物调试及分析 (27)5.2.1 制作实物的过程 (27)5.2.2 进行实物调试 (27)5.2.3 实物调试的结果分析 (30)6 结论与展望 (31)谢辞(Acknowledge) (32)参考文献 (33)附录1:程序 (34)附录2:元件清单 (49)乒乓游戏机设计1 绪论1.1 本设计的研究背景和研究目的乒乓球,中华人民共和国国球,是一种世界流行的球类体育项目。

基于Proteus的数电课程设计乒乓球游戏机

基于Proteus的数电课程设计乒乓球游戏机

课程设计说明书设计题目:乒乓球比赛游戏机专业:电子信息科学与技术姓名:学号:2指导教师:2010年1月15日1.用两个74LS194四位双向移位寄存器模拟乒乓球台,其中第一个74LS194的DL输出端接第二个的右移串行输入端,这样当乒乓球往右准备移出第一个寄存器的时候就会在时钟脉冲的作用下被移入第二个寄存器。

同样道理,第二个74LS194的AR输出端接第一个的左移串行输入端。

2.用D触发器及逻辑门电路构成驱动控制电路3.用计数器、逻辑门电路和集成的4管脚的数码管组成计分电路第三章设计步骤及方法一、单元电路的设计1.球台电路如下图2设计所示:图2.球台电路图3.控制电路图中74LS74为上升沿触发的D触发器,s’为置1端(低有效),R’为置0端(低有效)。

当J1=0时,两片D触发器输出端均为1即S1=S0=1,通过接入74LS194,此时实现的是并行输入功能。

当J1=1时,L1=J2=1,J3=L8=0,通过各门电路可知U2A,U4A,U2B输出端分别为0,1,1,则D触发器输出端分别为0,1即S1=0,S0=1。

相反情况时,当J1=1时,L1=J2=0,J3=L8=1,D触发器输出端分别为1,0即S1=1,S0=0。

通过此电路来控制并且实现球台灯的左右移位即实现乒乓球的运动。

3.计分电路的设计如下图4所示:图4.计分电路如上图所示,计分电路由一个7404非门,7409与门和十进制的74LS161计数器构成。

得分真值表如下L1 J2(A) L8 J3 Y(A) Y(B)由上表可得上图中非门和与门的接法。

同步十进制计数器74LS160的功能表如下:CPR DLD EP ET 工作状态 ×× ×0 1 1 1 1× 0 1 1 1× × × × 0 1 × 0 1 1置零 预置数 保持 保持(但C=0)计数由74LS160的功能表可知,当~RD=~LD=EP=ET=1时工作状态为计数,即图4中的~CLR=~LOAD=ENT= ENP=1时。

51单片机原理及应用基于KeilC与Proteus教学设计 (2)

51单片机原理及应用基于KeilC与Proteus教学设计 (2)

51单片机原理及应用基于KeilC与Proteus教学设计摘要本文主要介绍了基于KeilC与Proteus平台的51单片机原理及应用的教学设计,旨在帮助初学者更好的了解单片机编程的基本原理,以及如何使用KeilC和Proteus平台进行单片机的开发和调试。

本文包括了单片机的基本原理、汇编语言的基础知识、C语言编程基础、KeilC和Proteus平台的基本使用方法,以及基于这些知识实现的一些实例设计,可以帮助读者在实践中更好的理解单片机编程的基本原理。

1. 51单片机的基本原理51单片机是一种基于CISC架构的8位单片机,由Intel公司于1980年推出,具有高速、低功耗、易于编程等优点,被广泛应用于嵌入式系统中。

51单片机由CPU、存储器、IO口和时钟电路等组成,其中CPU采用Harvard结构,能够同时访问程序存储器和数据存储器,具有较好的执行效率。

2. 汇编语言的基础知识汇编语言是学习单片机编程最基本的知识之一,其主要作用是将人类能够理解的代码翻译成机器可以执行的指令。

汇编语言的学习包括了数据类型、指令集、寻址方式等内容,通过学习这些内容,能够更好的理解单片机编程的基本原理。

3. C语言编程基础C语言是一种高级编程语言,与汇编语言相比具有易学易用等优点。

在单片机编程中,C语言可以更好的实现程序设计的模块化,增强代码的可读性和可维护性。

C语言编程基础知识包括数据类型、语句控制结构、数组、指针等,通过学习这些内容,能够更好的进行单片机编程。

4. KeilC和Proteus平台的基本使用方法KeilC和Proteus是进行单片机编程、仿真和调试的常用工具,能够有效地辅助开发者进行单片机开发。

KeilC是一款集成开发环境,支持多种语言的编程,可用于单片机程序的开发和调试;Proteus是一款电子电路仿真软件,能够进行单片机程序的仿真和调试。

通过学习KeilC和Proteus平台的基本使用方法,能够更好的进行单片机编程。

基于FPGA“乒乓球比赛游戏机”的设计

基于FPGA“乒乓球比赛游戏机”的设计

《电子设计自动化(EDA)技术》课程设计报告题目: 乒乓球比赛游戏机姓名:院系:应用技术学院专业:电子信息工程学号:指导教师:完成时间:2012年06月25日目录1 课程设计题目、内容与要求………………………………1.1 设计内容………………………………………………1.2 具体要求………………………………………………2 系统设计……………………………………………………2.1 设计思路………………………………………………2.2 系统原理(包含:框图等阐述)与设计说明等内容3 系统实现……………………………………………………注:此部分阐述具体实现,包含主要逻辑单元、模块、源代码等内容4 系统仿真……………………………………………………5 硬件验证(操作)说明……………………………………6 总结………………………………………………………7 参考书目…………………………………………………设计时间:16周、17周组员:1课程设计题目、内容与要求1.1课程设计的题目乒乓球比赛游戏机1.2课程设计目的随着科学技术日益迅速的发展,数字系统已经深入到生活的各个方面。

它具有技术效果好,经济效益高,技术先进,造价较低,可靠性高,维修方便等许多优点。

使我们更加熟练掌握数字系统的设计。

对所学的专业知识有能力更好的应用在实践方面。

1.3课程设计要求(1)使用乒乓球游戏机的双方在不同位置发球或击球。

(2)乒乓球的位置和移动方向由灯亮和依次亮的方向决定。

使用者根据球的位置发出相应的动作(3)比赛用21分为一局来进行,双方设置各自的记分牌,任意一方先记满21分就获胜此局。

当记分牌清零后,开始新的一局比赛。

1.4课程设计内容设计一个由甲乙双方参赛,有裁判的三人乒乓球游戏机。

用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依次从左到右,或从右到左,其移动的速度应能调节。

基于PROTEUS的乒乓游戏机电路的设计与仿真

基于PROTEUS的乒乓游戏机电路的设计与仿真

1 i I l r J P( 。 i I l i l . k ‘ - 、t ・ i r c u i t . d i s p l { 1 、《 i I - ( - u i t d e s i g n‘ i l ・ ( ・ u i t . S o f t w a r e d e s i g i 1 i s u s i n g Ke i I L I  ̄i s i O I / 4 s o f | w a l ’ P c h … V t l o p me n t a i l d h a l ’ t t w a r e n l o d u l e s
j j P I / ( ) T E t S 的 乓 游 戏 机 【 路 n 勺 设计 l _ j 仿
越 巧 妮
基于 P R OT E U S的乒 乓 游 戏 机 电路 的设 计 与仿 真
赵巧 妮 ‘ ' ! ( 1 . 南 交 通 _ 1 人 、 : I J L I J I I 成都 , 6 3 5 0 0 0)
( 2 . 『 i { J = J 』 打铁 道  ̄ J , I k 技 术 : 院 湖『 “株 洲 . 4 1 2 0 0 1 )

要: 结合 1 ) R O T E U S单 片机 仿 真 软 件 与 k P | j 软 件设 计 了一款 乒乓 游 戏机 电路 , 包括 硬 件 设 计 和 软 件 设 计 两 大部 分
r 一


0 引 言
乒} 己 球 址 I l 的 …球 , 深 受 … 人喜 爱 传 统 I 1 0 乒 乓球 订 场地 、 人 、 境 等【 大 l 素 的 制 , 小能 随 时 随地 的打 球 。 为 了 晰决 I 述 题 . I i x 子 产 F I . L 述 发糕的时 代 . 拟 没 汁一 款 益钾 炎乒 游戏 饥 , 将

基于proteus的51单片机仿真实例四、第一个proteus仿真实例

基于proteus的51单片机仿真实例四、第一个proteus仿真实例

基于proteus的51单片机仿真实例四、第一个proteus仿真实例现在来做第一个基于proteus的仿真实例,同时也了解、熟练一下proteus的使用方法1、打开proteus的智能原理图输入系统ISIS,进入工作环境,2、这个实例中,我们建立如下的电路图。

下面就开始一步一步的实现这个目标吧。

3、单击菜单栏“文件”--“新建设计”选项,弹出模板选择窗口,如下图所示,选择默认模板“DEFAULT”,选择“OK”按钮,即可创建一个新的设计文件。

4、文件创建成功后,要养成立即保存的习惯。

点击“保存”选项,选择保存的路径和文件名。

5、元件的选取。

操作步骤如下图6、点击“P”按钮后,弹出元器件选择对话框。

元器件的选取有两种方法:输入关键字查找、在分类元件中查找。

如下图所示7、添加单片机,在关键字文本框中输入“at89c51”,然后从搜索结果中选择所需要的型号,如下图所示。

选中元件后双击该元件名,该元件就被自动添加到对象选择器。

8、添加电阻。

输入关键字“resistors 470r”,搜索结果栏中将显示所有的匹配元件。

在这里我们选择参数为470R,0.6W的电阻,双击元件名将其添加到对象选择器中。

用同样的方法添加10K电阻(0.6W)到对象选择器中。

9、添加发光二极管。

输入关键字“led-yellow”,在搜索结果栏中选择所需的发光二极管,双击将其放入对象选择器。

10、添加晶振。

输入关键字“cycrtal”,结果搜索栏内只有一种晶振类型,双击将其加入对象选择器。

11、添加电容。

添加33P电容:输入关键字“capacitors”,在搜索结果栏内列出了各种类型的电容,接着输入“33pF”。

则列出各种33pF的电容,选择耐压为50V的电容,双击将其加入对象选择器。

添加10U电容,输入关键字“capactions 10u”,选择“50V radial electrolytic”(圆柱形电解电容),双击将其添加到对象选择器。

模拟乒乓球游戏机控制电路课程设计

模拟乒乓球游戏机控制电路课程设计

目录一、基本设计要求二、STC89C52芯片介绍三、程序流程图四、“乒乓球”比赛系统数码管部分五、“乒乓球”比赛系统模拟“兵乓球”部分六、“乒乓球”比赛系统控制开关部分七、程序设计八、参考文献一、基本设计要求:1、设计一个由甲、乙双方参赛。

2、用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其启动的方向可以由任意一方开始。

3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。

若击中,则球向相反方向移动;若未击中,则对方得1分。

由失分的一方开球。

4.设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局,一局到的时候蜂鸣器响起,并显示局数之比。

5、随时可以复位比赛,比赛的比分和状态可以复位。

摘要:为了实现模拟乒乓球比赛的过程和规则,我们采用了STC89C52单片机来控制模拟,采用用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,用蜂鸣器来实现响铃,比赛双方用按钮开关来模拟启动球拍击球,用数码管来显示比赛分数,和局数之比。

关键词:AT89C51 LED 蜂鸣器。

二、芯片介绍2.1、89C52芯片介绍STC89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。

STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

基于单片机的乒乓球游戏系统的设计

基于单片机的乒乓球游戏系统的设计

基于单片机的乒乓球游戏系统的设计1.引言1.1设计背景众所周知,在日常娱乐生活中,智能化的娱乐产品非常流行。

单片机具有功能强、可靠性高、使用方便、体积小及重量轻等优点。

国外已广泛应用于自动化控制的各个领域。

近年来,国内的单片机技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用单片机控制系统且性价比高。

本次课程设计我们从实用的角度以AT89C51单片机为核心设计了一种智能“乒乓球”游戏机。

乒乓球是中国的国球,在中国拥有众多的喜爱者。

此次设计不仅融入了现实比赛的娱乐性,更结合了传统的电子产品的小巧和便携性。

本系统由AT89C51单片机,LCD显示屏,按键等组成系统。

以51系列单片机为中心控制器件,用液晶显示器来模拟乒乓球的运动,实现2人游戏,乒乓球的运动速度分级可调,能显示游戏比分,有击、接球的声音效果等,还可以扩展开、关机音乐,语音对话功能等。

1.2功能说明本次设计的乒乓球游戏机是以AT89C51单片机为核心的,选用12864-12型LCD显示屏,通过LCD显示点阵依来模拟乒乓球的运动。

设计中选用了左右各3个游戏按键来模拟球拍和方向选择判断,其中两个键模拟左右2个球拍,按下代表球拍击球。

“左拍”按下可使LCD点阵从左向右依次点亮,如图乒乓球从左向右飞来;反之,“右拍”按下则可使LCD点阵从右向左依次点亮,代表球从右向在运动。

而第三个键则作为方向选择键,可增加游戏的趣味性。

本游戏供一到两人玩,以一方按键(发球)开始,这时乒乓球就向对方运动,接球方应在乒乓球到达终点之前击球。

如果击球时机合适,则把球击回,算得分;否则就算失误,由对方重新发球。

游戏过程中,LCD显示屏上还要显示双方比分。

对游戏实现方法做如下说明:(1)乒乓球移动速度是可调的,通过拨盘开关可实现改变乒乓球移动速度;(2)接球方的接球动作应在球到达本方最后一位LCD点阵之前发出,若接球成功则球向相反方向运动,接球方得分,乒乓球移动到最后一位后停止运动,此后接球方变为发球方,游戏继续;(3)如果接球方提前或迟后击球,则接球方失误,双方都不得分,乒乓球停止运动,LCD显示屏上显示得分,原发球方重新发球,游戏继续。

乒乓球游戏机C程序

乒乓球游戏机C程序

乒乓球游戏机C程序基于51单片机的乒乓球游戏机设计前一段时间田老师给我们班一些选题,让我们每个人都选一个,我选的是基于51单片机乒乓游戏设计。

我设计乒乓球游戏已有一段时间,在一个星期之前,我就已经设计好了一个能正常游戏的功能,但是我认为有些方面还是没设计好,所以就没发上来。

今天想想还是发上来吧,不好的地方以后再该。

乒乓球游戏机的设计主要偏重于软件部分,我主要也是在程序上下工夫。

我设计的乒乓球游戏机足要是在精简mini51版的平台上实现的。

乒乓球游戏的设计主要功能如下:1、能够对乒乓球的游戏轨迹移动速度进行调节。

2、能过通过数码管显示等级难度和比赛分数。

3、比赛中若是没及时按下按键会有有报警声发出。

给出几张图如下:(注:这里有根跳线是因为乒乓球led轨迹用的是P1口,蜂鸣器是P1.7,我为了使两者减少干扰故用跳线将蜂鸣器接到P2.0口上。

还有就是led中的一个led总亮着是因为数码管的扫描用到这一引脚故这一引脚常亮。

) 图一:按键说明图二:难度等级8,开始时0:0图三:难度等级8,比赛结果2:1图四:难度等级10,比赛结果6:6,当然比赛是不会出现这种结果喽,因为比赛还没结束。

程序源代码如下:#include<reg51.h>#define TIME_PER_SEC 640 //定义数码管扫描频率,8*40Hz #define CLOCK 22118400 //定义时钟晶振,单位Hz//按键和595的引脚定义sbit SH_CP = P2^4;sbit ST_CP = P1^5; sbit DS = P2^5;sbit CP_key= P3^2;sbit C_key= P3^3;sbit A_key= P3^4;sbit B_key= P3^5;//流水灯表unsigned char disp[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//数码管字表unsigned char codeled_bit[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//{0x7f,0xbf,0x df,0xef,0xf7,0xfb,0xfd,0xfe};unsigned char codeled_seg[17]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11, 0xc1,0x63,0x85,0x61,0x71,0xff};//0xfd//全局变量unsigned char Ascore,Bscore,mov,level,L;unsigned char count0,count1,count2;unsigned char buffer[8];//key按键标志bit flag;bit flag1;//蜂鸣器定义sbit Buzzer=P2^0 ;/*--------------- 初始化 --------------*/ void initial595(){SH_CP = 0;ST_CP = 0;DS = 0;}/*--------------- 发送数据 ---------------*/ void send_data(unsigned char d){unsigned char i;for(i=0;i<8;i++){DS = d&0x01; //发送最低位SH_CP = 1;SH_CP = 0; //移位寄存器移位d = d>>1; //数据移位}}//延时程序void delay(unsigned int t){while(--t);}//定时器0初始化void timer_init(void) {TMOD = 0x11; //定时器0工作在模式1,16Bit定时器模式TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256;TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256;TR0 =1;ET0 =1;//开启定时器和中断TH1 = (65536-5000) / 256;TL1 = (65536-5000) % 256;TR1 =1;ET1 =1;}void main(){ unsigned char j=0;initial595();timer_init();count0=0;count1=0;count2=0;mov=0;Ascore=0;Bscore=0;flag=0;flag1=0;L=1;level=20;EA=1;while(1){if(CP_key==0) //设置等级{ delay(200);if(CP_key==0){level=level-2;while(CP_key==0);//等级if(level==18)L=2;if(level==16)L=3;if(level==14)L=4;if(level==12)L=5;if(level==10)L=6;if(level==8)L=7;if(level==6)L=8;if(level==4)L=9;if(level==2)L=10;if(level==0||level==20){level=20;L=1;}}}if(C_key==0) //判断比赛是否开始{delay(200);if(C_key==0){flag=~flag; //使下面的中断的Bscore的多的一分减去Bscore=-1;while(C_key==0);}}if(flag1==1){ flag1=0;if(flag==1){count0++;if(count0==level){count0=0;if(count1++ > 13) count1 = 1; if(count1==1){if(A_key){delay(200);if(A_key){P1=disp[0];Bscore++;for(j=0;j<100;j++){Buzzer = 0x0;delay(50);Buzzer = 0x1;delay(50);}}while(A_key);}}if(count1==8){if(B_key){delay(200);if(B_key){P1=disp[7]; Ascore++;for(j=0;j<100;j++) {Buzzer = 0x0; delay(50);Buzzer = 0x1; delay(50);}}while(B_key);}}P1=disp[mov];if(count1<8)mov++; else mov--;}}}}}void timer0_int(void) interrupt 1 {static unsigned char i=0;TR0=0;TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256; TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256; TR0=1;send_data(led_seg[buffer[i]]);send_data(led_bit[i]);ST_CP=1;ST_CP=0;i = ++i&0x07;buffer[7] = L;buffer[6] = 16;buffer[5] = 16;buffer[4] = Ascore/10;buffer[3] = Ascore%10;buffer[2] = 16;buffer[1] = Bscore/10;buffer[0] = Bscore%10; }void timer1_int(void) interrupt 3 { unsigned char j=0;TR1=0;TH1 = (65536-50000) / 256;TL1 = (65536-50000) % 256; TR1=1;flag1=1;}。

基于单片机的乒乓球游戏系统设计

基于单片机的乒乓球游戏系统设计

基于单片机的乒乓球游戏系统的设计姓名:学号:专业班级:院(系):设计时间:设计地点:目录一、题目要求…………………………………………………………………………二、方案设计…………………………………………………………………………三、硬件原理…………………………………………………………………………四、软件设计…………………………………………………………………………五、结论与体会………………………………………………………………………附:硬件原理图基于单片机的乒乓球游戏系统的设计一、题目要求以STC12C5410AD单片机为核心设计一款“乒乓球游戏机”。

用8支连续排列的发光二极管,通过发光二极管的依次点亮代表乒乓球的运动。

再用2个按键模拟左右2个球拍,键按下代表球拍击球。

“左拍”按下可使发光二极管从左向右依次点亮,模拟乒乓球从左向右飞来;反之,“右拍”按下则可使发光二极管从右向左依次点亮,代表球从右向左运动。

本游戏供两人玩,以一方按键(发球)开始,这时乒乓球就向对方运动,接球方应在乒乓球到达终点之前击球。

如果击球时机合适,则把球击回,否则就算失误,由对方重新发球。

在游戏过程中用LED数码管显示双方比分。

二、方案设计(1) 本游戏开始时球在左方甲手中,数码管显示双方最初比分00。

(2)当甲方按下按键T1时,球开始往右边移动,此时8位LED灯从左至右逐次点亮。

左右的速度移动一位。

(3)若接球方乙提前或迟后按下按键T2击球,则判已失误,由甲得分,乒乓球停止运动(发光二极管熄灭),数码管显示得分。

球重新回到甲手中,由甲方再次发球,游戏进入下一回合。

(4)若接球方乙击球时机合适,即在LED灯到达最右端之前按下按键T2,则把球击回,LED灯即刻以0.5S每位左右的速度从右向左依次移动,等待甲方接球。

若甲方接球失误,则判乙方得分,乒乓球停止运动(LED灯灭),数码管显示得分。

球回到乙方手中,由乙方发球,游戏继续,开始进入下一回合。

基于单片机的乒乓游戏

基于单片机的乒乓游戏

基于单⽚机的乒乓游戏“乒乓球游戏”程序设计说明1程序设计思路STC板⼦上,最基础的功能就是数码管显⽰,LED灯显⽰和按键控制了,所以这⾥我们将这三个基础功能集合在⼀起,利⽤它们设计⼀个游戏出来,就是乒乓球游戏。

乒乓球游戏电路连接⽰意图本实验的设计包括两个关键点:其⼀,如何让LED灯和数码管同时显⽰内容。

其⼆,如何当前状态的不同和按键的不同来判断是什么情况的发⽣。

本程序使⽤了⼀个定时器: T0。

T0:设置为0.1ms中断⼀次,⽤来显⽰数码管和LED上的内容,程序中有个i变量是⼀个状态变量,分别对应着四种状态:为0时是开球⽅是选⼿1(左边)的状态,为1时是开球⽅是选⼿2(右边)的状态,为2时是等待开球的状态,为3时是⽐赛结束的状态。

还有⼀些⽤于分频的变量,因为定时器0的中断频率是⼀定的,分频长度的不同,可以得到不同速度的内容的显⽰。

根据i值的不同,会有相应的内容显⽰。

2 程序相关使⽤到的寄存器说明(⽂档后有说明,也可查数据⼿册)2.1 定时器0相关寄存器设置TMOD=0x01;//定时器0,⽅式1EA=1;//打开总的中断ET0=1;//开启定时器0中断TH0=(65535-100)/256;//定时器初值0.1毫秒TL0=(65535-100)%256;TR0=1;//启动定时器3程序设计框架及关键实现说明3.1 宏定义#define Check_Time 3000 //按键消抖的周期#define Min_time 2000 //按键识别被为按下时检测到的最少次数3.2全局变量(1) uchar show_w1,show_w2,show_w3,show_w4,show_w5,show_w6,show_w7,show_w8;//,show_wi是数码管上数字显⽰(2) uchar flag,count,v,s;//flag⽤来分频所⽤和位选下标所⽤,count也⽤于分频,v:s是局⽐分(3) uchar duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00}; //段选,显⽰0-f(4) uchar weixuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//位选(5) uint i;//状态参数,0表⽰左边开球,1表⽰右边开球,2表⽰等待开球,3表⽰⽐赛结束(6) uint P1score,P2score; //分别是左边和右边的分数(7) uint shfitcounter; //分频所⽤的变量(8) uchar G_value; //LED显⽰3.3函数:(1)void Init(); //初始化函数(2)void Delay_1ms(uint t); //延时函数(3)void timer0() interrupt 1; //定时器0中断函数(4)void main(); //主函数●消抖检测:每500us检测⼀次,75次为⼀个周期,若检测到按下的次数超过周期的2/3则认为按键按下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的乒乓游戏机设计附Proteus仿真基于51单片机的乒乓游戏机设计附Proteus仿真目录1 绪论 (1)1.1 本设计的研究背景和研究目的 (1)1.2 国内外研究现状 (1)1.3 本设计的任务和设计方法 (2)1.3.1 设计任务 (2)1.3.2 设计方法 (2)2 乒乓游戏机设计方案 (3)2.1 基于单片机的乒乓游戏机设计 (3)2.1.1 硬件设计 (3)2.1.2 软件设计 (4)2.2 基于FPGA的乒乓游戏机设计 (4)2.3 方案比较与选择 (5)3硬件电路的设计 (6)3.1 硬件核心电路选择 (6)3.1.1 单片机STC89C51简介 (6)3.1.2 单片机端口分配 (6)3.2 电源电路的设计 (8)3.3 时钟电路的设计 (9)3.4 复位电路的设计 (9)3.5 按键电路的设计 (10)3.6 模拟球台电路的设计 (11)3.6.1 译码器简介 (11)3.6.2发光二极管简介 (13)3.6.3 模拟球拍电路的设计 (14)3.7 显示电路的设计 (14)3.7.1 LCD1602简介 (15)3.7.2 显示电路的设计 (16)I3.8 乒乓游戏机总电路的设计 (16)4 乒乓游戏机的软件设计及编程 (18)4.1 主程序的设计及功能实现 (19)4.2 按键组的设计及功能实现 (19)4.2.1 球拍模拟子程序 (20)4.2.2 暂停/开始子程序 (20)4.3 发球程序的设计及功能实现 (20)4.4 线路程序的设计及功能实现 (21)4.4.1 线路选择子程序 (21)4.4.2 LED点阵子程序 (21)4.5 回球程序的设计及功能实现 (22)4.6 LCD显示程序设计及功能实现 (23)4.7 设计源程序 (23)5 系统调试及分析 (24)5.1 仿真调试及分析 (24)5.1.1 Proteus软件简介 (24)5.1.2 Keil uVision4软件简介 (25)5.1.3 仿真调试 (25)5.1.4 仿真调试的结果分析 (27)5.2 实物调试及分析 (27)5.2.1 制作实物的过程 (27)5.2.2 进行实物调试 (27)5.2.3 实物调试的结果分析 (30)6 结论与展望 (31)谢辞(Acknowledge) (32)参考文献 (33)附录1:程序 (34)附录2:元件清单 (49)II基于51单片机的乒乓游戏机设计附Proteus仿真III乒乓游戏机设计1 绪论1.1 本设计的研究背景和研究目的乒乓球,中华人民共和国国球,是一种世界流行的球类体育项目。

它的英语官方名称是“table tennis”,即“网上桌球”。

乒乓球的名字起源于1990年。

乒乓球的比赛赛制是以11分为一局,采用五局三胜(团体)或七局四胜制(单项)。

比赛分团体、单项(男单、女单、男双、女双、混双)。

在中国,到处可见打乒乓球的人,以学生居多。

因为,随着人们现代化节奏的加快,工作压力的增大,传统打乒乓球的方式受到运动设施、场地、环境的因素的影响,让人们对乒乓球运动减少了很多兴趣。

随着科学技术的发展,人类进入信息化社会,信息社会的发展离不开电子产品的进步。

现代电子产品发展的越来越快,于是人们将乒乓球与电子产品结合在一起,形成了乒乓游戏机。

通过使用按键模拟球拍,发光二极管模拟乒乓球,进行乒乓球游戏的操作。

乒乓游戏机的出现解决了人类的很大难题。

因为该产品不受运动设施、空间、场地、环境等因素的影响,在家即可进行操作。

操作的同时,让操作者仿佛在真正的打乒乓球。

而且该设计属于一种益智类设计,让人既可以锻炼身体,也可以锻炼智力。

1.2 国内外研究现状第二次世界大战以后,电子计算机技术得到了突飞猛进的发展。

电子计算机一代一代的更新的同时,软件设计也迅速发展。

于是,1971年,世界上第一台电子游戏机出现了。

随着电子技术的迅猛发展,电子游戏机进入了次世代,主要有三大游戏机厂商。

分别为:SONY、微软和任天堂。

如今,大部分益智类游戏机属于电子游戏机,乒乓游戏机就属于电子游戏机。

随着电子技术的突破,电子游戏机开始朝着“便携式”和“家庭化”方向发展,彩色电视的普及使大型游戏机的显像管和扫描版部分完全可以被彩色电视取代,使得微处理机部分与现实屏幕实现了分离。

现在制成的游戏机只相当于一个信号发生器。

如今乒乓游戏机已出现3D类,体感类等等类型。

乒乓游戏机不仅可以实现人们对乒乓球的热爱,又可以让人们在玩耍的同时进行身体锻炼和智力提高,具有明朗的前景。

1西南石油大学本科毕业设计(论文)1.3 本设计的任务和设计方法1.3.1 设计任务如今各种不同类型的游戏设备一直是消费领域的热点,本设计要求用低廉的成本设计出符合要求的游戏设备,要求操作方便,系统稳定度高。

设计任务为:(1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球。

(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.1~1s移动一位。

游戏者根据球的位置发出相应的动作,提前击球或出界均判失分。

(3)比赛用11分为一局来进行,甲乙双方都应设置各自的记分牌,任何一方先记满11分,该方就算胜了此局。

当记分牌清零后,又可开始新的一局比赛。

1.3.2 设计方法本设计是基于单片机的乒乓游戏机设计,分别进行了硬件和软件两部分的设计。

硬件设计包括单片机电路、译码电路、发光二极管电路、按键电路、显示电路等电路的设计。

软件设计是使用Keil uVision4软件编写与硬件模块相应的源程序。

利用Proteus软件对电路进行仿真,最后通过制作实物实现设计。

2乒乓游戏机设计32 乒乓游戏机设计方案目前,有两种方案来设计乒乓游戏机设计。

方案一是基于单片机的乒乓游戏机设计。

方案二是基于FPGA 的乒乓游戏机设计。

2.1 基于单片机的乒乓游戏机设计方案一是基于单片机的乒乓游戏机设计,结果用LCD1602显示屏显示。

软件方面,使用Keil uVision4进行编程。

硬件设计包含单片机电路、模拟球台电路、按键电路、显示电路等电路的设计。

软件设计包括:主程序、按键组程序(球拍模拟和暂停/开始子程序)、发球程序、线路程序(包括线路选择和LED 点阵子程序)、回球程序、LCD 显示程序。

基于单片机的乒乓游戏机系统框图如图2.1所示。

图2.1 基于单片机的乒乓游戏机的系统框图 2.1.1 硬件设计电源电路设计:单片机正常工作电压为+5V ,设计采用三端稳压集成电路输出+5V 电压。

时钟电路设计:单片机可以看成是在时钟驱动下的时序逻辑电路,即单片机必须在时钟的驱动下才能工作。

因此,单片机需要时钟电路支持,否则不能执行程序。

复位电路设计:单片机的复位电路使系统的所有功能部件都处于一个确定的初始状态,防止单片机执行错误操作、发出错误的指令等失误。

单片机的复位方式有:手动按钮复位和上电复位。

本设计采用手动按钮复位方式进行复位。

按键电路设计:包含两个按键组,一个是模拟球拍按键电路,一个是暂停/开始单 片 机 模块模拟球台电路 按键电路电源电路LCD 显示屏时钟电路 复位电路西南石油大学本科毕业设计(论文)和复位按键电路。

模拟球拍按键分为左右两边,左右各四个。

这四个按键其中三个是对LED点阵线路的操作,一个是进行加速;暂停/开始和复位按键是在运行任一程序时,对游戏机进行暂停或开始或复位。

模拟球台设计:包括译码电路设计和发光二极管设计。

译码电路设计:本设计中采用16个发光二极管,而单片机的端口较少,因此采用3-8译码器节约端口。

发光二极管设计:由单片机控制74LS138译码器,74LS138译码器译码控制LED点阵得点亮顺序和相应点亮时间。

显示电路设计:设计中采用LCD显示屏显示结果,左右两边分别用A、B表示。

2.1.2 软件设计主程序:对乒乓游戏机进行初始化,定时器设置,对LED点阵输入数据等,延时扫描按键。

按键程序:在回球和发球时,按键按下给单片机传入数据作出相应处理。

包括暂停/开始子程序,对系统进行暂停和开始。

发球程序:绿色指示灯亮起时,B得到发球球权,否则A得到发球球权。

线路程序:游戏发球有8个线路选择,AB分别4个线路选择,共有16个回球线路,存在数组b[16]中,包括LED点阵子程序,由单片机线路和delay_1(t)控制74LS138译码器,74LS138译码器译码控制LED点阵得点亮顺序和相应点亮时间。

回球程序:当球在A边时,A可在相应delay_1(t)中感应A按键组的数据并作出相应处理;当球在B边时,同理。

显示程序:显示游戏比分,当A或B到达11分时进入相应win子程序。

2.2 基于FPGA的乒乓游戏机设计方案二是基于FPGA的乒乓游戏机设计。

因为学校具备专门的实验箱,如果采用方案二只需编程便可实现。

通过对各部分编写VHDL程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程下载,并通过程序验证结果。

用16个发光二极管代表乒乓球,在游戏机的两侧各设置两个开关,一个是发球开关,一个是击球开关。

甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。

当球过网后,按设计者规定的球位乙方就可以击球。

若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到11分,该局结束,记分牌清零,可以开始新的一局比赛。

其系统框图如2.2所示。

4乒乓游戏机设计图2.2 基于FPGA乒乓游戏机的系统框图2.3 方案比较与选择FPGA的运行速度很快,适合高速场合,而单片机的运行速度低的多;FPGA的I/O 口多,容易实现大规模系统,方便连接外设,而单片机的I/O口较少,适合小规模系统;FPGA的内部程序是并行运行,具有处理复杂功能的能力,而单片机程序时串行执行,程序需要执行完一条才能执行下一条,处理突发事件时只能调用中断资源;FPGA 包含单片机和DSP软核,即单片机和DSP能实现的功能,FPGA一般都能实现。

单片机设计属于软件范畴,它的硬件即单片机芯片是固定的,通过软件编程语言描述在硬件芯片上的执行的软件指令。

FPGA设计属于硬件范畴,它的硬件即FPGA是可编程的,是一个通过硬件描述语言在FPGA芯片上自定义集成电路的过程。

由上可知,FPGA具有很多优点,但是对本设计而言是大材小用,而且芯片造价较高,因此选用单片机完成本设计。

在国内,有很多成熟且性价比高的单片机,以51单片机为主。

本设计对芯片的要求不高,因此选用性价比高的单片机STC89C51。

STC89C51是ISP的系统可编程芯片,可以直接将程序烧录到芯片中,方便程序的修改和实物调试。

其工作电压要求低,工作频率可达48MHz。

并且可通过串口直接下载程序,数秒即可完成下载。

相关文档
最新文档