51单片机篮球计分器毕业论文
51单片机篮球计分器毕业论文
1.1背景知识介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。例如,80C51系列单片机已有十多年的生命期,如今仍保持着上升的趋势,就充分证明了这一点。单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。而美国ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。他不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51就是其中典型的代表。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影。 单片机是靠程序实现功能的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件的话,电路一定是一块大PCB板。但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别。只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性。1.2 设计意义 单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智能性(我们只要编写不同的程序后就能够完成不同的控制工作),单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对MCS-51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,并且可以在将来的工作和学习中加以应用。1.3 设计目的 随着单片机在各个领域的广泛应用,许多用单片机做控制的球赛计时计分系统也应运而产生,如用单片机控制LCD液晶显示器计时计分器,用单片机控制LED七段显示器计时计分器等。本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。它具有价格低廉,性能稳定,操作方便并且易于携带等特点。广泛适合各类学校或者小型团体作为赛程计时计分。通过本次基于C51系列篮球计时计分器的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面:(1) 篮球赛计时计分系统包含了8051系列单片机的最小应用系统的构成,同时在此基础上扩展了一些使用性强的外围接口。(2) 可以了解到LED显示器的结构、工作原理以及这种显示器的接口实例与具体连接与编程方法。(3) 怎样利用串行口来扩展显示接口等。
51单片机实现篮球记分牌
我认为输入可以用按钮键盘,用于加分,比如加1分按1键,3分按3键,减分另设键盘,这个你可以自己设计,应该用到的键格不多,键盘可以采用中断扫描的方法查询键值,如果条件允许就直接用按键输入就行,这样编程简单。至于数码管那只能用简单的符号表示队名比如u表示正队,n表示反队。应该用到两个三位的数码管就行。显示可采用动态显示,如果有六个寄存器,完全可以采用静态显示,这样编程很简单。我认为自己焊板子更好,想怎么搞就怎么搞,只是注意一下ISP烧录程序的电路。不会很麻烦,多琢磨一下吧!
单片机篮球比赛计时器课程设计 要求 24秒到计时,计两队得分
篮球比赛24秒倒计时器的设计
设计制作一个篮球竞赛计时系统,具有进攻方24秒倒计时功能,具体设计要求如下:
1、具有显示 24s 倒计时功能:用两个共阴数码管显示,其计时间隔为1s。 2、设置启暂停/继续键,控制两个计时器的计数,暂停/继续计数功能。 3、设置复位键:按复位键可随时返回初始状态,即进攻方计时器返回到24s。 4、计时器递减计数到“00”时,计时器跳回“24”停止工作,并给出声音和发光提示,即蜂鸣器发出声响和发光二极管发光 前言
电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
在许多领域中计时器均得到普遍应用,诸如在体育比赛,定时报警器、游戏中的倒时器,交通信号灯、红绿灯、行人灯、交通纤毫控制机,还可以用来做为各种药丸、药片,胶囊在指定时间提醒用药等等,由此可见计时器在现代社会的应用是相当普遍的。
在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就违例了。本课程设计“智能篮球比赛倒计时器的设计”,可用于篮球比赛中,用于对球员持球时间24秒限制。一旦球员的持球时间超过了24秒,它自动的报警从而判定此球员的违例。
本设计主要能完成:显示24秒倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为24秒递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。
1.1基本原理
24秒计时器的总体参考方案框图如图1所示。它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路(简称控制电路)等五个模块组成。其中计数器和控制电路是系统的主要模块。计数器完成24秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停/连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。
求一份关于篮球计分器的51单片机C语言程序
这是一个数码管显示的篮球计分程序,你可以参考一下:
#include"reg52.h"
#define u8 unsigned char
#define u16 unsigned int
sbit UP_1 = P1^1; //第一队加分键
sbit DOWN_1 = P1^2; //第一队减分键
sbit UP_2 = P1^3; //第二队加分键
sbit DOWN_2 = P1^4; //第二队减分键
sbit Change = P1^5; //交换键
sbit Begin = P1^6; //开始键
sbit Pause = P1^7; //暂停键
sbit Beef = P2^4; //蜂鸣器
sbit duan = P2^3; //段选
sbit wei = P2^2; //位选
u8 Grate_1=0; //第一队计分
u8 Grate_2=0; //第二队计分
u8 Grate_change=0; //换场标志
u8 Time = 99; //总时间
u16 Flag=0; //计时次数
u8 leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
void InitTimer1(void)
{
TMOD = 0x10; //定时器1设为模式1
TH1 = 0xFC;
TL1 = 0x18; //1ms
EA = 1; //开总中断
ET1 = 1; //开定时器1中断
// TR1 = 1; //
}
void delay(u8 d) //延时
{
u8 a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--);
}
void beef(u8 d) //发声
{
u8 a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--)
{
Beef=~Beef;
}
}
void display(u8 grate_1,u8 grate_2,u8 time) //显示
{
u8 w1,w2,w3,w4,w7,w8;
w1=grate_1/10; //计算第一队分数十位
w2=grate_1; //计算第一队分数个位
w3=grate_2/10; //计算第二队分数十位
w4=grate_2; //计算第二队分数个位
w7=time/10; //计算时间十位
w8=time; //计算时间个位
P0=0xff; //消隐,该段显示第一队分数十位
wei=1;
P0=0xfe; //送位码
wei=0;
P0=0xff;
duan=1;
P0=leddata[w1]; //送段码
duan=0;
delay(5);
P0=0xff; //显示第一队分数个位
wei=1;
P0=0xfd;
wei=0;
P0=0xff;
duan=1;
P0=leddata[w2];
duan=0;
delay(5);
P0=0xff; //显示第二队分数十位
wei=1;
P0=0xf7;
wei=0;
P0=0xff;
duan=1;
P0=leddata[w3];
duan=0;
delay(5);
P0=0xff; //显示第二队分数个位
wei=1;
P0=0xef;
wei=0;
P0=0xff;
duan=1;
P0=leddata[w4];
duan=0;
delay(5);
P0=0xff; //显示时间十位
wei=1;
P0=0xbf;
wei=0;
P0=0xff;
duan=1;
P0=leddata[w7];
duan=0;
delay(5);
P0=0xff; //显示时间个位
wei=1;
P0=0x7f;
wei=0;
P0=0xff;
duan=1;
P0=leddata[w8];
duan=0;
delay(5);
}
void main()
{
InitTimer1(); //初始化定时器1
UP_1 = 1; //以下初始化IO口
DOWN_1 = 1;
UP_2 = 1;
DOWN_2 = 1;
Change = 1;
Begin = 1;
while(1)
{
if(UP_1==0) //如果第一队加分键按下
{
ET1 = 0; //关闭定时器1中断
delay(5); //稍加延时
while(UP_1==0);//等待按键抬起
Grate_1++; //第一队分数加1
ET1 = 1; //开启定时器1中断
}
if(DOWN_1==0) //如果第一队减分键按下
{
ET1 = 0;
delay(5);
while(DOWN_1==0);
Grate_1--; //第一队分数减1
ET1 = 1;
}
if(UP_2==0) //如果第二队加分键按下
{
ET1 = 0;
delay(5);
while(UP_2==0);
Grate_2++; //第二队分数加1
ET1 = 1;
}
if(DOWN_2==0) //如果第二队减分键按下
{
ET1 = 0;
delay(5);
while(DOWN_2==0);
Grate_2--; //第二队分数减1
ET1 = 1;
}
if(Change==0) //如果换场键按下
{
ET1 = 0;
delay(5);
while(Change==0);
Grate_change=Grate_1; //一下三行语句完成分数交换显示
Grate_1=Grate_2;
Grate_2=Grate_change;
ET1 = 1;
}
if(Begin==0) //如果开始键按下
{
delay(5);
while(Begin==0);
TR1 = 1; //开启定时器1
}
if(Pause==0)
{
delay(5);
while(Pause==0);
TR1=0;
}
if(Time<=0) //如果时间计数到0
{
Time=99; //恢复初始时间
TR1 = 0; //关闭定时器1
beef(100); //发声
}
display(Grate_1,Grate_2,Time); //显示分数、时间
}
}
void Timer1Interrupt(void) interrupt 3 //定时器1中断函数
{
TH1 = 0xFC; //重赋初值
TL1 = 0x18;
Flag++; //中断次数加1
if(Flag>=1000)//1000次也就是1秒到
{
Flag=0;
Time--; //秒变量减1
}
}
上一篇:体育美学论文3000字
下一篇:emba论文查重不能超过多少