ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:298.14KB ,
资源ID:7957857      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7957857.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机篮球计时计分器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机篮球计时计分器.docx

1、单片机篮球计时计分器单片机技术及其应用课程设计报告题 目: 篮球计时计分器 班 级: 通信本科1班 学 号: 姓 名: 同组人员: 指导教师: 敏 2014 年 12 月 15 日目 录1概述 11.1单片机简介 11.2课程设计的意义 21.3设计的任务和要求 22系统总体方案及硬件设计 22.1 系统总体方案设计 22.2 单片机选择 33 系统的硬件设计 43.1 时钟电路模块 43.2 键盘控制模块 43.3 显示模块 53.4定时报警模块 64 系统的软件设计 64.1软件设计总流程图 64.2 定时初值计算 74.3 各部分程序功能分析 85 系统的Proteus仿真 136 总结

2、 147 指导老师意见 15参考书目: 15附录 C语言源程序 16篮球计时计分器1概述1.1单片机简介 单片机,全称为单片微型计算机(Single Chip Microcomputer),即把组成微型计算机的各个功能部件如中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)、定时器/计数器以及串行通信接口等(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)都集成在一块芯片上,构成的一个完整的微型计算机。由于单片机的集成度很高、功能强、通用性好、特别是它的体积小、重量轻、功耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等优点

3、、使得单片机得到了迅速推广应用、已远远超出了计算机科学的领域。单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。而美国ATMEL公司开发生产了新型的8位单片机AT89系列单片机。它不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点。此次设计中所用到的AT89S52就是其中典型的代表。由于

4、单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器和24秒控制器等组成。本次设计的篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器等组成。1.2课程设计的意义单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智

5、能性(我们只要编写不同的程序后就能够完成不同的控制工作),单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中。通过此次基于单片机设计的篮球计时计分系统,我们可以进一步熟悉和掌握单片机的内部结构和工作原理,更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧。对此次的单片机课程设计,我们可以在将来的工作和学习中加以应用。1.3设计的任务和要求任务: 设计一个用于赛场的篮球计时计分器。要求: 1、能记录整个赛程的比赛时间,并能修改比赛时间。 2、能随时刷新甲、乙两队在整个过程中的比分。3、中场交换比赛场地时,能交换甲、乙两队比分的位置。4、比赛结束时,能

6、发出报警声。2系统总体方案2.1 系统总体方案设计本设计篮球计时计分器主要包括一下五部分:按键输入模块,单片机控制系统、计时时间显示模块、计分分数显示模块和定时报警模块。通过单片机控制系统输出信号来控制计时显示模块、计分显示模块和定时报警模块的正常显示和工作,同时单片机还不断扫描键盘输入状态,接收键盘的输入控制信号,进而调整输出。系统总体框图如下图(图2-1)所示。图2-1 系统总体框图2.2 单片机选择STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用STC公司的高

7、密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 3

8、2 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3 系统的硬件设计3.1 时钟电路模块在单片机应用系统中,时钟电路提供保障系统正常工作的基准振荡定时信号。主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。这里采用的是12MHz的晶振,两

9、个电容选用的是330pF的瓷片电容,晶振的两个引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接电路如图3-1所示。图3-1 时钟电路3.2 键盘控制模块本设计中共设有7个按键,各个按键均有对应的功能。仿真电路如下图所示:图3-2 按键控制电路3.3 显示模块本设计中计时时间显示模块采用一个4位一体7段式共阴极数码管显示,计分分数显示模块采用两个两位一体7段式共阴极数码管分别显示甲乙两队得分。并且使用74hc573芯片驱动该数码管,使数码管正常显示。其具体电路如图3-3所示。 (a)时间显示模块(b)甲、乙对分数显示图3-3 显示模块电路3.4定时报警模块报警电路模块由蜂鸣器加三极管

