篮球计分器Word文件下载.docx
- 文档编号:18174975
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:22
- 大小:514.10KB
篮球计分器Word文件下载.docx
《篮球计分器Word文件下载.docx》由会员分享,可在线阅读,更多相关《篮球计分器Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
实现甲乙比分清零;
第2章总体方案设计
2.1总体系统框图
此次设计80C51单片机为核心,配以一定的外围电路和软件,以实现比赛计分器的功能。
利用8个8段共阴级数码管显示器.采用动态显示输出比分,用户信息输入则采用4×
4矩阵式键盘。
用一片单片机可满足本设计的输入输出。
系统设计方案的硬件电路设计框图如图2-1所示。
图2-1硬件电路设计
2.2系统组成
系统由硬件部分和软件部分组成。
硬件电路由复位按钮、80C51单片机、矩阵键盘和独立按键,两个四位一体个数码管等组成。
软件部分主程序主要由系统初始化段、键盘识别、键值处理、8段共阴极LED显示器扫描显示子程序组成。
第3章系统硬件设计
3.1控制电路设计
3.1.1复位电路
如图3-1所示,按钮与单片机的RST引脚相连,当每次按下该按钮后,系统将通过软件实现对计分回到初始值功能。
图3-1复位控制接口电路
3.1.2矩阵按钮电路
键盘的读取方式:
行与列各有4条线档其中一个按键被按下后,它所在的行列线就导通了,如果一条线上是低电平,那么按键的另一条线也是低电平。
先给第一行送一个低电平,读取列值,就可以判定第一行上是否有按键按下,如果有按键,那么列线里面就有一条线为低电平。
如果都为高电平,说明第一行上没有按键被按下,接着给第二行送低电平,重复上述步骤,就可以读取按键了,下图即(图3-2)为矩阵按键。
3.2数码管显示电路设计
显示器采用8段共阴极数码管显示器,来实现显示器的动态扫描,八个二极管连接一个阴极的结构,只要另一段为高电平,二极管就会发光,从而形成一段。
将八段顺序排列后就成为具有一定编码的共阴显示器了。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如果频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。
图3-3数码管扫描显示电路
数码管显示采用8个8段数码管显示器,来实现显示器的动态扫描显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器。
由单片机的P1口控制位选显示,P0控制数码管的段选。
第4章软件设计
4.1主程序设计
主程序主要由系统初始化段、键盘识别、键值处理、8个8段共阴极数码管显示器扫描显示子程序组成。
通过对以上各段和子程序的结合,以实现系统功能。
该系统主程序流程图如下图所示。
图4-1系统主程序流程图
4.2各子程序设计
4.2.1延时子程序
voiddelay(uintx)
{
uintq,i;
for(q=x;
q>
0;
q--)
{for(i=40;
i>
i--);
}
4.2.2键盘扫描子程序
keyscan()
ucharj;
P2=0xf0;
scan1=P2;
if((scan1&
0xf0)!
=0xf0)
{
delay(20);
scan1=P2;
{
P2=0x0f;
scan2=P2;
keycode=scan1|scan2;
for(j=0;
j<
16;
j++)
{
if(keycode==key_code[j])
{
key=j;
return(key);
}
}
}
}
else
P2=0xff;
return(16);
4.2.3分数调换部分程序
voidkeychange()
if(key3==0)
if(key3==0)
time_one[2]=time_one[0];
time_one[0]=time_one[1];
time_one[1]=time_one[2];
while(key3==0){display_one();
display_two();
};
4.2.4加减部分程序
voiddisplay_two()
if(time_one[1]<
0||time_one[1]>
200)
P1=0xfb;
P0=dis_code[10];
delay
(2);
P1=0xfd;
P1=0xfe;
else
P0=dis_code[time_one[1]%10];
delay
(2);
P1=0xfd;
P0=dis_code[time_one[1]/10%10];
P1=0xfe;
P0=dis_code[time_one[1]/100];
4.2.5裁判对两队选择改分部分程序
voidint_0()interrupt0
delay(20);
if(INT0==0)
a++;
if(a>
2)a=0;
4.2.6初始比分程序
voidint_1()interrupt2
if(INT1==0)
time_one[0]=0;
time_one[1]=0;
display_one();
display_two();
第5章实物连接图
5.1设置的开始比分
5.2交换分值
5.3清零显示
5.4三位分值显示
5.5当分数小于0时显示结果结果
5.6软件调试结果
调试结果记录如下:
按照键盘分布说明按键,可以给甲、乙加或者减5分,10分,15分,显示器跟踪显示出总分,然后模拟比赛细节,均达到预期效果。
在甲、乙均有一定总分的情况下,按复位按钮,显示结果复位。
重复进行上面操作,结果均符合设计要求。
可以通过切换按钮选择不同的状态,将会实现不同的功能。
还可以通过比分交换按钮交换双方的比分,这点是非常实际化的,在现实比赛中也有这样的功能,完全实现了比赛的要求。
设计总结
通过本次的课程设计,使我了解到,主要是以MCS-51单片机为核心,结合KeiluVision4编程软件和Proteus调试软件的一门计算机语言,通过指令来控制相应硬件的运行状态,虽然这次设计只有短短的两周时间,但我深刻体会到了其中的苦与乐,感悟甚是深切,总觉得从书本上接受的东西不如操作和实践来的那么深刻。
在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质,并将理论与实际相结合,学以致用,不再是纸上谈兵,。
对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。
在这次课程设计中,我在整个设计过程中懂得了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。
虽然这个设计做的不是很理想,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我受益良多。
课程设计是结束了,不过学习单片机知识的过程还没有终结,探索学习的奥妙,培养学习的兴趣,养成良好的学习习惯对我们来说才是最重要的。
与此同时我感受到了老师对学生的那种悔人不卷的精神,每天的固定时间,老师都来给我们指导,使我们少走弯路,顺利完成实习任务,感谢汪老师一路以来对我们的关心与帮助,感谢我们组的同学,给我提出了宝贵的意见和建议,使得本次课程设计能过顺利完成。
参考文献
[1]《单片机原理与应用》王迎旭编机械工业出版社
[2]《51系列单片机原理与接口技术实验指导》周向红编湖南工程学院
[3]《微型计算机原理及应用》许立梓编机械工业出版社2002
[4]《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[5]《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
[6]《16位微型计算机原理接口及其应用》周佩玲编中国科技大学出版社2000
[7]《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[8]《微型计算机接口技术》邓亚平编清华大学出版社2001
[9]《单片机原理及及应用》王迎旭编机械工业出版社2001
[10]《单片机应用程序设计技术》周航慈著北京航空航天出版社2002
[11]《单片机实用技术问答》谢宜仁主编人民邮电出版社2002
附录A:
源程序清单
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharkey,a,scan1,scan2,keycode;
Ucharcodedis_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
ucharcodekey_code[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,
0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
inttime_one[]={0,0,0};
sbitkey1=P3^5;
sbitkey2=P3^6;
sbitkey3=P3^7;
keyscan();
voidfunc();
voidpanduan();
voiddisplay_one();
voiddisplay_two();
voiddisplay_three();
voiddisplay_fore();
voidkeychange();
voiddelay(uintx);
voidmain()
{
uchart;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
a=0;
time_one[0]=50;
time_one[1]=50;
while
(1)
panduan();
keychange();
for(t=0;
t<
100;
t++)
display_one();
display_two();
keyscan();
func();
for(i=40;
voiddisplay_one()
if(time_one[0]<
0||time_one[0]>
{
P1=0x7f;
P1=0xbf;
P1=0xdf;
P0=dis_code[time_one[0]%10];
P0=dis_code[time_one[0]/10%10];
P0=dis_code[time_one[0]/100];
}
P1=0xef;
P0=0x40;
P1=0xf7;
voidfunc()
if(a==1)
if((scan1&
switch(key)
case0:
if(time_one[0]==-1)
{time_one[0]=0;
else
{time_one[0]+=5;
break;
case1:
{time_one[0]+=10;
case2:
{time_one[0]+=15;
case4:
{time_one[0]-=5;
case5:
{time_one[0]-=10;
case6:
{time_one[0]-=15;
default:
break;
}
if(a==2)
if((scan1&
switch(key)
{
case0:
if(time_one[1]==-1)
{time_one[1]=0;
else
{time_one[1]+=5;
break;
case1:
{time_one[1]+=10;
case2:
{time_one[1]+=15;
case4:
{time_one[1]-=5;
case5:
{time_one[1]-=10;
case6:
{time_one[1]=0;
{time_one[1]-=15;
default:
}
voidpanduan()
if((time_one[1]<
0)||(time_one[2]>
250))
time_one[1]=-1;
display_one();
display_two();
if((time_one[0]<
0)||(time_one[0]>
time_one[0]=-1;
附录B:
总体硬件实物图
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 篮球 计分