基于单片机的篮球计分器设计

一、设计内容

基于单片机的篮球计分器设计

设计内容:
1、设计 LCD 显示篮球比分牌 ,通过加分按钮可以给 A 队或 B 队加分;
2、设计对调功能, A 队和 B 队分数互换,意味着中场交换场地;
3、显示比赛倒计时功能;
4、创新内容:如显示第几小节。

二、总体设计

本设计以单片机 AT89C52为控制核心, 采用模块化设计, 共分以下几个功能模块:单片机控制系统模块、 电源模块、 蜂鸣器模块、 复位模块、 按键控制模块和LCD显示模块等。篮球计分器主要有每小节、比赛倒计时和A、B两队分数实时加分显示和场地交换等基本功能。整体的系统框架图如下图2.1所示:

图2.1 系统结构设计框图

各模块功能如下:

  1. AT89C52单片机:洗衣机控制系统的核心控制器件。
  2. 晶振电路模块:产生时钟信号驱动单片机工作。
  3. 复位电路模块:将单片机的寄存器重定,使程序指针回到最初位置。以便于系统运行报错是,此时按下复位按键,程序能从最初位置开始执行。
  4. LCD显示模块:显示模块电路采用LCD液晶显示屏与单片机相连,利用 C 语言程序设计实现每小节、比赛倒计时和A、B两队分数实时加分和场地交换的显示功能。
  5. 按键模块:控制输入实现比赛开始\暂停、AB两队加分、比赛节数加1、交换场地等功能。

三、单元电路设计

3.1单片机最小系统

单片机最小系统又称为最小应用系统,即用最少的元器件组成单片机可以工作的系统。一般应包括:电源、单片机、晶振电路、复位电路等。

以 AT89C52 单片机为核心,选用12MHZ的晶振,由于晶振的频率越高,单片机的运行速度就越快,但考虑到单片机的运行速度快会导致对存储器的要求就会变高,因此 12MHZ 晶振为最佳选择。外接电容的值虽然没有严格的要求,但是外接电 容的大小会影响振荡器的频率高低、振荡器的稳定性和起振的快速性,因此我们选用30pF的电容作为起振电容。复位电路为按键高电平复位,当按键按下,RES端为高电平,当高电平持续4us的时间就可以使单片机复位。如图3.1所示为单片机最小系统图。 

图3.1单片机最小系统图

AT89C52单片机是一种高效微控制器, 也是低功耗高性能单片机。 单片机是本设计的核心主要起控制作用, 采用 40 引脚双列直插封装形式, 32 个外部双向输入/输 出(I/O)埠, 同时内含 2 个外中断口, 2 个 16 位可程序设计定时计数器, 2 个全双工串行通信口,因为受引脚数目 的限制, 所以有不少引脚具有第二功能。外形及引脚排列如下图所示。

AT89C52单片机的主要管脚功能:

VCC: 供电电压。    GND: 接地。

 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口, 每脚可吸收 8TTL 门电流。 当 P1 口的管脚第一次写 1 时, 被定义为高阻输入。 P0 能够用于外部程序数据存储器, 它可以被定义为数据/地址的第八位。

P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口, P1 口缓冲器能接收输出4TTL 门电流。 P1 口管脚写入 1 后, 被内部上拉为高, 可用作输入, P1 口被外部下拉为低电平时, 将输出电流, 这是由于内部上拉的缘故。

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

P3 口: P3 口是 8 个带内部上拉电阻的双向 I/O 口, 可接收输出 4 个 TTL 门电流。当 P3 口写入 1 后, 它们被内部上拉为高电平, 并用作输入。 作为输入, 由于外部下拉为低电平, P3 口将输出电流(ILL) 这是由于上拉的缘故。 RST: 复位输入。 当振荡器复位器件时, 要保持 RST 脚两个机器周期的高电平时间。

ALE/PROG: 当访问外部内存时, 地址锁存允许的输出电平用于锁存地址的地位字节。 在 FLASH 程序设计期间, 此引脚用于输入程序设计脉冲。 在平时, ALE 端以不变的频率周期输出正脉冲信号, 此频率为振荡器频率的 1/6。 因此它可用作对外部输出的脉冲或用于定时目的。

PSEN : 外部程序内存的选通信号。 在由外部程序内存取指期间, 每个机器周期两次 PSEN 有效。 但在访问外部数据存储器时, 这两次有效的 PSEN 信号将不出现。

 EA/VPP: 当 EA保持低电平时, 则在此期间外部程序内存(0000H-FFFFH), 不 管是否有内部程序内存。 注意加密方式 1 时, EA将内部锁定为 RESET; 当 EA端保持高电平时, 此间内部程序内存。在 FLASH 程序设计期间, 此引脚也用于施加 12V 程序设计电源 (VPP)。

电源电路模块为系统电路和其他模块提供+5V 电源。 供电电源可由开关电源提供。

时钟电路模块的设计:

   由于 AT89C52单片机芯片内有时钟振荡电路, 因此本系统单片机采用内部时钟方式,只要在单片机的 XTAL1和 XTAL2引脚外接石英晶体和微调电容, 就构成了自激振荡器并在单片机内部产生时钟脉冲信号,具体电路设计如下图所示。  

工作原理:时钟信号通常用两种电路形式得到:内部振荡和外部振荡。 在 XTAL1 和 XTAL2 引脚上外接定时组件,就能构成自激振荡电路。定时组件通常采用石英晶体和电容组成的并联谐振电路。一般电容 C4 和 C5 主要起频率微调作用,电容值可选取为 30pF 左右或 40pF左右;晶体振荡器,简称晶振,其晶振频率(fosc) 范围为 1. 2MHz~12MHz, 本设计中选择12MHz。晶体振荡频率越高,系统的时钟频率也越高,单片机的运行速率就越快。

