篮球比赛计分器
任务书5:篮球比赛计分器任务书
![任务书5:篮球比赛计分器任务书](https://img.taocdn.com/s3/m/0b0886f27c1cfad6195fa7e1.png)
广东工业大学课程设计任务书
题目名称篮球比赛计分器
学生学院
专业班级
姓名
学号
一、课程设计的内容
设计一个篮球比赛计分器。
二、课程设计的要求与数据
设计要求包括:
1. 按照篮球比赛规则,需要两个计分器实现双方比分的显示及比赛时间的显示(倒计时),
时间精确到秒,设每节比赛的初始设置时间为12分00秒,双方初始比分显示为00;
2. 双方分别用2个按键表示加分操作,按一次按键加1分;双方分别用2个按键表示减
分操作,按一次按键减1分,以纠正可能的误加分操作;
3. 计分器应有启动、教练暂停、犯规罚分和复位开关。
复位开关有效时,双方比分自动
清零显示数字“00”;启动开关有效时,比赛开始计时,允许记分。
教练暂停按钮有效时,停止计时,不允许双方改变比分,释放暂停开关后,继续计时比赛。
犯规罚分开关有效时,停止计时,允许双方改变比分,释放该开关后,继续计时比赛。
三、课程设计应完成的工作
1. 利用各种电子器件设计篮球比赛计分器;
2. 利用DE2板对所设计的电路进行验证;
3. 总结电路设计结果,撰写课程设计报告。
四、课程设计进程安排
五、应收集的资料及主要参考文献
发出任务书日期:年月日指导教师签名:
计划完成日期:年月日基层教学单位责任人签章:主管院长签章:。
篮球比赛计分器单片机课程设计报告
![篮球比赛计分器单片机课程设计报告](https://img.taocdn.com/s3/m/e91457ded15abe23482f4d9f.png)
1.1设计的内容与要求设计一个单片机系统用于篮球比赛计时计分,满足以下功能要求:(1)能记录整个赛程的比赛时间,并能暂停。
(2)能随时刷新甲、乙两队在整个比赛过程中的比分。
(4)比赛结束时,能发出报警声。
在篮球比赛过程中需要对参赛双方的比分进行快速的采集记录和加工处理,需要一个快捷方便的计分系统。
该计分系统是一种得分类型的系统,即根据不同球队的不同得分,进行相应的处理,并且能够实时的显示出来。
又因为篮球比赛是分节进行的,所以还需要有倒计时功能的计时器,以便于观众实时了解赛况。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,功耗低,价格便宜,可靠性高和使用方便等独特的优点,目前已经成为测量控制应用系统中的优选元器件。
篮球计时计分器就是以单片机为核心的计时计分系统,有计时器、计分器、直流电源、时钟电路、按键等组成,完全能够实现上述的功能。
1.2设计的目的及意义随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,因此掌握单片机的一些基本功能就显的十分重要。
本次设计是采用AT89S52来编程控制LED七段数码管,使其能够显示篮球比赛的时间和计分,该系统具有赛程时间实时显示、时间暂停以及刷新A/B球队的成绩等功能。
通过本次设计可以了解、熟悉有关单片机的开发设计过程,并更进一步加深对单片机的了解和应用,掌握单片机与外围接口的一些方法与技巧,以及AT89S52单片机的最小应用系统的构成。
还可以了解LED数码管的结构、工作原理、编程方法以及相关的接口实例与具体连接。
通过本次设计可以很好的把课本的理论知识和实践有机的联系起来,是我们对理论知识有更深一步的掌握,为以后的学习打下坚实的基础。
2.1任务分析充分了解本设计要求,明确设计的全部功能、要求及技术指标;熟悉AT89S52单片机与控制对象的各种参数、关系和特点。
按题目要求能记录整个赛程的比赛时间,并能暂停,则需要暂停按键和7段共阴极LED数码管,其中时间显示按每节10分钟倒计时显示分和秒;能随时刷新A/B两队在整个比赛过程中的比分,加分有误时可通过按键实现减分调整,则需要有加减分按键、切换按键等。
篮球比赛计时计分器
![篮球比赛计时计分器](https://img.taocdn.com/s3/m/cd5534d328ea81c758f578d2.png)
内容摘要:篮球比赛计时计分器是为了解决篮球比赛时计时与计分准确的问题,更加方便篮球比赛时的计时与计分问题。
此装置利用单片机AT89C51完成了篮球比赛时计时和计分的功能。
本文详细介绍了系统硬件与软件的设计过程,采用该装置可根据实际情况进行比分、时间的修改与显示,具有低功耗、可靠性、安全性和低成本等特点。
本文主要阐述的是基于AT89C51单片机、数码管、开关模块等构成了篮球比赛计时计分器。
实现了四位一体时钟型共阴数码管显示篮球比赛时间、三位一体共阴数码管显示篮球比赛分数、篮球比赛分数的加减、篮球比赛时间的开始与暂停和篮球比赛结束时的报警等功能。
关键字:AT89C51单片机篮球比赛计时篮球比赛计分内容摘要 (2)引言 (4)第一章绪论 (5)1.1 设计目的与意义 (5)1.2 篮球比赛计时计分器的发展和现状 (5)第二章系统硬件的介绍 (6)2.1 MCS-51 单片机简述 (6)2.2 显示器及其接口 (9)第三章系统整体设计 (11)3.1 系统硬件设计方案 (11)3.2 系统设计流程 (12)第四章系统软件设计 (13)4.1 单元模块设计 (13)4.2 软件设计流程 (13)设计总结 (14)参考文献 (15)附录1:原理图与PCB图 (16)附录2:程序 (17)单片机又称单片微控制器,它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件。
概括的讲:一块芯片就是一台计算机。
我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
EDA课程设计篮球球比赛计分器
![EDA课程设计篮球球比赛计分器](https://img.taocdn.com/s3/m/6d71578e2dc58bd63186bceb19e8b8f67c1cef35.png)
汇报人:01Biblioteka 020304
05
06
记录比赛得分:记录每支球队的得分和总得分 记录犯规次数:记录每支球队的犯规次数和累计犯规次数 记录比赛时间:记录比赛时间、暂停时间和比赛结束 记录球员信息:记录球员的姓名、号码和位置等信息 统计比赛数据:统计投篮命中率、篮板数、助攻数等数据 提供比赛结果:提供比赛结果和排名等信息
微控制器:选择合适的微控制 器,如Arduino、STM32等
电源:选择合适的电源,如 电池、电源适配器等
连接器:选择合适的连接器, 如USB、串口等
外壳:选择合适的外壳,如 塑料、金属等
程序功能:实现篮球比赛计分、计时、统 计等功能
编程语言:C语言或Python等
程序结构:模块化设计,包括主程序、子 程序、函数等
析
稳定性测试: 确保系统在各 种环境下的稳 定性和可靠性
篮球训练:用于记录训练数 据,帮助球员提高技术水平
篮球比赛:用于记录比赛得 分、犯规次数等数据
篮球俱乐部:用于管理球队 数据,提高球队管理效率
篮球赛事直播:用于实时展示 比赛数据,增加赛事观赏性
目标市场:篮球比赛、体育 赛事、体育爱好者等
数据结构:使用数组、链表、队列等数据 结构进行数据存储和处理
用户界面:设计简洁、易用的用户界面, 方便用户操作
测试与调试:编写测试用例,进行程序测 试和调试,确保程序稳定性和准确性
用户界面:简洁明了,易于操 作
交互方式:触摸屏、按键、语 音等多种方式
反馈机制:实时显示比赛信息, 如比分、犯规次数等
数据结构:采用数组、链表等数据结构 存储比赛数据
plc控制的篮球比赛计时计分器毕业设计
![plc控制的篮球比赛计时计分器毕业设计](https://img.taocdn.com/s3/m/2350a0996e1aff00bed5b9f3f90f76c661374cd5.png)
PLC控制的篮球比赛计时计分器毕业设计1. 介绍作为一种常见的体育比赛计时计分设备,篮球比赛计时计分器在提高比赛效率、记录比赛成绩、保障比赛公正方面发挥着重要作用。
本篇文章将围绕PLC控制的篮球比赛计时计分器毕业设计展开深入探讨,旨在从设计原理、实现方法、技术难点等方面全面解读该毕业设计的价值和意义。
2. 设计原理PLC(Programmable Logic Controller,可编程逻辑控制器)作为一种工业自动化控制系统,其具有可编程、灵活性强、可靠性高等特点,是控制篮球比赛计时计分器的理想选择。
设计中,借助PLC的输入/输出模块,可实现对比赛时间和比分的准确控制,提高计分器的稳定性和精准度。
3. 实现方法在PLC控制的篮球比赛计时计分器毕业设计中,需要考虑到计时和计分的同步性、实时性以及人性化的操作界面。
通过设计合理的程序逻辑,结合触摸屏等先进的人机界面技术,可以实现对比赛进程的全面监控和控制,确保比赛计时计分过程的准确无误。
4. 技术难点在该毕业设计中,存在着一些技术难点需要克服。
如何实现计时和计分的精准同步、如何应对突发情况下的异常处理、如何确保设备在长时间运行中的稳定性等。
这些都需要设计者具备扎实的PLC编程和控制技术,深入理解篮球比赛规则和实际比赛场景,以及对计时计分器硬件电路和结构设计的全面考量。
5. 总结回顾通过对PLC控制的篮球比赛计时计分器毕业设计的探讨,我们可以看到,其设计不仅仅是对技术的考验,更是对设计者对篮球比赛规则的理解和对工程实践能力的挑战。
设计者需要综合考虑技术、实用性和可靠性,为比赛的公正进行提供有力保障。
6. 个人观点对于这样的毕业设计,我认为设计者需要有扎实的技术功底,同时要善于思考和总结,关注实际应用中的细节和问题。
只有站在使用者的角度,深入了解比赛需求,才能设计出符合实际情况的篮球比赛计时计分器。
我对这样的毕业设计充满期待,并期待看到更多的优秀作品问世。
篮球比赛计分器课程设计
![篮球比赛计分器课程设计](https://img.taocdn.com/s3/m/3066ec693868011ca300a6c30c2259010202f3e2.png)
篮球比赛计分器课程设计一、课程目标知识目标:1. 学生能够理解篮球比赛的基本规则和计分方法;2. 学生能够掌握篮球比赛计分器的基本操作和使用方法;3. 学生能够运用篮球比赛计分器进行实际比赛计分。
技能目标:1. 学生能够运用所学的篮球比赛计分方法,准确、迅速地进行计分;2. 学生能够通过操作篮球比赛计分器,提高信息处理和实时统计的能力;3. 学生能够在团队协作中,合理分配任务,提高沟通与协作能力。
情感态度价值观目标:1. 学生培养对篮球运动的兴趣,增强体育锻炼的意识;2. 学生树立公平、公正的比赛观念,尊重对手,遵守比赛规则;3. 学生通过团队协作,培养团队精神和集体荣誉感,提高人际交往能力。
课程性质:本课程为信息技术与体育学科的跨学科实践课程,结合篮球比赛计分器的使用,培养学生实际操作能力和团队协作精神。
学生特点:六年级学生具备一定的篮球知识和技能,对信息技术有较高的兴趣,喜欢动手操作,具备一定的团队协作能力。
教学要求:结合学生特点,注重实践操作,强调团队合作,提高学生的信息处理能力和实际应用能力。
通过课程学习,使学生能够将所学知识应用于实际篮球比赛计分中,提高学生的综合素养。
1. 篮球比赛规则与计分方法:- 篮球比赛基本规则介绍;- 篮球比赛得分项目的学习;- 篮球比赛计分方式的掌握。
2. 篮球比赛计分器操作:- 认识篮球比赛计分器硬件设备;- 学习计分器的基本操作流程;- 掌握计分器在比赛中的应用。
3. 实践操作与团队协作:- 设计实践操作环节,让学生实际操作计分器;- 进行模拟篮球比赛,进行计分实践;- 培养学生在团队中合理分工,协同合作的能力。
4. 教学大纲:- 第一课时:篮球比赛规则与计分方法学习;- 第二课时:篮球比赛计分器硬件设备认识与操作学习;- 第三课时:模拟篮球比赛计分实践;- 第四课时:总结与评价,提高学生团队协作能力。
教学内容依据课程目标进行选择和组织,注重科学性和系统性。
数电篮球比赛计分器课程设计
![数电篮球比赛计分器课程设计](https://img.taocdn.com/s3/m/c39234edac51f01dc281e53a580216fc710a5379.png)
数电篮球比赛计分器课程设计课程要求学生在最后一节课讨论中提出有关篮球比赛计分器的细节,并就其中涉及到的主要技术点、数据存储原理和使用技术进行讨论。
二、课程内容本课程分为五个部分:第一部分:篮球比赛计分器简介(一)介绍篮球比赛计分器概念;(二)讲解篮球比赛计分器的主要功能。
第二部分:篮球比赛计分器设计的基本原理(一)学习篮球比赛计分器的基本原理,包括比赛时间、比赛结果的计算;(二)学习如何在实际比赛中应用篮球比赛计分器,如何辨别篮球比赛结果。
第三部分:篮球比赛计分器的使用(一)学习如何将篮球比赛计分器应用到实际比赛中,如:计分的正确方式,比赛结束的标志;(二)学习篮球比赛计分器在实际比赛中的使用,讨论实际比赛中可能出现的问题并讨论应对方法。
第四部分:篮球比赛计分器的技术点(一)学习使用篮球比赛计分器的主要技术点,如:数据存储原理、计算技术等;(二)讨论篮球比赛计分器的设计与实现方法,实际使用中存在的问题以及解决方案。
第五部分:课程讨论学生就与篮球比赛计分器涉及到的主要技术点、数据存储原理和使用技术进行讨论,以了解如何有效地应用篮球比赛计分器完成比赛中的计分。
三、教学目标1. 了解篮球比赛计分器的基本概念、工作原理及其在实际比赛中的使用。
2. 掌握篮球比赛计分器设计的基本原理,深入了解篮球比赛计分器的主要技术点、数据存储原理和使用技术。
3. 可以根据实际比赛情况,使用篮球比赛计分器做出正确的计分,有效地记录和保存篮球比赛数据。
4. 在最后一节课中,培养学生的研究能力,让学生可以从技术角度出发,深入探究篮球比赛计分器的具体使用方法。
四、教学方法本课程采用以下几种教学方法:(一)讲授课:课程中主要采用讲授的方式传授知识,让学生对课程内容有一个清晰的认识。
(二)实验和演示:在课堂上采用实验和演示的方式让学生将实验中学习到的知识应用到实际篮球比赛中,加深学生对课程内容的理解。
篮球比赛计时计分器
![篮球比赛计时计分器](https://img.taocdn.com/s3/m/2fab81f758fb770bf68a55bd.png)
设计任务:1、显示内容,队名用英文名,3个大写字母20分队名1-A:队名2-B =xxx:xxx第x节剩余时间:XX分XX秒2、串口控制20分A+1% A队加1分,%为结束符A+2% A队加2分,%为结束符A+3% A队加3分,%为结束符B+1% B队加1分,%为结束符以此类推3、串口控制交换场地5分A-B% AB队交换4、20 分PAUSE% 计时暂停按键1-定义为PAUSE按键用ZLG7290RESTART%重新计时按键2-定义为RESTARTRESET%重新比赛按键3-定义为RESET5、存储近5场的成绩到AT24C02 格式:1-队名1队名2=90:100类推20分RECALL1% 提取存储的第1场成绩,在数码管上显示,只显示比分,串口传回队名+比分&整场结束,提示是否保存成绩,按键4-存储键按键5-放弃键15分源代码:接线说明:PSB-VCC RS-P1.0 RW-P1.1 P1.3-E INT-P3.2 TXD-P3.1 RXD-P3.0 SDA-P1.6 SCL-P1.7 I2C 总线的ABC》别接键盘的ABCD以程序为准凭记忆写出来的)主程序#include<reg51.h>#include<intrins.h>#include<string.h>#include<I2C.h>#include <ZLG7290.h>#define unchar unsigned char #define unit unsigned int #define Lcd_Bus P0#define unchar unsigned char unsigned char KeyValue,FlagINT; int ney;// 纪录第及场比赛sbit RS=P1A0;//LCD 显示屏sbit RW=P1A1;sbit E=P1A3;unchar code lcddata[]={"0123456789:"};unchar code duiming[]={'1','H','O','U',':','2','C','H','I','='};unchar bifen[7];unchar fen1;unchar fen2;unchar jie;unchar min;unchar sec;unchar control;unchar table[10];************** 延时函数***********************void delay(unsigned int t) { unsigned int i,j;for(i=0;i<t;i++) for(j=0;j<10;j++)/* ------------ 写命令到LCD ---------------------- */void write_com(unsigned char cmdcode) {//chk_busy();RS = 0; // 置零RW = 0;E = 1;Lcd_Bus = cmdcode;delay(10); // 在数据写入的时候加入适当的延时 E = 0;}/* ------------ 写数据到LCD ---------------------- */void write_data(unsigned char Dispdata){//chk_busy();RS = 1; // 写数据RW = 0;E = 1;Lcd_Bus = Dispdata;delay(10); // 在数据写入的时候加入适当的延时 E = 0;/******* 函数名称:Write_Char* 功能描述:写字符******/ void write_char(unsigned int num){// chk_busy();RS = 1;RW = 0;E = 1;Lcd_Bus = lcddata[num];E = 0;}/* ------------ 显示字符串----------------- */void hzkdis(unsigned char code *s){ while(*s>0){ write_data(*s);// 选择基本指令集 (30H )// 点设定,游标右移// 开显示控制 (无游标、不反白 )// 清除显示,并且设定地址指针为 00H //unchar duiming[]= "1-HOU:2-CHI";// 队名数组//unchar bifen[7];// 比分数组unchar k;// 记录第几场比赛void timer0init(void) {TMOD=0X21;TH0=0X31;TL0=0XB0;ET0=1;EA=1;TR0=1;//IT0=1;// EX0=1;}/***** 用作串口通信 ****/ void timer1init(void){TH1=0xf3;TL1=0XF3;SCON=0X50;EA=1;ES=1;TR1=1;}/**** 保存成绩 */void save(int ney){ s++;/* ------------ 初始化 LCD 屏 ----------------- */ /*** 用作计时***/void lcdreset() { write_com(0x30);delay(16); write_com(0x04);delay(16);write_com(0x0f); delay(16);write_com(0x01);delay(16);}(同时地址归为 )int i;unchar buff[7];// ney++;ZLG7290_Download(i,0,0,0X0A); bifen[2]=fen2/100;bifen[1]=(fen2%100-fen2%10)/10;bifen[0]=fen2%10;bifen[3]=0X1F;bifen[6]=fen1/100;bifen[5]=(fen1%100-fen1%10)/10;bifen[4]=fen1%10;for(i=0;i<7;i++){x24c02_write(i+7*ney,bifen[i]);}for(i=0;i<7;i++){buff[i]=x24c02_read(i+7*ney); delay(12);}for(i=0;i<7;i++){ZLG7290_Download(i,0,0,buff[i]);}/********** 将存储在at24c02 的数据通过串口通信发还给电脑**/ void fahuan(unsigned char k){unchar buff[7],i;for(i=0;i<10;i++){SBUF=duiming[i];while(!TI){;}TI=0;}for(i=0;i<7;i++){buff[i]=x24c02_read(i+7*k);delay(12);}for(i=0;i<7;i++){ZLG7290_Download(i,0,0,buff[i]);}for(i=6;i>3;i--){SBUF=buff[i]+48;while(!TI){;}TI=0;}SBUF=':';while(!TI){;}TI=0;SBUF=buff[2]+48;while(!TI){;}TI=0;SBUF=buff[1]+48; while(!TI){;} TI=0;SBUF=buff[0]+48; while(!TI){;} TI=0;P2=0xf0;}/**** 定时器中断用作计时**/ void timer0(void) interrupt 1 using 1 {static unchar count=0; unchar i;TH0=0X3C;TL0=0XB0; count++;if(count==20){count=0;sec--;if(sec==-1){sec=59; min--; if(min==-1) {if(jie<=3) {write_com(0x01); jie++;min=1; } else { // TR0=0;control=0; //save();}}}}/**** 主要用作显示比分**/void show_fen1(void){ write_com(0x80); hzkdis("2-CHI:1-HOU=");write_com(0x90); delay(16);write_char(fen2/ 100); delay(16);write_char((fen2%100-fen2% 10)/10); delay(16);write_char(fen2% 10); delay(16);write_char( 10 ); delay(16) ;write_char(fen1/ 100); delay(16);write_char((fen1%100-fen1% 10)/10); delay(16);write_char(fen1% 10); delay(16);}/**** 显示比分队名顺序相反**/void show_fen0(void){write_com(0x80);hzkdis("1-HOU:2-CHI=");write_com(0x90); delay(16);write_char(fen1/ 100); delay(16);write_char((fen1%100-fen1% 10)/10); delay(16);write_char(fen1% 10);write_char( 10 ); delay(16) ;write_char(fen2/ 100); delay(16); write_char((fen2%100-fen2%10)/10); delay(16);write_char(fen2% 10); delay(16);}/*** 显示时间**/void show_time(void){write_com(0x88);if(jie%10==1)hzkdis("第 1 节”);if(jie%10==2)hzkdis("第 2 节");if(jie%10==3)hzkdis("第 3 节");if(jie%10==4)hzkdis("第 4 节");write_com(0x8c);hzkdis("剩余时间");write_com(0x9a);delay(16);write_char( min / 10 );delay(16);write_char( min % 10 );delay(16);write_char( 10 );delay(16);write_char( sec / 10 );delay(16);write_char( sec % 10 );}void show(){write_com(0x80);hzkdis("是否保存成绩?”);write_com(0x90);hzkdis("y press butter 4"); write_com(0x88);hzkdis("n press butter 5 "); write_com(0x98);hzkdis(" ");}/***** 串口中断处理来自串口助手的命令*/ void chuanko() interrupt 4 {unchar i=0;unchar buff[]="wrong";while(1){ while(!RI);RI=0; if(SBUF=='%') break; table[i]=SBUF;i++;} if(table[0]=='A'&&table[1]=='+'&&table[2]=='1') fen1++;else if(table[0]=='A'&&table[1]=='+'&&table[2]=='2') {fen1++;fen1++;}else if(table[0]=='A'&&table[1]=='+'&&table[2]=='3') {fen1++;fen1++;fen1++;}else if(table[0]=='B'&&table[1]=='+'&&table[2]=='1')fen2++;else if(table[0]=='B'&&table[1]=='+'&&table[2]=='2'){fen2++;fen2++;}else if(table[0]=='B'&&table[1]=='+'&&table[2]=='3'){fen2++;fen2++;fen2++;}else if(table[0]=='A'&&table[1]=='-'&&table[2]=='B'){control=2;// 交换场地}elseif(table[0]=='P'&&table[1]=='A'&&table[2]=='U'&&table[3]=='S'&&table[4]=='E'){TRO=(~TRO);〃暂停}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='S'&&table[3]=='T'&&table[4]=='A'&&table[5]==' R'& &table[6]=='T'){TR0=0;min=11;sec=59;TR0=1;〃重新计时}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='S'&&table[3]=='E'&&table[4]=='T'){ timer0init();// TR0=0;min=11;sec=59;jie=1;fen1=0;fen2=0;TR0=1;〃重新开始write_com(0x01);control=1;}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='C'&&table[3]=='A'&&table[4]=='L'&&table[5]==' L'& &table[6]=='1'){ ZLG7290_Download(i,0,0,0X0E);fahuan(0);//shuma(1);}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='C'&&table[3]=='A'&&table[4]=='L'&&table[5]=='L'& &table[6]=='2'){ fahuan(1);//shuma(2);}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='C'&&table[3]=='A'&&table[4]=='L'&&table[5]==' L'& &table[6]=='3'){ fahuan(2);//shuma(3);}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='C'&&table[3]=='A'&&table[4]=='L'&&table[5]==' L'& &table[6]=='4'){ fahuan(3);//shuma(4);}elseif(table[0]=='R'&&table[1]=='E'&&table[2]=='C'&&table[3]=='A'&&table[4]=='L'&&table[5]==' L'& &table[6]=='5'){ fahuan(4);//shuma(5);}else{ for(i=0;i<6;i++) {SBUF=buff[i]; while(!TI); TI=0;/**** 外部中断初始化响应按键中断**/void SystemInit(){I2C_Init();EA = 0;IT0 = 1; // 负边沿触发中断EX0 = 1; // 允许外部中断EA = 1; // 等待ZLG7290 复位完毕}/***** 外部中断函数响应各个按键**/void INT0_SVC() interrupt 0 {unchar i; ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);// 显示键值DispValue(0,KeyValue); if(KeyValue==0x09) {TRO=(~TRO);//暂停} if(KeyValue==0x0a){TR0=0;min=11;sec=59;TR0=1;//重新计时} if(KeyValue==0x0b)timer0init(); write_com(0x01);TR0=0;min=11;sec=59;jie=1;fen1=0;fen2=0;control=1;TR0=1;〃重新开始} if(KeyValue==0x0c) { save(ney);ney++;timer0init();// 响应完中断记得重新初始化不然可能会出错timer1init();SystemInit();}main(){min=11;sec=59;fen1=0;fen2=0;jie=1;control=1;ney=0;timer0init();timer1init();lcdreset();SystemInit();//系统初始化while(1){if(control==1){show_fen0(); show_time();}if(control==0){show();// 比赛结束提示}if(control==2){show_fen1();// 交换场地show_time();}I2C.C标准80C51单片机模拟I2C总线的主机程序Copyright (c) 2005,广州周立功单片机发展有限公司All rights reserved.本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的*/#i nclude "I2C.h"//定义延时变量,用于宏l2C_Delay()un sig ned char data I2C_Delay_t;/*宏定义:I2C_Delay()功能:延时,模拟I2C总线专用*/#defi ne I2C_Delay()\{\I2C_Delay_t = (I2C_DELAY_VALUE);\ while ( --I2C_Delay_t != 0 );\/*函数:I2C_I nit()功能:I2C总线初始化,使总线处于空闲状态说明:在main()函数的开始处,通常应当要执行一次本函数*/void I2C_I nit(){I2C_SCL = 1;I2C_Delay();I2C_SDA = 1;I2C_Delay();/*函数:I2C_Start()功能:产生I2C 总线的起始状态说明:SCL处于高电平期间,当SDA出现下降沿时启动I2C总线不论SDA和SCL处于什么电平状态,本函数总能正确产生起始状态本函数也可以用来产生重复起始状态本函数执行后,I2C总线处于忙状态*/void I2C_Start(){I2C_SDA = 1;I2C_Delay();I2C_SCL = 1;I2C_Delay();I2C_SDA = 0;I2C_Delay();I2C_SCL = 0;I2C_Delay();} /* 函数:I2C_Write()功能:向I2C总线写1个字节的数据参数:dat:要写到总线上的数据*/ void I2C_Write(char dat){unsigned char t = 8;do{I2C_SDA = (bit)(dat & 0x80);dat <<= 1;I2C_SCL = 1;I2C_Delay();I2C_SCL = 0;I2C_Delay();} while ( --t != 0 );/*函数:I2C_Read() 功能:从从机读取 1 个字节的数据返回:读取的一个字节数据*/char I2C_Read(){char dat;unsigned char t = 8;I2C_SDA = 1; //在读取数据之前,要把SDA拉高do {I2C_SCL = 1;I2C_Delay();dat <<= 1;if ( I2C_SDA ) dat |= 0x01;I2C_SCL = 0;I2C_Delay();} while ( --t != 0 ); return dat;}/*函数:I2C_GetAck() 功能:读取从机应答位返回:0:从机应答1 :从机非应答说明:从机在收到每个字节的数据后,要产生应答位从机在收到最后 1 个字节的数据后,一般要产生非应答位*/bit I2C_GetAck(){bit ack;I2C_SDA = 1;I2C_Delay();I2C_SCL = 1;I2C_Delay();ack = I2C_SDA; I2C_SCL = 0;I2C_Delay();return ack;/*函数:I2C_PutAck() 功能:主机产生应答位或非应答位参数:ack=O:主机产生应答位ack=1 :主机产生非应答位说明:主机在接收完每一个字节的数据后,都应当产生应答位主机在接收完最后一个字节的数据后,应当产生非应答位*/void I2C_PutAck(bit ack){I2C_SDA = ack;I2C_Delay();I2C_SCL = 1;I2C_Delay();I2C_SCL = 0;I2C_Delay();}/*函数:I2C_Stop()功能:产生I2C 总线的停止状态说明:SCL处于高电平期间,当SDA出现上升沿时停止I2C总线不论SDA和SCL处于什么电平状态,本函数总能正确产生停止状态本函数执行后,I2C总线处于空闲状态*/void I2C_Stop(){unsigned int t = I2C_STOP_WAIT_VALUE;I2C_SDA = 0;I2C_Delay();I2C_SCL = 1;I2C_Delay();I2C_SDA = 1;I2C_Delay();while ( --t != 0 ); // 在下一次产生Start 之前,要加一定的延时} /*函数:I2C_Puts()功能:I2C总线综合发送函数,向从机发送多个字节的数据参数:SlaveAddr:从机地址(7位纯地址,不含读写位)SubAddr:从机的子地址SubMod:子地址模式,0—无子地址,1 —单字节子地址,2—双字节子地址*dat :要发送的数据Size:数据的字节数返回:0:发送成功1 :在发送过程中出现异常说明:本函数能够很好地适应所有常见的I2C 器件,不论其是否有子地址当从机没有子地址时,参数SubAddr 任意,而SubMod 应当为0*/bit I2C_Puts(unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size){// 定义临时变量unsigned char i;char a[3];// 检查长度if ( Size == 0 ) return 0;// 准备从机地址a[0] = (SlaveAddr << 1);// 检查子地址模式if ( SubMod > 2 ) SubMod = 2;// 确定子地址switch ( SubMod ){case 0: break;case 1:a[1] = (char)(SubAddr);break;case 2:a[1] = (char)(SubAddr >> 8);a[2] = (char)(SubAddr);break;default: break;}// 发送从机地址,接着发送子地址(如果有子地址的话) SubMod++;I2C_Start();for ( i=0; i<SubMod; i++ ){I2C_Write(a[i]);if ( I2C_GetAck() ){I2C_Stop(); return 1;}}// 发送数据do{I2C_Write(*dat++);if ( I2C_GetAck() ) break;} while ( --Size != 0 );//发送完毕,停止I2C总线,并返回结果I2C_Stop();if ( Size == 0 ){return 0;}else{return 1;}}/*函数:I2C_Gets()功能:I2C总线综合接收函数,从从机接收多个字节的数据参数:SlaveAddr:从机地址(7位纯地址,不含读写位)SubAddr:从机的子地址SubMod:子地址模式,0—无子地址,1 —单字节子地址, *dat :2—双字节子地址保存接收到的数据Size:数据的字节数返回:0:接收成功1 :在接收过程中出现异常说明:本函数能够很好地适应所有常见的I2C 器件,不论其是否有子地址当从机没有子地址时,参数SubAddr 任意,而SubMod 应当为0 */bit I2C_Gets(unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size){// 定义临时变量unsigned char i; char a[3];// 检查长度if ( Size == 0 ) return 0;// 准备从机地址a[0] = (SlaveAddr << 1);// 检查子地址模式if ( SubMod > 2 ) SubMod = 2;// 如果是有子地址的从机,则要先发送从机地址和子地址if ( SubMod != 0 ){//确定子地址if ( SubMod == 1 ){a[1] = (char)(SubAddr);}else{a[1] = (char)(SubAddr >> 8); a[2] = (char)(SubAddr);} //发送从机地址,接着发送子地址SubMod++;I2C_Start();for ( i=0; i<SubMod; i++ ){ I2C_Write(a[i]); if ( I2C_GetAck() ) {I2C_Stop();return 1;}}//这里的l2C_Start()对于有子地址的从机是重复起始状态//对于无子地址的从机则是正常的起始状态l2C_Start();// 发送从机地址l2C_Write(a[0]+1);if ( l2C_GetAck() ){l2C_Stop();return 1;}//接收数据for (;;){*dat++ = l2C_Read();if ( --Size == 0 ){ l2C_PutAck(1); break;} l2C_PutAck(0);}//接收完毕,停止I2C总线,并返回结果l2C_Stop();return 0;}/*ZLG7290.c数码管显示与键盘管理芯片ZLG7290的标准80C51驱动程序C文件Copyright (c) 2005,广州周立功单片机发展有限公司All rights reserved.本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的*/ #include "I2C.h"#include "ZLG7290.h" /*函数:ZLG7290_WriteReg()功能:向ZLG7290的某个内部寄存器写入数据参数:RegAddr:ZLG7290的内部寄存器地址dat :要写入的数据返回:0:正常1:访问ZLG7290时出现异常*/bit ZLG7290_WriteReg(unsigned char RegAddr, char dat){bit b;b = I2C_Puts(ZLG7290_I2C_ADDR,RegAddr,1,&dat,1); return b;}/*函数:ZLG7290_ReadReg()功能:从ZLG7290的某个内部寄存器读出数据参数:RegAddr:ZLG7290的内部寄存器地址*dat :保存读出的数据返回:0:正常1:访问ZLG7290时出现异常*/bit ZLG7290_ReadReg(unsigned char RegAddr, char *dat){bit b;b = I2C_Gets(ZLG7290_I2C_ADDR,RegAddr,1,dat,1); return b;}/*函数:ZLG7290_cmd()功能:向ZLG7290发送控制命令参数:cmdO :写入CmdBufO寄存器的命令字(第1字节) cmdl :写入CmdBufl寄存器的命令字(第2字节) 返回:0:正常1:访问ZLG7290时出现异常*/bit ZLG7290_cmd(char cmd0, char cmd1){bit b;char buf[2];buf[0] = cmd0;buf[1] = cmd1;b = I2C_Puts(ZLG7290_I2C_ADDR,ZLG7290_CmdBuf,1,buf,2); return b; }/* 函数:ZLG7290_SegOnOff()功能:段寻址,单独点亮或熄灭数码管(或LED)中的某一段参数:seg:取值0〜63,表示数码管(或LED)的段号b:0 表示熄灭, 1 表示点亮返回:0:正常1:访问ZLG7290时出现异常说明:在每一位数码管中,段号顺序按照“ a,b,c,d,e,f,g,dp ”进行*/bit ZLG7290_SegOnOff(char seg, bit b){char cmd;cmd = seg & 0x3F;if ( b ) cmd |= 0x80;return ZLG7290_cmd(0x01,cmd);}/*函数:ZLG7290_Download() 功能:下载数据并译码参数:addr :取值0〜7,显示缓存DpRamO〜DpRam7的编号dp:是否点亮该位的小数点,0 —熄灭,1—点亮flash:控制该位是否闪烁,0—不闪烁,1—闪烁dat :取值0〜31,表示要显示的数据返回:0:正常1:访问ZLG7290时出现异常说明:显示数据具体的译码方式请参见ZLG7290的数据手册*/bit ZLG7290_Download(char addr, bit dp, bit flash, char dat){char cmd0;char cmd1;cmd0 = addr & 0x0F;cmd0 |= 0x60;cmd1 = dat & 0x1F;if ( dp ) cmd1 |= 0x80;if ( flash ) cmd1 |= 0x40;return ZLG7290_cmd(cmd0,cmd1);} /*I2C.h标准80C51单片机模拟I2C总线的主机程序头文件Copyright (c) 2005,广州周立功单片机发展有限公司All rights reserved. 本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的*/#ifndef _I2C_H_ #define _I2C_H_#include <reg51.h>//模拟I2C总线的引脚定义sbit I2C_SCL = P1A6;sbit I2C_SDA = P"7;//定义I2C总线时钟的延时值,要根据实际情况修改,取值1〜255//SCL信号周期约为(I2C_DELAY_VALUE*4+15个机器周期#define I2C_DELAY_VALUE 12//定义I2C总线停止后在下一次开始之前的等待时间,取值1〜65535〃等待时间约为(I2C_STOP_WAIT_VALUE*8个机器周期//对于多数器件取值为 1 即可;但对于某些器件来说,较长的延时是必须的#defineI2C_STOP_WAIT_VALUE 120//I2C 总线初始化,使总线处于空闲状态void I2C_Init();void x24c02_write(unsigned char address,unsigned char info); unsigned charx24c02_read(unsigned char address); //unsigned char x24c02_read(unsigned char address);//I2C 总线综合发送函数,向从机发送多个字节的数据bit I2C_Puts(unsigned char SlaveAddr,unsigned int SubAddr,unsigned char SubMod, char *dat, unsigned int Size);//I2C 总线综合接收函数,从从机接收多个字节的数据bit I2C_Gets(unsigned char SlaveAddr,unsigned int SubAddr,unsigned char SubMod, char *dat, unsigned int Size);#endif //_I2C_H_/*ZLG7290.h数码管显示与键盘管理芯片ZLG7290的标准80C51驱动程序头文件Copyright (c) 2005,广州周立功单片机发展有限公司All rights reserved. 本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的*/#ifndef _ZLG7290_H_#define _ZLG7290_H_#include <reg51.h> //ZLG7290 中断请求信号的引脚定义sbit ZLG7290_pi nINT = P3A2;II定义ZLG7290在I2C总线协议中的从机地址// 这是7 位纯地址,不含读写位#define ZLG7290_I2C_ADDR 0x38II定义ZLG7290内部寄存器地址(子地址)#define ZLG7290_SystemReg 0x00 II系统寄存器#define ZLG7290_Key 0x01 II 键值寄存器II#define ZLG7290_RepeatCnt 0x02 II 连击次数寄存器II#define ZLG7290_FunctionKey 0x03 II 功能键寄存器#define ZLG7290_CmdBuf 0x07 II 命令缓冲区起始地址#define ZLG7290_CmdBuf0 0x07 II 命令缓冲区0#define ZLG7290_CmdBuf1 0x08 //命令缓冲区 1//#define ZLG7290_FlashOnOff 0x0C //闪烁控制寄存器#define ZLG7290_ScanNum 0x0D //扫描位数寄存器#define ZLG7290_DpRam 0x10 // 显示缓存起始地址#define ZLG7290_DpRam0 0x10 //显示缓存0/#define ZLG7290_DpRam10x11 //显示缓存 1#define ZLG7290_DpRam2 0x12 //显示缓存 2#define ZLG7290_DpRam3 0x13 //显示缓存 3#define ZLG7290_DpRam5 0x15 //显示缓存 5#define ZLG7290_DpRam6 0x16 //显示缓存 6#define ZLG7290_DpRam7 0x17 //显示缓存7//向ZLG7290的某个内部寄存器写入数据bit ZLG7290_WriteReg(unsigned char RegAddr, char dat);//从ZLG7290的某个内部寄存器读出数据bit ZLG7290_ReadReg(unsigned char RegAddr, char *dat);//向ZLG7290发送控制命令bit ZLG7290_cmd(char cmd0, char cmd1);//段寻址,单独点亮或熄灭数码管(或LED)中的某一段bit ZLG7290_SegOnOff(char seg, bit b);//下载数据并译码bit ZLG7290_Download(char addr, bit dp, bit flash, char dat);〃闪烁控制指令(Fn应当是字节型)//Fn 的8 个位分别控制数码管的8 个位是否闪烁,0-不闪烁,1-闪烁#define ZLG7290_Flash(Fn) ZLG7290_cmd(0x70,(Fn))#endif //_ZLG7290_H_#include <reg51.h>#include <intrins.h>#include <I2C.h>//sbit dula=P2A6;//sbit wela=P2A7; unsigned char j,c;void de(unsigned char i) // 延时程序{for(j=i;j>0;j--)for(c=125;c>0;c--);}/*24C02 读写驱动程序*/void flash()// 短时间的延时,几微秒左右{ ; ;}void init() //24c02 初始化子程序{I2C_SCL=1;flash();I2C_SDA=1;flash();}void start() // 启动I2C 总线{I2C_SDA=1;flash();I2C_SCL=1;flash();I2C_SDA=0;flash();// scl=0;// flash();}void stop() // 停止I2C 总线{I2C_SDA=0;flash();I2C_SCL=1;flash();I2C_SDA=1;flash();}void writex(unsigned char j) // 写一个字节{ unsigned char i,temp;temp=j;for (i=0;i<8;i++){ temp=temp<<1; I2C_SCL=0; flash(); I2C_SDA=CY; flash(); I2C_SCL=1; flash();}I2C_SCL=0;flash();I2C_SDA=1;flash();} unsigned char readx() // 读一个字节{unsigned char i,z;I2C_SCL=0;flash();I2C_SDA=1;for (i=0;i<8;i++){ flash(); I2C_SCL=1; flash();if (I2C_SDA==1) j=1; else j=0;z=(z<<1)|j;// 先左移,然后在最低位读入值I2C_SCL=0;}flash();return(z);}void clock() //I2C 总线时钟响应{unsigned char i=0;I2C_SCL=1;flash();while ((I2C_SDA==1)&&(i<255))i++;I2C_SCL=0;flash();//////// 从24c02 的地址address 中读取一个字节数据///// unsigned charx24c02_read(unsigned char address) {unsigned char i; start();writex(0xa8);//A1 A2 A3 全部低电平// clock();writex(address);clock();start(); writex(0xa9);clock(); i=readx();stop(); de(10);return(i); }////// 向24c02 的address 地址中写入一字节数据info///// void x24c02_write(unsigned char address,unsigned char info) {EA=0;start(); writex(0xa8);clock(); writex(address);clock(); writex(info);clock();stop();de(50);。
篮球比赛计分器课件
![篮球比赛计分器课件](https://img.taocdn.com/s3/m/5d0aff5ac381e53a580216fc700abb68a982adf2.png)
篮球比赛计分器
*
清理工位,归还工具
篮球比赛计分器
*
欢 迎 指 导!
篮球比赛计分器
*
编写程序
系统调试
制作电路
篮球比赛计分器
*
任务实施
硬件设计
1、单片机最小系统 2、输入电路 3、输出电路
软件设计
1、主程序 2、按键扫描程序 3、数码管显示程序
系统调试
软硬件相结合 调试,通过调试现 象分析故障原因并排除故障,完成系统功能。
篮球比赛计分器
篮球比赛计分器
*
任务实施
分组讨论
学生以小组为单位,在八路数显抢答器的基础上讨论该任务的控制方案,每组推举一名代表展示讨论结果。
1)分析任务 2)查阅资料 3)确定控制方案
提示
活动1 讨论设计方案
手指
篮球比赛计分器
*
任务实施
只能显示同样的字符
活动2 汇报知识准备情况(任务书)
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
AT89C51
P2.6
P2.7
1
0
0
1
0
0
"1"
"2"
1
0
0
1
1
1
1
1
0 1
1 0
优点:节约了单片机的I/O 资源 耗能少
任务实施
篮球比赛计分器
*
任务实施
活动3 领取材料
活动4 小组内分工合作,完成系统的制作和调试
篮球比赛计分器
*亮度高,可视性好 *可控性强
篮球比赛计分器的设计原理
![篮球比赛计分器的设计原理](https://img.taocdn.com/s3/m/961cee316d85ec3a87c24028915f804d2b16873b.png)
篮球比赛计分器的设计原理
篮球比赛计分器的设计原理是基于计分规则和比赛规则来实现的。
设计原理如下:
1. 确定比赛规则:首先需要明确比赛规则,包括比赛时间、进球得分规则、罚球规则、犯规规则等。
2. 确定计分方式:根据比赛规则确定计分方式,通常包括两支队伍的得分和罚球数。
计分器需要能够根据比赛情况及时更新并显示得分。
3. 实时更新得分:根据比赛过程中的得分情况,计分器需要能够实时更新双方队伍的得分。
通常,计分器会设置按钮或触摸屏来记录各种得分情况,包括投篮得分、罚球得分以及技术犯规等。
4. 管控比赛时间:篮球比赛有固定的时间限制,计分器需要能够计时并显示比赛的进行时间。
同时,计分器也需要提供暂停和继续功能,以便于比赛管理。
5. 显示比赛结果:当比赛结束时,计分器需要能够显示比赛的最终得分和胜负结果。
部分计分器还会提供比赛统计数据,如得分最高球员、篮板球数量等。
综上所述,篮球比赛计分器的设计原理是基于比赛规则和计分方式来实时更新并显示比赛的得分情况,同时还需要提供计时、暂停和继续功能等。
篮球比赛计分器设计条件分析报告
![篮球比赛计分器设计条件分析报告](https://img.taocdn.com/s3/m/6bde362c24c52cc58bd63186bceb19e8b8f6ecb8.png)
篮球比赛计分器设计条件分析报告一、引言篮球作为一项全球性的运动,受到广大球迷的喜爱。
而篮球比赛计分器作为比赛场地上的重要设备,起到计分、计时和展示比赛数据的作用。
本文将对篮球比赛计分器的设计条件进行分析,并提出相应的设计方案。
二、设计条件分析1. 功能需求篮球比赛计分器主要功能为计分和计时,因此需要具备数字展示功能,能够准确地显示比赛进程和比分情况。
同时,计分器还应具备计时功能,能够精确记录比赛时间,并提供倒计时功能。
此外,计分器还应具备加减分、暂停等功能,便于裁判员和比赛管理人员的操作。
2. 可视性要求由于篮球比赛计分器通常放置在场地边线上,因此要求具备良好的可视性。
计分器应有清晰的数字显示,确保观众和队员都能够迅速、准确地获取比分和时间信息。
此外,计分器还应具备不同亮度的调节功能,以适应不同光线环境下的可视性要求。
3. 操作使用便捷性篮球比赛计分器是裁判员和比赛管理人员必不可少的工具,因此其操作使用的便捷性至关重要。
计分器应具备直观明确的按键布局,使用人员能够快速、准确地掌握各项操作。
同时,计分器还应具备易于携带和设置的特点,以便于在不同比赛场地的安装和调整。
4. 系统稳定性篮球比赛计分器的系统稳定性对于比赛的进行至关重要。
计分器应具备抗干扰能力强的特点,能够稳定工作在各种环境下。
此外,计分器还应具备恢复功能,以防止因突发情况导致的数据丢失和故障。
5. 可扩展性和可维护性为适应不同比赛规模和要求,篮球比赛计分器应具备可扩展的特点。
计分器的设计应考虑到可增加的显示屏和按键,以满足大型比赛的需要。
同时,计分器还应具备易于维护和升级的特点,以延长使用寿命并提供更好的服务。
三、设计方案基于以上设计条件的分析,我们提出了如下的篮球比赛计分器设计方案:1. 核心功能设计计分器将采用LED数字显示屏,具备清晰、亮度可调的特点,以满足不同环境下的可视性需求。
同时,计分器将采用电子计时器,能够精确记录比赛时间并提供倒计时功能。
篮球比赛计时计分器设计方案
![篮球比赛计时计分器设计方案](https://img.taocdn.com/s3/m/8e838f7cce84b9d528ea81c758f5f61fb7362883.png)
篮球比赛计时计分器设计方案
设计目的:本篮球比赛计时计分器的设计旨在提供一个简单易用,精准可靠的计时计分器,用于篮球比赛计时计分的目的。
设计原理:本计时计分器主要采用数码显示技术,通过显示器来显示比分、时间,以及犯规次数等信息。
并且计时计分的过程中,系统主要通过微处理器控制并实现自动计时计分,在比赛过程中极大地方便了裁判员的工作。
特点:本计时计分器的特点如下:
1. 精准可靠:系统采用稳定的数码显示技术,让计分器更加精准,可靠性更高。
2. 显示直观:通过系统显示器,直观的显示比赛进行的时间、分数以及犯规次数等信息,让人一目了然。
3. 自动计分:本系统可以通过微处理器实现自动计分,极大地降低了裁判员的工作难度,提高了比赛的公正性和效率。
4. 强大的扩展性:本系统支持接入外部闪烁灯控制模块,可以扩展到运动场馆大屏幕等监控设备上。
使用方法:本计时计分器使用起来非常简单,只需要按照篮球比赛规则操作即可。
在比赛开始前,先设置好参赛队伍和比赛时间等相关参数,然后开启计时计分器即可开始比赛,比赛进程中可以根据实际情况进行犯规次数以及加时赛等相关操作。
比赛结束后,系统会自动停止计时,并显示双方比赛成绩。
总结:本篮球比赛计时计分器的设计让比赛计时计分更加简单轻松,不仅提高了比赛的效率,还提高了比赛的公正性和监管能力。
未来,我们还将进一步完善计时计分器的功能,加入更加智能化的管理系统,为体育竞技提供更加先进的技术支持。
篮球比赛计分器设计
![篮球比赛计分器设计](https://img.taocdn.com/s3/m/30bdf878ad51f01dc381f178.png)
WORD格式可以任意编辑单片机课程设计报告篮球比赛计分器设计姓名:学号:专业班级:指导老师:所在学院:年月日摘要本设计是采用单片机AT89C52作为本设计的核心元件。
利用7段共阴LED作为显示器件。
在此设计中共接入了8个7段共阴LED显示器,其中4个用于记录AB队的分数,每队2个LED显示器显示范围可达到0~99分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。
赛程计时采用倒计时方式。
即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。
计时范围可达到0~99分钟,也完全满足实际赛程的需要。
当比赛队A对得1分时,按下A+1键;得2分时,按下A+2键;得3分时,按下A+3键;当加分出现错误时,可以按A-1键减1分,可以达到调整分数的作用;依照同样的方法可以记录B对的得分。
采用单片机控制使这个系统按键操作使用简洁,LED显示,安装方便。
解决了篮球比赛计分器的安装问题,节约了线材,适合在各种规模的体育场馆使用,完全可以代替传统的用钟表进行计时的方法,当然稍加改动也可以用于其他球类比赛,是体育器材向智能化发展的一个实例。
本设计可以实现:1、能记录整个赛程的比赛时间,并能修改比赛时间2、能随时刷新甲、乙两队在整个过程中的比分3、中场交换比赛场地时,能交换甲、乙两队比分的位置4、比赛结束时,能发出报警声,等功能目录1概述31.1设计意义 (3)1.2设计内容 (4)1.3设计任务和要求 (4)2系统总体方案及硬件设计42.1AT89C52简介 (4)2.2数码管显示原理 (6)2.3总体方案: (7)2.4硬件原理图: (8)3软件设计73.1主流程图: (7)4.PROTEUS软件仿真85、课程设计体会10附1:源程序代码11附2系统原理图211概述1.1设计意义体育比赛计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。
篮球比赛计时计分器
![篮球比赛计时计分器](https://img.taocdn.com/s3/m/9bc7d977a22d7375a417866fb84ae45c3a35c276.png)
篮球比赛计时计分器篮球比赛计时计分器是一种用于帮助裁判员和观众准确记录篮球比赛时间和比分的设备。
它在篮球比赛中起着至关重要的作用,不仅能够提供准确的时间和比分数据,还能够帮助裁判员控制比赛的节奏和做出正确的判决。
一、计时计分器的基本功能篮球比赛计时计分器通常具有以下基本功能:1. 比分显示功能:计分器能够显示双方队伍的得分情况,包括总分和当前分数。
2. 时间显示功能:计分器能够显示比赛的剩余时间,包括总时间和当前时间。
3. 比赛阶段显示功能:计分器能够显示比赛的阶段,如四节制比赛中的第一节、第二节等。
4. 比赛控制功能:计时计分器可根据裁判员的操作进行比赛控制,例如开始/暂停比赛、结束比赛等。
二、计时计分器的特殊功能除了基本功能外,一些高级的篮球比赛计时计分器还具有一些特殊功能,以满足不同比赛场景的需求:1. 分段计时功能:对于某些需要分段计时的比赛,计分器可以提供定时器,用于记录比赛各个阶段的时间,如篮球训练中的分组练习。
2. 超时计时功能:在篮球比赛中,每队通常有若干次暂停机会,计分器可以倒计时并提醒裁判员和队伍剩余暂停次数。
3. 预设比赛时间功能:有些比赛需要设定固定的比赛时间,计分器可以接收设定的比赛时间,并在比赛结束时自动停止计时。
4. 串口输出功能:一些高级计分器还可以通过串口输出比分和时间数据,以便于其他系统进行数据采集或显示。
三、计时计分器的使用注意事项为了确保计时计分器的正常运行和数据准确性,以下是一些使用注意事项:1. 操作规范:裁判员和工作人员应该熟悉计分器的使用方法,并按照规范进行操作,避免误操作导致计分器故障或数据错误。
2. 维护保养:计分器需要定期进行维护保养,包括清洁、更换电池等,以保证其长期稳定运行。
3. 备用计分器:在重要比赛或关键场合,应准备备用计分器,以防止计分器故障影响比赛进行。
4. 安全防护:计分器应放置在安全可靠的位置,避免因外力或触碰而造成损坏或数据错误。
EDA课程设计——篮球球比赛计分器_2
![EDA课程设计——篮球球比赛计分器_2](https://img.taocdn.com/s3/m/0bf815839a89680203d8ce2f0066f5335a816794.png)
<<电子设计自动化EDA技术>>课程设计报告题目: 篮球比赛记分牌姓名:院系:专业:学号:指导教师:完成时间: 年月日目录1 课程设计题目`内容与要求………………………1.1 设计内容1.2 具体要求2系统设计…………………………2.1 设计思路2.2 系统原理3 系统实现……………………………………………4 系统仿真……………………………………………5硬件验证(操作)说明………………………………6 总结…………………………………………………7参考书目……………………………………………一、课程设计题目、内容与要求1.1课程设计的题目: 篮球比赛记分牌1、1.2课程设计内容:2、根据比赛实际情况记录两队得分, 罚球进的1分, 进球的2分;3、记分牌要具有纠错功能, 能减1分、2分功能;4、利用3个译码显示管输出比赛的分;二、系统设计2.1设计思路:篮球比赛记分牌是记录两队比赛的得分情况, 并能够进行纠错功能;根据系统设计的要求, 篮球记分牌的电路原理框图如下:2.2 系统原理与设计说明系统各个模块的功能如下:1.D触发器电路模块实现翻转功能当出错时, 输出为1, 使电路回到上一个正确的状态。
2.4为二进制全加器电路模块实现加法计数功能。
3、移位寄存器电路模块保存比赛两队得分情况的4个相邻状态, 出错时将调用上一个正确状态。
4.二选一数据选择器电路模块用来控制移位寄存器5. LED数码管驱动电路模块三、系统实现各模块电路的源程序如下:1、D触发器电路模块及程序:set输入(Q=1), 清零应该可以用复位键reset吧(Q=0)。
library ieee;use ieee.std_logic_1164.all;entity sync_rsdff isport(d,clk : in std_logic;set : in std_logic;reset: in std_logic;q,qb : out std_logic);end sync_rsdff;architecture rtl_arc of sync_rsdff isbeginprocess(clk)beginif (clk'event and clk='1') thenif(set='0' and reset='1') thenq<='1';qb<='0';elsif (set='1' and reset='0') thenq<='0';qb<='1';elseq<=d;qb<=not d;end if;end if;end process;end rtl_arc;移位寄存器模块电路及程序:library IEEE;use IEEE.std_logic_1164.all;entity shft_reg isport (DIR : in std_logic;CLK : in std_logic;CLR : in std_logic;SET : in std_logic;CE : in std_logic;LOAD : in std_logic;SI : in std_logic;DATA : in std_logic_vector(3 downto 0);data_out : out std_logic_vector(3 downto 0) );end shft_reg;architecture shft_reg_arch of shft_reg issignal TEMP_data_out : std_logic_vector(3 downto 0);beginprocess(CLK)beginif rising_edge(CLK) thenif CE = '1' thenif CLR = '1' thenTEMP_data_out <= "0000";elsif SET = '1' thenTEMP_data_out <= "1111";elsif LOAD = '1' thenTEMP_data_out <= DATA;elseif DIR = '1' thenTEMP_data_out <= SI & TEMP_data_out(3 downto 1);elseTEMP_data_out <= TEMP_data_out(2 downto 0) & SI;end if;end if;end if;end if;end process;data_out <= TEMP_data_out;end architecture;3.二选一数据选择器电路模块及程序:entity mux isport(do,d1:in bit;sel:in bit;q:out bit);end mux;architecture a of mux isbeginq<=(do and sel)or(not sel and d1);end a;4.加法计数器的电路模块及程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY add4 ISPORT(a1,a2,a3,a4:IN STD_LOGIC;b1,b2,b3,b4:IN STD_LOGIC;sum1,sum2,sum3,sum4:OUT STD_LOGIC;cout4:OUT STD_LOGIC);END add4;ARCHITECTURE add_arc OF add4 ISSIGNAL cout1,cout2,cout3:STD_LOGIC;COMPONENT halfaddPORT(a,b:IN STD_LOGIC;sum,hcarry:OUT STD_LOGIC);END COMPONENT;COMPONENT fulladdPORT(in1,in2,cin:STD_LOGIC;fsum,fcarry:OUT STD_LOGIC);END COMPONENT;BEGINu1:halfadd PORT MAP(a=>a1,b=>b1,sum=>sum1,hcarry=>cout1);u2:fulladd PORT MAP(in1=>a2,in2=>b2,cin=>cout1,fsum=>sum2,fcarry=>cout2);u3:fulladd PORT MAP(in1=>a3,in2=>b3,cin=>cout2,fsum=>sum3,fcarry=>cout3);u4:fulladd PORT MAP(in1=>a4,in2=>b4,cin=>cout3,fsum=>sum4,fcarry=>cout4);END add_arc;5.七段译码电路及程序:library ieee;use ieee.std_logic_1164.all;entity deled isport(datain:in std_logic_vector(3 downto 0);qout:out std_logic_vector(6 downto 0));end deled;architecture func of deled isbeginprocess(datain)beginif datain= "0000" then qout<="1111110";elsif datain= "0001" then qout<="0110000";elsif datain= "0010" then qout<="1101101";elsif datain= "0011" then qout<="1111001";elsif datain= "0100" then qout<="0110011";elsif datain= "0101" then qout<="1011011";elsif datain= "0110" then qout<="1011111";elsif datain= "0111" then qout<="1110000";elsif datain= "1000" then qout<="1111111";elsif datain= "1001" then qout<="1111011";else null;end if;end process;end func;四、系统仿真1.D触发器电路模块仿真波形:2.移位寄存器模块电路仿真波形:3.二选一数据选择器电路模块仿真波形:4.加法计数器的电路模块仿真波形:5.七段译码电路仿真波形:五﹑硬件验证说明这次设计采用的硬件电路有芯片EP1K10TC100-3,实验板上标准时钟电路、LED 显示等, 六、总结七、参考书目[1]《PLD与数字系统设计》李辉西安电子科技大学出版社 2005[2]《EDA技术及可编程逻辑器件应用实训》沈明山北京科学出版社 2004[3]《VHDL数字系统设计与高层次综合》林敏方颖立著北京: 电子工业出版社2002[4]《VHDL程序设计》曾繁泰陈美金著北京: 清华大学出版社 2001[5]《EDA技术实验与课程设计》曹昕燕周风臣清华大学出版社 2005[6]《PLD器件与EDA技术》李冬梅北京广播学院出版社2000。
篮球电子计分器操作方法
![篮球电子计分器操作方法](https://img.taocdn.com/s3/m/00e73763a4e9856a561252d380eb6294dc88224d.png)
篮球电子计分器操作方法篮球电子计分器是一种用于计分和计时的设备,广泛应用于篮球比赛中。
操作篮球电子计分器可以帮助裁判、教练和观众准确记录比赛进展和结果。
下面将详细介绍篮球电子计分器的操作方法。
1. 打开电子计分器大多数篮球电子计分器都有一个开关按钮,通常位于设备的一侧或底部。
按下开关按钮,电子计分器的屏幕将亮起,并显示默认的初始数字。
2. 设置比赛时间在大多数篮球比赛中,比赛时间一般为四个十分钟的节,每个节之间还包括两分钟的休息时间。
操作电子计分器设置比赛时间的方法通常如下:- 按下或旋转计时器上的"分钟/秒钟" 按钮或旋钮,以调整比赛时间。
- 按下或旋转计时器上的"加号" 和"减号" 按钮或旋钮,以调整时间的分钟或秒钟。
一般来说,比赛开始时将时间设置为40分钟(4个十分钟的节),每个节之间的休息时间设置为2分钟。
当倒计时开始,屏幕上会显示剩余比赛时间。
3. 记录比分篮球电子计分器通常具有两个用于记录比分的屏幕:主队得分屏幕和客队得分屏幕。
记录比分的操作方法如下:- 按下主队得分屏幕上的加减按钮,可以增加或减少主队的得分。
- 按下客队得分屏幕上的加减按钮,可以增加或减少客队的得分。
比分屏幕通常显示两个数字,一个用于表示主队的得分,另一个用于表示客队的得分。
当按下加分按钮时,屏幕上的数字会增加对应的分数。
当按下减分按钮时,屏幕上的数字会减少对应的分数。
4. 控制暂停和恢复比赛篮球比赛中,通常有各种原因需要暂停比赛,比如叫暂停、换人或其他情况。
电子计分器通常具有暂停和恢复比赛的功能,操作方法如下:- 在电子计分器上找到暂停按钮,按下该按钮可以停止比赛计时,并将屏幕上的时间暂停在当前秒数。
- 按下恢复按钮,可以恢复比赛计时,使屏幕上的时间继续递减。
5. 重置计时器和比分比赛结束后,需要将计时器和比分重置为初始状态,准备下一场比赛。
操作方法通常如下:- 按下电子计分器上的重置按钮,可以将比赛时间设置为初始时间,将比分归零。
基于单片机的篮球比赛计分器设计
![基于单片机的篮球比赛计分器设计](https://img.taocdn.com/s3/m/719ceb93b8f3f90f76c66137ee06eff9aef849b3.png)
基于单片机的篮球比赛计分器设计篮球比赛计分器是一种基于单片机的设备,用于记录和显示篮球比赛的比分、时间和犯规次数等信息。
本文将对基于单片机的篮球比赛计分器设计进行详细介绍。
一、设计背景和需求分析篮球比赛计分器是一种必备设备,用于记录篮球比赛的比分,时间和犯规次数等信息。
传统的篮球比赛计分器通常是由人工进行计分,存在计分错误的可能性。
为了提高计分准确性和效率,我们需要设计一种基于单片机的篮球比赛计分器。
设计需求如下:1.计分准确:确保每次计分都准确无误。
2.显示清晰:提供清晰易读的比分和时间显示。
3.操作简便:方便使用者进行计分的增减操作。
4.多功能:能够记录比赛时间、球队比分以及犯规次数等信息。
二、硬件设计1.显示屏:选择适合篮球比赛计分显示的大屏幕液晶显示器,确保信息显示清楚易读。
3.蜂鸣器:用于发出声音提示,例如在比赛结束时发出音乐。
三、软件设计1.初始化:对计分器进行初始化设置,例如重置比分、时间和犯规次数等信息。
2.计分控制:根据按键输入进行计分的增加或减少,并更新相应的显示。
3.时间控制:设置比赛时间,并进行倒计时操作,同时显示剩余时间。
4.比分显示:实时显示比分,确保显示清晰易读。
5.犯规次数:记录每个球队的犯规次数,并进行显示。
6.比赛结束:在比赛结束时,发出声音提示,并清零比分、时间和犯规次数。
四、功能拓展1.数据存储:添加存储器,用于记录比赛结果和相关数据,方便后续查看和分析。
2.通信功能:添加通信模块,可以与其他设备进行数据传输和控制,方便进行联网比赛。
五、设计实施1.硬件搭建:按照硬件设计要求进行电路搭建和连接,确保各个硬件模块正常工作。
2.软件编程:根据软件设计需求,编写单片机的程序代码,实现功能。
3.调试测试:将程序烧录到单片机中,进行调试测试,确保计分器正常运行并满足设计要求。
4.生产制造:在完成实施和测试后,进行批量生产制造,以满足市场需求。
六、总结基于单片机的篮球比赛计分器是一种高效、准确、易用的计分设备,通过对比分、时间和犯规次数等信息的实时记录和显示,提高了篮球比赛的计分准确性和效率。
篮球比赛计时计分器
![篮球比赛计时计分器](https://img.taocdn.com/s3/m/084ef666ddccda38376baf71.png)
毕业设计(论文)篮球比赛计时计分器设计学号:08100000姓名:木云三告专业:自动化系别:电子信息与控制工程系指导教师:郭彬讲师二○一二年六月摘要单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用。
目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位,许多用单片机做控制的球赛计时计分系统也应运而生,如:用单片机控制LED七段显示器计时计分器等。
篮球计时计分器以单片机为核心,由计时器、计分器、综合控制器等组成。
系统采用模块化设计,主体分为计时显示模块、计分显示模块、定时报警、按键控制键盘模块。
每个模块的程序结构简单、任务明确。
程序可读性好,对程序的修改可局部进行,其他部分可保持不变。
编程后利用Keil C51软件来进行编译,采用Proteus软件仿真,检验功能是否能够正常实现。
本设计中系统硬件电路主要由以下几个部分组成:单片机AT89C52、计时电路、计分电路、报警电路和按键开关。
本次设计用由AT89C52编程控制LED七段数码管作显示的球赛计时计分系统。
该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩以及赛后成绩暂存等功能。
它具有价格低廉、性能稳定、操作方便并且易于携带等特点,广泛适合各类学校或者小型团体作为赛程计时计分。
关键词:单片机;篮球赛计时;篮球赛计分;显示器ABSTRACTSCM since the nineteen seventies since, with extremely high price and more attention, so the application is very wide, development is very rapid. As the single-chip high integration, strong function, good versatility, especially it has the advantages of small volume, light weight, low energy consumption, low price, high reliability, strong anti interference ability and convenient use and other unique advantages, so that the chip has been promoted rapidly application. Has now become a measurement control in the application system of optimization models and new electronic product key parts, many do MCU control of match time scoring system also emerge as the times require, such as: using MCU to control LED seven segment display time scoring device. Time basketball scoring device with single chip computer as the core, by the timer, scoring device, integrated controller.The system adopts modular design, main body is divided into a timing display module, display module, timing alarm, scoring keys to control the keyboard module. Each module of the program is simple in structure, clear mission. Program readability, modification of programs can be local, the other part can be kept constant. After programming using Keil C51software to compile, use Proteus software simulation, test function to normal implementation. The design of the system hardware circuit is mainly composed of the following components: SCM AT89C52, a timing circuit, scoring circuit, the alarm circuit and the key switch.The design used by the AT89C52 programming control of LED seven digital tube display game timing and scoring system. The system has a race timing settings, schedule time to pause, timely refresh a and B both score and the game after the temporary success function. It has the advantages of low cost, stable performance, convenient operation and easy portability and other characteristics, are widely suitable for all types of schools or small groups as schedule time scoring.Key words: single chip timing; basketball; basketball score ;display目录摘要 (i)ABSTRACT ...................................................................................................................... i i 目录 ............................................................................................................................. i ii 第1章绪论 .. (1)1.1国内外的研究现状分析: (1)1.2设计目的: (1)1.3设计内容 (2)第2章系统硬件介绍 (3)2.1 MCS-51单片机简述 (3)2.1.1单片机AT89C52简介 (3)2.1.2 主要特性: (4)2.1.3 管脚说明: (4)2.1.4 中断 (6)2.1.5 Flash存储器的编程 (7)2.1.6 空闲节电模式 (7)2.1.7 掉电模式 (8)2.1.8 程序储存器的加密 (9)2.1.9 AT89C52的极限参数 (9)2.2 报警器 (9)2.2.1 报警器的分类 (9)2.2.2 报警器工作原理 (9)2.3 芯片74HC154 (9)2.3.1 简介 (10)2.3.2 引脚说明 (10)2.4 RESPACK—8 (10)2.5 显示器及接口 (11)2.5.1 显示器介绍 (11)2.5.2结构与原理 (11)2.5.3 LED显示器显示方式 (13)第3章电路方案设计 (16)3.1 功能控制电路 (16)3.2 时钟产生方式 (17)3.3 复位电路 (17)3.4 显示电路 (18)3.5电路总图 (19)第4章软件设计与流程图 (20)4.1 软件keil的简介与应用 (20)4.2 部分程序设计 (21)4.2.1 计时程序 (21)4.2.2 计分程序 (22)4.2.3 程序总流程图 (22)第五章仿真 (24)5.1 Proteus简介 (24)5.2 Proteus功能特点 (24)5.3 proteus的应用 (25)5.4 电路仿真 (26)结论 (27)致谢 (28)参考文献 (29)附录一 (30)附录二 (33)附录三 (41)第1章绪论1.1国内外的研究现状分析单片机自面世以来,以其体积小、价格低、功能强、可靠性高等特点倍受人们的青睐。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程单片机原理及应用课程设计一、设计目的:训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。
二、设计要求:1. 应用MCS-51单片机设计一个篮球比赛计分器;2. 能显示2个队的当前比分;根据各自得分情况进行加1,2,3分;3. 硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5. 原理图设计根据所确定的设计电路,利用Protel等有关工具软件绘制电路原理图、PCB板图、提供元器件清单。
三、参考资料:[1] 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社;[2] 单片机原理及应用,张毅刚编著,高等教育出版社;[3] 51系列单片机及C51程序设计,王建校,杨建国等编著,科学出版社;[4] 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;完成期限2011.3.14—2011.3.18指导教师专业负责人2011年 3 月13 日一、设计原理1.电路原理及用途篮球比赛计分器其实就是一个计数器,本次课程设计就是利用单片机中的定时/计数器来实现其计分的功能。
在52单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。
它们用于存放定时或计数的初始值。
此外,内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON。
用于选择和控制定时/计数器的工作。
根据设计的任务要求,本设计任务主要具有以下几个模块:单片机模块;按键模块;数码显示模块。
本设计由单片机模块部分植入主程序,通过按键部分进行加1、2、3分以及减1分操作,最终在3个LED数码管上显示结果。
本系统是以汇编语言作为编辑语言,采用单片机AT89C52作为本设计的核心元件。
利用7段共阳LED作为显示器件。
在此设计中共接入了3个7段共阳LED 显示器,分别表示个位,十位,百位用于记录该队的分数, 3个LED显示器显示范围可达到0~999分,能够满足篮球比赛的需要。
并设置有4个按键:K1,K2,K3,K4。
当比赛队得1分时,按下k1键加1分,得2分时按k2键加2分,得3分时按下k3键加3分。
如分数计错需减分时,每按一次k4键减1分。
2.设计框图二、设计步骤和调试过程1、总体设计电路2、模块设计和相应模块程序(1)硬件设计单片机模块本次设计用到了其中的P0,P1,P2,P3口,分别用于百位,开关,个位,十位。
各管脚的功能和用法如下述。
P0口:P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。
P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。
P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。
P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。
当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。
当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。
其中P1的1~4脚分别接上开关K1~K4,P0的36~39脚接上上拉电阻和数码显示的百位,P2的21~24脚接数码显示的个位,P3的10~13脚接数码显示的十位。
VCC脚和XTAL分别接上5V电源和12M的晶振。
按键模块根据设计要求,该篮球赛计分器共有4个按键:K1、K2、K3、K4,分别实现的功能是加1、2、3分和减1分。
K1与P1的1脚相连,K2与P1的2脚相连,K3脚与P1的3脚相连,K4键与P1的4脚相连,4个按键共用一个地端,如图2所示。
数码显示模块本设计显示部分采用的是7段共阳LED数码管显示,LED就是发光二极管,相对LET来说它的优势在于节能环保,保护视力,使用寿命长等优点。
数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。
我们分别把他命名为A,B,C,D,E,F,G,H,如图所示。
假设要显示一个数字2, 那么 A、B、G、E、D这5个段的发光管亮就可以了,C、F、H不亮,同时由于接法为共阳接法,那么为低电平是亮,为高电平是灭。
从高往低排列, P1.7-P1.0写成二进制为01111110,把它转化为16进制则为A2H。
数码管的接口有静态接口和动态接口两种。
动态接口采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出,另一接口完成各数码管的轮流点亮。
静态接口为固定显示方式,无闪烁,其电路可采用一个并行口接一个数码管,数码管的公共端按共阳接VCC,本次课程设计由于所需数码管较少,故可用这种方法接线。
这种接法占用接口多,仅能接少量数码管。
本次课程设计的比分范围是0~999,所以采用的3个7段共阳LED来显示,分别显示个位十位百位,其中P2显示个位,P3显示十位,P0显示百位。
由于P0没有内置电阻,因此在使用时需外接一个上拉电阻。
(2)软件设计篮球比赛计分器其实就是一个计数器,本次课程设计就是利用单片机中的定时/计数器来实现其计分的功能。
在52单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。
它们用于存放定时或计数的初始值。
此外,内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON。
用于选择和控制定时/计数器的工作。
篮球比赛计分器利用单片机的计数器进行工作,计数器对脉冲电平进行加1计数,直至计满回零。
作为可编程器件,单片机中的定时/计数器初始化编程步骤如下:根据定时时间要求或计数要求计算计数器初值;将工作方式控制字写入TMOD寄存器;将计数初值写入THX和TLX寄存器;启动定时器/计数器,即将TRX置位。
如果工作于中断方式,需置位EA(中断总开关)及ETX(允许定时/计数器中断),并编写中断服务程序。
实验程序:ORG 0000HSTA MOV R0,#00HMOV R1,#00HMAIN: MOV P1,#0FFHMOV A,P1CJNE A,#0FEH,LP1INC R0ACALL DELAYAJMP MAINLP1: CJNE A,#0FD,LP2INC R0INC R0ACALL DELAYAJMP MAINLP2: CJNE A,#0FBH,LP3INC R0INC R0INC R0ACALL DELAYAJMP MAINLP3: CJNE A,#0F7H,LP4 INC R1ACALL DELAYAJMP MAINLLP4: CJNE A,#0EFH,LP5 INC R1INC R1ACALL DELAYAJMP MAINLP5: CJNE A,#0DFH,MAIN INC R1INC R1INC R1ACALL DELAYAJMP MAINDELAY: MOV R2,#10H DISPL: MOV A,R0ANL A,#0FHMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#01HMOV P0,AMOV A,R0ANL A,#0FHSWAP AMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#02HMOV P0,A DISPL2: MOV A,R1ANL A,#0FHMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#04HMOV P0,AMOV A,R1ANL A,#0FHSWAP AMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#08HMOV P0,ADJNZ R2,DISPLRETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,6FH,77H,7CH,39H,5EH,79H,71H,76 H,73HEND3、仿真及仿真结果分析本次课程设计用到的仿真软件有Protues和Keil uvision。
在用Protues进行仿真之前,先要用KEIL UVISION软件将我们编写好的汇编程序编译。
具体方法是先新建一项目,之后输入编写的程序,输入完成后保存然后执行项目、编译,在目标文件夹内生成编译好的程序文件,其中*.HEX文件就是我们所需要的目的文件,在之后电路设计好后用于导入AT89C52中执行其功能。
然后在生成*.HEX文件后,进入Protues软件,此时软件已自动打开一新建项目。
我们可直接在其中构建电路图,点击板面左侧按键P,在弹出的Pick devices对话框中进行元器件的选择,元器件都找到后,先进行排版再按照电路图连接,连接好后,双击AT89C52在弹出对话框中选择单片机中要输入的程序,在输入程序后,即可开始进行仿真了,选择执行后点击开关可观察到数码管亮,并能实现加1、加2、加3、减1功能。
仿真效果如下图。
4、实验调试结果打开 Proteus 上的单片机控制步进电机电路图,点击 AT89C51 单片机,调用后缀名为.”HEX”的文件。
点击运行,观察现象,3个数码管均显示为0。
如下图所示。
然后进行了如下操作:当按下k1键,从左往右(后同)的第3个数码管显示1,再按下k2键,第3个数码管显示3,按下k3键,第3个数码管显示6,再按下k4键,第3个数码管显示5,与设计的要求相符。
显示5的仿真图如下图所示.经过多次反复测试,本系统已能达到设计所要求的所有功能。
三、结论及心得体会这次课程设计历时一个星期左右,通过这段时间的学习,发现了自己很多的不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
在学习中,虽然在理论上对单片机有了简单基本的了解,但是在真正的动手操作中还是存在很多的不足,更多的是对知识的应用上能力有所欠缺,以至完成这样一个简单的设计花费了不少时间。
但是最终通过自己的努力,查阅资料,询问同学,完成了这次的单片机的设计,在以后的学习中我也会更多的重视自己理论和实践的结合能力,提高自身综合能力。