单片机篮球比赛记分器

上传人:沈*** 文档编号:80394208 上传时间:2022-04-25 格式:DOC 页数:40 大小:553.50KB
收藏 版权申诉 举报 下载
单片机篮球比赛记分器_第1页
第1页 / 共40页
单片机篮球比赛记分器_第2页
第2页 / 共40页
单片机篮球比赛记分器_第3页
第3页 / 共40页
资源描述:

《单片机篮球比赛记分器》由会员分享,可在线阅读,更多相关《单片机篮球比赛记分器(40页珍藏版)》请在装配图网上搜索。

1、 DA CHANGCHUN INSTITUTE OF TECHNOLOGY篮球比赛记分器The Game Of Basketball Scoring Device设计题目: 篮球比赛记分器 学院名称: 电气与信息工程学院 专业名称: 电子信息工程 任务分配表班级学号姓名完成主要任务电子104208PCB的绘制仿真与实现电子104213程序的修改PCB的绘制仿真与实现PROTEUS原理图绘制与仿真电子104235文档的编写程序的修改PROTEUS原理图绘制与仿真篮球比赛记分器 摘 要: 本文设计了一个篮球比赛记分器主要利用单片机AT89C51作为核心元件,利用3组4位共阳极的数码管作为显示器件,

2、以C语言作为编程语言,在Protues和Keil搭建的软件仿真平台下进行仿真,本设计包含了AT89C51系列单片机的最小系统的构成,同时在此基础上扩展了一些实用性强的外围接口,可以进一步了解译码器74LS247的应用,LED七段数码管的结构和工作原理,主要实现了计时和显示A/B队的分数,并能及时进行加分,减分,鸣笛警示等功能。本系统具有成本低廉、性能稳定、高准确度显示、操作方便且易携带等特点。广泛适合各类学校和小团体作为赛程计分。关键词:AT89C51单片机;74LS247;七段数码管;仿真;嵌入式0 引言 进入21世纪,伴随着电子,信息通信技术的应用与普及开发,人们对电子技术的要求也越来越高

3、,目前嵌入式单片机渗透到我们生活的各个领域。单片机是一种集成在电路芯片,是采用超大规模集成电路技术,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”,可分软件部分和硬件部分,而当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在单片机上。所以,以MCU为核心,就是各种各样的单片机,是嵌入式硬件部分的实现方式之一,它主要是因为把处理器和存储器等部件集成在一块芯片

4、上。 体育比赛计时计分器是对体育比赛过程中所产生的时间、比分等数据进行快速采集记录、加工处理、传递利用的工具。篮球比赛的计时计分器是一种得分类型的工具。虽然篮球比赛中很早就开始研究应用了电子计分器,但通常都是利用模拟电子器件、数字电子器件或是模拟、数字混合组成的,其稳定性和高准确度计分仍存在一些问题。以嵌入式单片机为核心,利用3组4位共阳极的数码管作为显示器件的篮球比赛计分屏,计分准确,具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点。1 系统方案 我们小组共提出了两种数码管显示方案:一是共阳极数码管静态显示,二是共阳极数码管动态显示。共阳数码管是指将所有发光

5、二极管的阳极接到一起形成公共阳极的数码管。共阳数码管在应用时应将公共极接地,当某一字段发光二极管的阳极为低电平时,相应字段就点亮。反之,相应字段就不亮。共阳极数码管静态显示:静态显示就是显示驱动电路具有输出锁存功能,即各个LED的显示字符一经确定,相应的段码将维持输出不变,直到送入另一个字符的段码为止。正因为如此,静态显示器的亮度都比较高。静态显示的程序设计,是将一个两位数的个位与十位分开,并且用查表指令,输出对应位的表格代码。共阳极数码管动态显示:动态显示,是数码管有一个I/O口控制LED片的多段复用,共阳极分别由相应的I/O口线控制,形成各片的分时选通。若要各位数码管能够同时显示出与本位相

