篮球计分器的设计与仿真 摘要:本设计主要通过AT89C51单片机芯片,显示电路,时钟电路,键盘控制电路,报警电路和相关的软件的有机结合,组成了一个具有多功能的篮球计分器。 关键字:AT89C51 篮球计分器 74LS138 前言: 由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器和24秒控制器等组成。 一.系统设计目的、用途以功能 篮球比赛是根据运动队员在规定的比赛时间里得分多少来决定胜负的。因此,篮球比赛的计时计分系统是一种得分类型的系统。篮球比赛的计时计分系统由计时器、计分器等多种电子设备组成的,而本设计是采用AT89C51为主控制芯片来达到这个要求的。 二.系统设计所需资源参数 AT89C51是一种低电压、高性能CMOS 8位的单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 1.管脚说明: VCC:供电电压。 GND:接地。 P0口:一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。 P1口:一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。 P2口:一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。 /PSEN:外部程序存储器的选通信号。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 74LS138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式, 其工作原理如下: 当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A0、A1、A2)的二进制编码在一个对应的输出端以低电平译出。利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。 三.工作流程图: 是否按下 开始 初始化 显示时间 等待暂停键 是否到节或终场 外部中断 显示时间 暂停 T1中断实现分数刷新 加减分键是否按下 结束 四.程序设计: #include"reg52.h" char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit key1=P1^4; sbit key2=P1^5; sbit key3=P1^6; sbit key4=P1^7; sbit line=P1^3; sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; char num1=0,num2=0; void delay(int x) { int i,j; for(i=0;i<x;i++) for(j=0;j<125;j++);//12M晶振下延时1ms } void scan(char x,char y) { P2=0xff; P0=led[x/10]; led1=0;led2=1; delay(1); led1=1; P0=led[x%10]; led1=1;led2=0; delay(1); led2=1; P0=led[y/10]; led3=0;led4=1; delay(1); led3=1; P0=led[y%10]; led3=1;led4=0; delay(1); led4=1; } main() { line=0; P0=0xc0; //段选初值赋0000 P2=0xf0; //打开位选 while(1){ scan(num1,num2); if(key1==0) //第一组加 { delay(10); if(key1==0) { num1++; if(num1==31) { num1=0; } scan(num1,num2); // } while(!key1) scan(num1,num2); } if(key2==0) //第一组减 { delay(10); if(key2==0);{ num1--; if(num1==-1) { num1=30; } scan(num1,num2); } while(!key2) scan(num1,num2); } if(key3==0) //第二组加 { delay(10); if(key3==0){ num2++; if(num2==31) { num2=0; } scan(num1,num2); } while(!key3) scan(num1,num2); } if(key4==0) //第二组减 { delay(10); if(key4==0);{ num2--; if(num2==-1) { num2=30; } scan(num1,num2); } while(!key4) scan(num1,num2); } } } 五.硬件设计 六.测试过程及数据 1.测试仪器:proteus画图仿真软件,keilC51编程仿真软件。 2.测试与分析:首先,运用keil软件把编好的程序进行仿真查错,无错后会生成一个hex文件。其次,利用proteus把电路图画好并进行仿真查错。然后把keil软件生成的hex文件加载到用proteus画好的电路图中的那个单片机AT89C51中,运行仿真就能看到篮球计分器的效果了。如果需要加减分操作或者置位复位交换显示,只需按相应的按键即可。 七.参考资料: (1)李广第.单片机基础.第1版.北京:北京航空航天大学出版社,1999 (2)夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001 (3)谈宏华,陈康,涂坦,肖仁伟.基于AT89C51的数据采集系统设计[J].机电一体化,2005 |
|