球类计分器jun.docx

上传人:b****2 文档编号:2381106 上传时间:2023-05-03 格式:DOCX 页数:26 大小:584.13KB
下载 相关 举报
球类计分器jun.docx_第1页
第1页 / 共26页
球类计分器jun.docx_第2页
第2页 / 共26页
球类计分器jun.docx_第3页
第3页 / 共26页
球类计分器jun.docx_第4页
第4页 / 共26页
球类计分器jun.docx_第5页
第5页 / 共26页
球类计分器jun.docx_第6页
第6页 / 共26页
球类计分器jun.docx_第7页
第7页 / 共26页
球类计分器jun.docx_第8页
第8页 / 共26页
球类计分器jun.docx_第9页
第9页 / 共26页
球类计分器jun.docx_第10页
第10页 / 共26页
球类计分器jun.docx_第11页
第11页 / 共26页
球类计分器jun.docx_第12页
第12页 / 共26页
球类计分器jun.docx_第13页
第13页 / 共26页
球类计分器jun.docx_第14页
第14页 / 共26页
球类计分器jun.docx_第15页
第15页 / 共26页
球类计分器jun.docx_第16页
第16页 / 共26页
球类计分器jun.docx_第17页
第17页 / 共26页
球类计分器jun.docx_第18页
第18页 / 共26页
球类计分器jun.docx_第19页
第19页 / 共26页
球类计分器jun.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

球类计分器jun.docx

《球类计分器jun.docx》由会员分享,可在线阅读,更多相关《球类计分器jun.docx(26页珍藏版)》请在冰点文库上搜索。

球类计分器jun.docx

球类计分器jun

目录

一、概述3

二、球类计分器方案4

三、球类计分器硬件设计4

3.1单片机最小系统4

3.2键盘电路7

3.3输出电路8

四、球类计分器软件设计12

4.1主函数12

4.2按键处理函数13

五、球类计分器调试与分析14

5.1设计及调试14

5.2调试现象及分析14

六、结束语15

参考文献16

附录A17

附录B18

附录C19

 

球类计分器

一、概述

随着科学技术的发展,计算机技术在电子电路设计中发挥着越来越重要的作用。

20世纪80年代后期,出现了一批优秀的电子设计自动化软件,如Protel99Se、Proteus、KeilC51等,为软件开发提供有利环境。

随着该行业开发技术的不断发展,开发软件也在不断的发展。

目前,此次专业课程设计涉及到的单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展,已经在日常生活和控制领域等方面得到广泛的应用,它正为我国经济的快速发展发挥着举足轻重的作用。

在我们周围,球类计分器的应用较为广泛,在学生阶段,大家都为之熟悉的篮球、兵乓球、羽毛球等等,都涉及到计分这一部分,那球类计分器的引入是必不可少。

诸如国际、国家、省等各球类的比赛中都有应用到球类计分器,由此可见,球类计分器的应用是极为广泛的。

本课程设计是单片机系统在计分方面的简单应用,利用AT89C51单片机及外围电路来设计的一个球类计分器,同时在LCD上显示各对、局数(即第几局)、比分等。

●设计目的:

通过此次的专业课程设计,巩固和加深专业课程中所学的理论知识和实验能力,基本掌握应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对其软硬件知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。

●设计要求:

1利用单片机组成一个球类计分器。

2通过加分按钮能对A或B对加分。

3设计对调功能,交换场地后,分数互换。

4设计局数比分显示,在此用LCD显示。

5绘制系统硬件接线图,并进行系统仿真。

6画出程序流程图并编写程序实现上述功能。

二、球类计分器方案

总的来说,此次设计是利用单片机及显示装置设计的一个球类计分器,通过键盘扫描程序实时对此扫描,检测是否有键按下,若有,再根据哪个键做出相应的操作,并在LCD显示装置进行显示操作。

即球类计分器是以单片机器件为主体,设计的计分器。

如图1所示,球类计分器大致由单片机、复位电路、晶振电路、LCD显示装置、按键检测装置等组成。

利用AT89C51单片机,通过LCD显示扫描模块、按键处理模块等,实现比赛进行时的局数、球队、计分结果。

三、球类计分器硬件设计

单片机是由CPU、并行口、ROM、RAM、定时/计数器、串行口和中断系统等组成部分,通过内部总线把各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。

其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。

该球类计分器系统由3个模块实现:

单片机最小系统,键盘电路,LCD显示。

3.1单片机最小系统

单片机的最小系统指的是由最基本的电路元件组成的,外接部分简单的电路就能够独立完成一定的工作任务的单片机系统。

51单片机的最小系统有单片机芯片、电源、时钟电路和复位电路组成,如图2所示。

设计之前得对单片机的引脚及其功能应有所了解,下面简单介绍单片机的引脚:

1.主电源引脚

Vcc:

芯片电源,接+5V。

VSS:

电源接地端。

2.时钟引脚

XTAL1:

片内放大器输入端。

XTAL2:

片内放大器输出端。

  3.专用控制端口

  

(1)ALE/

地址锁存允许/片内EPROM编程脉冲。

  ①ALE功能:

用来锁存P0口送出的低8位地址。

 ②

功能:

片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

  

(2)

外ROM读选通信号。

  (3)RST/VPD:

复位/备用电源。

  ①RST(Reset)功能:

复位信号输入端。

  ②VPD功能:

在Vcc掉电情况下,接备用电源。

  (4)

/Vdd:

内外ROM选择/片内EPROM编程电源。

  ①

功能:

内外ROM选择端。

  ②Vdd功能:

片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

  4.输入/输出端口

  AT80C51共有4个8位并行I/O端口:

P0、P1、P2、P3口,共32个引脚。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

  5.P3口第二功能

  P3.0RXD:

串行输入口。

  P3.1TXD:

串行输出口。

  P3.2

外部中断0。

  P3.3

外部中断1。

  P3.4T0:

定时计数器0。

  P3.5T1:

定时计数器1。

  P3.6

外部数据存储器写选通。

P3.7

外部数据存储器读选通。

1.时钟电路

单片机的时钟电路用来产生时钟信号,以提供单片机片内各种数字逻辑电路工作的时间基准。

时钟电路可采用内部振荡方式和外部振荡方式两种电路形式。

此时钟电路采用内部振荡方式,即在单片机的XTAL1和XTAL2两个引脚间接一只晶振及两只电容就构成了单片机的时钟电路,如上图2所示。

2.复位电路

复位是是单片机的片内电路初始化的操作,复位使单片机从初始状态开始运行。

在复位引脚RET输入宽度为2个机械周期以上的高电平,单片机就会执行复位操作。

有两种操作形式:

上电复位、手动复位。

单片机的RESET引脚为主机提供一个外部复位信号输入端口,按下复位键S1,单片机被强制执行复位操作。

复位后,单片机内各部件恢复到初始状态,单片机从ROM的0000H开始执行程序。

其电路图如图2所示,RESET按键选择开关。

3.2键盘电路

球类计分器中的外围电路中,键盘电路这部分是相对重要的部分,它实现对A或B对加分,场地交换后,分数交换、局数的确定等。

这也是人机接口的关键,人只有通过键盘电路,才能对球类计分器的改变与调整,达到人能操作的基本要求。

体现一个明显的效果就是对于客户来说,设计好的球类计分器,其操作非常简单,功能相对较强,以满足客户的需求,即两个按键控制着球队的加分情况,一个按键是对局数的调整,最后一个按键是场地交换时,球队、分数等都进行交换。

用户操作起来非常方便,正因其操作方便的有利一面,球类计分器在这一方面得到了广泛的应用,在我们周围随处都可以看到,如学校球赛、国家球赛。

键盘电路由独立连接式键盘组成,如图3所示,通过编程来判断是否有键按下,再根据是哪个键被按下,做出相应的动作,即判断图3所示的P1口的一些端口,当P1.0有低电平通过时,即“左加”键(K1键)按下,则左边的数加一,即在左边那个球队得一分或一球;当P1.2有低电平通过时,即“右加”键(K2键)按下,则右边的数加一,即在右边那个球队得一分或一球;当P1.4有低电平通过时,即“局数”键(K3键)按下,则局数在原有的第几局的基础上加一,显示当前是第几局;当P1.6有低电平通过时,即“队换”键(K4键)按下,则两队进行了换场地,实行了分数等之间的对换,即在LCD显示器上显示换后的球队之间、分数之间的对换显示。

3.3输出电路

此球类计分器的输出电路是LCD显示接口电路。

其中,LCD显示接口电路是用来显示当前的局数(即为第几局)、球队、比分等,是比较重要的一部分,也是人机接口的显示那块,反馈给人。

只需认识阿拉伯数字即可知道当前比分是多少,很明显;下面介绍一下LCD显示器,在此用的是LCD1602。

LCD显示接口电路

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:

发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单,下面介绍LCD,其引脚定义及作用如表1所示。

LCD的特点:

①显示质量高:

由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。

因此,液晶显示器画质高且不会闪烁。

②数字式接口:

液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

③体积小、重量轻:

液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

④功耗低:

相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。

1.清屏指令

功能:

①清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;

            ②光标归位,即将光标撤回液晶显示屏的左上方;

            ③将地址计数器(AC)的值设为0。

2.进入模式设置指令

功能:

设定每入1位数据后光标的移位方向,且设定每写入的一个字符是否移动。

如下:

        位名             设置

            I/D       0=写入新数据后光标左移            1=写入新数据后光标右移

            S           0=写入新数据后显示屏不移动  1=写入新数据后显示屏整体右移1个字符

