篮球计时计分器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
篮球计时计分器设计
摘要
此次设计隶属于计算机控制技术弱电课程设计,主要通过基于单片机AT89S51芯片作为本次核心控制元件,利用1602aLCD作为显示器件,键盘输入电路等相关的软件的有机结合以及喇叭等辅助器件,构成了一个满足基本设计要求的篮球计时计分器。
本系统可满足倒计时方式显示单节比赛剩余时间,可暂停,显示双方得分,按键输入可修改分值,如有错误可进行分值的相应修改。
整场比赛结束时有声音提示。
系统符合一般篮球计时器的工作要求。
采用液晶显示器1602aLCD,因为其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,而且有利于硬件实物的成功。
设计的主要方法主要是先通过仿真确定方案的可行性,然后在进行局部测试看实物是否满足仿真的设计要求,最后把整体电路搭建完成做最后的测试和调试。
关键词:AT89S51 按键输入点阵字符型液晶模块 1602A, 计数器计时器
摘要: (1)
第一章绪论 (3)
1.1设计意义 (3)
1.2系统的基本要求及本人所做工作 (3)
第二章方案选择及设计思想 (4)
2.1系统显示模块 (4)
2.1.1 1602接口说明 (4)
2.1.2 1602A的部分使用说明 (5)
2.2单片机设计模块 (6)
2.3键盘模块 (8)
第三章硬件设计 (9)
3.1原理框图 (9)
3.2工作原理 (9)
3.2.1 LCD显示器LCD1602 (9)
3.2.2时钟电路 (10)
3.2.3复位电路 (10)
3.2.4按键电路 (11)
3.3元件清单 (11)
3.4电路图 (11)
第四章软件设计流程及描述 (13)
4.1系统模块层次结构图 (13)
4.2程序流程图 (14)
4.3初始化程序 (15)
4.3.1 T0,T1的初始化 (15)
4.3.2 LCD初始化 (15)
4.4LCD内部程序 (16)
4.4.1读忙判断程序 (16)
4.4.2 写函数 (16)
4.5按键扫描 (17)
第五章测试 (20)
5.1测试工具 (20)
5.2测试结果 (20)
5.3仿真图 (20)
结束语 (21)
致谢 (22)
参考文献................................................... 错误!未定义书签。
1.1 设计意义
进入21世纪,伴随着电子、信息技术的应用与迅速普及,人们对电子技术的要求越来越高。
当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对AT89S51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,和相关外围电路的设计和调试过程进一步了解,有助于今后的工作和学习生活。
本次设计用由AT89S51编程控制LCD作显示的球赛计时计分系统。
该系统具有赛程时间暂停,及时刷新甲、乙双方的成绩等功能。
它具有价格低廉,性能稳定,操作方便并且易于携带等特点。
广泛适合各类学校或者小型团体作为赛程计时计分。
篮球比赛计时计分器是为了解决篮球比赛时计分与计时准确的问题。
此装置利用单片机AT89C51完成了计时和计分的功能。
本文详细地介绍了系统硬件与软件的设计过程,采用该装置可根据实际情况进行比分修改和时间的准确显示,具有低功耗,可靠性,安全性以及低成本等特点
1.2 系统的基本要求及本人所做工作
本系统有三项主要功能:
一.倒计时方式显示单节比赛剩余时间,可暂停。
二.显示双方得分,按键输入可修改分值,设置三个按键分别加分1,2,3;如有错误可进行分值的相应修改设置一个按键每次减1分。
三.24秒倒计时显示,时间结束喇叭响;且显示每一个节次,每一小节比赛结束时有喇叭声音提示。
本人在这次课程设计过程中所做工作如下:查询资料及硬件操作和后期的外围电路设计调试
测试,以及最后的论文撰写。
第二章方案选择及设计思想
通过分析题目的要求,此次系统设计主要可分为三大模块,一是系统显示模块,二是单片机设计模块,三是键盘输入模块。
2.1 系统显示模块
在显示模块的设计中,开始想到了常用的LED显示,但是考虑的后续硬件实现的复杂性(超过10以上的LED实物连接将十分复杂),于是在同学的建议下选取了方便但是没有接触过的LCD显示,因此也导致了一定程度的难度。
下面将对LCD 1602a作个简单的介绍。
2.1.1 1602接口说明
1602采用标准的16脚接口,如下:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光电源正极。
第16脚:背光电源负极。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
LCD 1602A引脚如表2.1所示。
2.1.2 1602A的部分使用说明
写数据
CPU向数据寄存器通道写入数据,SPLC780根据当前地址指针计数器AC值的属性及数值将该数据送入相应的存储器的AC所指的单元里。
如果AC值为DDRAN地址指针,则认为写入的数据是字符代码并送入DDRAM的AC所指单元里。
如果AC值为CGRAM的地址指针,则认为写入的数据时自定义字符的字模数据并送入CGRAM内AC所指的单元里。
所以CPU在写数据之前需要设置地址指针或认为的确定地址指针的属性及数值。
在写入数据后地址指针计数器AC将根据最近设置的输入方式最大修改。
由此可知,CPU在写数据操作之前要做两项工作,其一是设置或确认地址指针计数器AC值的属性及数值,以确保所写数据能够正确到位,其
二是设置或确认输入方式,以确保连续写入数据时AC 值的修改方式符合要求。
读数据
在SPLC780的内部运行时序操作下,地址指针计数器AC 值的每一次修改,包括新的AC 值的写入,光标滚动位移所引起的AC 值的修改或由CPU 读写数据操作后所产生的AC 值的修改,SPLC780都会把当前AC 所指单元的内容送到数据输出寄存器内,供CPU 读取。
如果AC 值为DDRAM 地址指针,则认为读的是DDRAM 内AC 所指的单元的字符代码,如果AC 值为CGRAM 的地址指针,则认为读取的是CGRAM 内AC 所指单元的自定义字符的字模数据。
2.2 单片机设计模块
在单片机设计模块中,采用Atmel 公司的AT89S51单片机作为控制器。
该单片机扩展功能强,软件编程灵活,自由度大,可通过软件编程实现各种算法和逻辑控制,并具有功耗低、体积小、技术成熟等优点,使其广泛应用于各个电子控制系统,完全能满足本系统的功能需求。
单片微型计算机(Single Chip Microcomputer )简称单片机,是指在一块芯片上集成了中央处理器CPU 、随机存储器RAM 、程序存储器ROM 或EPROM 、定时器\计数器、中断控制器以及串行和并行I\O 接口等部件,构成一个完整的微型计算机。
对于简单的输入和输出控制,51机显然最合适,51单片机是8位的,采用总线结构,但是具有控制简便,接口简单,工作可靠,价格经济,能耗少,容易实现系统小型化等特点。
本次设计采用常用的AT89C51,其基本结构框图如图2.1。
图2.1单片机结构框图
图2.2 AT89C51引脚图
AT89S51简介
P0:双向I/O口,寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部存储器时可作为8位准双向I/O口使用。
引脚为39-32。
P1:8位双向I/O口,P1口写入’1’后可作为输入,引脚为1-8。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入,引脚为19。
XTAL2:来自反向振荡放大器的输出,引脚为18。
AT89S51的引脚图如图2.2所示。
P3口介绍如表2.2所示:
2.3键盘模块
此部分由按键开关组成,记分器有九个按键.其中K0按下得分减一. K9键按一下第一个队得分加一. 其余的键分别实现加二,加三,节次,暂停的控制。
调节时间的时候,先同时按下K0和K9.这时时间的小时部分会跳闪,表示小时被选中了,这样就可以
对小时进行设置:按一下K0时间加一,按一下k9时间减一,设置完后再同时按一下K9和K0,时间的分钟部分会跳闪。
对分钟数进行设置:同样按一下K0分钟数加一,按一下K9分钟数减一,设置完后再同时按一下两个键就可以退出设置。
因为篮球计分系统电路结构比较简单,只有按键控制和数码显示两个部分,P0口接6个开关,分别作为比分的加一,加二,加三,减一,设置节次,暂停的按键控制。
P2口和P3口控制LCD的比分及时间显示。
第三章硬件设计
3.1 原理框图
该系统包括单片机AT89S51,时钟电路,复位电路,按键控制电路,及LCD显示器五部分。
该电路控制简单,清晰明了,用LCD液晶显示,避免了用LED的复杂接线,便于实体硬件电路的焊接。
其系统框图如图3.1所示。
各部分的工作原理见第3.2节。
图3.1 系统框图
3.2工作原
3.2.1 LCD显示器LCD1602
该显示器的RS,RW,E端与P2相连,引脚的作用分别是:
RS=0输入指令,RS=1输入数据,RW=0向LCD写入指令或数据,RW=1从LCD读取信息,E是使能信号。
D0~D7与P3相连是数据总线。
3.2.2时钟电路
时钟电路在单片机系统中起着非常重要的作用,是为保证系统正常工作的基础,在一个单片
机系统中,时钟是保障系统正常工作的基准震荡定时信号。
图3.2是晶振电路,主要有晶振和外围电路组成,晶振频率大小决定单片机的快慢,我们这里采用的是12MHZ,另外有2个
30P
的电容。
其中接地用来削减谐波对电路的稳定性的影响。
C2
33p
C3
33p
X1
11.0592MHz
图3.2 时钟电路图
3.2.3复位电路
单片机系统的复位电路我们采用的是上电加按钮的复位电路形式,电阻采用220欧的阻值,采用22μ的电容。
其电路连接方式如图3.3。
当单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。
图3.3 复位电路图
3.2.4按键电路
本设计共有9个设置按键,分别为+1,+2,+3,-1,暂停,设置节次按键。
按键与P0口相接。
其电路图如图3.4。
液晶显示屏LCD 1602a×1 电容22μ×1 电容30p×2
3.4 电路图
该设计的总的原理电路图如图3.5所示。
当按下不同的按键时,显示器上显示相应的数据,第一列按键从上到下实现的功能分别是得分减一,A对加一分,B对加一分。
第二列按键从上到下实现的功能分别是倒计时暂停,A对加二分,B对加二分。
第三列按键从上到下实现的功能分别是节次显示,A对加三分,B对加三分。
每一节12分钟结束喇叭响。
图3.5 原理电路图
第四章软件设计流程及描述
4.1 系统模块层次结构图
液晶显示模块是一个慢显示器件,所以在执行每一条指令前要确认模块的忙标志,低电平便是不忙,否则此指令失效。
在对液晶模块的出事化中要先设置其显示模式,在液晶模块显示字符是光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙状态。
系统层次结构图如图4.1所示。
系统开始时需要对定时器和LCD进行初始化。
单片机需要对按键进行判断,判断是否有按键按下,并判断是那个按键按下,所以需要写入按键扫描函数。
比赛中需要暂停或休息,所以又需要写入延时函数。
另外显示器要显示数据也需要写入程序让其读取信号。
图4.1 系统模块层次结构图
4.2 程序流程图
定时器T0,T1及LCD的初始化,T0 计每一小节的倒计时时间,T1计当前时间。
按键与P0口相接,读取P0口的数据判断是否有按键按下,若没有按键按下则继续返回读取P0口的数据。
若有按键按下就判断是哪个键按下,各个键的作用是:A对加一分,加二分,加三分;B对加一分,加二分,加三分;得分减一,暂停/暂停复位,节次加一。
等待按键释放并将时间,分数,节次经P2,P3口输出在LCD上显示。
其总的流程图如图4.2。
图4.2 总的程序流程图
4.3初始化程序
4.3.1 T0,T1的初始化
void Timer0Init(void)
{
TMOD=0x11;
TH0 = 0x3c;
TL0 = 0xb0; //50ms定时初值
TH1=0x3c;
TL1=0xb0; //10MS定时初值(T1计时用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
4.3.2 LCD初始化
void Init_LCD(void)
{
Delay(400); //稍微延时,等待LCM进入工作状态 Write_Comm(0x38); //8位2行5*8
Write_Comm(0x0c); //显示开/关,光标开闪烁开
Write_Comm(0x01); //清显示
Write_Comm(0x06); //文字不动,光标右移
Write_Comm(0x02); //光标归位
}
4.4 LCD内部程序
4.4.1读忙判断程序
void Read_Busy(void)
{
uchar i=50;
Lcd_Port=0xff;
RS = 0;
RW = 1;
E = 1;
while((i--)&&Busy);
E=0;
}
4.4.2 写函数
写指令函数
void Write_Comm(uchar lcdcomm)
{
Read_Busy();
RS = 0;
RW = 0;
E = 1;
Lcd_Port=lcdcomm;
E = 0;
}
写字符函数
void Write_Char(uint num)//写字符函数 {
Read_Busy();
RS = 1;
RW = 0;
E = 1;
Lcd_Port = Lcddata[num];
E = 0;
}
写数据函数
void Write_Data(uchar lcddata)
{
Read_Busy();
RS = 1;
RW = 0;
E = 1;
Lcd_Port = lcddata;
E = 0;
}
4.5 按键扫描
void keyscan()
{
uchar i,t=0xef; //1110 1111
KEY_IO=0x0f;
keytemp=(~KEY_IO)&0x0e;
if(keytemp!=0) //0000 0000 ;0000 1000; 0000 0100; 0000 0010; 0000 0001;
{
Delay(20);
for(i=0;i<3;i++)
{
KEY_IO=t;
keytemp=(~KEY_IO)&0x0e;
if(keytemp!=0&flag_key==0)
{
flag_key=1;
switch(keytemp)
{
case 0x08:key=0*3+i;break;
case 0x04:key=1*3+i;break; case 0x02:key=2*3+i;break; default:break;
第五章测试
5.1测试工具
4位半数字万用表,5V直流电源。
5.2 测试结果
倒计时方式显示单节比赛剩余时间,可暂停。
显示双方得分,按键输入可修改分值,设置三个按键分别加分1,2,3,如有错误可进行分值的相应修改设置一个按键每次减1分。
24秒倒计时显示时间结束喇叭响,且显示每一个节次,比赛结束时有喇叭声音提示。
5.3 仿真图
最后的仿真效果图如图5.3所示。
图5.3 仿真图
结束语
通过本次本次课程设计的实践,发现了自己的很多不足,首先是自己知识掌握很多都一知半解,实践经验及动手能力比较薄弱,不管是程序设计阶段还是实际调试阶段都出现了很多错误。
在设计过程中,我经历了很多,也学到了很多,对于程序的改写一筹莫展的时候也有,此次设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程。
“实践出真知”,通过这次课程设计,我认识到只有理论联系实践才可以把所学的东西真正掌握。
此次课程设计让我进一步了解了单片机的实际设计过程,了解了基本的设计方法和调试过程的基本步骤,以及学会了制板。
在这过程中出现了很多问题,在此特别感谢同学们的细心指导和帮助,以及指导老师赖春红对我的系统设计和硬件调试过程帮助和指导,有了他们我的设计才有了实物制作成功的保证。
参考文献
[1]万文略编著.单片机原理及应用. 重庆:重庆大学出版社,2004.
[2]孙德文编著.微型计算机技术. 北京:高等教育出版社,2005.
[3]张建勋编著.C语言程序设计教程. 北京:清华大学出版社,2008.
[4]于海生编著.计算机控制技术. 北京:机械工业出版社,2007.
[5]胡建明编著. MCS-51单片机篮球计分器的设计[N]. 期刊论文.广西轻工业.2008-9
[6]金素华,张尉.单片机调试方法的讨论.电子世界,2004-4-25
[7] AT89C51 DATA SHEEP Philips Semiconductors 1999.dec。