单片机课程设计 篮球计时器.docx
《单片机课程设计 篮球计时器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 篮球计时器.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机课程设计 篮球计时器.docx](https://file1.bdocx.com/fileroot1/2022-11/24/ad51e6b2-334e-4c4a-9f60-fefe44224900/ad51e6b2-334e-4c4a-9f60-fefe442249001.gif)
单片机课程设计篮球计时器
篮球计时器-单片机课程设计.
信息工程学院《单片机原理与接口技术课程设计》
绪论
篮球比赛中除了有总时间倒计时外,为了加快比赛的节奏,规则还要求进攻方在24秒内有一次投篮动作,否则视为违例。
以下为一个篮球比赛计时器,该计时器采用按键操作、数码管显示,非常实用。
此计时器也可作为其他球类比赛的计时器。
本课程设计介绍了一个基于单片机的篮球比赛计时器硬件设计,包括STC89C51,2个八段共阳数码管显示、上电复位电路、时钟发生电路等基本模块的设计。
其功能土要有:
一场篮球比赛共分四节,每节12分:
每次进攻为24秒,计时器的显示均为倒计时方式,24秒计时用两位数码管显示;所有的计时都要具有暂停、继续、复位;当球员的持球时间超过24秒时,24秒倒计时减为零且有蜂鸣器报警提示。
本次课程设计是采用单片机C语言实现倒计时24秒篮球比赛计时器。
2
信息工程学院《单片机原理与接口技术课程设计》
1系统工作原理
1.1功能说明
随着信息时代的到来,电子技术在社会生活中发挥着越来越重要的作用,运用模电和数电知识设计的电子产品成为社会生活中不可缺少的一部分。
在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就犯规了。
大多数篮球计时器的主控芯片为AT89C51,采用12MHz晶振,P0.0-P0.7作数码显示端。
24秒计时开始,A3为24秒复位开启键(投篮或交换控球时按下此键);A4为24秒计时停止键(有违例时按下此键);A5为24秒计时启动键;A6为总复位键。
而此次我们设计的是1个简易篮球比赛计时器。
最简单的篮球球计时器是24秒倒计时计时器。
也就是本次课程设计的课题。
24秒篮球计时器要求设置外部操作开关,控制计数器的直接复位、启动和暂停,并且计时电路递减计时,每隔1秒钟,计时器减1,当计时器减0时,显示器上显示00,同时发出蜂鸣器报警信号。
1.2基本原理
24秒计时器的总体参考方案框图如图1所示,它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路等五个模块组成。
其中计数器和控制电路是系统的主要模块。
计数器完成24秒倒计时功能,而控制电路完成计数器的直接复位、启动技术、暂停以及连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。
数码管示AT89C显按显示51驱动键片单器鸣蜂机报警3
信息工程学院《单片机原理与接口技术课程设计》
图1系统结构图
2设计
2.1单片机最小系统单元
主控机系统采用了AT89C51单片机,它含有128字节数据存储器,内置4K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。
复位电路和晶振电路是AT89C51工作所需的最简外围
所示。
电路。
单片机最小系统电路图如图2.1
端出现一段时间的高电平,外RST在复位电路中,按一下复位开关就使在30pF电容组成系统的内部时钟电路。
接11.0592M晶振和两个2.2AT89C51单片机简介单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据口和中、多种I/OROMCPU处理能力的中央处理器随机存储器RAM、只读存储器可能还包括显示驱动电路、脉宽调制电路、模(断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计)A/D拟多路转换器、转换器等电路4
信息工程学院《单片机原理与接口技术课程设计》
算机系统。
单片机的存储器ROM和RAM是严格区分的。
ROM称为程序存储器,只存放程序,用户数据。
固定常数,及数据表格。
RAM则为数据存储器,为满足控制需要,单片机有更强的逻辑控制能力用作工作区及存放特别是单片机具有很强的位处理能力。
2.2.1AT89C51单片机引脚功能简介
(1)AT89C51有40个引脚,各引脚功能如下所示:
2.1AT89C51引脚图图Vss
和电源引脚Vcc。
):
供电电压,为+5VVcc(电源端接地端。
GND):
Vss(P3
和输出端口P0.P1,P2
(2)输入/门电流。
当口,每脚可吸收8TTL位漏级开路双向:
P0口为一个8I/OPO口能够用于外部程序数据存储时,被定义为高阻输入。
POP1口的管脚第一次写1口作为原码输入编程时,PO/地址的第八位。
在Flash器,它可以被定义为数据外部必须被拉高。
PO输出原码,此时PO口,当Flash进行校验时,口缓冲器能接收口,P1I/O口:
P1口是一个内部提供上拉电阻的8位双向P1口P1口管脚写入P11后,被内部上拉为高,可用作输入,输出4TTL门电流。
编Flash被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在P1口作为第八位地址接收。
程和校验时,口缓冲器可接收,输P2I/O8:
P2P2口口为一个内部上拉电阻的位双向口,5
信息工程学院《单片机原理与接口技术课程设计》
出4个TTL门电流,当P2口被写“1',时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口在Flash编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入,',后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
(3)振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.3功能单元模块
(1)常开型按钮开关
控制模块是由键盘输入,键盘是一组按键的集合,它是最常见的单片机输入设备,是一种常开型按钮开关。
常态时,按键的两个触点处于断开状态,如图2.3所示,键盘分为编码键盘和非编码键盘,键盘上闭合键的识别由一专门
并产生件译码器实现,的硬号或键值的称为编码编键ASCII键盘,码键盘、BCD如靠软件识别的称;键盘等码编码键盘。
为非
常开型按钮开关图2.2七段数码显示管
(2)6
信息工程学院《单片机原理与接口技术课程设计》
单片机中通常用7段LED构成字型“8”,另外,还有一个小数点发光一极管,以显示数字、符号及小数点。
这种显示器有共阴极和共阳极两种,此课程设计采用的是共阳极。
发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。
一位显示器由8个发光二极管组成,其中,7个二极管构成字型“8”的各个笔画a-g,另一个小数点为dp发光二极管。
将多个LED显示块组合在一起就构成了多位LED显示器。
每个LED显示器的段引脚称为段选线,公共端称为位选线。
段选线控制显示的字符,位选线控制该LED的亮和灭。
(3)蜂鸣器
由于蜂鸣器在使用时需要三极管来驱动,这里我们使用的是PNP型三极管,蜂鸣器接e极,再接高电平。
在基极输入高电平时,三极管不导通,蜂鸣器不响,在基极输入低电平时,三极管导通,蜂鸣器被驱动并发声。
2.3硬件设计电路
设计思路:
选用AT89C51作为主控芯片,晶振是12MHz,机械周期为1ms,所以循环20次为l秒。
PO口作为段码输出,P3.3,P3.4作为位控,高电平有效。
数码管是液晶显示,采用动态显示,两个串行口作为中断入口,高电平有效,启动TO定时器/计数器进行计数,低电平有效。
图2.4是系统硬件设计电路图
系统硬件设计电路图图2.4:
开始定时计数。
计时采用倒计时,比如时间设置完后,启动定时器TO7
信息工程学院《单片机原理与接口技术课程设计》
设置的时间为24秒钟,则在LED上显示24两位数。
定时TO计数24秒后中断返回,继续定时计数下一个24秒;同时则在2位LED显示器上显示,表示时间已经过去1秒钟,即为23要按下键,即可暂停计时秒。
这样一直持续下去。
直到变为“00”时表示赛程结束。
如果比赛中裁判叫停,则只要按下暂停按键,即可暂停计时。
8
信息工程学院《单片机原理与接口技术课程设计》3软件设计
3.1系统主程序
根据设计要求,可分析并设计图程序流程图,采用24秒倒计时,所以复位值为24秒,倒计时到0时,数码管显示为00,开始判断,并报警。
开关A1控制复位,A2控制暂停,A3控制启动。
以下是篮球计时器24秒倒计时的程序流程图:
开
初始
N
是
Y
倒计时
定时时
N
N
Y
Y是暂停键
蜂鸣器3.1图主程序流程图结9
信息工程学院《单片机原理与接口技术课程设计》
3.2中断程序
定时器定时,每隔50毫秒进入中断一次。
进入20次,完成1秒计时。
数码管显示数字减1。
3.3键盘程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
10
信息工程学院《单片机原理与接口技术课程设计》
4结论
本次课程设计是我到目前为止觉得最有意义也是收获最大的一次实习,可以说是有苦也有甜。
身为电子信息工程系的学生,设计是我们将来必须的技能口而这次课程设计恰恰给我们提供了一个应用自己所学知识的平台。
从通过理论设计,到确定具体方案,再到仿真软件仿真,最后到调试电路、显示结果。
整个过程都需要我充分利用所学的知识进行思考、借鉴。
可以说,本次课程设计是针对前面所学知识进行的一次比较综合的检验。
总的来说,这次课程设计虽然很累,但非常充实。
在这次实习中,正确的思路是很重要的,只要设计思路是正确的,那么才可能成功。
因此我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础。
如果说前面的电路的理论设计是多么令人头痛的事,那么安装、调试过程则是一个考验人的耐心的过程,对电路的安装、分析调试要一步一步来,不能急躁。
这次课程设计对以前学过的理论知识起到了很好的回顾作用,同时还弥补了之前对单片机知识的相关漏洞。
刚开始,我对课程设计是一无所知,就连按照硬件图来写汇编程序,都是一个很大的问题。
后来在实验室同学的耐心指导下,我终于知道了如何编写程序,焊接实物。
在设计过程中,遇到了很多疑难点,通过同学间的讨论,并在老师指导下,综合运用所学知识,最终完成基于单片机的篮球比赛计时器设计。
是一个24秒计时电路,并具有时间显示的功能。
当然,要做好本次的课程设计,熟练地掌握课本上的理论知识是前提。
而且这次的课程设计老师在验收时还要求学生进行现场操作,答辩。
这就更加促进了我们去认真的去完成这次课程设计,同时也只有这样刁一能督促学生对设计中出现的问题进行一定的分析和调试。
虽然这次课程设计过程中我们遇到了很多问题,比如说程序、流程图的仿真,我们还不能如鱼得水,还不是很熟练,经常熬夜对程序进行修改,但是我仍然非常感谢有这么一个机会,老师的耐心指导也让我们懂得了不少知识。
总体来说,这次课程设计让我受益匪浅。
在摸索改如何设计电路使之实现所需功能的过程中培养了我的设计思维,增加了实际动手能力,在让我体会到了设计电路的艰辛的同时,更让我体会到了成功的喜悦。
11
信息工程学院《单片机原理与接口技术课程设计》
参考文献
[1]楼然苗单片机课程设计指导【M].北京:
北京航空航天大学出版社,出版年:
2ao}
年.
[2]何立民.单片机实验与实践教程【M].北京:
北京航空航天大学出版社,出版年:
2004
年,
[3]童诗白‘模拟电子技术基础【M].北京:
北京高等教育出版社,出版年:
2001年.
[4]李朝青.单片机原理及接口技术!
M].北京;北京航空航天大学出版社,出版年:
1999
年.
[5]张俊漠.单片机巾级教程【M]‘北京:
北京航空航天人学出版社,出版年:
1999年.
【6]余永权.Flash单片机原理及应用[M].北京:
电子工业出版社,出版年:
1997年.
12
信息工程学院《单片机原理与接口技术课程设计》
附录A源程序
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitw1=P3^3;//十位位选
sbitw2=P3^4;//个位位选
sbitkey1=P3^5;
sbitkey2=P3^6;
sbitkey3=P3^7;
sbitBEEP=P1^0;//报警器控制位
;sbitLED=P1^1sbitleft=P2^6;
sbitright=P2^7;
unitnum,num1,shi,ge;
intnum;
数码管相应的段选码ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,//0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e
};
voiddelay(unitz)
{
unitx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
*//*按键扫描函数voidkeyscan()
{
开始计数if(key1==0)//{delay(10);//延时消抖if(key1==0)
{while(!
key1);//松手检测TR0=1;
beep=1;
led=1;
}
}
13
信息工程学院《单片机原理与接口技术课程设计》
if(key2==0)//暂停计数
{delay(10);//延时消抖
if(key2==0)
{while(!
key2);//松手检测
TR0=0;
beep=1;
led=1;}
}
if(key3==0)//重新计时
{delay(10);//延时消抖
if(key3==0)
{TR0=0;
while(!
key3);//松手检测
num1=24;
TR0=1;
BEEP=1;}//关闭蜂鸣器
}
}
voidinit()
{
num1=24;
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;//定时器0的高八位
TL0=(65536-50000)%6;//定时器0的低八位
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
w1=1;
w2=1;
num=0;
}
/*数码管显示函数*/
voiddisplay(ucharshi,ucharge)
{
left=1;
right=0;
P0=table[shi];
delay
(2);
left=0;
right=1;
P0=table[ge];
delay
(2);
}
14
信息工程学院《单片机原理与接口技术课程设计》
voidmain()
{
init();
while
(1)
{
keyscan();
if(num==20)
{num=0;
num1--;
if(num1=0)
{
beep=0;
led=0;}
if(num1<0)
{TR0=0;
num1=24;}
}
ge=num1_x0010_;//个位shi=num1/10;//十位display(shi,ge);
}
}
voidtime1()interrupt1//产生一次中断定时器计数,50ms{
TH1=(65536-50000)/256;
TL1=(65536-50000)%6;
num++;
}
15
信息工程学院《单片机原理与接口技术课程设计》
附录B系统原理图
16