6、应的显示字符,就必须采用动态显示方式,即在某一时刻,让某一位的位选线处于选通状态,而且其他各位的位选线处于关闭状态,这样在同一时刻,两个数码管只有选通的那一位显示字符,而另一个是灭着的。同样,在下一时刻,只让第二个的位选线处于选通状态,另一位选线关闭,如此循环下去,就可以使两位数码管显示出所要显示的字符。虽然这些字符不是在同一时刻出现,但由于LED片灯的余晖和人眼的视觉暂留作用,只要每位显示间隔足够短,就可以造成两位同时亮的假象,达到同时显示的效果。设计基本与静态设计相同,不同之处是在多了位选信号。在程序设计中在每次输出字符时,都要给相应的那位进行置位,另一位复位,确保每次只有一个数码管亮。数

7、码管静态显示需要静态驱动:静态驱动也称直流驱动,静态驱动是指每个数码管的每一个段码都有一个单片机的I/O端口进行驱动,或者使用BCD码二/十进位转换器进行驱动,静态驱动的优点是编程简单,数据稳定,显示亮度高,无闪烁,占用CPU时间少,缺点是功耗比较大,占用I/O端口多,如驱动5个数码管静态显示则需要5840个I/O端口来驱动,而一个89S52单片机可用的I/O端口才32个。故实际应用时必须增加位驱动器进行驱动,增加了硬体电路的复杂性。数码管动态显示需要动态驱动:动态驱动是将所数码管的8个显示片段的同名端连在一起,另外为每个数码管的公共极COM端增加位选通控制电路,位选通有各自独立的I/O线控制

8、,当单片机输出字型码时,所有数码管都接受到相同的字型码,将需要显示的数码管的选通COM端电路的控制打开,该位就显示出字形,没有选通的数码管就不会亮,通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功能更低、硬件电路也较静态显示简单。经方案对比和考虑设计要求和器件的限制,我组的课程设计采用的是共阳极数码管的动态显示。2 系统硬件电路 该系统硬件电路包括:单片机AT89C51、时钟电路、复位电路、电源电路、按键控制电路、计分电路、计时电路、报警电路。软件包括用Keil 进行C语言编程,用Prot

9、ues进行仿真,具体系统硬件结构框图如图2-1所示。按键控制电源电路复位电路时钟电路AT89C51计分电路计时电路报警电路鸣笛示警计分显示计时显示图2-1 篮球赛计分器的硬件结构框图(一)元器件的选择本设计主要选择了以下元器件:如表2-2所示:元器件名称所属类所属子类AT89C51(单片机)Microprocessor ICs8051 Family7SEG-MPX4-CA-BKUEOptoelectrionics7-Segment-Display7SEG-MPX4-CAOptoelectrionics7-Segment-DisplaySW-SPDTSwitchs&RelaysMiscellan

10、eous74LS247TTL 74LSseriesAllSub-CategoriesMINRES4.7K(电阻4.7K)ResistorsAllSubBUTTONAll-CategoriesAllSub-Categories7404TTL 74LSseriesAllSub-CategoriesSOUNDERSpeakers&soundersAllSub-Categories表2-2 元器件列表(二)单片机AT89C51简介:AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性

11、能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2-3所示图2-3 AT89C51外形及引脚排列主要特性:与MCS-51 兼容4K字节可编程FLASH存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存

12、储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路管脚说明:VCC:供电电压。GND:接地。P0口:P0口的8位皆为漏极开路输出简称OD;内部无上拉电阻,所以执行输出功能时,外部必须接上拉电阻;若要实现输入功能,必须先输入高电平“1”,才能读取该端口所连接的外部数据;若系统连接外部存储器,则P0可作为地址总线和数据总线的多功能引脚,此时内部具有上拉电阻,无需外接上拉电阻。P1口:P1口为8位,可位寻址的双向I/O口;内部具备约30千欧姆的上拉电阻,实现输出功能时,不需要连接外部上拉电阻;实现输入功能时,必须先

13、输入高电平“1”,才能读取该端口所连接的外部数据;P1口的8位类似漏极开路输出,但内部已接上上拉电阻,每个引脚可驱动4个LS型TTL负载。P2口:P2口为8位、可位寻址的双向输入/输出口,内部具备约30千欧姆的上拉电阻,实现输出功能时,不需要连接外部上拉电阻;实现输入功能时,必须先输入高电平“1”,才能读取该端口所连接的外部数据;P2口的8位类似漏极开路输出,但内部已接上上拉电阻,每个引脚可驱动4个LS型TTL负载;若系统连接外部存储器,而外部存储器的地址线超过了8根时,则P2可作为地址总线(A8-A15)的引脚。P3口:P3口为8位,可位寻址的双向I/O口;内部具备约30千欧姆的上拉电阻,实

