CUPT乒乓球实验报告复习.ppt
- 格式:ppt
- 大小:1.75 MB
- 文档页数:16
2017CUPT实验总结报I题目真空火箭炮姓名学号指导教师实验地点实验时间17.04.01-2017.06.25一、问题综述Vacuum bazookaA ‘vacuum bazooka’ can be built with a simple plasticpipe, a light projectile, and a vacuum cleaner. Build sucha device and maximise the muzzle velocity.用一个塑料管,一个物体和一个真空吸尘器来制作一个真空火箭炮,并且最大化出口速度。
关键词:塑料管、真空吸尘器、最大化、出口速度二、实验原理及初步试验该实验实质上是利用了大气压强差来对管内物体加速,当管内气体被抽出后,管内气压小于外界气压,密封端被打开后物体便会在压强差的作用下加速前进。
如图一所示:试验中的测速我们采用物体长度除以经过光电门时间的方法来进行速度的计算。
光电门由32单片机制作,精度为微秒级别。
二、理论分析模型一:认为物体与管道完美契合,不考虑能量损耗。
假设在水平放置的装置中抛射物质量为m,横截面积为A,空气密度为。
抛射物初始位置为X=0.且靠近小球一段的封口处内外压强差一直为,运动时抛射物和其后方的空气柱一起加速。
由动量定理可得:对该方程进行求解可得出口速度表达式:由理想表达式可以看出物体质量、横截面积、管长、初始压强差均对出口速度均有影响。
可对这些因素的影响进行单一变量实验分析。
三、实验&数据分析实验一:物体质量与速度的关系该部分实验在其它条件不变的情况下,通过改变物体质量来探究物体质量与出口速度的关系。
cm 面积:1541 mm^2炮弹长:88.20mm 管长:183mm重量/g 20.9 33.35 49.95 66.55 83.15 103.9时间/ms 2.4 2.9 3.5 3.6 3.7 3.7时间/ms 2.4 3.0 3.5 3.7 3.7 3.7时间/ms 2.4 3.2 3.5 3.7 3.7 3.8平均 2.40 3.03 3.50 3.67 3.70 3.73速度m/s 36.75 28.92 25.2 24.03 23.83 23.65得出结论:相同情况下,物体质量越小,出口速度越大实验二:物体面积与速度的关系该部分实验是在其它情况不变的情况才,通过改变物体受力面积来探究物体面积与出口速度的关系。
实验报告1.设计任务要求,实现功能的描述。
两人乒乓游戏机是用8个发光二极管代表乒乓球台,,用发光二极管的移动来代表球的移动。
在游戏机的两侧各设一个开关,用来控制发球和击球。
两人按照比赛规则来按动开关。
当甲方按动开关,甲方的第一盏灯亮,然后发光二极管依次由甲向乙移动。
代表球的移动。
当球过网后到达乙方的倒数第二盏灯时,乙方可击球。
若乙方提前或是没有击中球,则甲方的记分牌自动加分。
然后重新发球,比赛继续进行。
一直进行到有一方的记分牌到达11分,该局结束。
胜方的局数加1。
重新开始一局。
2.设计思路和总体框图.首先,设置了一个可枚举类型的参量,用来控制整个过程。
其中包括未发球时的等待状态,灯顺序点亮的状态,因为灯亮的顺序有两个,一个是向甲方,一个是向乙方。
所以,相应的状态设了两个。
在此参量的控制下,整个程序实现其基本功能。
在各个状态时,实现灯的点亮和判断是否有键按下,再判断是否加分,是否加局数,是否清零。
状态转移图:3.分块电路设计(1)分频与防抖动设计了该程序中需要用到的所有时钟。
注意的是按键的扫描周期一定要高于灯亮的周期。
由于实验中有按键,加了防抖动的程序。
此程序是书中有的。
(2)状态的描述。
根据可枚举型的参变量作为敏感信号。
根据他的变化决定灯的走向和判断是否有键按下。
(3)状态的输出根据状态描述的状态决定灯的亮否,以及设计了一个标志信号f,用它来判断是否满足加分的条件。
因为数码管显示的是两位的数,用一个内嵌循环来计数。
(4)显示控制和译码输出利用片选信号决定选通哪一个数码管。
并且,给共阴极七段数码赋值显示数字。
4.总体电路图(图形法)5.仿真波形6.源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pingpang isport(clk,sa,sb:in std_logic;ball: buffer std_logic_vector(0 to 7);score:out std_logic_vector(0 to 6);con:buffer std_logic_vector(0 to 3));end pingpang;architecture tennis of pingpang issignal clk1 : std_logic;signal tmp1: integer range 0 to 100000;signal clk2 : std_logic;signal tmp2: integer range 0 to 24;signal flag: std_logic;type states is(s0,s1,s2,s3,s4,s5,s6);signal state:states;signal stop,s,ql:std_logic;signal scorea1,scorea2,scoreb1,scoreb2:std_logic_vector(0 to 3); signal dd:integer range 0 to 100;beginp1:process (clk)beginif(clk'event and clk='1')thenif(tmp1=100000) thentmp1<=0;clk1<=not clk1;elsetmp1<=tmp1+1;end if ;end if ;end process p1;p2:process (clk1)beginif(clk1'event and clk1='1')thenif(tmp2=24) thentmp2<=0;clk2<=not clk2;elsetmp2<=tmp2+1;end if ;end if ;end process p2;p3:process(clk2)variable ballvar:integer range 0 to 9; beginif(clk2'event and clk2='1')thenif(stop='1') thenif(flag='0') thenif (ballvar<8)thenballvar:=ballvar+1;else ballvar:=0;end if ;elseif(ballvar>1)thenballvar:=ballvar-1;else ballvar:=9;end if;end if;elseballvar:=0;end if;case ballvar iswhen 1=>ball<="10000000";when 2=>ball<="01000000";when 3=>ball<="00100000";when 4=>ball<="00010000";when 5=>ball<="00001000";when 6=>ball<="00000100";when 7=>ball<="00000010";when 8=>ball<="00000001";when others=>ball<="00000000";end case;end if;end process p3;p4:process(clk1)beginif(clk1'event and clk1='1')thencase state iswhen s0=>stop<='0';if(ql='1')thenscorea1<="0000";scorea2<="0000";scoreb1<="0000";scoreb2<="0000";ql<='0';elseif(dd=100)thendd<=0;if (sa='1' and sb='0')thenstate<=s1;elsif(sa='0' and sb='1') thenstate<=s4;else state<=s0;end if;else dd<=dd+1;end if;end if;when s1=>stop<='1';if (sa='1' and sb='0')thenstate<=s1;end if;flag<='0';if(sa='0' and sb='1' ) thenstate<=s3;elsif(ball="00001000")thenstate<=s2;else state<=s1;end if;when s2=>stop<='1';flag<='0';if (sa='1' and sb='0' and ball/="00001000")then state<=s6;elsif(sa='0' and sb='1') thenstate<=s4;elsif(ball="00000000") thenstate<=s3;else state<=s2;end if;when s3=>stop<='0';if(scorea2="0001" and scorea1="0001")thenql<='1';elseql<='0';if(scorea1="1001")thenscorea2<=scorea2+1;scorea1<="0000";elsescorea1<=scorea1+1;end if;end if;state<=s0;when s4=>stop<='1';if (sa='0' and sb='1')thenstate<=s4;end if;flag<='1';if(sa='1' and sb='0') thenstate<=s6;elsif(ball="00010000") thenstate<=s5;else state<=s4;end if;when s5=>stop<='1';flag<='1';if (sa='0' and sb='1' and ball/="00010000")then state<=s3;elsif(sa='1' and sb='0') thenstate<=s1;elsif(ball="00000000") thenstate<=s6;else state<=s5;end if;when s6=>stop<='1';if(scoreb2="0001" and scoreb1="0001")thenql<='1';elseql<='0';if(scoreb1="1001")thenscoreb2<=scoreb2+1;scoreb1<="0000";elsescoreb1<=scoreb1+1;end if;end if;state<=s0;end case;end if;end process p4;p5:process(clk1)variable count:integer range 0 to 3; beginif(clk1'event and clk1='1')thenif(count<3)thencount:=count+1;else count:=0;end if;case count iswhen 0=>con<="0111";when 1=>con<="1011";when 2=>con<="1101";when 3=>con<="1110";end case;end if;end process p5;p6:process(con)variable s:std_logic_vector(0 to 3); beginif(con="0111")thens:=scorea1;elsif(con="1011")thens:=scorea2;elsif(con="1101")thens:=scoreb1;elsif(con="1110")thens:=scoreb2;end if;case s iswhen "0000"=>score<="1111110";--0 when "0001"=>score<="0110000";--1when "0010"=>score<="1101101";--2when "0011"=>score<="1111001";--3when "0100"=>score<="0110011";--4when "0101"=>score<="1011011";--5when "0110"=>score<="1011111";--6when "0111"=>score<="1110000";--7when "1000"=>score<="1111111";--8when "1001"=>score<="1111011";--9when others=>score<="0000000";end case;end process p6;end tennis;7.故障及问题分析(1)延时设置不正确,导致数码管无法正常显示,后来发现是把数码管相关的两个延时概念搞混了,把数码管本身的显示延时和数字刷新延时搞反了,导致数码管无法正常显示.(2)一开始没设置防抖程序,结果发现在某些特定的时刻波动开关就会造成程序不正常运行.后来在必要位置加上防抖程序才使程序基本正常运行,看来防抖很必要啊.(3)在最后验收的时候老师竟然发现了一个逻辑错误,哎,至今没发现原因及解决方案……8.总结和结论该次实验,使我对一些语句的执行有了更深的体会。
东南大学《乒乓球比赛》微机课程设计实验报告姓名:王祎学号: 08008401 专业:自动化实验室:计算机硬件技术实验时间: 2010年10月26日报告时间: 2010年10月28日评定成绩:审阅教师:目录一、实验目的与内容 (2)二、总方案设计及原理 (3)(一)比赛规则 (3)(二)面板设计 (3)(三)方案流程图 (3)三、方案实现与测试 (5)(一)各模块硬件设计 (5)(二)整体硬件连线图 (6)(三)系统框图 (7)(四)主程序设计 (7)(1)主程序流程图 (7)(2)主要程序片段 (9)(五)子程序设计 (11)(1)延时子程序 (11)(2)屏幕显示子程序 (12)(3)数码管扫描比分子程序 (13)(4)移动速度选择子程序 (16)(5)规定等待时间选择子程序 (17)四、程序设计中遇到的问题及解决方法 (18)五、分析与总结 (18)附录 (19)一. 实验目的与内容1)基本要求用8个LED 发光管(红黄绿)的来回滚动显示来模拟打乒乓球时乒乓球在两边球台上的来回运动。
比赛双方用按钮/开关(双方各用1个按钮/开关)来模拟发球与接球,即发球方按动其控制的按钮/开关,球从发球方一侧向另一方运动(LED发光管从发球方到对方逐个点亮,滚动显示),当球运动至接球方时,接球方立即按动其控制的按钮/开关,“击球”使球“弹回”发球方一侧,如此周而复始,直至在规定的击球时间内有一方未能完成击球动作,从而对方得一分,然后继续比赛。
比赛规则可参照一般的乒乓球比赛规则。
要求:(1) 球以每0.5秒滚过1个LED的速度移动;(2) 回球需在球到达后的0.5秒内进行(按下按钮),否则按失球计;(3) 球未到达提前按下按钮按失球处理,不起回球作用;(4) 在PC机上显示比赛过程,同时用2个八段数码管显示比分(按10进制计数,初始值 0:0,可自行设计显示及规则,可简化为0-9,也可为0-99);(5) 要求精确计时。