3.显示开关控制指令

功能:

控制显示器开/关、光标显示/关闭以及光标是否闪烁。

参数设定的情况如下:

            位名             设置

            D               0=显示功能关              1=显示功能开

            C               0=无光标                  1=有光标

            B               0=光标闪烁                1=光标不闪烁

4.设定显示屏或光标移动方向指令

功能:

使光标移位或使整个显示屏幕移位。

参数设定的情况如下:

            S/C              R/L               设定情况

            0                0                 光标左移1格,且AC值减1

          0                1                 光标右移1格,且AC值加1

          1                0                 显示器上字符全部左移一格,但光标不动

            1                1                 显示器上字符全部右移一格,但光标不动

5.功能设定指令

功能:

设定数据总线位数、显示的行数及字型。

参数设定的情况如下:

            位名             设置

            DL              0=数据总线为4位                 1=数据总线为8位

          N                0=显示1行                       1=显示2行

          F                0=5×7点阵/每字符               1=5×10点阵/每字符

6.基本操作时序:

读状态      输入:

RS=L,RW=H,E=H                                   输出:

DB0~DB7=状态字

写指令      输入:

RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码           输出:

读数据      输入:

RS=H,RW=H,E=H                                    输出:

DB0~DB7=数据

写数据      输入:

RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据             输出:

LCD1602的实物图如图4所示,硬件电路图如图5所示,显示部分采用LCD1602显示模块,其中P0口设置为指令、数据输出口,P2口中的P2.0、P2.1分别控制着LCD1602的RS和E端口,LCD1602的各端口的连接方式如图4显示接口电路图所示。

四、球类计分器软件设计

软件设计是课程设计的一个重要组成部分,在硬件设计好的基础上,软件设计的成功与否,直接关系到它能否正常运行。

为实现上述要求的功能,设计球类计分器软件主要包括:

主函数、按键处理函数等。

4.1主函数

主函数流程图如图6所示,从图上的内容可知,首先得初始化,实时进行键盘扫描程序,判断是否有键按下,若是,则转入到相应键值的按键处理程序中去,处理完毕后,进入到当前局数、球队对阵情况、比分情况等的显示程序,之后回到是否有键按下,不断的进行循环。

若不是有键按下,则返回,直接跳过相应键值的按键处理模块,直接进入到当前局数、球队、比分等的显示模块,又回到判断是有键按下那块,这样也形成循环运行。

4.2按键处理函数

按键处理这部分程序是比较重要的一部分,可堪称为设计球类计分器的核心程序,关系到能否完成上述的功能要求。

按键处理函数流程图如图7所示,首先通过入口进入到按键处理程序,通过按键处理函数读取键值,判断按下的是哪个键值,若是“左加(K1)”键,则球队比分数的左边那个数加“1”,即表示在左边场地的这个球对或是进攻球队赢得一球;若是“右加(K2)”键,则球队比分数的右边那个数加“1”,即表示在右边场地的这个球对或是进攻球队赢得一球;若为“局数(K3)”键,则表示在原有的局数加“1”,显示第几局;若为“队换(K4)”键,则表示两个球队对换场地,那么,显示的球队、比分情况都进行相应的互换。

在判断完哪个键,进行完相应键的处理后,进而返回到主程序中去。

五、球类计分器调试与分析

5.1设计及调试

调试过程也是课程设计必不可少的一个环节,根据设计的要求,初步设计好硬件的外围电路,以及程序。

调试先通过仿真软件进行仿真,发现问题,既而解决问题;之后,在单片机实验室进行实物调试。

在程序这一块,主要涉及到对KeilC51、Proteus等的使用,在KeilC51的开发环境中,编写程序,调试运行,发现、解决出现的错误。

正确无误后,调到Proteus中进行软件仿真,观察现象,根据设计要求逐步修改电路及程序,直至跟要求一致,仿真结果见附录B所示。

实验室实物调试,根据已设计好的电路图连接电路,把已设计好的程序通过烧写装置导入到到单片机芯片,接入电路中,通过键盘的输入电路改变球队比分、换场后对换、局数的确定等,再通过LCD1602显示装置观察现象。

5.2调试现象及分析

在进行Proteus仿真调试时,发现按下“队换(K4)”键时,即换场地后,只在初始化的情况下进行对换,经过仔细、多时的考虑、调试与仿真后,发现按键后的值没有调用过来,解决后,就基本没什么问题了。

通过调节“左加(K1)”键、“右加(K2)”键、“局数(K3)”键,确定一定的局数与比分后,再通过“队换(K4)”键观察LCD1602显示装置的显示效果,现象无误,见附录B所示。

在这一过程中,我们发现了一系列的问题,通过资料的收集与查阅,从调试到发现错误再到修改我们学到了很多。

