篮球比赛数字计分器
篮球比赛计分器设计93684

单片机课程设计报告篮球比赛计分器设计姓名:学号:专业班级:指导老师:所在学院:年月日摘要本设计是采用单片机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、显示内容,队名用英文名,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);。
篮球比赛计分器课件

篮球比赛计分器
*
清理工位,归还工具
篮球比赛计分器
*
欢 迎 指 导!
篮球比赛计分器
*
编写程序
系统调试
制作电路
篮球比赛计分器
*
任务实施
硬件设计
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 小组内分工合作,完成系统的制作和调试
篮球比赛计分器
*亮度高,可视性好 *可控性强
篮球比赛计分器的设计原理

篮球比赛计分器的设计原理
篮球比赛计分器的设计原理是基于计分规则和比赛规则来实现的。
设计原理如下:
1. 确定比赛规则:首先需要明确比赛规则,包括比赛时间、进球得分规则、罚球规则、犯规规则等。
2. 确定计分方式:根据比赛规则确定计分方式,通常包括两支队伍的得分和罚球数。
计分器需要能够根据比赛情况及时更新并显示得分。
3. 实时更新得分:根据比赛过程中的得分情况,计分器需要能够实时更新双方队伍的得分。
通常,计分器会设置按钮或触摸屏来记录各种得分情况,包括投篮得分、罚球得分以及技术犯规等。
4. 管控比赛时间:篮球比赛有固定的时间限制,计分器需要能够计时并显示比赛的进行时间。
同时,计分器也需要提供暂停和继续功能,以便于比赛管理。
5. 显示比赛结果:当比赛结束时,计分器需要能够显示比赛的最终得分和胜负结果。
部分计分器还会提供比赛统计数据,如得分最高球员、篮板球数量等。
综上所述,篮球比赛计分器的设计原理是基于比赛规则和计分方式来实时更新并显示比赛的得分情况,同时还需要提供计时、暂停和继续功能等。
单片机课程设计——篮球计时计分器

单片机课程设计报告篮球比赛计时计分器设计2009年6月18日摘要本设计是采用AT89C52单片机为核心设计的一个用于赛场的篮球计时计分器。
本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。
计时部分计时范围宽,而且可定时设定与小时、分钟调整;计分部分调整灵活,显示范围宽,足以满足各种规模赛程需要。
两个显示模块均采用动态扫描方式显示。
在本设计中P3口(P3.0——P3.3)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口是计分数据输出口,计时计分均设有显示缓冲区(40H ——43H计分显示缓冲区,30H——33H计时显示缓冲区)。
本设计共有K1——K5六个设置按键,K1是甲加分建(按一次加一分),K2是乙加分键(按一次加一分),K3是定时切换键(定时设置与计时调时切换),K4是分钟调整键(计时与定时分钟调整),K5是分数位置交换键(交换甲、乙两队比分的位置)。
按键与P1口相接,低电平输入有效.。
报警部分由扬声器组成,当计时时间到时,输出低电平有效,由P1.3口输出脉冲信号驱动扬声器发出声音。
计时定时的原理与定时闹钟相同,为定时设置定时分钟计数单元,通过比较定时与计时的分计数单元判断比赛是否结束是否报警,定时与计时共用一个显示缓冲去,通过K3(定时切换键)进行显示切换,本设计可通过定时显示的秒位判断定时是否有效,如果秒位显示00说明无效(上次用过的定时),显示11说明有效(本次定时)。
定时时间到,扬声器报警,比赛结束,按K3键可停止报警(否则一直报警)。
关键词:单片机篮球计时计分器数码管按键报警器目录1 概述 (3)1.1单片机简介 (3)1.2课程设计的意义 (4)1.3任务与要求 (4)2 系统总体方案与硬件设计 (5)2.1、系统总体方案设计 (5)2.2、硬件系统设计 (5)2.2.1单片机的选择 (5)2.2.2、时钟电路模块 (6)2.2.3、复位电路模块 (7)2.2.4、按键控制模块 (8)2.2.5、数码管显示原理 (8)2.2.6、定时报警模块 (9)3、软件设计 (10)3.1、程序流程图 (10)3.2、程序分析 (11)4 PROTEUS软件仿真 (12)4.1、简介 (12)4.2、仿真过程 (12)5、调试分析 (15)6、课程设计心得体会 (16)参考文献: (16)附1、源程序代码 (17)附2、系统原理图 (24)1 概述1.1单片机简介单片机是指一个集成在一块芯片上的完整计算机系统。
篮球比赛计分器设计条件分析报告