14、现输出功能时,不需要连接外部上拉电阻;实现输入功能时,必须先输入高电平“1”,才能读取该端口所连接的外部数据;P3口的8位类似漏极开路输出,但内部已接上上拉电阻,每个引脚可驱动4个LS型TTL负载。P3口也可作为AT89C51的一些特殊功能口,如下表2-4所示:I/O口备选功能/特殊功能P3.0/RXD串行输入口P3.1/TXD串行输出口P3.2/外部中断0P3.3/外部中断1P3.4/T0计时器0外部输入P3.5/T1计时器1外部输入P3.6/外部数据存储器写选通P3.7/外部数据存储器读选通表2-4 AT89C51的一些特殊功能口RST:复位信号。当振荡器复位器件时,要保持RST脚两个机器

15、周期的高电平时间,用以完成单片机的复位初始化操作。ALE/:地址锁存控制信号。在系统扩展,访问外部存储器时,ALE用于控制把P0口输出的低8位的地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出脉冲,因此可作为外部时钟或者外部定时脉冲使用。ALE只有在执行MOVX,MOVC指令时,ALE才起作用。:外部程序存储器读选通信号。在读外部ROM时,有效(低电平有效),以实现外部ROM的读操作。在具体应用时,外部ROM读取时,在每个机器周期会动作两次,外部RAM读取时,两个信号被跳过不会输出。/VPP:访问程序存储控制信号。当信号保持低电平时,对ROM的读操作仅仅限

16、定在外部程序存储器,当信号为高电平或者悬空时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(三)晶振电路设计:图2-5晶振电路图晶振,就象是单片机的核心部件,提供时钟激励,保证单片机内部和外部电路的时序逻辑电路协调动作。(四)复位电路的设计:图2-6 复位电路图复位一般可用上电复位、按键复位两种方式完成,我们采用按键复位,根据元器件的要求时间常数,可以选定电容和电阻的规格。(五)按键控制模块键盘往往分成编码键盘和非编码键盘,编码键盘由按键和键处理电路组成,直接为计算机提供经过编码的按

17、键键码;而非编码键盘则只提供按键,其余由计算机自己处理。非编码键盘结构简单,可自由裁量设计,非常适用于单片应用系统。1.按键特性与抖动处理按键是一种机械弹性开关,当键按下时闭合,松开时断开。因为有机械的接触,在触点闭合或断开的瞬间会出现电压抖动。为了避免键输入错误,必须进行键抖动的处理。去抖动由硬件和软件两种方法:硬件方法就是在键盘中附加去抖动电路消除抖动;而软件方法则是采用时间延迟以躲避抖动,待触点状方法处理。2.键盘接口及功能非编码键盘是所用按键组成的集合。为了保证键盘的正确输入,键接口必备以下功能:(1)键扫描与识别,判断有无键按下以及按键位置,键扫描与识别是通过“行扫描”与“列状态”的

18、配合来确定是否有键按下以及所在行、列的位置。所谓行扫描就是一次给每条行线送低电平,而其余各行线送高电平,并检测对每一行扫描时所产生的列状态。键盘扫描有下列三种方式:程控扫描方式:只有单片机空闲时才调用扫描程序响应用户键入请求。定时扫描方式:单片机定时调用扫描程序对键盘进行扫描,即时响应用户键入请求。中断扫描方式:与中断请求电路配合,当有键按下时产生中断请求,由单片机响应并执行中断服务程序扫描键盘。(2)去键抖动消除按键抖动带来的误输入。检测键关闭后,延时10ms后再检测一次,两次检测相同再进一步进行键处理。(3)键编码生成易于处理的键码。由于键位码比较零乱,因此接下来的工作是根据需要把反映闭合