10、驱动组成,不仅实现了定时报警功能,而且还可以在按下按键时发出按键声音。具体电路如图3-4所示:图3-4 报警模块电路4 系统的软件设计4.1软件设计总流程图本设计软件设计部分采用模块化程序设计,程序部分由主程序、延时子程序、T0中断服务程序、按键扫描子程序、数码管显示子程序、定时设置子程序、结束报警显示子程序。程序的总流程图如图4-1所示。图4-1 程序流程图4.2 定时初值计算单片机的定时初值计算公式为:定时初值 = 65536 - 定时时间/机器周期则最大定时时间=65536us = 0.065536s本设计中采用晶振频率为f = 12MHz,则机器周期=1us (1微秒)。程序中采用的是

11、定时器T0,工作在方式1,取定时器1次定时0.02s,50次定时为1s.定时初值=65536 - 20000 = 45536 = B1E0H,那么可以对单片机定时器0赋初值为:TH0 = 0xb1H; TL0 = 0xe0H;4.3 各部分程序功能分析本设计程序部分由主程序、延时子程序、T0中断服务程序、按键扫描子程序、数码管显示子程序、定时设置子程序、结束报警显示子程序等几部分组成。各个程序模块的功能如下。4.3.1 主程序模块程序就是从主程序开始执行的,在主程序里可以调用子程序,调用完成后还要返回主程序继续执行。我们在主程序里对各个模块进行初始化,用一个while循环不断地循环执行各个子程

12、序,例如按键扫描程序在这里可以一次一次地扫描按键,这样实现简单易行。本程序主函数如下:void main() / 主程序 TMOD=0x01; /设置定时器工作方式 EA=1; ET0=1; TH0=0xb1; /定时器送计数初值,EA=1,开中断,P3口电平拉高 TL0=0x10; TR0=1; P3=0xff; P1=0x7f; / P1=0x7f, 上半场指示灯点亮 T1=0; while(1) /通过 while(1),反复调用循环体内的子程序 keyjiafen1(); /执行相应的功能 keyjianfen1(); key2(); if(zidong=1) /zidong=1为ke

13、y3()执行条件,仅当半场结束时候执行 key3(); if(n=18&bujin=0) bujin=2; /修改变量bujin的值,设定over()中第二个if语句的执行条件 shijian(); key4(); over(); 4.3.2 延时子程序本程序中单独设立了一个带有参数传输的延时子程序,以供其他程序块的调用,且延时可以通过参数方便的控制,使程序更加的简洁。延时子程序如下:void delay(int t) /延时程序,t为参数方便控制延时的长度while(t-) /循环t次 unsigned int i; /定义无符号整形变量 for(i=0;i200;i+); /循环200次空

14、操作 4.3.3 中断服务子程序当T0中断发生时转入执行中断服务子程序,本程序主要用于提供一个精确的时钟实现定时。另外还用对数码管的循环扫描显示,每中断一次就对数码管进行扫描一次,从而提供一个稳定的显示输出,不受其他程序的延时影响。 void t0(void) interrupt 1 /T0中断服务程序 TH0=0xb1; /定时器初始化TL0=0x10;if(k1) i+; if(i=50) n-; i=0; /到一秒时秒显示加1 display(m,n,x,y); /动态显示时间和比分 if(k3) if(n=0-1) /倒计时秒位为0时借位 n=n1-1;m-; 4.3.4 数码管显示子

15、程序数码管显示采用动态显示方式,这样占用I/O口资源比较少,且易于实现。在运行中可以随时修改显示分数及时间,另外在比赛结束后还可以将时间显示变为显示字符串“End”来提示比赛结束,这样比较实用。其中倒计时的分钟显示程序块如下:P2=0xfe; /显示倒计时分钟十位 P0=segm%100/10; delay(1); /显示延时 P2=0xff; /复位 P0=0; P2=0xfd; /显示倒计时分钟个位 P0=segm%10; delay(1); P2=0xff; /复位 P0=0;4.3.5 按键扫描子程序本设计中采用的是独立式按键,一个按键对应一个单片机管脚,单独扫描。通过P3口扫描,共设

