VB和单片机串口通信实训报告
更新时间:2023-08-28 13:49:01 阅读量: 教育文库 文档下载
- 51单片机串口通信推荐度:
- 相关推荐
VB+单片机联合实训,制作弹球游戏
VB和单片机实训报告
实训项目:弹球游戏设计
班级:****
组长:*** 学号:* 组员:*** 学号:*
*** 学号:*
指导老师:***
年12月28日
2010
VB+单片机联合实训,制作弹球游戏
一、实训任务
设计一个一个弹球游戏,要求:能在电脑上和单片机上操作,单片机和电脑用串口连接。并且电脑上的操作和单片机上的操作不能有冲突,两种操作要同时可以运行,过程中不需要切换。
二、程序代码 1、VB程序代码
Dim x As Boolean Dim y As Boolean Dim k As Boolean Dim DengJ As Integer Dim G As Integer Dim N As Integer Dim M As Integer Dim time As Integer Dim key As Integer Dim Zhuank As Integer Dim score As Integer Dim p_status As Integer Dim i As Integer
Private Sub Command1_Click()
If Option1.Value = True Then Option2.Value = False And Option3.Value = False If Option2.Value = True Then Option1.Value = False And Option3.Value = False If Option3.Value = True Then Option1.Value = False And Option2.Value = False p_status = 1
Timer1.Interval = 100 Label2.Caption = 0 time = 0
Picture1.SetFocus '开始 Timer1.Enabled = True '小球移动 Timer2.Enabled = True '计时开始 p_life = 3 '显示生命数3条
VB+单片机联合实训,制作弹球游戏
gameover.Visible = False '隐藏游戏结束文本 Label6.Caption = 2 '生命值减一 k = True
Command3.Enabled = True DengJ = 0 End Sub '结束按钮
Private Sub Command2_Click() End End Sub
Private Sub Command3_Click()
If Command3.Caption = "暂停" Then p_status = 0
Timer1.Enabled = False
Timer2.Enabled = False '把定时器都关闭 Timer3.Enabled = False
Label8.Visible = True '游戏暂停文本 Command1.Enabled = False Command2.Enabled = False Command3.Caption = "继续" Else
p_status = 1
Picture1.SetFocus
Timer1.Enabled = True Timer2.Enabled = True Timer3.Enabled = True Label8.Visible = False
Command1.Enabled = True Command2.Enabled = True Command3.Caption = "暂停" End If End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
dangb.Left = 3120 '挡板位置初始化 Timer1.Interval = 100 Label8.Visible = False gameover.Visible = False Timer2.Enabled = False Label4.Caption = "" Label6.Caption = 3
Command1.Enabled = False
VB+单片机联合实训,制作弹球游戏
Command3.Enabled = False score = 0 time = 0 M = 0
shape1.Left = dangb.Left + dangb.Width / 2 - 200 '球位置初始化 shape1.Top = dangb.Top - shape1.Height p_status = 0 x = False y = False
For i = 0 To 30 '检查砖块 bk(i).Visible = True Next i
Timer4.Enabled = False Timer5.Enabled = False End Sub
Private Sub MSComm1_OnComm() ST = MSComm1.Input
If ST = "E" Then '游戏开始 If DengJ = 1 Then
Call Command1_Click End If End If
If ST = "F" Then '游戏暂停 If p_status = 1 Then p_status = 0
Timer1.Enabled = False
Timer2.Enabled = False '把定时器都关闭 Timer3.Enabled = False
Label8.Visible = True '游戏暂停文本 Command1.Enabled = False Command2.Enabled = False Command3.Caption = "继续" N = N + 1 End If
If N = 2 Then
Picture1.SetFocus
Timer1.Enabled = True Timer2.Enabled = True Timer3.Enabled = True Label8.Visible = False
Command1.Enabled = True Command2.Enabled = True
VB+单片机联合实训,制作弹球游戏
Command3.Caption = "暂停" N = 0
p_status = 1 End If End If
If ST = "G" Then End End If
If ST = 0 Then
Call Command1_Click End If
If ST = "A" Then '按下A左移 Timer4.Enabled = True Call Timer4_Timer End If
If ST = "C" Then '按下C右移 Timer5.Enabled = True Call Timer5_Timer End If
If ST = "H" Then M = M + 1 If ST = "I" Then M = M - 1
If M = 1 Then Option1.Value = True: Option3.Value = False: Option2.Value = False If M = 2 Then Option1.Value = False: Option2.Value = True: Option3.Value = False If M = 3 Then Option3.Value = True: Option2.Value = False: Option1.Value = False If M > 3 Then M = 3 If M < 0 Then M = 1 End Sub
Private Sub Option1_Click() Timer1.Interval = 150 Timer3.Interval = 75
Command1.Enabled = True DengJ = 1 End Sub
Private Sub Option2_Click() Timer1.Interval = 100 Timer3.Interval = 50
VB+单片机联合实训,制作弹球游戏
Command1.Enabled = True DengJ = 1 End Sub
Private Sub Option3_Click() Timer1.Interval = 50 Timer3.Interval = 25
Command1.Enabled = True DengJ = 1 End Sub
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) key = KeyCode If p_status = 1 Then Select Case KeyCode
Case 37 '如果按下左,使板子向左移动 If dangb.Left <= 0 Then dangb.Left = 0 Else
dangb.Left = dangb.Left - 300 End If
Case 39 '如果按下右,使板子向右移动 If dangb.Left >= 7935 - dangb.Width Then dangb.Left = 7935 - dangb.Width Else
dangb.Left = dangb.Left + 300 End If End Select End If
End Sub '鼠标控制
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If p_status = 1 Then If x < 0 Then x = 0 End If
If x > 7935 Then x = 7935 End If
dangb.Left = x - dangb.Width / 2 End If End Sub
VB+单片机联合实训,制作弹球游戏
Private Sub Timer1_Timer() If p_status = 1 Then If x = False Then
shape1.Left = shape1.Left - 200 Else
shape1.Left = shape1.Left + 200 End If
If y = False Then
shape1.Top = shape1.Top - 200 Else
shape1.Top = shape1.Top + 200 End If
If shape1.Top + shape1.Height >= dangb.Top And shape1.Left <= dangb.Left + dangb.Width And shape1.Left >= dangb.Left - shape1.Width Then y = False '碰到挡板反弹
If shape1.Top <= 0 Then y = True If shape1.Left < 0 Then x = True
If shape1.Left + 400 >= Picture1.Width Then x = False '碰墙反弹,上 左 右三个方向
If shape1.Top + 400 >= dangb.Top + dangb.Height Then '小球掉落至挡板下方
p_life = p_life - 1
Label6.Caption = Val(Label6.Caption - 1)
shape1.Left = dangb.Left + dangb.Width / 2 - 200 '球位置初始化
shape1.Top = dangb.Top - shape1.Height End If
Call check_bricks '检查是否打到砖块 End If
If Label6.Caption < 0 Then gameover.Visible = True Label6.Caption = "" Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer5.Enabled = False p_status = 0
'MSComm1.PortOpen = False
VB+单片机联合实训,制作弹球游戏
End If End Sub
Private Sub Timer2_Timer() '计时程序 If p_status = 1 Then time = time + 1
Label4.Caption = Str(time) + "秒" End If End Sub
' 检查是否打到砖块
Private Sub check_bricks() Dim i%, d%, c%, flag%
For i = 0 To 30 '31块砖头
If bk(i).Visible = True And shape1.Left - 200 > bk(i).Left And shape1.Left + 200 < bk(i).Left + bk(i).Width And _
shape1.Top < bk(i).Top + bk(i).Height Then If k = True Then
Zhuank = 1
G = i '记录第几块砖头被打中 y = Not y End If Exit For End If Next i
Call Timer3_Timer End Sub
'砖块下落
Private Sub Timer3_Timer() If Zhuank = 1 Then k = False
bk(G).Top = bk(G).Top + 150 End If
Call check '检查砖块下落地方 End Sub
Private Sub check() Dim c%
If bk(G).Top >= dangb.Top + dangb.Height Then bk(G).Visible = False '砖块掉落时就消失
'砖块掉落到挡板上时 加分 同时也消失掉
VB+单片机联合实训,制作弹球游戏
If bk(G).Visible = True And bk(G).Top > dangb.Top - bk(G).Height And bk(G).Left > dangb.Left - bk(G).Width And bk(G).Left < dangb.Left + dangb.Width Then bk(G).Visible = False score = score + 10
Label2.Caption = score End If
If bk(G).Visible = False Then k = True '检查是否还有砖块 flag = 0 For d = 0 To 30
If bk(d).Visible = True Then flag = 1 Exit For End If Next d
If flag = 0 Then c = MsgBox("你输了!", vbInformation, "结果") If i = 1 Then End End Sub
Private Sub Timer4_Timer() '单片机左移 If p_status = 1 Then
dangb.Left = dangb.Left - 100
If dangb.Left <= 0 Then dangb.Left = 0 End If End Sub
Private Sub Timer5_Timer() '单片机右移 If p_status = 1 Then
dangb.Left = dangb.Left + 100
If dangb.Left >= 7935 - dangb.Width Then dangb.Left = 7935 - dangb.Width End If End Sub
2、单片机程序代码
ORG 0000H LJMP MAIN ORG 0030H
MAIN: MOV SP,#60H
MOV SCON,#50H ;8位异步通信 MOV PCON,#80H ;SMOD为1
MOV TMOD,#20H ;定时器1为模式2 3、 MOV TH1,#0F4H ;装初始值 MOV TL1,#0F4H
VB+单片机联合实训,制作弹球游戏
SETB TR1
SCANING:MOV P0 ,#00H MOV P2 ,#0FFH
CLR P2.2 ;扫描键盘 JNB P2.4,AN1 JNB P2.7,AN2 JNB P3.2,AN3 JNB P3.3,AN4 JNB P3.4,AN5 JNB P2.5,AN6 JNB P2.6,AN7 SJMP SCANING
AN1: LCALL DELAY1
MOV SBUF,#041H ;发送A PAN0: JBC TI,GOON0 SJMP PAN0 GOON0: JNB P2.4,AN1 LCALL DELAY1
MOV SBUF,#042H ;发送B PAN1: JBC TI,XWAIT SJMP PAN1 AN2: LCALL DELAY1
MOV SBUF,#043H ;发送C PAN2: JBC TI,GOON1 SJMP PAN2 GOON1: JNB P2.7, AN2 LCALL DELAY1
MOV SBUF,#044H ;发送D PAN3: JBC TI,XWAIT SJMP PAN3 AN3: LCALL DELAY
MOV SBUF,#045H ;发送E PAN4: JNB TI,XWAIT CLR TI SJMP PAN4 AN4: LCALL DELAY
MOV SBUF,#046H ;发送F PAN5: JNB TI,XWAIT SJMP PAN5 CLR TI
AN5: LCALL DELAY
VB+单片机联合实训,制作弹球游戏
MOV SBUF,#047H ;发送G PAN6: JNB TI,XWAIT SJMP PAN6 CLR TI
AN6: LCALL DELAY
MOV SBUF,#048H ;发送H PAN7: JNB TI,XWAIT CLR TI SJMP PAN7 AN7: LCALL DELAY
MOV SBUF,#049H ;PAN8: JNB TI,XWAIT CLR TI SJMP PAN8 XWAIT: LCALL DELAY1
DELAY: MOV R0,#20 LAY1: MOV R1,#20 LAY2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LAY2 DJNZ R0,LAY1 RET
DELAY1: MOV R5 ,#20 D1: MOV R6 ,#40 D2: MOV R7 ,#10 DJNZ R7 ,$ DJNZ R6 ,D2 DJNZ R5 ,D1 RET END
三、系统运行界面
发送I
VB+单片机联合实训,制作弹球游戏
VB+单片机联合实训,制作弹球游戏
四、小组自评
这次的弹球游戏设计的结果小组排名第四,自我感觉也比较满意。在游戏刚设计好的初段,我们发现游戏运行出现混乱,查到的结果是vb代码发生错误,经过我们的精心研究和查阅相关的资料,错误被改了过来。所以说这次的团体合作设计还是比较成功的,给我们自己打个85分。
五、设计心得
经过两周的实训,我们获益匪浅!我们懂得了团队合作的重要性,
懂得分工合作是尤为重要的,我们三个人,一人负责上网找资料,一人负责与同项目的小组交流,一人负责编程。运行游戏时,游戏出现一点小小的问题,就是弹球弹的位置和单片机的按键不行!弹球弹的位置我们估计是数组的问题,我们首先修改VB代码的数组,效果明显好了。至于单片机的通信,我们试过,原来是单片机的问题,换了一个就可以通信了。弹球的问题查了资料修改了还是不够完善,但至少还能运行 ,对初学者应该差不多了。老师给了的要求都能达到,我们已经很兴奋了,之后给游戏加点修饰,弄好看一点,完成!
这次实训让我们对VB和单片机的基础知识得到了巩固,让我们学习到了新的知识。我们在理论的基础上更深刻的掌握了单片机和VB的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,同时也暴露出一些平时学习上的问题,让我们深刻反思。这些问题的发现将为我们以后的学习和工
VB+单片机联合实训,制作弹球游戏
作找明道路,查漏补缺为进一步学习作好准备。
我们感谢这次实训!
附:指导教师评语: 实习单位意见:
实习成绩: 指导老师签名:
年 月 日
正在阅读:
VB和单片机串口通信实训报告08-28
2017年全国公安院校招警考试调整09-26
深秋的银杏作文500字07-07
陕铁院毕业设计样本 - 图文06-04
民族风俗习惯-课题研究调查报告10-22
《螳螂捕蝉》教学设计-盛宏伟03-03
人民版七年级上思品期末试卷05-04
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 信实
- 串口
- 单片机
- 报告
- 补写句子经典例题
- GB30871-2014+化学品生产单位特殊作业安全规范票证
- 虚游网络科技股份有限公司——创业计划书
- 高职高专计算机类专业教指委规划课题
- stm32定时器触发ADC参考
- 10.第十一章 管理毒理学
- 中学生自我导向学习及学业自我效能感的发展特点
- 备件管理流程规范
- 电子技术期末复习题
- 借壳上市
- 西方经济学(微观部分)部分名词解释
- HSE先进个人事迹
- 汽车行业质量体系系列培训教材(10-3)---MSA测量系统分析
- 金蝶K3 WISE创新管理平台PLM V12.2 Visio应用操作手册
- 候车亭广告经营管理责任书
- 2021年日历表A4纸打印版
- 应用题专项复习(长方体、正方体在的表面积和体积)
- 酵母细胞的固定化
- 申请公共租赁住房人员收入证明(新就业职工、来郑务工人员)
- 信息化教学设计模型