19、键和键位置的键位码换乘反映键功能的键码。有了键码,才好通过散转指令把程序执行到闭合键所对应的服务程序上去。键码既可以根据键位码查询表求得,也可以根据键码编排规律计算得到。(4)等待键释放为了保证键一次闭合仅进行一次处理,编键码之后,再以延时扫描的方法等待键释放。键释放后键处理工作完成。 本系统设计除复位按键外共配置了8个独立键盘来实现系统功能的控制。8个按键分别为KEY1(A队加一键)连接到P3.0,KEY2(A队减一键)连接到P3.1,KEY3(B队加一键)连接到P3.4,KEY4(B队减一键)连接到P3.5,AB转换(上下半场换场时切换比分,连接到P3.3)、start(开关,连接到P3.

20、7)、蜂鸣器开关(连接到P3.2)计时器十分位控制(连接到P1.6) ,计时器分位控制(连接到P1.7) 本设计中主要采用独立按键,按键扩展电路如图2-7图2-7 独立按键扩展电路(六) 数码管显示模块本设计的计时、计分功能的显示均采用共阳数码管显示。我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阳极和共阳极两种类型,其实共阳极就是将八个LED的阳极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阴极就是将八个LED的阴极连

21、在一起。其原理图如图2-8: 引脚图 共阳极 共阴极图2-8 共阴极和共阳极八段数码管原理图其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0

22、xc0。可以看出两个编码的各位正好相反。如下图:共阴示例共阳示例图2-9 共阴极和共阳极八段数码管显示举例(七)蜂鸣器警示模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在比赛结束时,蜂鸣器自动响,再通过按键关闭它。其扩展电路如图:图2-10 蜂鸣器扩展电路图(八)BCD七段数码管驱动/译码器常用的BCD对七段显示器译码器/驱动器的IC包装设计有TTL之7446、7447、7448、7449与CMOS之4511等。其中7446、7447必须使用共阳极七段数码显示器,7448、744

23、9、4511等则使用共阴极七段显示器。74LS247的功能用于将BCD码转化成数码块中的数字,通过它解码,可以直接把数字转化为数码管的显示数字,从而简化了程序,节约单片机的I/O开销,因此是一个非常好的芯片。74LS247的引脚如下图2-11所示:图2-11 74LS247引脚图引脚的功能:(1)A、B、C、D为输入端,abcdefg为输出端。当输入DCBA=0010时,则输出abcdefg=0010010,使数码管显示“2”;当输入DCBA=0110时,则输出abcdefg=1100000,使数码管显示“6”;关系如表2-12所示: 输入D C B A输出F(a) F(b) F(c) F(d

24、) F(e) F(f) F(g)字形0 0 0 01 1 1 1 1 1 000 0 0 10 1 1 0 0 0 010 0 1 01 1 0 1 1 0 120 0 1 11 1 1 1 0 0 130 1 0 00 1 1 0 0 1 140 1 0 11 0 1 1 0 1 150 1 1 01 0 1 1 1 1 160 1 1 11 1 1 0 0 0 071 0 0 01 1 1 1 1 1 181 0 0 11 1 1 1 0 1 19 表2-12 BCD七段译码真值表(2)LT、RBI与BI/RBO为控制引脚,其功能分述如下:74LS247电路是由与非门、输入缓冲器和七个与或

25、非门组成的BCD7段译码器/驱动器。7个与非门和一个驱动电路成对连接,以产生可用的BCD数据及其补码至7个与或非译码门。剩下的与非门和3个输入缓冲器作为试灯输入(LT)、灭灯输入/动态灭灯输出(BI/RBO)以及动态灭灯输入(RBI)端。该电路接受4位二进制编码十进制数(BCD)输入并借助于辅助输入端状态将输入数据译码后去驱动一个七段显示器。输出结构设计能承受7段显示器所需要的相当高的高压,驱动显示器各段所需要的高达24mA的电流可以由其高性能的输出晶体管来直接提供。BCD输入计数9以上的显示图案是鉴定输入条件的唯一信号。该电路有自动前、后沿灭零控制(RBI和RBO)。试灯(LT)可在端处在高

26、电平的任何时刻去进行,该电路还含有一个灭灯输入(BI)。它用来控制灯的亮度或禁止输出。1)需要0-15的输出功能时,灭灯输入(BI)必须为开路或者保持在高电平状态,若不要灭掉十进制零,则动态灭灯输入(RBI)必须开路或者处于高电平状态。2)当低电平直接加到灭灯输入(BI)时,不管其他任何输入端的电平如何,所有段的输出端都关死。3)当动态灭灯输入(RBI)和输入端A、B、C、D都处于低电平而试灯输入(LT)为高电平时,则所有段的输出端进入关闭且动态灭灯输出(RBO)处于低电平状态。4)当灭灯输入/动态灭灯输出(BI/RBO)开路或者保持在高电平状态,且将低电平加到试灯试灯输入(LT)时,所有段的