复位电路使单片机或系统中的其他部件处于某种确定的状态。 当在 MCS-51 系列单片的 RST 引脚处引入高电平并保持 2 个机器周期, 单片机内部就执行复位操作。 复位操作有两种基本形式:一种是上电复位, 另一位是按键复位。 本设计采用按键复位方式,如下图所示。

工作原理:当按下按键时, RST 直接与 VCC 相连,出现 2 个以上的高电平形成复位,同时电解电容被短路放电;按键松开时,电容充电,电流流过电阻,RST 为高电平,仍然是复位,充电完成后,电容相当于开路,RST 为低电平,正常工作。

3.2 LCD显示模块

在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要直观显示出来。本设计采用LCD液晶显示屏显示, 显示电路如图3-2所示:

LCD 液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快,界面友好等特点,可以方便的显示多种字符。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应的数据。P0口作为液晶显示的数据端口,与D0-D7连接。P2.0-P2.2口作为其控制端口,控制LCD液晶显示屏显示输出数据,与RS,RW,E,连接。本次课设LCD显示屏主要展现比赛节数、比赛倒计时和A、B两队分数的显示。 

图3-2  显示电路(LCD液晶显示屏)

LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示。

表1 引脚接口说明表

编号

  符号

引脚说明

编号

符号

引脚说明

1

GND

电源地

9

D2

数据

2

VCC

电源正极

10

D3

数据

3

V0

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

第1脚:GND为地电源。

第2脚:VCC接5V正电源。

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当它由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

3.3 按键控制模块

单片机设计中,按键设计很重要,常见的单片机按键设计分为独立式和行列式,独立式按键设计简单,但占用I/O口较多;行列式按键设计相对复杂, 占用 I/O 口较少。 如下图3-3所示。

图3-3按键控制电路

上图为按键控制电路,为方便使用,设计了5个独立式按键,分别为key_ST 开始/暂停键,key_A1 A队分数加1键,key_B1 B队分数加1键,key_EX 交换场地键,key_JS 比赛节数加1键。

key_ST :开始/暂停键,按下比赛开始或暂停。

key_A1 :每按下一次,A队分数加1。

key_B1 :每按下一次,B队分数加1。

key_EX :每按下一次,交换一次场地,同时两边分数调换。

key_JS :每按下一次,比赛节数加1,仅且仅当上一场比赛结束后方可使用。

3.4蜂鸣器模块

本设计中,当按下按键或者比赛结束蜂鸣器响,起提示的效果。 蜂鸣器电路设计如图3-4所示。

由于单片机直接输出的信号不足以驱动蜂鸣器的工作。因此,在单片机与蜂鸣器之间加一个 PNP 三极管作为驱动。三极管的基极通过一个 1K 欧的电阻与单片机相应的 I/O 相连,电源和蜂鸣器与发射极极相连,集电极接地。这样就完成了有源蜂鸣器的驱动电路。

图3-4蜂鸣器电路

四、系统仿真与测试

4.1软件调试

4.1.1 Protoeus8.9keil μVision5

本设计用Proteus 8.9软件作图,C语言对单片机进行控制操作,易读好懂,用Keil μVision5软件进行了调试。

4.1.2软件调试

调试成功界面:

4.2 Proteus仿真

使用Proteus绘制原理图,并将Keil编译生成得*.hex程序文件录入到AT89C52模拟单片机中,点击仿真,在LCD液晶显示屏上显示比赛节数、比赛倒计时和A、B两队分数。

4.2.1初始界面

 LCD显示进入调试初始界面,如图4-1所示。 

图4-1 仿真图初始状态显示

4.2.2 比赛界面 

 按下开始键后,显示比赛节数、比赛倒计时和A、B两队分数,如图4-2 : 

图4-2 

4.2.3 交换场地界面

倒计时结束,按下key_JS键进入下一节比赛,然后按key_EX键交换场地,如图4-3:

图4-3 交换场地后界面

4.2.4 下一次比赛界面

交换场地后进入下一节比赛,如图4-4:

图4-4 交换场地后界面

五、 完整源代码

 私信作者可获取完整源代码。

#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char

uchar code table[]=" Play baseketball!";//一场篮球比赛分为4小节
uchar code table1[]="Welcome to here!" ;
sbit key_ST=P3^0;		 //功能键(开始/暂停)ST:start开始
sbit key_A1=P3^1;		 //功能键(A队分数加1)
sbit key_B1=P3^2;		 //功能键(B队分数加1)
sbit key_EX=P3^3;		 //功能键(交换场地,A/B两队分数交换)EX:exchange 交换
sbit key_JS=P3^4;	 //功能键(比赛节数加1)JS:jieshu 节数
sbit beep=P1^0;			 //蜂鸣器
sbit lcdrs=P2^4;		 //LCD显示的数据/命令选择端
sbit lcden=P2^6;		 //LCD显示的使能信号

uchar flag,ms,mg,ss,sg,ags,agg,bgs,bgg,num,num1,num2,js=1,C,D,t,min=0,time_beep;
//js代表节数,C代表	A队得分,D代表 B队得分
int sec=20;//sec是second的缩写,秒

void delayms(uint xms)			//定义延时函数
{
	uint i,j;
	for(i=xms;i>0;i--)
		for(j=110;j>0;j--);
}

后面部分略。。。。。。

  • 40
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值