XXXXXXXX信息工程学院课程设计报告篮球计数器设计人:XXX专业:电子信息工程班级:电子班学号:指导教师:二零一X年一月1设计目的及要求.....................................31.1设计目的.....................................31.2设计要求.....................................42设计方案及原理....................................42.1方案论述......................................43硬件设计...........................................53.1单片机模块....................................53.2按键模块.....................................83.3数码显示模块.................................94软件设计..........................................115系统调试..........................................145.1系统仿真.....................................145.2测试.........................................156结论分析及体会....................................167参考文献..........................................17附录一控制源程序..................................18附录二硬件总电路图................................20附录三元件清单....................................20附录四..............................................211设计目的及要求1.1设计目的本课题以增强型单片机AT89C52为核心,设计制作篮球比赛计分器。针对篮球比赛中有得1、2、3分,有时还会出现加分错误的情况,本人设计的简易篮球赛计分器主要通过按键实现以下功能:能够进行加1、2、3分;能够进行减1分。并通过3个数码管进行显示。1.2设计要求本设计任务主要具有以下几个模块:单片机模块;按键模块;数码显示模块。本设计由单片机模块部分植入主程序,通过按键部分进行加1、2、3分以及减1分操作,最终在3个LED数码管上显示结果。2设计方案及原理2.1方案论述本系统是以C语言作为编辑语言,采用单片机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分。因所设计的篮球赛计分器功能较少,电路结构也相对简单。所以在选材方面也不多。由于按键要求不是很高,因此选材只有两个部分:单片机部分和显示部分。本次课程设计选用的芯片为AT89C52,显示部分用的是LED数码管显示。3硬件设计由于本次课程设计的简易篮球计分器功能比较简单,所以选择的器件也比较少,主要有5个按键,1个AT89C52,3个共阳的数码显示管,因此本课题的硬件设计部分划分为3个模块:单片机模块;按键模块;数码显示模块。系统的总电路图见附录2(总电路原理图)。3.1单片机模块单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本部件的大规模集成电路,又称MCU。如果说C语言程序设计课程设计的基础课,那么AT89C52单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。AT89C51是51系列单片机的一个增强型号,它是ATMEL公司生产的。AT89C51是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可为您提供许多较复杂系统控制应用场合。AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本本设计P1口接四个开关,分别作为比分+1、+2、+3、-1分的控制按键;P0、P2口和P3口分别按静态接口方法接两个数码管来显示比分。本次课程设计采用的是增强型AT89C51单片机。其管脚图如图1所示。图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的晶振。3.2按键模块根据设计要求,该篮球赛计分器共有4个按键:K1、K2、K3、K4,分别实现的功能是加1、2、3分和减1分。K1与P1的1脚相连,K2与P1的2脚相连,K3脚与P1的3脚相连,K4键与P1的4脚相连,4个按键共用一个地端,如图2所示。图2按键模块图3.3数码显示模块本设计显示部分采用的是7段共阳LED数码管显示,LED就是发光二极管,相对LET来说它的优势在于节能环保,保护视力,使用寿命长等优点。数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。我们分别把他命名为A,B,C,D,E,F,G,H,如图3所示。图2数码管结构图假设要显示一个数字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没有内置电阻,因此在使用时需外接一个上拉电阻。如图4所示。图4数码管引脚连接图4软件设计篮球比赛计分器其实就是一个计数器,本次课程设计就是利用单片机中的定时/计数器来实现其计分的功能。在52单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它们用于存放定时或计数的初始值。此外,内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON。用于选择和控制定时/计数器的工作。其格式见下面两表:表1方式控制寄存器TMODGATEC/TM1M0GATEC/TM1M0门控开关计数/定时方式选择门控开关计数/定时方式选择表2控制寄存器TF1TR1TF0TROIE1IT1IE0IT0T1请求有/无T1工作启/停T0请求有/无T0工作启/停INT1请求有/无INT1方式下沿INT1请求有/无INT1方式下沿篮球比赛计分器利用单片机的计数器进行工作,计数器对脉冲电平进行加1计数,直至计满回零。作为可编程器件,单片机中的定时/计数器初始化编程步骤如下:根据定时时间要求或计数要求计算计数器初值;将工作方式控制字写入TMOD寄存器;将计数初值写入THX和TLX寄存器;启动定时器/计数器,即将TRX置位。如果工作于中断方式,需置位EA(中断总开关)及ETX(允许定时/计数器中断),并编写中断服务程序。本次课程设计程序是用C语言编写的,因为设计的功能较为简单,所以程序中只用到一个主程序就实现了其功能。程序的系统流程图如图5。控制源程序见附录1.NNN开始总分寄存器R0清0七段码数据表首地址送DPTR读取P1的值取出低4位总分加1分取出低4位按键去抖动再次读取P1的值是否有键按下是否真有按键按下总分加2分总分加3分总分减1分等待按键释放将总分转换为BCD码再将BCD码转换为七段码经P0口输出显示5系统调试5.1系统仿真本次课程设计用到的仿真软件有Protues和Keiluvision。在用Protues进行仿真之前,先要用KEILUVISION软件将我们编写好的汇编程序编译。具体方法是先新建一项目,之后输入编写的程序,输入完成后保存然后执行项目、编译,在目标文件夹内生成编译好的程序文件,其中*.HEX文件就是我们所需要的目的文件,在之后电路设计好后用于导入AT89C51中执行其功能。然后在生成*.HEX文件后,进入Protues软件,此时软件已自动打开一新建项目。我们可直接在其中构建电路图,点击板面左侧按键P,在弹出的Pickdevices对话框中进行元器件的选择,元器件都找到后,先进行排版再按照电路图连接,连接好后,双击AT89C51在弹出对话框中选择单片机中要输入的程序,在输入程序后,即可开始进行仿真了,选择执行后点击开关可观察到数码管亮,并能实现加1、加2、加3、减1功能。仿真效果如图6。图6仿真效果图5.2测试打开Proteus上的单片机控制步进电机电路图,点击AT89C51单片机,调用后缀名为.”HEX”的文件。点击运行,观察现象,3个数码管均显示为0。如图7所示。图7初始值为0的仿真效果图然后进行了如下操作:当按下k1键,从左往右(后同)的第3个数码管显示1,再按下k2键,第3个数码管显示3,按下k3键,第3个数码管显示6,再按下k4键,第3个数码管显示5,与设计的要求相符。显示5的仿真图如图8所示.经过多次反复测试,本系统已能达到设计所要求的所有功能。图8仿真计分为5的效果图6结论分析及体会这次课程设计历时两个星期多