27、输出都得打开。注:BI/RBO是用做灭灯(BI)与/或动态灭灯输出(RBO)的线与逻辑。(九) 计分显示屏的设计图图2-13 计分显示屏的设计图图2-14 倒计时计分显示屏的设计图 3 系统软件设计篮球赛计时计分系统的软件设计部分采用模块化程序设计,程序部分由主程序、计时计分刷新显示程序模块、数码管显示记录程序模块等组成。51单片机内部有两个16位可编程的定时器/计数器,分别称为定时器/计数器0和定时器/计数器1,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。特殊控制器有工作方式控制寄存器(TMOD),定时/计数器控制寄存

28、器(TCON),中断允许控制寄存器IE。定时/计数器的核心是的16位加法计数器,定时器T0的加法计数器用特殊功能寄存器TH0、TL0表示,TH0表示加法计数器的高8位,TL0表示加法计数器的低8位。TH1和TL1则分别表示定时/计数器T1的高8位和低8位。它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它们用于存放定时或计数的初始值。此外,内部还有一个8位的工作方式寄存器TMOD和一个8位的控制寄存器TCON,用于选择和控制定时/计数器的工作。这些寄存器可根据需要由程序读写。当然16位加法计数器的输入端每输入一个脉冲,16位加法计数器的值自动加1,当计数器的计数值超过加法计数器字长

29、所能表示的二进制数的范围而向第17位进位,即计数溢出时,置位定时中断请求标志,向CPU申请中断。1、工作方式寄存器TMODTMOD用于控制T0和T1的工作方式,其格式如表3-1所示:位D7D6D5D4D3D2D1D0位符号GATEC/M1M0GATEC/M1M0门控开关计数/定时方式选择门控开关计数/定时方式选择T1方式字段T0方式字段表3-1 方式控制寄存器TMOD各位定义如下:M1,MO:工作方式控制位,可构成表3-2所示四种工作方式:M1M0工作方式说明00013位定时器;01116位计数器;102可自动再装载的8位计数器;113T0分成两个独立的8位计数器表3-2 方式控制寄存器TMO

30、D的工作方式C/:计数工作方式/定时工作方式选择位。置0时,设置为定时工作方式;置1时,设置为计数工作方式。GATE:门控位,用以决定是由软件还是硬件启动/停止计数。GATE=0, /被封锁,只要用软件对TR0(或TR1)置“1”就启动了定时器;GATA=1时,定时器/计数器的计数受外部引脚输入电平的控制。TMOD的所有位在复位后清0。TMOD不能位寻址,只能按字节操作设置工作方式。2、定时/计数控制寄存器TCONTFl,TRl,TF0和TR0位用于定时器计数器;IEl,ITl,IE0和IT0位用于中断系统。其格式如表3-3所示:位D7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0

31、IE1IT1IE0IT0表3-3 控制寄存器TCON各位定义如下:TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。TF0:定时器0溢出标志。其功能及操作情况同TF1。TR0:定时器0运行控制位。其功能及操作情况同TR1。IE1:外部中断1请求标志位。IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下

32、降沿触发方式。IE0:外部中断0请求标志位。IT0:外部中断0触发方式选择位。 当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。TCON中低4位与中断有关。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。3、 声音的产生我们知道,声音的产生是一种音频振动的效果。振动的频率越高,则为高音;振动的频率越低,则为低音。声音的频率范围为20Hz-200kHz之间,人类耳朵比较容易辨识的声音频率范围是200Hz-20kHz,一般音响电路是用正旋波信号驱动喇叭,从而产生悦耳的音乐;在数字电路里,则是用数字脉冲信号驱动喇叭,从而产生声音。若要AT89C51产生