经过查阅资料,并与同学讨论,反复调试都一一解决。

最终我们成功地实现电子打铃器的功能,顺利通过检测。

六、结束语

此次的专业课程设计,是我们自动化专业学生在校学习期间,必须完成的一项重要的动手实践活动,经过这次的在实验室进行实物调试后,了解到专业课程设计及实物调试让人学到更多,也吸引了对该领域学习的兴趣。

经过近两个星期的奋战与努力,终于成功的地完成了球类计分器的专业课程设计,并能正常实现球队分数的调整与显示,且能在球队换场后,球队的对换,分数的对换,更能让人清楚知道与操作。

但还有些地方需要改进,我想到的有如下几个:

一是球类计分器可以在加上时间的操作,显示时间。

二是还应该加入暂停停表的功能,若需实现这些功能,LCD1602不能满足,这得引入更强功能的LCD显示装置。

运用在校所学的理论课程和实践教学,并根据专业课程设计题目要求搜集相关的设计资料,理论联系实际,为以后工作的顺利展开铺平道路,也对我们所学的知识进行复习、加强、巩固与提高。

经过这次课程设计,在一定的理论基础上,动手实践,更容易学会,更容易理解,也加深了对其的印象,使我认识到了自学的重要性,在设计过程中,遇到问题时,也查阅了图书馆的一些资料,丰富自己的知识。

使我对该领域产生了一定的兴趣,并决定进一步学习本专业。

好好利用剩余的大学时间,使自己的大学生活更加充实,提高自身的素质。

在老师的严格要求、耐心教导和指正下,和同学讨论,顺利的完成此次课程设计。

最后衷心感谢老师的悉心指导和同学们的热心帮助!

 

参考文献

[1]曾屹.单片机原理与应用.长沙:

中南大学出版社,2009

[2]张一斌、余建坤.单片机原理课程设计.长沙:

中南大学出版社,2009

[3]李朝青.单片机原理及接口技术(修订版).北京:

北京航空航天大学出版社,1998

[4]徐仁贵.微型计算机接口技术及应用(第一版).北京:

机械工业出版社,1998

[5]李光飞.单片机课程设计实例指导(第一版).北京:

北京航空航天大学出版社,2004

[6]余永权.ATMEL89系列单片机应用技术.北京:

北京航空航天大学出版社,2002

[7]周航慈.单片机应用程序设计技术.北京:

北京航空航天大学出版社,2002

[8]张俊谟.单片机中级教程原理与应用(第2版).北京:

北京航空航天大学出版社,2006

[9]刘高鏁.单片机实用技术.北京:

清华大学出版社,2004

[10]李广弟.单片机基础.北京:

北京航空航天大学出版社,1992

[11]谭浩强.单片机课程设计.北京:

清华大学出版社,1989

[12]何立民.单片机应用技术大全.北京:

北京航空航天大学出版社,1994

[13]张毅刚.单片机原理及接口技术.哈尔滨:

哈尔滨工业大学出版社,1990

[14]李光飞.单片机课程设计实例指导.北京:

北京航天航空大学出版社,2004

[15]陈明荧.8051单片机课程设计实训教材.北京:

清华大学出版社,2004

[16]范风强,兰婵娟.单片机语言C51实战锦集.北京:

电子工业出版社,2003

[17]赖麒文.8051单片机C语言彻底应用.北京:

科学出版社,2002

[18]徐爱均,彭秀华.KeilCx51V7.0单片机高级语言编程与μVision2应用实践.北京:

电子工业出版社.2004

 

附录A

球类计分器电路图

附录B

第一局球队比分记录仿真图

第二局换场地后的开始仿真图

附录C

球类计分器源程序

/**********************************************

*文件名称:

球类计分器

*作者:

何超军

*硬件平台:

51系列MCU

*软件平台:

Keil

*创建日期:

2010-12-22

**********************************************/

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitrs=P2^0;

sbitlcden=P2^1;

sbitk1=P1^0;

sbitk2=P1^2;

sbitk3=P1^4;

sbitk4=P1^6;

uchardatatable[]={"1AvsB"};

uchardatatable1[]={"00:

00"};

ucharshu1,shu2,ju;

/*函数声明*/

voidinit();

voiddelay(uintz);

voidwrite_com(ucharcom);

voidwrite_date(uchardate);

voidwrite_bf(ucharadd,uchardate);

voidwrite_jushu(ucharadd1,uchardate1);

voidkeyscan();

/*主函数*/

voidmain()

{

init();

ju=1;

while

(1)

{

keyscan();

}

}

/*延时函数*/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/*写指令函数*/

voidwrite_com(ucharcom)

{

rs=0;

lcden=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

/*写数据函数*/

voidwrite_date(uchardate)

{

rs=1;

lcden=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

/*初始化函数*/

voidinit()

{

ucharnum;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2