单片机篮球计分器C语言课设论文.docx
- 文档编号:8692981
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:432.84KB
单片机篮球计分器C语言课设论文.docx
《单片机篮球计分器C语言课设论文.docx》由会员分享,可在线阅读,更多相关《单片机篮球计分器C语言课设论文.docx(25页珍藏版)》请在冰豆网上搜索。
单片机篮球计分器C语言课设论文
摘要
单片机,亦称单片微电脑或单片微型计算机。
自20世纪70年代问世以来,单片机以其极高的性价比受到人们的关注,因此应用广泛,发展迅速。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
目前,单片机已成为控制应用系统中不可缺少的部分,许多用单片机做控制的计分器计时器也应运而生。
本系统是基于AT89C51单片机的篮球计时计分器,利用6个八段共阴极LED数码管和1602LCD液晶显示屏作为比赛分数和时间显示器件。
采用模块化设计,主体分为LCD计时显示模块、数码管计分显示模块、定时模块、按键控制模块
等。
每个模块的程序结构简单、任务明确,易于编写、调试和修改。
程序可读性
好,对程序的修改可局部进行,其他部分可保持不变。
编程后利用KeilC51软件来进行编译,再将生成的HEX文件装入芯片中。
关键词:
51单片机应用; KeilC51;数码管;LCD显示;计时计分器
第一章绪论…………………………………………………………....…………….1
1.1系统基本功能介绍............................................................................................1
1.2课程设计运用的知识点…………………………………………….....……...1
1.2课程设计目标………………………………………………..........…..............1
第二章方案的设计…………………………….………………..…..……….….................…..2
2.1系统总体设计方案…………………………………………………................2
2.2系统的组成框图………………………………………………………....……2
第三章硬件部分的设计………………………………………………................…..3
3.1单片机接口电路………………………………………………............………3
3.2键盘接口电路……………………………………………………...……….....4
3.3数码管显示电路……………………………………………….......……….....5
3.4LCD倒计时显示电路………………………………………...........................6
第4章软件部分的设计………………………………………………...........……...8
4.1延时模块…………………………………………………………....................8
1简介…………………………………………………….................................…8
2延时的流程图……………………………………….........................…………8
4.2按键模块………………………………………………………........................9
1简介……………………………………………….........................................…9
2键盘处理的流程图………………………………………….……............……9
4.3数码管显示及成绩调整模块………………………………………...…….....9
1简介…………………………………………………………….................……9
2成绩调整流程图……………………………………………………...........…10
4.4LCD倒计时显示及时间调整模块………………………………...………..11
1简介…………………………………………………………............….......…11
2定时设计………………………………………………...............................…11
3时间调整流程图………………………………………………...............……12
总结………………………………………………………………………….13附录源程序设计……………………………………………….........................14
第一章绪论
1.1系统基本功能介绍
篮球比赛是根据比赛队伍在规定的比赛时间里得分多少来决定胜负的,该课设题目是设计一个篮球比赛计分器,因此其任务是设计一个能完成比赛过程中的计时计分的小型控制系统,从而根据最终得分判别比赛结果根据实际篮球比赛规则。
该系统主要主要有以下设计内容与要求:
1、显示分数:
设计LED显示篮球比分牌,能同时显示A、B两队比分,最大得分数为999;
2、计分:
通过加分按钮可以给A队或B队加分,即分别对A、B两队比赛过程中的得分进行加操作;
3、更换场地:
设计对调功能,A队和B队分数互换,意味着中场交换场地,即中场交换比赛场地时,能交换A、B两队比分的位置。
4、计时:
显示比赛倒计时功能,比赛开始前设定比赛时间,剩余时间为0时不再继续计时而显示时间结束。
比赛过程中发生暂停时使倒计时暂停,比赛重新开始时倒计时继续。
1.2系统设计运用的知识点
本系统主要运用单片机知识设计篮球赛计分器,因此涉及到的知识点主要有以下几点:
1、AT89C51单片机的运用
2、定时器的运用
3、LED数码管的使用
4、单片机I/O口的使用
5、1602液晶显示屏的使用
6、矩阵键盘的使用
1.2设计目标
1、巩固所学单片机基础知识
2、学习单片机系统开发所需知识并实践
3、熟练掌握单片机基本模块和功能的使用
4、熟悉硬件及硬件编程
5、完成篮球计分器的设计
第二章方案的设计
2.1系统总体设计方案
本系统设计采用OK51-POWER单片机开发板作为开发平台,以STC89C52单片机作为核心元件分别利用6个八段共阴极LED数码管和1602LCD液晶显示屏作为比赛分数和时间显示器件。
每队得分显示使用3个数码管,计分范围为0-999,比赛时间为时、分、秒倒计时显示。
比赛前先设置好比赛时间,启动后将从设置值开始倒计时直到为0。
比赛时进行的时间设置、计时启动/暂停、调整比分采用4*4的矩阵键盘,实际使用其中的10个按键,两个用于设置比赛时间的时和分,一个用于比赛开始启动计时,一个用于交换场地时对换分牌,6个用于分别对A、B队进行加1分、2分、3分操作。
2.2系统的组成框图
为了实现原理图的设计目标,同时结合自己获取的各种资料以及要达到的具体功能,所确定的组成框图见图2.1。
图2.1系统原理框图
组成框图的组成及其功能说明:
1、控制按键:
由比赛时间设定键、开始/暂停比赛键、调整A、B队比赛得分键组成。
设定好比赛时间后按开始/暂停键比赛开始,中途休息时按比赛/暂停键能够暂停计时,某只队伍得分时,按相应加分键进行计分。
2、比分显示:
通过按键对A、B对得分进行调整后将分值送到LED数码管进行显示,并且每进行一次比分时刷新都及时显示调整后的比赛成绩。
3、时间显示:
由时间设置按键向LCD送计时初值,设置时能通过LCD液晶屏看到进行的设置操作。
设定初值并启动定时器进行计时后,由1602液晶显示屏显示倒计时,显示时、分、秒,按秒计时(每秒刷新一次,秒数递减1,当秒数减到0时若分钟还有时间则秒数再从59开始并把分钟数减1,同理当分钟数减为0时若时钟还有时间则分钟数再从59开始并把时钟数减1),比赛暂停时时间停止,计时直到剩余时间为0。
第三章硬件部分的设计
3.1单片机接口电路
CPU为STC89系列8位单片机,可工作于6Clock,32I/O,3定时器,内置WDT、EEPROM。
支持ISP,ESD。
晶振采用11.0592Mhz,单片机引脚全部引出。
图3.1
单片机接口电路见图3.1,其电路分析如下:
1、复位电路
复位是指单片机的CPU或系统中其它的部件处于某一确定的初试状态,并从这一状态开始工作。
除了进入系统的正常初始化之外,当由于程序运行出错或是操作错误使系统处于锁死状态,为摆脱困境,需要进行按键复位。
通常单片机的复位操作有上电复位、信号复位、运行监视复位,运行监视复位有程序运行监视和电源监视。
在本设计中,则是采用上电复位,复位电路见图2,原理是当电源接通后,上电瞬间RESET引脚获取高电平,该高电平需要电容充电来维持,当高电平维持在两个机械周期以上则单片机能被复位。
一般为了能够可靠复位,复位时间一般在10ms以上,对于振荡频率为12MHZ的复位电路,典型RC系数为:
C3=10uF,R29=8.2千欧。
2、晶体振荡电路
晶体振荡电路用于产生单片机工作时所需的时钟信号,从而保证各部分工作的同步。
单片机内部有一个高增益反相反大器,只要在输入端XTAL1与输出XTAL2之间挂一个晶体振荡器和微调电容就可以构成一个稳定的自激震荡器并在单片机内部产生的时钟脉冲信号。
振荡电路见图3,电容器C1与C2用于稳定频率和快速起振,电容一般在5PF—30PF,本设计电容为30PF。
3.2键盘接口电路
与通用单片机相比,单片机应用系统中的键盘种类很多,键盘中按键数量设置依系统操作要求而定。
单片机应用系统中的键盘有独立式和行列式(矩阵)两种。
该系统采用的的是4*4矩阵键盘。
其电路图见图3.2。
图3.2
行列式键盘用I/O口线组成行列结构,按键设置在交叉点上,在按键数目较多时运用这种连接方式,可节省I/O口连线。
图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
行列式键盘的标识最常用的两种方法:
行扫描法和线反转法。
在此我们使用行扫描法,行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下:
1、判断键盘中有无键按下将全部行线P30-P33置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
3.3数码显示电路
数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。
七段发光管加上一个小数点,共计8段。
因此我们对它编码时,刚好是用一个字节。
该开发板共有6位数码管,其结构如图3.3.1所示,电路图如图3.3.2所示。
图3.3.2中U1,U2分别是段位状态锁存器,数据通过P0口所存到锁存器,然后驱动数码管动态显示。
图3.3.1
图3.3.2
1、LED的接法
共阴极接法是指把发光二极管的阴极连接在一起构成公共阴极,使用时公共阴极接地,阳极输入高电平段的二极管则会导通发光,而输入低电平的则不会亮。
下表为共阴极接法显示结果对应的十六进制段选值:
1、显示方式
动态显示是指依次轮流点亮显示器的各个位,每隔一段时间则点亮一次,设置足够短的时间,利用人的视觉暂停效应和发光二极管的熄灭时的余辉,达到多个字符同时显示的效果。
其特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。
运行这种显示方式可以降低成本与功耗,但需要较大的驱动电流。
此外P0需外加上拉电阻(图3.3.3)。
图3.3.3
3.4LCD倒计时显示电路
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
液晶板上排列着若干5×7或5×10点阵的字符显示位,每个显示位可显示1个字符,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类。
图3.4.1是字符型模块的电路框图,它由KS0066、KS0065及几个电阻电容组成。
KS0065是扩展显示字符用的。
图3.4.1
接口方面,有8条数据,三条控线。
可与微处理器或微控制相连,通过送入
数据和指令,就可使模块正常工作,图3.4.2是模块和单片机相连的电路。
图3.4.2
1、1602采用标准的16脚接口,其中:
第1脚:
VSS为地电源
第2脚:
VCC接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生重影,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
背光灯电源。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。
2、基本操作时序
1)读状态:
输入:
RS=L,RW=H,E=H
2)写指令:
输入:
RS=L,RW=L,D0-D7=指令码,E=高脉冲
3)读数据:
输入:
RS=H,RW=H,E=H
4)写数据:
输入:
RS=H,RW=L,D0-D7=数据,E=高脉冲
第四章软件部分设计
4.1延时模块
1、简介
该部分程序采用双循环结构完成粗略延时。
用于系统中数码管动态显示、消除抖动、向LCD送内容等地方的延时处理。
2、延时的流程图
4.2按键模块
1、简介
循环扫描键盘,当有按键按下时,由于按键在闭合和断开时,触点会存在抖动现象:
按键抖动时间由按键的机械特性决定(一般为5ms~10ms)。
因此,当检测到按键按下时,首先通过延时消除前沿抖动,再判断所按下的键的键值,根据键值作出相应处理,同样为了消除后延抖动,需要在释放按键后再返回。
2、键盘处理的流程图
4.3数码管显示及成绩调整模块
1、简介
数码管显示部分通过P0口外加上拉电阻进行显示,数码管采用7段共阴极数码管。
6个数码管前3个表示A队的三位数比分,后3个数码管表示B队的三位数比分,程序通过P0口先将要显示的一位数值存储起来,然后通过段选信号,将要显示的数码管的段点亮,然后再通过位选信号,点亮一位数码管,并通过延时子程序进行延时,使其显示的数值稳定下来,依次点亮6个数码管。
比赛开始前通过初始化数码管均显示0。
但当显示完一圈后程序跳出,等待数据的传输,再次进行显示。
当键盘扫描程序检测到有调整比赛得分的按键按下时,则进行相应的加分操作,为防止连续按键造成较大的影响,对A,B队分别设置了加1分、2分、3分的按键。
在按下加分键完成加分后,加分后的得分值通过对应的显示程序依次提取百位、十位、各位并显示出来。
(计分最大值可达999,当得分达到最大值时重新从0开始累加,实际情况中不可能达到如此大比分)
2、数码管显示及成绩调整流程图
4.4LCD倒计时显示及时间调整模块
1、简介
1602LCD液晶显示屏能显示两行字符,通过P1口送入需要显示的字符,每行最多能显示16个字符,对控制器每次进行读写操作之前必须先进行读写监测,确保使能端允许,然后再进行显示模式、开/关及光标设置,最后才能进行数据控制。
通过初始化之后,使第一行显示提示符“Timeremained:
”,第二行显示“00:
00:
00”。
当检测到开始/暂停或调整时间的按键按下时,则进行相应的操作。
比赛开始前首先应对计时初值进行设置,每按一次时设置键或分设置键时,对应的时间数值加1,并通过写数据程序将更改后的时间数值重新写入LCD显示屏的第二行。
若设置的是小时,则相应显示小时的位置显示出更改后的数值,若设置的是分钟,则相应显示分钟的位置显示出更改后的数值。
因此,每此设置时间时进行的加1的效果都能及时显示出来,以便知道所设值的大小。
当设置的值到达60时重新从0开始累加。
时间设置完成后,通过按开始/暂停键可使计时启动比赛开始,此时单片机的定时器T0运行控制位TR0被打开,根据初始化的设置,它计满一次将消耗50ms,通过中断服务子程序使定时器重新定时并把定时次数加1,每当当定时次数达到20时LCD显示程序的显示结果将刷新一次并至定时次数为0,从而完成按秒倒计时。
当比赛中途休息时则再按下该键对TR0取反使时间暂停,等到比赛继续进行时再按该键对TR0取反恢复计时。
当计时时间达到时将不再继续计时,此时LCD屏显示“Timeover!
”,提示比赛结束。
2、定时设计
89C52单片机内部有3个定时器,此系统中采用定时器0进行计时。
该定时器有4种计时方式,这里采用方式1。
如图4.4.1为定时器T0和T1的结构图,每个定时器由两个加1计数寄存器(由高8位和低8位两个寄存器组成,共16位),分别对应T/C0和T/C1。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能。
TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
图3.4.2
选择方式1进行计时时,计数位数为16位,由于晶振频率为11.0592Mhz,计数寄存器每加1定时时间为1us,故最大可定时65536us,当需要通过该定时器完成一秒定时时,使寄存器TH0、TL0初值分别为TH0=(65536-50000)/256、TL0=(65536-50000)%256,则每次当时时间为50ms,定时20次即为1秒。
3、LCD倒计时显示及成绩调整流程图
总结
本文介绍了一个利用STC89C52设计篮球计分器的设计。
文章对计时计分器的硬件组成结构和软件设计部分的功能都做了详细的介绍。
通过这次课程设计,让我学到了许多没有学到的知识,增强了自己的独立思考能力和实际动手能力,特别是一些专业性很强的知识让我受益匪浅,不仅使我学会了用单片机C语言编写程序的方法,而且对学过的相关知识得到了进一步的巩固和提高,通过阅读相关专业书籍掌握了一些以前未了解的知识;同时也熟悉了很多的硬件设备,更重要的是使我在学习和掌握这些知识的同时,能够在思维上得到提高和升华,在分析问题和解决问题的能力上得到培养和提高。
这是我在平时的学习中很难学到的,只有在这样一种要求和压力下才能更好地学习到所需的知识。
这次单片机课设对所学的知识进行了一次综合的总结和运用,在课设报告的写作过程中,使我在排版方面和整理设计方案方面也得到了进一步提升。
这是我第一次正式的设计单片机课程实验设计,虽然过程比较的辛苦,但终究完成了最后的设计,有很多的感触。
课程设计虽然做完了,但真正的学习并没有结束,这是汗水与智慧的结晶,更是兴趣和学习的开始。
这次课程设计使我完善了知识结构、拓宽了知识面,开阔了眼界、提高了对各科知识综合应用的能力;同时也锻炼和培养了我的基本素质,它使我更加耐心、谨慎、细致,让我能够更加深刻的理解本门课的知识,同时也让我对本门课程产生了更大的兴趣。
我希望能够通过自己的努力能够将本课程更加牢固的掌握。
在此,衷心感谢老师的指导监督与同学们的陪伴!
附录源程序设计
#include
#defineucharunsignedchar
#defineuintunsignedint
//位声明
sbitLCD_RS=P2^0;//数据/命令选择端
sbitLCD_RW=P2^1;//读/写选择端
sbitLCD_EN=P2^2;//使能信号
sbitdula=P2^6;//段选信号
sbitwela=P2^7;//位选信号
//全局变量定义
uchartt,miao,fen,shi;
uchartemp,key,num;
uintextemp,disnum1,disnum2;
ucharcodetable_du[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchara[]="Timeremained:
";
charb[]="00:
00:
00";
charc[]="Timeover!
";
/*延时函数
/****************************************************************/
delay(ucharx)
{
uchara,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
/*检查LCD忙状态
/*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
/****************************************************************/
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
delay(3);
result=(bit)(P1&0x80);
LCD_EN=0;
returnresult;
}
/*写指令数据到LCD
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
/****************************************************************/
voidwrite_com(unsignedcharcom)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P1=com;
LCD_EN=1;
delay(3);
LCD_EN=0;
}
/*写显示数据到LCD
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。
/****************************************************************/
voidwrite_date(unsignedchardate)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P1=date;
LCD_EN=1;
delay(3);
LCD_EN=0;
}
/*将时间的时、分、秒写到相应位置
/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 篮球 计分 语言 论文