33、声音,可利用程序来控制单片机某个I/O口的“高”电平或者“低”电平,则在该I/O口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”、“低”电平的持续时间,就能改变输出频率,从而改变音调。系统主程序流程图如下:停止比赛结束读取功能键等待按键释放N比赛开始,并初始化YYN读P3口的值取出P3.6启动按键是否按下去抖确认是否有按键按下B队加1分B队减1分NY将BCD码转化为7段码显示出来,并确认比赛是否结束将当前的分数转化为BCD码确认按下的是哪个键鸣笛休息A队减1分A队加1分图3-4 主程序流程图系统按键部分流程图: 开始YKey4=0? 初始化定时器N 比

34、赛开始 设定比赛时间 B减一分Y时间到?Key1=0?NN A队加一分YY 蜂鸣器响Key2=0?NKey=0?开始Y A队减一分YYY 关闭蜂鸣器NKey3=0? 结束Y B队加一分图3-5 按键部分流程图(一)在主程序循环中,主要工作是扫描是否有键按下,若有键按下则要确认是哪个键按下并做相应的处理,并做同步显示处理。void main(void)TMOD=0x01; /设置T0为工作方式1,作为16位计数器TH0=(65535-50000)/256; /设置T0的高8位,并且T0的计数值为50msTL0=(65535-50000)%256; /设置T0的低8位music=0; /初值喇叭不

35、响EA=1; /开放所有中断ET0=1; /允许定时/计数器T0溢出中断EX0=1; /允许外部中断0IT0=1; /设置外部中断0为边沿触发方式(下降沿)while(1) /无穷循环,程序一直运行Key_Y(); /预置场次比赛时间if(Star=0&f!=0&Puse!=0) /按下“开始键”,设置好比赛时间,并且未按“停止”键时,比赛正式开始TR0=1; /启动定时器T0,开始计时Key_if(); /开始计分 elseTR0=0; /比赛还未开始或比赛结束时间到,停止计时Js_Jf_Scan(); /将相应的分数、时间同步进行显示(二)时间显示设计系统要实现时间的计时功能,所以要用定时

36、/计数器的定时功能进行时间处理,在本程序设计中,用一个定时50ms的时间中断函数void Js_50ms(void),一个时间处理函数void Ptime(uchar)。由于时间显示屏用的是4位的数码管进行显示,用动态扫描显示驱动,用void Js_Scan(void)处理动态扫描显示。时间预置用按键实现,首先进行按键判断处理,用void Key_Y(void)函数处理。嵌入式篮球计分屏实现时间显示屏的部分源程序如下:/*设置场次比赛时间*/void Key_Y(void)if(YK1=0) /初始状态,分钟的十位为0delay(1); /延时去抖动fs=fs+1; /分十位加1分fy=fs*

37、10+fg; /求出预置时间的分钟值f=fy; /中间变量if(YK2=0) /初始状态,分钟的个位为0delay(1); /延时去抖动fg=fg+1; /分个位加1分fy=fs*10+fg; /求出预置时间的分钟值f=fy; /中间变量Js_Scan();/*T0中断服务函数,每隔50ms产生一次中断*/void Js_50ms(void)interrupt 1 using 1 /定时器T0中断,用工作寄存器组1 TH0=(65535-50000)/256; /定时器T0的高8位TL0=(65535-50000)%256; /定时器T0的低8位num+; /每50ms累加一次Ptime(nu

38、m); /调用时间处理函数/*时间处理函数*/void Ptime(uchar time) if(time=20) /如果为1s(50ms*20=1s)num=0;m+; /每到1s,计时器累加1次ms=m/10; /秒的十位 mg=m%10; /秒的个位if(m=60) /如果为1minm=0; /秒钟置0 mg=m%10; /秒钟的个位置0ms=m/10; /秒钟的十位置0f-; /分钟开始在预设的比赛时间基础上倒计时fs=f/10; /分钟的十位fg=f%10; /分钟的个位if(f=0) /分钟数倒计时到0TR0=0; /时间到,停止计时/*数码管动态扫描显示*/void Js_Sca

