篮球计时计分器的设计与实现毕业论文(设计)(编辑修改稿)内容摘要:

有按键按下时被强制拉为低电平。 图 键盘电路 报警部分 报警电路如下图 ,通过报警电路给人们以警告信息。 由于单片机的 I/O口驱动能力有限,在这里用了一个 PNP 的晶体管起电流放大作用驱动蜂鸣器工作。 电阻限流作用,防止晶体管因电流而发热烧坏。 篮球计时计分器的设计与实现 7 图 报警电路 显示部分 显示部分采用数码管的动态扫描方式,数码管采用共阴极的。 P0发送段码, P2发送位码来控制数码管的选通。 使每个数码管轮回点亮,由于人的视觉停留效应在适当的时间人们会认为所有的数码管是点亮的。 计分部分:各使用两个数码管来计量两队的分数,分数变化 的控制通过按键来控制。 计数范围为 0099。 定时部分:各使用两个数码管来计量比赛时间,并采用倒计时的计数方式。 其原理图如图 : 图 显示部分 系统软件设计 软件部分要求实现的功能有:开始时所有显示屏都显示 0;有预篮球计时计分器的设计与实现 8 置比赛时间的功能;具有 AB两队分别计分的功能;有鸣笛警示功能;只有当预置时间后,并按开始按钮,计时器才能开始倒计时,只有当开始计时后, AB 两队才能进行加一分、加二分,减一分;当比赛暂停时,计时显示屏停止倒计时;当交换比赛场地时,按交换键,甲乙两队的比分交换;当倒计时时间 为零时,蜂鸣器自动鸣笛报警。 定时器子程序 51单片机内部有两个 16 位可编程的定时器 /计数器,分别称为定时器 /计数器 0 和定时器 /计数器 1,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。 定时 /计数器的核心是的 16 位加法计数器,定时器 T0 的加法计数器用特殊功能寄存器 TH0、 TL0表示, TH0表示加法计数器的高 8位, TL0表示加法计数器的低 8位。 TH1和 TL1则分别表示定时 /计数器 T1的高 8位和低 8位。 它们均是 8位寄存器,在特殊 功能寄存器中占地址 8AH8DH。 它们用于存放定时或计数的初始值。 此外,内部还有一个 8位的工作方式寄存器 TMOD 和一个 8 位的控制寄存器 TCON,用于选择和控制定时 /计数器的工作。 这些寄存器可根据需要由程序读写。 当然 16 位加法计数器的输入端每输入一个脉冲, 16位加法计数器的值自动加 1,当计数器的计数值超过加法计数器字长所能表示的二进制数的范围而向第 17 位进位,即计数溢出时,置位定时中断请求标志,向 CPU申请中断。 篮球计时计分器的设计与实现 9 (1) TMOD用于控制 T0和 T1的工作方式,其格式如表 : 表 方式控制寄存器 TMOD 位 D7 D6 D5 D4 D3 D2 D1 D0 位符号 GATE C/T M1 M0 GATE C/T M1 M0 门控开关 计数 /定时 方式选择 门控开关 计数 /定时 方式选择 T1方式字段 T0方式字段 M1, MO:工作方式控制 位,可构成表 : 表 方式控制寄存器 TMOD 的工作方式 M1 M0 工作方式 说明 0 0 0 13位定时器; 0 1 1 16位计数器; 1 0 2 可自动再装载的 8位计数器; 1 1 3 T0分成两个独立的 8位计 数器 C/T: 计数工作方式 /定时工作方式选择位。 置 0 时,设置为定时工作方式;置 1时,设置为计数工作方式。 GATE:门控位,用以决定是由软件还是硬件启动 /停止计数。 GATE=0, INT0/INT1被封锁,只要用软件对 TR0(或 TR1)置 “1”就启动了定时器; GATA=1时,定时器 /计数器的计数受外部引脚输入电平的控制。 TMOD的所有位在复位后清 0。 TMOD不能位寻址,只能按字节操作设置工作方式。 (2) 定时 /计数控制寄存器 TCON TFl, TRl, TF0 和 TR0 位用于定时器/计数器; IEl, ITl, IE0和 IT0位用于中断系统。 其格式如表 : 篮球计时计分器的设计与实现 10 表 控制寄存器 TCON 位 D7 D6 D5 D4 D3 D2 D1 D0 位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 各位定义如下: TF0:定时器 0溢出标志。 其功能及操作情况同 TF1。 TR0:定时器 0运行控制位。 其功能及操作情况同 TR1。 在本系统的设计中主要使用定时器 0 的 16 位的定时模式,也就是工作模式 1。 程序设计的子框图如图 : 开 始置 数 T H 0、 T L 0开 中 断 E T 0、 E A定 时 时 间 到。 中 断 服 务 程 序结 束设 置 T M O DNY 图 程序设计 C源程序代码如下: void Timer_Inti(void) //定时器 0初始化程序 篮球计时计分器的设计与实现 11 { TMOD=0X01。 //设置工作方式 1 TH0=(6553650000)/256。 //高位初始值 TL0=(6553650000)%256。 //低位初始值 ET0=1。 //开定时器 0中断 EA=1。 //开总中断 TR0=1。 //启动定时器 0 } void Timer_ISR() interrupt 1 // 定时器 0中断服务程序 { TH0=(6553650000)/256。 // 重新赋初始值 TL0=(6553650000)%256。 // if(count++==20) //定时 1s 基准 { sec++。 //定时时间到, sec变量加 1, count变量清零 count=0。 } } 键盘扫描子程序 键盘采用独立式键盘,按键是一种机械弹性开关,当键按下时闭合,松开时断开。 因为有机械的接触,在触点闭合或断开的瞬间会出现电压抖动。 为了避免键输入错误,必须进行键抖动的处理。 去抖动篮球计时计分器的设计与实现 12 由硬件和软件两种方法:硬件方法就是在键盘中附加去抖动电路消除抖动,而软件方法则是采用时间延迟以消除抖动。 其流程图如图 所示: 开 始延 时 1 0 m s 去 抖是 否 有 按 键 按 下。 结 束等 待 按 键 释 放NY 图 键盘扫描部分流程图 子程序如下所示: void Key_Scan(void) //键盘扫描子函数 { if(key==0) //是否有按键按 下 { Delay(10)。 //延时去抖 If(key==0) //再次检测是否有按键按下 { While(key==0)。 //等待按键释放 } 篮球计时计分器的设计与实现 13 } } 显示子程序 显示部分采用共阴极的数码管动态扫描方式,子程序的设计框图如图 : 开 始P 0送 段 码P 2送 位 码延 时 图 显示子程序的设计 子程序代码示例如下: unsigned char code DSY_CODE[]=//段码 {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff }。 unsigned char code BIT_CODE[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。 //位码 void display() //显示子函数 { unsigned char i。 while(1) { 篮球计时计分器的设计与实现 14 for(i=0。 i8。 i++) { P0=~DSY_CODE[i]。 //循环扫面 P2= BIT_CODE [i]。 Delayms(2)。 //延时 } } } 蜂鸣器报警子程序 蜂鸣器采用一定频率的脉冲来驱动其发声,子程序框图如图 所示 : 开 始产 生 延 时 脉 冲驱 动 蜂 鸣 器结 束 图 蜂鸣器报警子程序流程图 程序代码如下: void beep(unsigned char t) //蜂鸣器子函数 { uchar i。 篮球计时计分器的设计与实现 15 for(i=0。 i100。 i++) { BEEP = ~BEEP。 //高低电平取反 DelayMS(t)。 //延时 } BEEP = 0。 //关闭蜂鸣器 } 4 系统测试与分析 系统测试 硬件测试 ( 1)经过测量,电源电压达到标准的 5V; ( 2)用万用表测试,所有的电路都通了; ( 3)用示波器检查晶振,看到示波器上显示标准的正弦波。 功能测试 ( 1)当一节比赛完成时,蜂鸣器没有报警,后经修改程序,达到了当倒计时为 0 时方波驱动蜂鸣器开始报警 ,起到了提示的作用 ,完成了预期的目标。 ( 2)通过按键,完成 了甲乙两队的比分刷新与暂停的功能 当进行赛事计分时, A,B两队可以分别加一分,加两分,进行加分,当需要扣分时,按减分键进行减分,并当交换场地时,能交换 A,B两队的比分。 较好的完成了既定的加分减分功能。 篮球计时计分器的设计与实现 16 系统分析 通过硬件测试和软件调试 ,本设计较好的完成了应有的指标和任务。 实现了单片机为核心主控外围电路的想法,各个电路模块在程序的控制下,基本实现了应有的功能。 5 小结 本次设。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。