篮球记分牌方案
按键 k4
uchar code tab[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
void main()
{
uchar k1=0;
while(1)
{
if(P10 == 0)
{
k1 += 1;
分数加 1
while(P10 == 0);
}
if(P11 == 0)
同键盘一样,显示器也是人机交流的重要组成部分。计算机的运行结果和运行 状态可以通过显示器显示出来。单片机应用系统中常用的显示器有 LED 和 LCD 两种 方式。LED 显示最为普遍,发光二极管 LED(Light Emitting Diode)是一种通电后 能发光的半导体器件,其导电性质与普通二极管类似。LED 数码显示器就是由发光 二极管组合而成的一种新型显示器件,但是由于低功耗的要求,LCD 显示器越来越 被广泛地使用。
功能分析:
根据前面的设计的任务的要求,本设计任务主要具有以下几个模块:单片机模 块;按键模块;数码显示模块。本设计由单片机模块部分植入主程序,通过按键部 分进行加1、2、3分以及减1分操作,最终在2个LED数码管上显示结果。本系统采用 单片机98S51作为本设计的核心元件。利用七段共阴极LED数码管作为显示器件。在 此设计中共接入4个七段共阴极LED显示器,用于计录甲、乙两队的分数,每队2个LED 显示器显示范围可达到0~99分,足够满足赛程要求。其次,为了配合计时器和计分 器校正、调整时间和比分,我们在设计中设立了个按键。用于改变甲、乙两队的分 数.
显示部分:
本设计显示部分采用的是 7 段共阳 LED 数码管显示,LED 就是发光二极管,相 对 LET 来说它的优势在于节能环保,保护视力,使用寿命长等优点。数码管实际上 是由 7 个发光管组成 8 字形构成的,加上小数点就是 8 个。我们分别把他命名为 A,B,C,D,E,F,G,H,如图 3 所示。
控制源程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
初始化
sbit P10=P1^0;
按键 k1
sbit P11=P1^1;
按键 k2
sbit P12=P1^2;
按键 k3
sbit P13=P1^3;
g f gnd a b
dp
图 2.7 数码管的引脚结构图 e d gnd c 由图 2.7 可见,共阴极数码管内部发光二极管的阴极(负极)都联在一起,此数码管阴极(负极) 在外部只有一个引脚。
有了硬件的基础,软件部分就比较容易了,那就是根据硬件单位连接然后进行 软件的编写。在编写程序前首先要弄清显示器显示十六进制和空白字符与 P 的显示 段码,其中对应关系为 f~dp,如果要显示数字 0 的话那么其中 f~dp 相对应的数 码为(10000000),其段码表如表 3.1 所示。
P0 = tab[S1/100]; 百位
P3 = tab[S1%100/10]; 十位
P2 = tab[S1%10];
个位
}
}
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
初始化
sbit P10=P1^0;
按键 k1
图 1 数码管结构图
假设要显示一个数字 2, 那么 A、B、G、E、D 这 5 个段的发光管亮就可以了, C、F、H 不亮,同时由于接法为共阳接法,那么为低电平是亮,为高电平是灭。从 高往低排列, P1.7-P1.0 写成二进制为 01111110, 把它转化为 16 进制则为 A2H。
显示器及其接口:
图 2.6 共阴极数码管的内部结构
刚好与共阳极相反,如图 2.6 所示。对于共阴极 LED 显示器,当公共端接地时 (为 0 电平),而阳极 dp、g、f、e、d、c、b、a 各段位 01110011 时,显示“P”字 符,也就是说对于共阴极 LED 显示器,“P”字符的字形代码是 073H。
为了显示字符,要为 LED 显示器提供显示段码(或字形代码),组成一个“8” 字形字符的 7 段,再加上 1 个小数点位,共 8 段,因此提供给 LED 显示器的显示段 码为 1 的字符,各段码的对应关系如图 2.7 所示。
{
k1 += 2;
分数加 2
while(P11 == 0);
}
if(P12 == 0)
{
k1 += 3;
分数加 3
while(P12 == 0);
}
if(P13 == 0)
{
k1 -= 1;
分数减 1
while(P13 == 0);
}
if(k1 > 1000) 分数大于 999,归 0
k1 = 0;
第三周:动工组装,完成工作。
关键词:单片机,计分, 报警,显示 材料:
系统硬件主要是由单片机 89S51、计分显示电路和按键开关三个部分组成。 本系统在设计过程中主要选取了以下一些器件: 单 片 机: 89S51。 显示器件: 七段共阴LED显示器。 按 键: 独立式按键。 其中1D~7D为信号输入,其中1Q~7Q为信号输出COM为公共端,GND为接地端。
sbit P11=P1^1;
按键 k2
sbit P12=P1^2;
按键 k3
sbit P13=P1^3;
按键 k4
uchar code tab[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
void main()
{
uchar k1=0;
while(1)
{
if(P10 == 0)
{
k1 += 1;
分数加 1
while(P10 == 0);
}
if(P11 == 0)
{
k1 += 2;
分数加 2
while(P11 == 0);
}
if(P12 == 0)
{
k1 += 3;
分数加 3
while(P12 == 0);
}
if(P13 == 0)
{
图 2 系统程序流程图
7
F8H
07H
空白
FFH
00H
8
80H
7FH
P
8CH
73H
单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循 环状态,在这种情况下都需要复位。复位的作用是使中央处理器CPU以及其他功能部 件都恢复到一个确定的初始状态,并从这个状态重新开始工作。
89C51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效, 在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。复位后, PC程序计数器的内容为0000H,其他特殊功能寄存器的复位状态如表3.3所示。片内 RAM中内容不变。复位电路一般有上电复位、手动开关复位和自动复位电路3种,如 图3.3所示。
LED 数码管显示器是由若干个发光二极管组成的,当发光二极管导通时,相应 的点或线段发光,将这些发光二极管排成一定的图形,控制不同组合的二极管导通, 就可以显示出不同的字形和符号。单片机系统中常用的 LED 显示器为七段显示器, 再加上一个小数点,因此也可以把它称之为八段数码管显示器。其机构形式有共阴 极和共阳极两种。共阴极是把所有组成八段数码管的发光二极管的阴极连在一起, 通常接地,通过控制每一只发光二极管的阳极电平来使其发光或熄灭,阳极为高电 平则发光,阳极为低电平则熄灭;共阳极是把组成八段数码管的所有发光二极管的 阳极连起来,通常为高电平(如+5V),通过控制每一只发光二极管的阴极电平的高 低来使其发光或是熄灭,阴极为低电平发光,为高电平则熄灭。图中的 com 端在应 用的时候可以作为位选端,8 只发光二极管被分成两组所以有两个 com 端,在使用 的时候它们并联起来。
表 3.1 十六进制数及空白字符与 P 的显示段码
字型 共阳极段码 共阴极段码 字型 共阳极段码 共阴极段码
0
C0H
3FH
9
90H
6FH
1
F9H
06H
A
88H
77H
2
A4H
5BH
B
83H
7CH
3
B0H
4FH
C
C6H
39H
4
99H
66H
D
A1H
5EH
5
92H
6DH
E
86H
79H
6
82H
7DH
F
84H
71H
记分牌方案设计
前言:
鉴于院里的篮球赛没有计分牌,决定做一个篮球计分牌使院篮球赛更顺利的进 行。本次设计的篮球计时计分器,电路简单,而且易懂,使操作使用者使用非常方 便,成本较低,灵敏可靠,计录准确,连接简单,具有非常高的实用价值。
设计任务要求:
本设计以基本篮球规则为依据,可对篮球比赛实现实时控制。设计主要为记分 器部分,记分器记录两队的积累分数。两位数码管显示比分,可加可减。针对篮球 比赛中有得 1、2、3 分,有时还会出现加分错误的情况,本人设计的简易篮球赛计 分器主要通过按键实现以下功能:能够进行加 1、2、3 分;能够进行减 1 分,并通 过 2 个数码管进行显示。
k1 -= 1;
分数减 1
while(P13 == 0);
}
if(k1 > 1000)
分数大于 999,归 0
k1 = 0;
P0 = tab[S1/100];