单片机原理及应用实训报告实篮球记分牌.docx
- 文档编号:4043652
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:20
- 大小:1.76MB
单片机原理及应用实训报告实篮球记分牌.docx
《单片机原理及应用实训报告实篮球记分牌.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实训报告实篮球记分牌.docx(20页珍藏版)》请在冰豆网上搜索。
单片机原理及应用实训报告实篮球记分牌
桂林电子科技大学信息科技学院
单片机原理及应用实训报告
题目篮球计分牌
学号08
姓名谢锎
指导老师韩桂明张锟赵志鹏
2011年9月23日
1.系统设计
设计要求
基本要求
1设计一个基于单片机的篮球计分牌,实现两队的计分功能与24秒计时功能
2结合硬件能够正常计分
3能够正常显示分值。
4能够正常修改工作模式(计分与24秒)
5能够24秒的误差不小于1秒
发挥部分
112分钟倒计时
2能够两队球员犯规次数计数
3重置24秒表
4倒计时结束报警
512分钟倒计时结束红灯全部亮
设计原理
框图设计
程序流程
加分程序流程
犯规程序流程
选择显示程序流程
方案比较
方案1:
是通过按不同的键来切换不同的输入,使用不同的LED灯的亮灭来显示不同的队加分。
电路图:
方案2:
通过一个键来切换分数,24s倒计时,12分钟倒计时和犯规次数,通过LED灯的亮来判断是那个队加分,那个队犯规,12分钟倒计时结束。
另外,给a队b队加分和加犯规次数。
通过按键,选择哪种显示方式,暂停/开始24s倒计时,重置24s;
电路图:
方案论证
总体思路
7个按键实现对应功能:
P1^6对应a队加分,第一个红灯亮;P1^0对应b队加分,第二个红灯亮;P1^1对应显示切换,切换有四类显示方式,第一类是a队跟b队的比分显示,且各两个数码管显示。
第二类是24s倒计时的显示。
第三类是12分钟倒计时的显示。
第四类是a队跟b队的犯规次数显示;P1^2对应24秒倒计时暂停/开始;P1^3对应重置24s倒计时,同时24s倒计时暂停;P1^4对应a队加犯规次数,同时第三个红灯亮;P1^5对应b队加犯规次数,同时第四个红灯亮;外加复位键,按下则清零;24秒倒数为0时蜂鸣器响起警报,重新倒数时蜂鸣器关闭。
12分钟倒计时结束时,蜂鸣器响起警报,红灯全亮。
设计方案
使用了延时子程序(delay)用来按键消抖,还有定时中断程序来显示数码管,启止24s倒计时,12分钟倒计时,使用了P0口作为数码管的段选和P2口的位选,使用P1口作为按键作为输入,P3口的发光二极管作为判断a队和b队的选择和作为模式的选择部分和蜂鸣器作为倒计时24秒的计时的时间到;在主程序里面有各按键的功能,a队加分,b队加分,切换功能,重置24s功能,a队加犯规,b队加犯规;
2、模块电路的设计
AT89S51单片机芯片
在本设计中~口接LED灯,口(28脚)接蜂鸣器电路,~(1~7脚)口接7个按键,RST(9脚)接复位电路,,~(21~24脚)接四位数码管的位选脚,~(32~39脚)接四位数码管段位脚,18、19脚接晶振电路,20脚接GND,31脚、40脚接VCC。
四位共阴数码管电路
复位电路
内振荡电路(时钟电路)
蜂鸣器电路
下载口电路
二极管显示电路
3、开发软件及编程语言简介
KeilC编程软件
系统概述
KeilC51是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
KeilC51单片机软件开发系统的整体结构
C51工具包的整体结构,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
Keil开发工具--uVision3
uVision3集成开发环境是一个基于Window的开发平台,包括一个全功能的源代码编辑器,一个项目管理器和一个MAKE工具。
利用源代码编辑器可以高效地编辑源程序。
利用项目管理器可以很方便地创建和维护项目,利用MAKE工具可以汇编,编译和连接。
4、制作与调试过程
制作过程:
编程时用C语言编写并需要结合电路原理图编写;
在使用proteus软件仿真时,要找到元器件相应的符号及其使用方法;在制作电路板时,由于使用万用板,在焊接元器件的管脚时需要注意焊锡的使用量,用量过多会导致该焊锡与其它的铜孔相连,有可能导致电路的某条支路短路;
在焊接按键时,需要分清楚其的管脚,可以用万用表测试管脚的导通,则可以区分管脚;
在焊接数码管的管脚时,应该注意其管脚的分布;
在焊接AT89S52的管脚时,需要注意分清各个管脚;
在焊接晶振的管脚时需要注意将其尽量靠近该芯片的XTAL1,XLAL2的两端;
在焊接下载端口的管脚时需要注意各管脚与芯片的管脚对应。
调试过程:
初步调试程序时并下载到芯片上时,通过操作验证“暂停部分的程序”在比赛结束后再按暂停按键时,可以实现倒计时,但是当t=0时,开始出现乱码,针对该问题,需要在其暂停部分的程序加以“break”到相应的程序中,经调试,下载可以实现将程序跳出“死循环”。
在调试电路板时不能将程序下载到芯片的情况,经分析得出晶振接触不良。
硬件搭建好后,发现程序下载不了,经检查发现,下载端口接反,下载口连接正确后,程序依然下载失败。
经常长时间电路检查依然为发现问题。
后面通过仔细查看单片机最小系统,最终发现单片机的EA端没接vcc导致单片机无法读取片内ROM。
下载成功后,然后再补充了LED灯跟功能对应的显示。
5、心得体会
通过本次实训,发现自身在电子制作,程序编写方便有着非常大的不足。
对以往学习过的编程知识没有好好掌握,特别是编程这方便的知识较薄弱。
学习过的知识在实际应用中仿佛是冰山一角,完全不够用,需要通过查阅很多资料才能解决到碰到的相关问题。
而且实训中出现的问题都是实际应用出比较典型的问题。
发现问题解决问题,通过不断的了解,对《单片机原理及应用》这门课有了更深刻的了解掌握。
单片机技术在当今各方面领域有着极高的应用率,是一门动手能力非常强的技术。
其中的程序和模块化元件看起来很简单,但是真正要自己设计有代表性出来是很难的,需要有扎实的知识基础,和较强的逻辑分析能力。
这些条件我们都可以通过平时的努力来积累。
碰到问题,先自己思考解决,再请教老师。
这次实训还让我深刻的体会了结构化程序设计的优势,让我懂得当我们要进行一个复杂的程序设计时应该先将其分解为多个不同的功能模块再分别编程实现,这样做不仅降低了编程的难度,也容易让编程者思路更加清晰,避免出现不必要的错误。
在做仿真时,仿真图正确也不一定就是说明一定正确。
做实物时,不仅要做到电路正确,也要尽可能做到布局合理、焊接到位,否则很有可能电路原理图正确、仿真图正确但是任然调试不出结果。
另外,焊接的时候不能分心,否则极易出错。
6、参考文献
【1】喻宗泉.单片机原理与应用技术.西安:
西安电子科技大学出版社。
2006
【2】李光飞.单片机课程设计实例指导.北京:
航空航天大学出版社。
2004
【3】张欣.单片机原理与C51程序设计基础教程.北京:
清华大学出版社。
2010
7、附录
电路原理图
PCB
硬件正面图
硬件反面图
元件清单:
序号
元件名称
规格
数量
1
51单片机
AT89S52
1个
2
晶振
12M晶振
1个
4
七段数码管
4位共阴极
1个
5
起振电容
22pF瓷片电容
2个
6
复位电容
10uF
1个
7
电阻
1KΩ
5个
8
按键
8个
9
LED
4个
10
蜂鸣器
1个
11
NPN
8050
1个
程序
#include<>
//*************************数码管段代码表**************************//
unsignedcharTab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0x20};
unsignedchara=0,//a队分数
b=0,//b队分数
afg=0,//a队犯规次数
bfg=0;//b队犯规次数
unsignedchart=24,//倒计时24秒
k=0,//倒计时暂停/开始状态
h=0,//显示转换状态
miao=0,//秒钟
fen=12;//12分钟倒计时分钟
intbittime=0;//循环次数
intbitdisplay=0;//显示
sbitP16=P1^6;//a队加分
sbitP10=P1^0;//b队加分
sbitP11=P1^1;//显示状态切换
sbitP12=P1^2;//倒计时暂停/开始
sbitP13=P1^3;//24s倒计时重置
sbitP14=P1^4;//a队犯规加次数
sbitP15=P1^5;//b队犯规加次数
sbitfmq=P2^7;//蜂鸣器
///***************定时中断服务程序***********************//
voidtimer0(void)interrupt1using0
{
TH0=0Xf8;TL0=0x30;//定时器赋初值
switch(bitdisplay)
{
case0:
P2=0xfe;
if(h==0){P0=Tab[a/10];}//a队分数十位显示
if(h==1){P0=Tab[t/10];}//倒计时十位显示
if(h==2){P0=Tab[fen/10];}//每节比赛12分钟,分钟十位显示
if(h==3){P0=Tab[afg/10];}//犯规的十位显示
break;
case1:
P2=0xfd;
if(h==0){P0=Tab[a%10];}//a队分数个位显示
if(h==1){P0=Tab[t%10];}//倒计时个位显示
if(h==2){P0=Tab[fen%10];}//分钟的个位显示
if(h==3){P0=Tab[afg%10];}//a犯规的个位显示
break;
case2:
P2=0xfb;
if(h==0){P0=Tab[b/10];}
if(h==1){P0=0x00;}
if(h==2){P0=Tab[miao/10];}
if(h==3){P0=Tab[bfg/10];}
break;
case3:
P2=0xf7;
if(h==0){P0=Tab[b%10];}
if(h==1){P0=0x00;}
if(h==2){P0=Tab[miao%10];}
if(h==3){P0=Tab[bfg%10];}
break;
}
bitdisplay++;bittime++;
if(bitdisplay==4){bitdisplay=0;}//数码管扫描返回
if(bittime==500)
{bittime=0;
if(k)
{if(t--==0){k=0;t=24;fmq=1;}
else{fmq=0;}
if(miao--==0){if(fen==0){P3=0x0f;fen=12;miao=0;k=0;}fen--;miao=59;}//12分钟结束,4个灯全亮
}
}
}
//**延时程序***//
voiddelay(unsignedintt)
{
unsignedintaaa,bbb;
for(aaa=0;aaa<100;aaa++)
for(bbb=0;bbb } //**************主程序*********************// voidmain(void) { TMOD=0x01;TH0=0xf8;TL0=0x30;//定时2ms EA=1;ET0=1;TR0=1;//开启定时器 while (1) { if(! P16)//按键1 {delay(100); if(! P16){a++;P3=0xef;if(a==100)a=0;}//a队加分 } if(! P10)//按键2 {delay(100); if(! P10) {b++;P3=0xdf;if(b==100)b=0;}//b队加分 } if(! P11)//按键3 {delay(100); if(! P11) {if(++h>=4)h=0;}//显示切换 } if(! P12)//按键4 {delay(100); if(! P12) {if(k++==2)k=0;}//倒计时 } if(! P13)//按键5 {delay(100); if(! P13) {t=24;k=0;fmq=1;}//重置24s倒计时 } if(! P14)//按键6 {delay(100); if(! P14){afg++;k=0;P3=0xbf;if(afg==60)afg=0;}//a队犯规 } if(! P15)//按键7 {delay(100); if(! P15){bfg++;k=0;P3=0x7f;if(bfg==60)bfg=0;}//b队犯规 } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 报告 篮球 记分牌