16、有K1K7七个按键,实现功能分别加分、调时、加速调时、开始/暂停、组合减分键等功能。其软件设计流程图如下(见图4-2):其中调整加分按键扫描程序如下:void key1() /按键调整两队得分 if(P3_0=0) /若甲队加分键按下 delay(1); /延时if(P3_0=0) /若还在按下 P3_6=1; /蜂鸣器响while(P3_0=0); /等待松键x+; /甲队加一分P3_6=0; /关蜂鸣器 if(P3_1=0) /若乙队加分键按下 delay(1); /延时if(P3_1=0) /若还在按下 P3_6=1; /蜂鸣器响while(P3_1=0); /等待松键y+; /乙队加一

17、分 P3_6=0; /关蜂鸣器 图4-2 主程序流程图4.3.6 结束报警显示子程序与延时子程序报警服务子程序通过对P1_6输出高电平驱动蜂鸣器报警,另外,本报警程序实现了报警时数码管跟随闪动。具体程序如下void alarm(int i) /结束时数码管闪动加声音while(i-) /循环执行i次 int j; /定义变量j P3_6=!P3_6; /开(或者关)蜂鸣器 for(j=0;j25;j+) /循环25次 display(m,n,x,y); /调用显示函数 P3_6=!P3_6; /关(或者开)蜂鸣器 delay(200); /保持状态延时一定时间 5 系统的Proteus仿真本课

18、程设计采用Keil uVisoin3软件将c语言源代码生产hex格式的文件,然后使用Proteus软件仿真该系统。如图,开始仿真,时间、分数显示模块显示初始时间、分数。按下加分按钮,分数显示模块,分数会发生对应的改变,仿真成功。图5-1 初始状态图5-2 按键加分6 总结通过对本系统的设计,让我更熟悉掌握了Keil uVision3, proteus 这些应用程序的运用,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,还有焊接和程序下载,但在中间暴露出很多问题:对平时上课讲的理论知识没有完全掌握消化,到了实际操作中还得请教同学,在焊接中焊接的基本工夫掌握不到家,手上工夫还是很欠

19、缺的,使得电路板不是很美观。另外,本设计虽然已经实现了时间的倒计时、回表、快进,以及两队的加分和减分,但现在篮球比赛的每一次进攻都是24秒制的,因此,这一点是一个很大的缺陷,希望在以后对此系统进行进一步完善。同时,做设计的这几个月翻阅了很多书,也上了很多网站去寻找自己需要的资料。这种寻找有很强的目的性,只是为了自己选定的课题内容而查阅,所以除了自己设计以外的其他方面几乎还是一无所知。这让我深刻的认识到了自己专业知识的贫乏。为我对自己以后生活的规划敲响了警钟。我对单片机的学习不会因为本设计的结束而结束,在接触的众多资料里,做设计只是走马观花般的点到,希望以后能够进行更系统的学习。这些问题的发现,

20、有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。严谨求实、踏实务实,是我这次设计的深刻总结 7 指导老师意见参考书目:1 李群芳,肖看,单片微型计算机与接口技术,北京,电子工业出版社,2012年2 康华光,秦臻,电子技术基础(数字部分),北京,高等教育出本社,2006年3 谭浩强,c语言课程设计,北京,清华大学出版社,2010年附录 C语言源程序#include code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int m=24,n=10; /计时m为分,n为秒int x=0,y

21、=0; /甲乙两队得分int i=0,j=0,jie=2,zidong=1,bujin=1,zanting=0;int chuzanting=0; sbit P1_0=P10;sbit dula=P11;/*延时*/void delay(int t) while(t-) unsigned int i; for(i=0;i200;i+); /*数码管动态显示*/ void display(int i,int j,int x,int y) if(jie=1&bujin!=2) /中间变量jie=1时,为上半场,对P1赋值 P1=0xbd; /P1=0xbf, 即P1=1011 1111B,点亮对应