39、n(void)uchar j;for(j=0;j=5;j+)S4=0;P0=LED_Nummg;delay(1);S4=1; /*将秒钟的个位传递给译码器,通过按键,实现边沿跳变,并把结果译成相应的段码显示出来*/S3=0;P0=LED_Numms;delay(1);S3=1; /*将秒钟的十位传递给译码器,通过按键,实现边沿跳变,并把结果译成相应的段码显示出来*/S2=0;P0=LED_Numfg;delay(1);S2=1; /*将分钟的个位传递给译码器,通过按键,实现边沿跳变,并把结果译成相应的段码显示出来*/S1=0;P0=LED_Numfs;delay(1);S1=1; /*将分钟的

40、十位传递给译码器,通过按键,实现边沿跳变,并把结果译成相应的段码显示出来*/(三)计分显示设计本系统是利用按键来实现两队的计分功能的,当按一次加分键,在程序中要用两个整形的变量作为A、B队的分值计分器,程序里用sum及sum1分别表示B和A队的分值。如分别要在数码管的每位上动态扫描显示出来,就必须对两队所得的分数进行分位计算。程序里分别用q、b、s、g表示B队显示屏的千位、百位、十位、个位;用q1、b1、s1、g1表示A队显示屏的千位、百位、十位、个位。通过按键判断处理,判断是加分还是减分,用函数void Key_if(void)来实现,用void Jf_Scan(void)函数进行动态扫描显

41、示分值。嵌入式篮球计分屏计分显示的部分实现程序如下:/*数码管动态扫描显示*/void Jf_Scan(void)uchar j;for(j=0;j=1) /减分按键按下并且中得分不得少于1分delay(1); /延时去抖动sum=sum-1; /B队减1分if(Key3=0) /当按键按下时delay(1); /延时去抖动sum1=sum1+1; /A队加1分 if(Key4=0 & sum1=1) /减分按键按下并且中得分不得少于1分delay(1); /延时去抖动sum1=sum1-1; /A队减1分q=0; / A队分值的千位默认为0b=sum/100; /求出A队分值的百位s=sum

42、/10-b*10; /求出A队分值的十位g=sum%10; /求出A队分值的个位q1=0; / B队分值的千位默认为0b1=sum1/100; /求出B队分值的百位s1=sum1/10-b1*10; /求出B队分值的十位g1=sum1%10; /求出B队分值的个位(四)鸣笛器设计声音的频率范围约在几十到几千赫兹,利用程序来控制单片机的P1.4口线的“高”电平或者“低”电平,在该口线上产生一定频率的矩形波,街上喇叭就能发出一定频率的声音,通过延时程序控制“高”、“低”电平的持续时间,就能改变输出频率,从而改变音调。要使喇叭出声,就要给P1.4引脚上不同频率的电平信号,如果我们要想喇叭发出“嘀嗒”

43、、“嘀嗒”的鸣笛声,只要给P1.4脚的高低电平延时不同即可。当P3.2脚上的按键按下,就开始鸣笛,鸣笛的长短用循环值控制。判断鸣笛按键是否按下即P2.3脚上有没有低电平,当键按下,就鸣笛。本程序用void sound(void)来处理鸣笛。嵌入式篮球计分屏鸣笛报警的部分实现程序如下:/*鸣笛处理*/void sound(void) interrupt 0 using 0 /外部中断0(),用工作寄存器组0uchar i,j;if(Int_key=0) /判断鸣笛键是否按下,有按下就鸣笛for(i=0;i8;i+) /控制一种发音的时间for(j=0;j250;j+) /控制发音的频率,延时长,

44、频率低些,音低music=music; /取反delay1(1); /延时去抖动for(i=0;i16;i+) /控制另一种发音的时间 for(j=0;j250;j+) /控制发音的频率,延时短,频率高些,音高 music=music; /取反delay(1); /延时去抖动elsemusic=0; /喇叭不响本节对嵌入式篮球计分屏的软件部分进行了详细设计并详细介绍了本次设计所涉及到的原理,包括单片机的定时/计数原理和声音的产生原理,单片机的定时/计数功能可以实现比赛双方的计分和计时功能,利用发音原理可以实现本设计的鸣笛警示功能。4 系统调试与结果分析在数码管模块的设计时我们组忽略了P0口接负

