单片机篮球计分器结课报告.docx
- 文档编号:14721754
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:17
- 大小:185.29KB
单片机篮球计分器结课报告.docx
《单片机篮球计分器结课报告.docx》由会员分享,可在线阅读,更多相关《单片机篮球计分器结课报告.docx(17页珍藏版)》请在冰点文库上搜索。
单片机篮球计分器结课报告
单片机原理及接口技术报告
一、对这门课的认识
本书以89C51为典型机,深入浅出地讲述单片机原理、接口及应用技术。
主要内容包括:
微机基础知识、89C51单片机硬件结构、指令系统、汇编语言程序设计、中断系统、定时器及应用、89C51串行口及串行通信、89C51单片机小系统及片外扩展、应用系统配置及接口技术和系统应用程序实例。
单片微型计算机简称为单片机.它是微型计算机发展中的一个重要分支,它以其独特的结构和性能。
单片机是单片机系统的核心,其工作必须依赖于相应软件及硬件电路的协同工作,无论单片机的学习还是应用都是一个理论与实践紧密结合的过程。
现单片机已广泛应用于自动控制、智能设备、只能家电等许多领域,其设计思想、设计手段已广泛渗透到电子技术发展的各个领域,可以方便的取代某些数字电路的功能。
单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。
单片机并不像传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”因素。
学习单片机要有一定的基础,电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。
单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。
单片机并不像传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”因素。
但是很遗憾的是我们专业并没有开过数电或者是模电的课,所以对设计电路的方面还是很薄弱。
但是仅仅是学好书本里面的知识还是远远不够的,这门课重在和之前的数电模电的课的有效结合然后才能设计出作品来。
在开始开课的时候激情还是很足的,但是由于讲课内容设计很多我们没有知道和了解过的知识,所以越学越感到吃力。
要想学好本门知识,还需要把数电模电好好的补回来。
不过老师安排了几次实验课,把自己做学的知识能够有效的实际运用,也发现了自己许多不足。
同时也得到一些经验,首先单片机是一门应用性和实验性很强的一门学科,需多动手,多做实验发现和弥补自己的不足。
其次,要学会参考别人的程序,减少自己的思考时间,提升自己的编程能力。
在这里我尽我的能力设计了一个篮球计分器,由于所学知识有限,在设计过程中难免有错误和不足,希望老师多多指导。
二、篮球计分器的设计
1.整机设计
1.1设计要求
1.1.1性能指标要求
基本要求:
(1)按照题目要求独立设计系统所需电路,并完成硬件电路的制作及调试。
(2)结合硬件能够正常计分(1,2,3)。
(3)能够正常显示分值。
(10分)
(4)能够正常修改工作模式(计分与24秒)。
(5)能够24秒的误差不小于1秒。
发挥部分:
能够两队球员犯规次数计数。
1.2基本原理
因所设计的篮球比赛计分器功能较少,电路结构也相对简单。
只有两个部分:
开关控制和数码管的显示。
P1口接六个按键,分别作为比分+1、+2、+3,队伍切换,开始倒计时和模式切换功能。
RST端口接复位电路,并接一个按键来实现清零,其中同一个按键在界面不同的情况下实现其他功能。
例如:
在队伍加分和犯规次数界面中,+1键和+2按键相同的控制按键;P0口和P2口分别接数码管的段选和位选。
中间串接上拉电阻来作分压用,使得其高低电平能够清楚的分开从而可以实现开关上高低电平的跳变,使数码管工作。
下面给出我的基本原理框图:
2.篮球计分器原理图
图1.原理图
该电路完成四个功能:
一是显示正确的比分;二是使用按键进行比分的增加;三是比分清零的实现;四是实现24秒倒计时;五是记录犯规次数。
以上功能的实现都需要与硬件相符合的程序写入AT89S51中,通过下载口导入数据并提供USB。
3.制作与调试
本次试验中用到P0口的,必须要记得上拉电阻,接其他IO口的如果想数码管更亮一些的话也可以上拉电阻。
因为P0口是没有上拉电阻的,不接的话P0口是无法输出高电平的。
而其他IO口因为上拉电阻的阻值并不是很大,所以导致数码管显示出的数字显得很昏暗。
电源来实现功能。
4.电路测试
4.1指标测试
可以实现两队比分的正确显示,可以实现比分和倒计时切换,以及犯规次数的记录,并通过按键实现比分的加减。
5.程序解说
5.1计时中断程序
Timer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t>=20)
{
t=0;
if(CountDown>0)CountDown--;
elseBee=1;
}
}
5.2数码管动态扫描模块
ucharxs=0;
voidTimer1()interrupt3
{
TH1=(65536-500)/256;
TL1=(65536-500)%256;
xs++;
if(xs>=4)xs=0;
switch(Mode)
{
case0:
switch(xs)
{
case0:
P0=Tab[Team1/10];P2=0xf7;break;
case1:
P0=Tab[Team1%10];P2=0xfb;break;
case2:
P0=Tab[Team2/10];P2=0xfd;break;
case3:
P0=Tab[Team2%10];P2=0xfe;break;
default:
break;
}break;
case1:
switch(xs)
{
case0:
P0=Tab[CountDown/10];P2=0xfb;break;
case1:
P0=Tab[CountDown/10];P2=0xfb;break;
case2:
P0=Tab[CountDown%10];P2=0xfd;break;
case3:
P0=Tab[CountDown%10];P2=0xfd;break;
default:
break;
}break;
case2:
switch(xs)
{
case0:
P0=Tab[Team1Foul/10];P2=0xf7;break;
case1:
P0=Tab[Team1Foul%10];P2=0xfb;break;
case2:
P0=Tab[Team2Foul/10];P2=0xfd;break;
case3:
P0=Tab[Team2Foul%10];P2=0xfe;break;
default:
break;
}break;
default:
break;
}
}
5.3按键功能模块
voidKeyMessage()
{
if(key4==0)
{
Delay(5);
if(key4==0)
{
while(!
key4);
TeamFlag=~TeamFlag;
if(TeamFlag==0){LED1=0;LED2=1;}
else{LED1=1;LED2=0;}
}
}
if(Mode==0)
{
if(TeamFlag==0)
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team1+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team1+=2;}}
if(key3==0){Delay(5);if(key3==0){while(!
key3);Team1+=3;}}
}
else
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team2+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team2+=2;}}
if(key3==0){Delay(5);if(key3==0){while(!
key3);Team2+=3;}}
}
}
elseif(Mode==2)
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team1Foul+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team2Foul+=1;}}
}
if(Key6==0)
{
Delay(5);
if(Key6==0)
{
while(!
Key6);
if(Mode<2)Mode++;
elseMode=0;
if(Mode==1)CountDown=24;
elseTR0=0;
switch(Mode)
{
case0:
LED3=0;LED4=1;break;
case1:
LED3=1;LED4=0;break;
case2:
LED3=0;LED4=0;break;
default:
break;
}
Bee=0;
}
}
if(key5==0)
{
Delay(5);
if(key5==0)
{
while(!
key5);
if(Mode==1)TR0=1;
}
}
}
5.4 主函数功能模块
voidmain()
{EA=1;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=0;
TH1=(65536-500)/256;
TL1=(65536-500)%256;
ET1=1;
TR1=1;
LED3=0;
LED4=1;
LED1=0;
LED2=1;
Bee=0;
while
(1)
{
KeyMessage();
}
}
6.仿真图
图2.仿真图
7.附录
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitkey5=P1^4;
sbitKey6=P1^5;
sbitBee=P3^3;
sbitLED1=P3^4;
sbitLED2=P3^5;
sbitLED3=P3^6;
sbitLED4=P3^7;
ucharTab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,
};
uchart,Mode=0,Team1=0,Team2=0,Team1Foul=0,Team2Foul=0,CountDown=24;
voidDelay(uintz)
{
uintx,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
voidTimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t>=20)
{
t=0;
if(CountDown>0)CountDown--;
elseBee=1;
}
}
ucharxs=0;
voidTimer1()interrupt3
{
TH1=(65536-500)/256;
TL1=(65536-500)%256;
xs++;
if(xs>=4)xs=0;
switch(Mode)
{
case0:
switch(xs)
{
case0:
P0=Tab[Team1/10];P2=0xf7;break;
case1:
P0=Tab[Team1%10];P2=0xfb;break;
case2:
P0=Tab[Team2/10];P2=0xfd;break;
case3:
P0=Tab[Team2%10];P2=0xfe;break;
default:
break;
}break;
case1:
switch(xs)
{
case0:
P0=Tab[CountDown/10];P2=0xfb;break;
case1:
P0=Tab[CountDown/10];P2=0xfb;break;
case2:
P0=Tab[CountDown%10];P2=0xfd;break;
case3:
P0=Tab[CountDown%10];P2=0xfd;break;
default:
break;
}break;
case2:
switch(xs)
{
case0:
P0=Tab[Team1Foul/10];P2=0xf7;break;
case1:
P0=Tab[Team1Foul%10];P2=0xfb;break;
case2:
P0=Tab[Team2Foul/10];P2=0xfd;break;
case3:
P0=Tab[Team2Foul%10];P2=0xfe;break;
default:
break;
}break;
default:
break;
}
}
bitTeamFlag=0;
voidKeyMessage()
{
if(key4==0)
{
Delay(5);
if(key4==0)
{
while(!
key4);
TeamFlag=~TeamFlag;
if(TeamFlag==0){LED1=0;LED2=1;}
else{LED1=1;LED2=0;}
}
}
if(Mode==0)
{
if(TeamFlag==0)
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team1+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team1+=2;}}
if(key3==0){Delay(5);if(key3==0){while(!
key3);Team1+=3;}}
}
else
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team2+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team2+=2;}}
if(key3==0){Delay(5);if(key3==0){while(!
key3);Team2+=3;}}
}
}
elseif(Mode==2)
{
if(key1==0){Delay(5);if(key1==0){while(!
key1);Team1Foul+=1;}}
if(key2==0){Delay(5);if(key2==0){while(!
key2);Team2Foul+=1;}}
}
if(Key6==0)
{
Delay(5);
if(Key6==0)
{
while(!
Key6);
if(Mode<2)Mode++;
elseMode=0;
if(Mode==1)CountDown=24;
elseTR0=0;
switch(Mode)
{
case0:
LED3=0;LED4=1;break;
case1:
LED3=1;LED4=0;break;
case2:
LED3=0;LED4=0;break;
default:
break;
}
Bee=0;
}
}
if(key5==0)
{
Delay(5);
if(key5==0)
{
while(!
key5);
if(Mode==1)TR0=1;
}
}
}
voidmain()
{EA=1;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=0;
TH1=(65536-500)/256;
TL1=(65536-500)%256;
ET1=1;
TR1=1;
LED3=0;
LED4=1;
LED1=0;
LED2=1;
Bee=0;
while
(1)
{
KeyMessage();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 篮球 计分 器结课 报告