22、下半场指示灯 P2=0xfe; / P0=0x7d; /数码管动态刷新显示程序 P2=1111 1110,i为分钟 dula=1; P0=segi%100/10; /刷新显示时间显示分钟十位,调用延时程序, dula=0; delay(1); /延时数码管的点亮 P2=0xff; P0=0; P2=0xfd; dula=1; /同理,动态刷新时分钟个位并延时点亮 P0=segi%10; delay(1); dula=0; P2=0xff; P0=0; P2=0xfb; dula=1; /同理,动态刷新时秒钟十位并延时点亮 P0=segj%100/10; delay(1); dula=0; P0

23、=0; P2=0xff; P2=0xf7; dula=1; /同理,动态刷新时秒钟个位并延时点亮 P0=segj%10; dula=0; delay(1); P0=0; P2=0xff; P2=0xef; /同理,动态刷新甲队分数十位并延时点亮 dula=1; P0=segx%100/10; dula=0; delay(1); P2=0xff; P0=0; P2=0xdf; dula=1; /同理,动态刷新甲队分数个位并延时点亮 P0=segx%10; dula=0; delay(1); P2=0xff; P0=0; P2=0xbf; /动态刷新乙队分数十位并延时点亮 dula=1; P0=s

24、egy%100/10; dula=0; delay(1); P0=0; P2=0xff; P2=0x7f; /同理,动态刷新乙队分数十位并延时点亮 dula=1; P0=segy%10; dula=0; delay(1); P0=0; P2=0xff; /*中断程序*/void t0(void) interrupt 1 /调用定时器T0 基本计时单位秒 TH0=(65536-20000)/256; /利用定时器T0,送入计数初值TH0=0xb1; TL0=0x10; TL0=(65536-20000)%256; /定时器定时单位为20毫秒 i+; /进入中断次数 if(i=50) /利用中间变

25、量i 令i值为50 50*20毫秒=1秒 if(n=0) /当秒减到0以后分钟减1 n=59; if(m=0) m=0; else m-; else n-; /秒减1 i=0; display(m,n,x,y); /调用动态刷新显示程序/*加分*/ /RXD、TXD对应的P3.0和P3.1,为加减分键void keyjiafen1() /加分按键子程序,在主程序中不断调用该子程序 /当检测到甲队加分按键按下时,对应加分 if(RXD=0) /调用延时子程序 实现消除按键抖动功能,即,当 delay(1); /检测到按键按下时候,延时,按键仍按下,说明按键 if(RXD=0) /确实按下,非抖动

26、,甲队对应加分 while(RXD=0); /等待松手 x+; if(TXD=0) /同理,检测乙队加分按键时候按下,并加分 delay(1); if(TXD=0) while(TXD=0); y+; /*减分*/WR和RD对应的P3.6和P3.7void keyjianfen1() /减分按键检测子程序,其基本算法及功能与加 if(WR=0) /相同 delay(1); if(WR=0) while(WR=0); if(x=0) x=0; else x-; if(RD=0) delay(1); if(RD=0) while(RD=0); if(y=0) y=0; else y-; /*回表和

27、快表*/INTO INT1对应的P3.2和P3.3void key2() /显示时间调整程序,即回表和快表 if(INT0=0) /在比赛中有时经常需要回表,故写此程序 delay(1); if(INT0=0) /回表子程序,检测到INT0按下时,使时间回倒 chuzanting=0; / chuzanting=0; zanting=1;为附加变量,当回表按键 zanting=1; /松开时,表暂停,这两个变量用来调用暂停 if(m=2) m=2; n=0; else if(n=59) m+; n=0; else n+; if(INT1=0) /快表子程序,检测到INT1按下时,使倒计加快, /通常情况下与回表子程序配合使用,即当回表 /回过的时候,按此键调整时间 delay(10); / chuzanting=0; zanting=1;作用同上 if(INT1=0) chuzanting=0; zanting=1; if(n=0) if(m=0) m=0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1