45、载是需要有上拉电阻来提高I/O口带负载的能力,以至于所有数码管均不工作,在老师的帮助下我们及时的加入上拉电阻,使数码管工作,在设计过程中我们应用了一个译码器来对单片机的I/O口进行扩展。在软件调试部分我们的数码管倒计时部分总是不能正常工作,倒计时总是正着计时,我们组通过讨论对送显的数字个位进行取余操作才使数码管正常工作。在按键环节的设计中我组只注重了硬件防抖而没有在软件部分进行操作致使设计的系统很不稳定,在老师的帮助下我组又队软件部分进行防抖和延时操作,这样才使得系统稳定的运行。图4-1 计分模块仿真原理图 图4-2 比分互换模块仿真原理图图4-3 计时器模块仿真原理图图4-4 蜂鸣器模块仿真

46、原理图5 结论本设计对嵌入式篮球计分屏的软件部分和硬件部分进行了详细设计并详细介绍了本次设计所涉及到的原理,包括单片机的定时/计数原理和声音的产生原理,单片机的定时/计数功能可以实现比赛双方的计分和计时功能,利用发音原理可以实现本设计的鸣笛警示功能。通过以上的叙述本次设计的核心部分基本完成。在本次设计中我组学到了很多,同时也看到了自身的不足,我们不能很好的把学到的知识应用于实践中,在实践过程中遇到问题不知如何解决,缺乏自学能力等各种不足。在本次设计中我们学到了好多,对单片机有了更进一步的认识,对所学过的C语言数字电子和模拟电子作了很好的复习工作。在今后的学习过程中我组应更加注重理论联系实际。更

47、好的把所学的知识运用到生活实践中。在设计的过程中,不可避免地遇到了很多问题,发现了自己的很多不足,自己掌握的知识很多都是一知半解,实践经验及动手能力也比较薄弱,理论联系实际的能力还急需提高,不管是在程序设计阶段还是在仿真调试阶段都出现了很多错误。我觉得以前不够努力,不够专心,才会有“书到用时方恨少”的体会,经过这次设计我学到了很多知识,同时也端正了自己的学习态度。我曾经因为对单片机的了解不是很多,因为实践经验的缺乏,对此次设计没有半点信心,但也曾因为仿真成功而热情高涨。我想,生活就是这样,汗水预示着结果也见证着收获,劳动是人类生存永恒不变的话题。平心而论,这次设计花了我很多时间,耗费了很多心血

48、,甚至有过恐慌,做不出来怎么办。虽然很辛苦,但是学到了很多,我觉得很值。这是我们迈向社会,从事职业工作前一个必不可少的过程,“实践出真知”,通过此次设计,我认识到只有理论联系实际,多学习新知识,巩固旧知识,温故而知新。参考文献:1王守中51单片机开发入门与典型实例M北京黄炎,200768-1262徐爱钧.单片机原理实用教程M. 第二版北京索蓉霞,20113-1683蔡明文.单片机课程设计M. 北京余文君,20072-1204篮何慧.电子竞赛单片机用用精讲M. 北京万隆,200916-355宏晶科技.AT89C51D单片机用户手册6谷树忠.protel2004实用教程M北京曲鑫,201230-2

49、75附录一:protel原理图图F1-1 protel原理图附录二:protel PCB板图图F2-1 protel PCB板图附录三:protues电路图图F3-1 protues电路图图F3-2 protues原理仿真图附录四:程序源代码 系统完整源程序代码#include #define uchar unsigned char#define uint unsigned intvoid delay(uchar x); /延时(时间较短)void delay1(uchar x); /延时(时间较长)void Js_Jf_Scan(void); /数码管动态扫描显示函数void Key_if(

50、void); /A、B两队分值处理函数void Js_50ms(void); /定时50ms中断函数void Key_Y(void); /预置时间函数void Ptime(uchar); /时间处理函数void sound(void); /鸣笛警示函数sbit CL1=P20; /B队4位计分数码管位控线sbit CL2=P21;sbit CL3=P22;sbit CL4=P23;sbit KL1=P24; / A队4位计分数码管位控线sbit KL2=P25;sbit KL3=P26;sbit KL4=P27;sbit S1=P13; /驱动4位计时数码管位控线sbit S2=P12;sbit S3=P11;sbit S4=P10;sbit YK1=P16; /预置分钟的十位sbit YK2=P17; /预置分钟的个位sbit music=P14; /P1.4接喇叭,发声,鸣笛sbit Key1=P30; /B队加分键sbit Key2=P31; /B队减分键sbit Key3=P3

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!