版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计说明书学生姓名学 号学院 计算机科学与技术学院专 业计算机科学与技术(软件工程)题 目竞赛打分系统的设计与实现指导教师 讲师/硕士 (姓 名) (专业技术职称/学位)2013年5月摘 要:竞赛打分系统是一个简单的信息发送,接收与处理系统,本系统由PC、打分终端等组成,采用串口总线通讯,语言包括VB,汇编语言。评委在各自的打分终端上输入比赛成绩,终端通过总线将数据传送到PC机,软件对各评委的打分进行统计,最终得出选手的名次。本文介绍了系统的工作原理,软件和硬件设计,给出了关键源代码及部分电路的原理图。关键字: VB,汇编语言,串行通讯,竞赛Abstract: The judges sco
2、ring system is to send a simple message, receiving and processing system, this system is composed of PC, scoring terminal, this systems languages are VB、assembler.the bus structure.the hardware structure is simple.In the traditional game score, the score, the format and effectiveness need manual ins
3、pection, is prone to errors, will also affect the fairness of the scoring.This system is: the fractional collection, analysis, processing of players, and then through the way of showing stick out a mile.After using this system, can save the game organizers of manpower, material resources. Can make t
4、he grading efficiency, accuracy can be improve. The scoring system is simple, practical, can make easy and professional activities of the organization.Key words: vb, assembler, serial , game目 录1 前言42 硬件选择43 软件选择54 通信方案65 下位机软件设计75.1主程序75.2读键盘子程序85.3发送子程序95.4显示子程序106 上位机软件设计116.1 系统实现116.2 输入选手姓名界面12
5、6.3 改变比赛项目界面126.4 成绩统计136.5 系统设置147 系统调试147.1 硬件系统调试147.2 软件系统调试15结 论17参 考 文 献18致 谢191 前言随着近几年来各种各样竞赛的风靡,主办方急需一个操作方便,价格低廉的打分系统,本评分打分系统是按照竞赛中评委打分的方式设计的,有比较完善的竞赛评分功能。该系统优点是:1、可以节省比赛主办方的人力,物力。2、使打分的效率,准确性得到整体的提高。3、本评分系统操作简单,实用性强,使活动组织更轻松,更专业。该系统适用于一切比赛下的评委打分情况如:象棋竞赛、歌唱比赛、计算机知识竞赛、乒乓球竞赛、足球竞赛等。本系统由PC、打分终端
6、等组成,采用总线结构,硬件结构简单,便于生产,组装,可有效节省成本,节约时间。2 硬件选择选用AT89C51单片机(如图1),该MCU内含4KB的ROM,有四个8位的并行口(P1,P2等)和一个串行口,两个16位计数/定时器(T0,T1)。我们的硬件除了一个CPU以外,还有两个不可或缺的外设要选择:1、显示器 : 终端上要有显示器,用于告知评委他打的分数是什么,可选用LCD或LED数码管。本系统使用四个7段LED数码管,这种显示器是4个数码管做在一起的,四个数码管的相同接口已在内部连在一起,不同的引脚分别由同一个引脚引出,例如:7个数字端和1个小数点端接在单片机的P2口,当某一脚为低电平时对应
7、的灯亮,输出为1时对应的灯不亮;4个序号端分别为P30、P31、P32、 P33,选择一个时候我们就可以选择哪个序号的数码管亮了。软件编码时采用扫描的方式,每次只有一个数码管亮,4个数码管轮流点亮,每个数码管亮0.005秒,4个一共是0.02秒。为了是设计简单和自动化,我们用时钟中断的方式,在中断处理函数里,我们实现了不同数码管的依次显示。2、键盘电路:由于按键较多,如果按照一个按键一个接口的方式来连接键盘则51的引脚数目要增加好几倍,所以键盘连接成m×n(m=4,n=3)的矩阵形式,占用单片机的7根口线。图2-1 AT89C51单片机的结构框图本系统远端不需要太强的运算能力,单片机
8、就可以满足我的需求。不仅可以减少硬件成本,也可以简化软件的设计3 软件选择1、上位机:VB是由微软公司开发的事件驱动编程语言。程序员可以使用VB提供的组件快速写出一个稳定的应用程序。在本项目中最重要的就是上位机和下位机之间的串口通信,而在VB中就有一个用于串口收发数据的控件, 从系统的稳定性和系统的复杂度来看, 用Visual Basic是合适的。 而且我也对他比较熟悉。 所以PC端的程序就由Visual Basic开发。2、下位机:下位机即打分终端,选择Keil开发环境和汇编语言编程。4 通信方案打分系统分工:上位机负责处理,显示和保存数据。下位机负责输入数据。在上下系统之间有一个通信的过程
9、,通信的方法有很多种,我们可以在下面几种通信方法中选择一种。(1)并行连接方式:图4-1 并行连接每个MCU连接不同的引脚,主机采用轮讯方式读取第N个打分终端上的评委的打分。说明:MCU与主机的并口相连接优点:这种连接方式软件和硬件设计简单。缺点:连线多,通信只能在数米内进行。(2)多串口线连接方式:图4-2 多串口线连接说明:每一个MCU单独用串口线与主机连接。优点:这种方式软件设计简单,通信距离可至数十米。缺点:连线多,且主机需要有多个串口。(3)单串口线连接方式:图4-3 单串口线连接说明:每个MCU设置不同的地址,主机采用查询方式读取第N个MCU上的数据。优点:通信距离远(数十米),连
10、线少。缺点:软件设计稍复杂。基于上述三种方式的优缺点,我们选用了第三种方式,即RS-485总线方式。5 下位机软件设计5.1主程序主程序的流程图如图5-1 所示,首先是中断,串口等的初始化,然后清空显示的“buffer”让终端显示“ 0”,然后调用读按键盘程序,直到有键被按下,然后分析被按下的键值,如果是小数点就查看小数点有没有被按下,如果没有被按下就将前一个数的高四位置一,如果已经被按下过了,则输入是错误的,此时我们可以将本次按键的值忽略不计。如果按键不是“.”,而是“OK”则我们调用发送子程序,待发送完毕,我们再次清空“发送buffer”,然后回到读按键状态。如果既不是”.”也不是”OK”
11、,就是数字键,则首先判断是否是第一次按下数字键,如果是的话,就不用左移一位“发送buffer”了。接着将按键的值和“发送buffer”进行“或”运算,并且将运算结果存入“发送buffer”中。随后再次去等待按键的按下。图5-1 主程序5.2读键盘子程序读键盘子程序的流程图如图5-2所示,这里采用的是行反转法的读键盘程序设计,将行值置“1”如果有按键被按下那只能确定是哪一行的按键被按下,此时无法确定是哪一个按键被按下,将列值置“1”这个时候能确定是那一列的值被按下,将行和列确定了那么哪个键被按下也就确定了。然后根据此值来确定它代表的数字是什么,这就需要一个键值表了。图5-2 读键盘子程序5.3发
12、送子程序数据发送子程序流程图如图5-3所示,先发送“主机号”,待主机号发送完毕以后,开始发送实际的的分值。其中要注意的是随时监测数据的高四位是否为“1“,如果为一的话,我们要发送小数点。这么做比较麻烦也可以在接受按键值的时候定义一个变量,在发送数字的同时,我们可以通过它来确定小数点是在哪里这样就减去了每次比较的辛苦。图5-3 发送子程序 5.4显示子程序显示子程序流程图如图5-4所示,因为显示的时候我们使用的是中断来显示的,所以按照中断函数的惯例应该是现场保护。将计数的变量取模运算,得到要显示的数据的偏移地址。接着我们判断数据的高四位是否为“1”如果是的话,我们就将“。“点亮,根据要显示的数据
13、,我们在表中查找段代码。根据段代码来点亮“LED灯”,计数变量加一;定时计数器的计数器值置初值。恢复现场。中断返回。图5-4显示子程序流程图6 上位机软件设计软件说明:软件有FORM1,2,3,4,5,6,和Module1 其中程序的入口点是Module1,在那里我们将首先显示form2,它是软件的主窗口。下面我将一一介绍这些窗口。6.1 系统实现打分界面如图6-1见示所示,选手姓名和比赛项目可以分别通过界面来改变。评委打分情况是通过MScomm这个控件来改变的。得分是根据评委的打分情况来得到的,比如平均分和总分。下一位选手和上一位选手的改变也可以改变选手姓名,得分,评委打分情况。它是通过fr
14、om1中的msflexgrid来改变的,它也可以存储一些基本的信息比如,选手的姓名,得分,评委的打分情况。值得注意的是比赛项目不可以改变。图6-1 打分界面6.2 输入选手姓名界面输入选手姓名界面如图6-2所示。图6-2 输入选手姓名界面6.3 改变比赛项目界面改变比赛项目界面如图6-3所示。图6-3 改变比赛项目界面6.4 成绩统计成绩统计界面如图6-4所示,存储比赛的所有信息。Form2中的下一位选手和上一位选手的按键的按下就意味着显示值的改变。改成什么样就要看form1中的内容了。图6-4 成绩统计界面6.5 系统设置系统设置界面如图6-5所示,改变比赛的得分情况(是取平均分还是取总分)
15、,和裁判的人数。这个直接影响到form2的显示,和form1的分数的存储情况。图6-5 系统设置界面7 系统调试7.1 硬件系统调试在本系统的硬件上有两个主要部件,在进行试验之前,一定要确保他们的正常工作。分别是输入,输出。输入是键盘,输出是LED数码管。1,LED数码管的测试:本项目中,由P2端口连接LED数码管的数据输入端,由P3的13号端口来选择在哪一个上数码管显示数字。所以我们就可以逐个的输出8字,因为数码管的全亮就是8。这样既可以检测硬件连接是否正确,也可以使我们知道LED数码管的灯是否都是正确的。方法如下:a,将P2口上全部输出为1,将P3口上的1号端口设置为一用来在第一个数码管上
16、显示一个8和一个小数点。b,P2的管脚不变,将P3口上的2号端口输出为1.然后以此类推。遇到的问题:在显示具体数字如1,2,3,4的时候,我在P2口上输出的是该数字的原码二进制。可是老是得不到预期的结果。原来我犯了一个低级的错误,我采用了大家比较通用的方法:写了一个数组。数组里数字的序号就是要显示的值,数组里相应序号的值就是我们要往P2口输出的值。2,键盘的测试:在本系统中,利用P1口来接受键盘的输入,同时它的输入不是一个具体的值因为那样需要很多端口,我们现在的设计只需要7个端口就可以了。我们现在是确定要输入的值是不是正确的,是硬件级的调试,所以现在只需要得到的是两个1和六个零组成的数字,两个
17、1的组合就可以确定是什么按键被按下了。遇到的问题:在连接键盘的时候,我先选择的是最简单的一个引脚接一个按键的设计,可是在设计的过程中才发现,引脚不够,因为起先没有考虑到LED数码管,后来加上LED数码管以后引脚就不够用了。经多次尝试之后,我选择了现在的4X3的按键。只是这样的设计是软件复杂了。7.2 软件系统调试1、打分终端的显示子程序:第一步:先写一个死循环,显示缓冲区中依次写入01、02、02、01四个数字,使得LED数码管上依次显示1、2、2、1,然后在显示的时候,死循环里依次选中P3的13号口,在选中的过程中加上一个延迟;作用:确认缓冲区的设置是否正确。第二步:在第一步的基础上将死循环
18、改成时钟中断。这样我们的程序就可以在中断的基础上显示了。然后在中断处理函数上启动时钟中断这样就可以使得源源不断的数字得到显示。作用:使得数据的显示不需要人工的参与,完全由中断来搞定。遇到的问题:在显示的时候我的数据类型是char,可是有的时候是不正确的输出,后来仔细的研究了类型的表示才知道。Char类型只能保证我们的数据的低七位是有效的。第八位是不确定的。将类型改成了Unsigned Char类型以后就成功了。2、打分终端的按键子程序按住某个键不动,从P2口读取扫描码,然后从扫描码表中得到相应的二进制数字,然后将它导入到上一步调试好的显示缓冲区中。如果显示的数字是正确的就说明已经调试好了。否则
19、将该二进制数字打印出来,然后一点一点的调试。如果上几步的硬件和软件调试没有问题,那么这一步也不会有太大的问题。3、下位机软和上位机软件调试:本系统中,上位机软件的编写难点以及上位机和下位机之间的关系的难点都是串口数据的收发。其中下位机没有什么大的问题,比较麻烦的是上位机的接收。因为仅仅在开始接受数据的时候会触发一个函数调用,但是我们现在串口才刚刚接受数据而已,那么怎么样既可以收取完整的数据,又不添加太多的代码呢?有两种解决方法:(a) 可以用一个延时函数,来让cpu空转一段时间,给串口一个接收数据的时间。等到时间结束的时候,我们的数据也就发送完了。这时就可以放心大胆的一次性读取了。(b) 可以
20、开始一个计时器,使其进入激活状态,也是等待一段时间以后再去读取数据。不过a计划的读数据函数是在串口控件的函数里进行的而b计划的读数据代码是在时钟控件里进行的,我认为二者没有什么太大的优劣之分,因为我们传输的数据量不是很大。我选取了b选项的设计风格,因为这样的设计思路更清晰。结 论随着毕业设计的结束,我的大学生活也要结束了,回想这四年的大学生活感想良多。大一的时候第一次听说编程这个词,对计算机算是一窍不通,以前只是会上上网,别的什么都不会。后来渐渐地系统性的学习了C语言,C+,数电,组成原理,汇编语言,编译原理,操作系统等等专业课,在大三上学期用了半年的时间学习java,以为以后就要在java里面混饭吃了。到了大三下学期突然意识到,如果以后就做java,那么以前下过功夫学的一些理论课就完全的没有了意义,所以还是果断的转换了方向。毕业设计的选择也是因为方向的转变而转变的,随着自己的兴趣选择了偏底层的单片机来开发。通过这次毕业设计,学会了怎样查阅资料和利用工具书。平时课堂上所学习的知识大多比较陈旧和偏理论,作为软件工程专业的学生,由于专业特点不可能什么都学过,什么都懂,因此,在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考历史一轮复习第1讲中国早期政治制度的特点及走向“大一统”的秦汉政治学案含解析人民版
- 2024高考地理一轮复习第二十二单元环境保护考法精练含解析
- 小学一年级数学教学计划
- 拖欠工资起诉书范文5篇
- 二零二五年环保产业创业合伙人合同3篇
- 大豆加工行业现状分析报告
- 二零二五年度特色餐厅场地租赁经营合同范本2篇
- 2024年陇南市武都区第一人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 二零二五版企业股份分配与员工激励协议3篇
- 2024年河南检察职业学院高职单招语文历年参考题库含答案解析
- 2024年职工普法教育宣讲培训课件
- (人教PEP2024版)英语一年级上册Unit 1 教学课件(新教材)
- 全国职业院校技能大赛高职组(市政管线(道)数字化施工赛项)考试题库(含答案)
- 2024胃肠间质瘤(GIST)诊疗指南更新解读 2
- 小学数学二年级100以内连加连减口算题
- 建设单位如何做好项目管理
- 三年级上递等式计算400题
- 一次性餐具配送投标方案
- 2024年原发性肝癌中医诊疗指南
- 2024医疗建筑韧性设计导则
- 军队文职半年述职报告
评论
0/150
提交评论