篮球比赛计分器设计条件分析报告一、引言篮球作为一项全球性的运动,受到广大球迷的喜爱。
而篮球比赛计分器作为比赛场地上的重要设备,起到计分、计时和展示比赛数据的作用。
本文将对篮球比赛计分器的设计条件进行分析,并提出相应的设计方案。
二、设计条件分析1. 功能需求篮球比赛计分器主要功能为计分和计时,因此需要具备数字展示功能,能够准确地显示比赛进程和比分情况。
同时,计分器还应具备计时功能,能够精确记录比赛时间,并提供倒计时功能。
此外,计分器还应具备加减分、暂停等功能,便于裁判员和比赛管理人员的操作。
2. 可视性要求由于篮球比赛计分器通常放置在场地边线上,因此要求具备良好的可视性。
计分器应有清晰的数字显示,确保观众和队员都能够迅速、准确地获取比分和时间信息。
此外,计分器还应具备不同亮度的调节功能,以适应不同光线环境下的可视性要求。
3. 操作使用便捷性篮球比赛计分器是裁判员和比赛管理人员必不可少的工具,因此其操作使用的便捷性至关重要。
计分器应具备直观明确的按键布局,使用人员能够快速、准确地掌握各项操作。
同时,计分器还应具备易于携带和设置的特点,以便于在不同比赛场地的安装和调整。
4. 系统稳定性篮球比赛计分器的系统稳定性对于比赛的进行至关重要。
计分器应具备抗干扰能力强的特点,能够稳定工作在各种环境下。
此外,计分器还应具备恢复功能,以防止因突发情况导致的数据丢失和故障。
5. 可扩展性和可维护性为适应不同比赛规模和要求,篮球比赛计分器应具备可扩展的特点。
计分器的设计应考虑到可增加的显示屏和按键,以满足大型比赛的需要。
同时,计分器还应具备易于维护和升级的特点,以延长使用寿命并提供更好的服务。
三、设计方案基于以上设计条件的分析,我们提出了如下的篮球比赛计分器设计方案:1. 核心功能设计计分器将采用LED数字显示屏,具备清晰、亮度可调的特点,以满足不同环境下的可视性需求。
同时,计分器将采用电子计时器,能够精确记录比赛时间并提供倒计时功能。
篮球比赛计时计分器设计方案
篮球比赛计时计分器设计方案
设计目的:本篮球比赛计时计分器的设计旨在提供一个简单易用,精准可靠的计时计分器,用于篮球比赛计时计分的目的。
设计原理:本计时计分器主要采用数码显示技术,通过显示器来显示比分、时间,以及犯规次数等信息。
并且计时计分的过程中,系统主要通过微处理器控制并实现自动计时计分,在比赛过程中极大地方便了裁判员的工作。
特点:本计时计分器的特点如下:
1. 精准可靠:系统采用稳定的数码显示技术,让计分器更加精准,可靠性更高。
2. 显示直观:通过系统显示器,直观的显示比赛进行的时间、分数以及犯规次数等信息,让人一目了然。
3. 自动计分:本系统可以通过微处理器实现自动计分,极大地降低了裁判员的工作难度,提高了比赛的公正性和效率。
4. 强大的扩展性:本系统支持接入外部闪烁灯控制模块,可以扩展到运动场馆大屏幕等监控设备上。
使用方法:本计时计分器使用起来非常简单,只需要按照篮球比赛规则操作即可。
在比赛开始前,先设置好参赛队伍和比赛时间等相关参数,然后开启计时计分器即可开始比赛,比赛进程中可以根据实际情况进行犯规次数以及加时赛等相关操作。
比赛结束后,系统会自动停止计时,并显示双方比赛成绩。
总结:本篮球比赛计时计分器的设计让比赛计时计分更加简单轻松,不仅提高了比赛的效率,还提高了比赛的公正性和监管能力。
未来,我们还将进一步完善计时计分器的功能,加入更加智能化的管理系统,为体育竞技提供更加先进的技术支持。
AT89C52篮球计分器
篮球计分器设计摘要:这次实训采用AT89C52单片机、2N2905三极管、8个按钮、若干个电阻和电容、晶振器等器材来构成一个简易的电子时钟。
关键词:单片机AT89C52、数码管显示一、基本设计方案 (1)二、硬件系统设计………………………………………第2-3页三、电路设计: (4)四、源程序………………………………………………第5-12页五、调试…………………………………………………第12-13页六、作用: (13)七、总结: (14)一、基本设计方案1)利用AT89C52单片机结合数码管显示器设计的一个简易的篮球计分器,采用数码管显示。
可以实现为两个篮球小组加减分的功能。
基本功能:●数码管显示;●同时为两组加减分●能够清零复位2)篮球计分器以单片机AT89C52作为控制核心,该系统有如下方案组成:①控制模块---采用AT89C52单片机控制②显示模块---数码管(能显示两组比分)③控制模块---按键二、硬件系统设计1)本系统采用AT89C52芯片,有40个引脚40个引脚大致可分为4类:电源、扫描、段码输出和I/O引脚。
1、电源:(1) VCC - 芯片电源,接+5V;(2) VSS - 接地端;2、计分器:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
3、控制线: RST(Reset)功能:复位信号输入端。
4、I/O线1)AT89C52共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
2)数码管显示器接口及显示方式由于所有八位段选线都由一个I/O口控制,因此,在每一瞬间,所有数码管显示块会显示相同的字符。
要想每位显示不同的字符,就必须采用扫描方法轮流点亮每一位数码管显示块,也就是每一瞬间只点亮一位数码管显示块。
此刻,段选控制I/O输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通信号(共阴极送低电平,共阳极送高电平)。
篮球比赛计时计分器
篮球比赛计时计分器篮球比赛计时计分器是一种用于帮助裁判员和观众准确记录篮球比赛时间和比分的设备。
它在篮球比赛中起着至关重要的作用,不仅能够提供准确的时间和比分数据,还能够帮助裁判员控制比赛的节奏和做出正确的判决。
一、计时计分器的基本功能篮球比赛计时计分器通常具有以下基本功能:1. 比分显示功能:计分器能够显示双方队伍的得分情况,包括总分和当前分数。
2. 时间显示功能:计分器能够显示比赛的剩余时间,包括总时间和当前时间。
3. 比赛阶段显示功能:计分器能够显示比赛的阶段,如四节制比赛中的第一节、第二节等。
4. 比赛控制功能:计时计分器可根据裁判员的操作进行比赛控制,例如开始/暂停比赛、结束比赛等。
二、计时计分器的特殊功能除了基本功能外,一些高级的篮球比赛计时计分器还具有一些特殊功能,以满足不同比赛场景的需求:1. 分段计时功能:对于某些需要分段计时的比赛,计分器可以提供定时器,用于记录比赛各个阶段的时间,如篮球训练中的分组练习。
2. 超时计时功能:在篮球比赛中,每队通常有若干次暂停机会,计分器可以倒计时并提醒裁判员和队伍剩余暂停次数。
3. 预设比赛时间功能:有些比赛需要设定固定的比赛时间,计分器可以接收设定的比赛时间,并在比赛结束时自动停止计时。
4. 串口输出功能:一些高级计分器还可以通过串口输出比分和时间数据,以便于其他系统进行数据采集或显示。
三、计时计分器的使用注意事项为了确保计时计分器的正常运行和数据准确性,以下是一些使用注意事项:1. 操作规范:裁判员和工作人员应该熟悉计分器的使用方法,并按照规范进行操作,避免误操作导致计分器故障或数据错误。
2. 维护保养:计分器需要定期进行维护保养,包括清洁、更换电池等,以保证其长期稳定运行。
3. 备用计分器:在重要比赛或关键场合,应准备备用计分器,以防止计分器故障影响比赛进行。
4. 安全防护:计分器应放置在安全可靠的位置,避免因外力或触碰而造成损坏或数据错误。
EDA课程设计——篮球球比赛计分器_2
<<电子设计自动化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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学年论文(课程论文、课程设计)题目:篮球比赛数字计分器作者:所在学院:信息科学与工程学院专业年级:电信09-1指导教师:职称:讲师2011年6月25日摘要:数字集成电路是将元器件和连线集成于同一半导体芯片上而制成的数字逻辑电路或系统。
根据数字集成电路中包含的门电路或元、器件数量,可将数字集成电路分为小规模集成(SSI)电路、中规模集成MSI电路、大规模集成(LSI)电路、超大规模集成VLSI电路和特大规模集成(ULSI)电路。
应用的仿真工具Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。
它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。
工程师们可以使用Multisim交互式地搭建电路原理图,并对电路进行仿真。
Multisim提炼了SPICE 仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。
对应篮球比赛规则记分的系统的要求,篮球记分有1分、2分和3分的情况,通过对电路输入一个脉冲、两个脉冲、三个脉冲,使得计数器对分数进行统计,这需要三个脉冲分路。
电路要具有加分、减分及显示的功能。
综合应用数字电路初步设计,Multisim仿真和DXP的初步应用关键词:篮球计分器设计Multisim仿真DXP引言电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
在许多领域中计时器均得到普遍应用,诸如在体育比赛,定时报警器、游戏中的倒时器,交通信号灯、红绿灯、行人灯、交通纤毫控制机、还可以用来做为各种药丸,药片,胶囊在指定时间提醒用药等等,由此可见计时器在现代社会是何其重要的。
而对于体育的兴趣我就选择了篮球记分牌这个题目,所以有这样一个机会的我真的很兴奋同时我也有机会提升自己在数字电路中理论的能力.正文1.设计主要任务及要求要求:(1)分别记录两队得分情况;(2)进球得分加2分,罚球进球得分加1分;(3)纠正错判得分减2分或1分;(4)分别用三个数码管显示器记录两队的得分情况。
目的:(1)熟悉中规模集成可逆计数器,译码器和显示器的功能;(2)培养创造性地运用所学知识进行数字系统设计的能力和兴趣;(3)了解数字系统的实验及调试方法,以及一般故障的排除方法。
2.设计方案及原理据篮球比赛情况,有得1、2、3分的情况,还有减分的情况,电路要具有加、减分显示的功能。
用两片四位二进制加法计数器74LS161组成二、三进制计数器,控制加2、3分的计数脉冲,3片十进制可逆计数器74LS192组成的加、减分计数器用于总分累加,最多可计999。
译码器显示器用于显示分数。
2、1设计单元电路2、1、1二进制加法计数器74LS161<74ls161引脚图>管脚图介绍:时钟CP和四个数据输入端P0~P3清零/MR使能CEP,CET置数PE数据输出端Q0~Q3以及进位输出TC. (TC=Q0·Q1·Q2·Q3·CET)①置数控制端LD:当LD=0且无复位信号时,可以从输入端输入一个任意数并保持在芯片中,以后计数将从此数开始,此数称为预置数。
如输入数1001,计数器将按下面的方式循环:②工作状态控制端EP和ET:当无预置数且无异步复位时,若ET=0,则电路保持原态且无进位,当ET=1时,若EP=0,则电路保持原态且有进位,若EP=1,电路为计数状态。
表6.4.3为74LS161的真值表:CP RD LD EP WT 工作状态* 0 * * * 置0↑ 1 0 * * 预置数* 1 1 0 1 保持* 1 1 * 0 保持(C=0)↑ 1 1 1 1 计数2、1、2十进制可逆计数器74LS192引脚图管脚及功能表74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图所示:74LS192的引脚排列及逻辑符号为置数端,为加计数端,为减计数端,为非同步进位输出端, 为非同步借位输出端,P0、P1、P2、P3为计数器输入端,为清除端,Q0、Q1、Q2、Q3为数据输出端。
其功能表如下:图中:74LS192的功能表2.1.3、七段显示器半导体数码管是由七段发光二极管(Light Emitting Diode )组成,简称LED 。
共阴共阳的判断: 可以假设它是共阳的,那么任一段串入一个100欧姆电阻到5V 相输入 输出MR P 3 P 2 P 1 P 0 Q 3 Q 2 Q 1 Q1×× ××× ××0 0××dc badcba0 1 1 × × × × 加计数 011××××减计数应段就会被点亮;否则为共阴的数码管。
2.1.4、七段显示译码器74LS487448是一种与共阴极数字显示器配合使用的集成译码器。
74LS48是一个BCD—七段译码LED驱动器74lLS48功能表(1)正常译码显示。
LT=1,BI/RBO=1时,对输入为十进制数l~15的二进制码(0001~1111)进行译码,产生对应的七段显示码。
(2)灭零。
当LT=1,而输入为0的二进制码0000时,只有当RBI =1时,才产生0的七段显示码,如果此时输入RBI =0 ,则译码器的a~g输出全0,使显示器全灭;所以RBI称为灭零输入端。
(3)试灯。
当LT=0时,无论输入怎样,a~g输出全1,数码管七段全亮。
由此可以检测显示器七个发光段的好坏。
LT称为试灯输入端。
(4)特殊控制端BI/RBO。
BI/RBO可以作输入端,也可以作输出端。
作输入使用时,如果BI=0时,不管其他输入端为何值,a~g均输出0,显示器全灭。
因此BI称为灭灯输入端。
作输出端使用时,受控于RBI。
当RBI=0,输入为0的二进制码0000时,RBO=0,用以指示该片正处于灭零状态。
所以,RBO 又称为灭零输出端。
7448使用方法:用于共阴数码管的译码电路7448内部有限流电阻,故后接数码管时不需外接限流电阻。
由于7448拉电流能力小(2mA),灌电流能力大(6.4mA),所以一般都要外接电阻推动数码3.仿真测试步骤及结果、数据分析4.电路元件清单(1)74LS161三片 74LS192 三片 74LS48三片 BS201A三片EDA仿真软件-MULTISIM10(2)电容电阻单刀双掷开关电路版导线各种焊接工具5.简述电路PCB板制作过程,给出系统电路原理图、系统PCB原理图。
总原理图16.结论7.体会及感想、收获数电课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
这次课程设计的题目是篮球比赛数字计分器。
初看题目不知该如何下手,毕竟课程设计不同于实验课,电路图都要自己设计。
不过还是在不断的坚持和努力之下很好的完成了这次的数字电路课程设计。
通过这次的课程设计,我有很大的收获。
通过这次课程设计,加强了我们动手、思考和解决问题的能力。
在整个设计过程中,我们通过这个方案包括设计了一套电路原理,和芯片上的选择。
这个方案总共使用了3片74LS161,3片74LS192,3片译码器74LS48,3个数码管显示器,还有一些基本的逻辑门的芯片。
我觉得做课程设计不仅可以巩固了以前所学过的知识,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识,而且学到了很多在书本上所没有学到过的知识。
通过这次数电课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
全面系统的理解了编译原理程序构造的一般原理和基本实现方法,激发了学习的积极性。
把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。
这次的课程设计是我充分认识到图书馆资源的重要性,以前都很少去图书馆查阅资料,实在是一个大的失误,以后要学会充分利用图书资源。
这次课程设计我体会最深的一点就是理论要与实际相结合,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过。
程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固.。