版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、篮球比赛30秒倒计时器的设计2010-04-27 11:28:22来源:我的网站 浏览:2813次李建军(江苏省盐城技师学院电气工程系江苏盐城224002)【摘要】篮球比赛30秒钟规则规定:进攻球队在场上控球时必须在30秒钟内投篮出手(NBA比赛为24秒,全美大学体育联合会比赛中为35秒),因此在比赛时裁判既要看比赛又要看秒表计时,而本文介绍 的30秒倒计时器可以解决此问题。【关键词】AT89C51单片机、30秒倒计时器、LED30秒倒计时器的设计和制作有很多方法,本文介绍的30秒倒计时器以AT89C51单片机作为控制单元,采用两个数码管显示时间,用三个按键分别控制计时器的计时开始、复位和暂停
2、。倒计时器初始状态显示“30”当裁判员按下计时键,30秒倒计时开始,当计时器时间减到0时,计时器发出声光报警,提示裁判计时时间已到。一、电路设计30秒倒计时器的电路主要由电源电路、单片机最小系统、按键输入、显示驱动电路、报警电路组成,30秒倒计时器控制电路如图 1所示。aRW ID Ll: c丄*住思咏迈 和1叶ifS 阿护Wn yrhR11lEO- Wll*2盘I 丁一 1 i .1 1 1 1 1. r p p图1 30秒倒计时器电路原理图1、按键输入“3(秒倒计时器”采用了三个按键来完成计数器的启动计数、复位、暂停/继续计数等功能。(1) K1键:启动按钮(P3.2)。按下K1键,计数器
3、倒计时开始,数码管显示数字从30开始每秒递减计数,当递减到到零时,报警电路发出声、光报警信号。当计数器处于暂停状态时按下K1键将回到计时状态。(2) K2键:复位按钮(P3.3)o按下K2键,不管计数器工作于什么状态,计数器立即复位到预置值“30”在报警状态时按下K2键还可取消报警。(3) K3键:暂停/计时切换按钮(P3.4)o当计数器处于计时状态时按下该键计数器暂停计时,数码管显示数字保持不变;当计数器处于暂停状态按下该键计数器将回到计时状态;初始状态时该键无效。2、显示驱动电路“3(秒倒计时器”用两个共阳数码管来显示时间,数码管显示方式为动态显示。显示驱动电路中,数码管的段码引脚通过47
4、0欧的电阻接到单片机的 P1 口,两个片选引脚各通过一个 9012连接到正5V电源,由P3.0和P3.1控制。4、报警电路计时时间减到0,显示数码管显示“00时,发光二极管D1由P3.5控制发出光报警,同时蜂鸣器由P3.7控制发出声报警。二、软件编程思路1、全局变量“3(秒倒计时器”动作流程主要受三个全局变量控制。首先是 bit变量“ac,当“ac为“1时倒计时开始,为“0时倒计时停止,“act初值为“0”可以由按钮操作将其置“1”清“0”第二个全局变量是 char变量“time,存放倒计时的时间,当倒计时时间为0时,发出声光报警。变量“time的初值为30,定时中断服务程序在“act为1时,
5、每1s对其进行减1操作,减到0时保持为0,按下复位键”可将“time复位为30 O第三个全局变量是int变量“t,”记录响应定时中断0的次数。根据初始化定义,定时器 0以方式1工作,每1ms发出一次中断请求。控制程序只开放了定时器0中断,因此不会有比定时器 0中断更高级的中断被允许,所以每次请求都会立刻被响应。响应后在中断服务程序中将全局变量"t加1记录响应中断次数,每响应1000次即为1秒钟。变量“t初值为0,在中断服务程序中加1,当“t为2000时由中断服务程序清0。在按键驱动程序中,按下启动键、复位键、暂停/启动键时将“t清0,目的是从0ms开始计时。2、控制流程主程序主要用来
6、检测全局变量“time当“time为0时发出 声光报警”。按键驱动、显示驱动和“time ”操作都在定时器0中断服务程序中进行。其控制流程如图2所示。主程序开贻T line¥图2控制流程图三、软件程序设计1、数码管驱动程序到计时器的两个数码管以动态显示的方式显示计时时间"time"”全局变量),LED1显示“time的十位,LED2显示“time的个位。(1) 定义段码数据口和片选信号根据实际电路,在 C51中定义段码的数据口为 P1,两个片选信号为 P3.0和P3.1。定义如下:#define duan P1sbit wei1=卩3人0;sbit wei2=P
7、3人1;(2) 定义字形码LED显示数字09以及全灭的字形码表格放在数组zixing中。字形码是固定的表格,定义时加上关键字“code”表示该表格存放在程序存储器中。unsigned char code zixing=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;(3)定义数码管LED1和LED2的显示变量为了增加驱动程序的可移植性,笔者为数码管LED1和LED2定义了显示变量。显示变量就是本驱动 程序的对外接口,外部程序只要改变显示变量的值就可改变数码管显示的数值。定义方式如下:unsigned char led_str2=10
8、,10;led_str0直接对应数码管LED1, led_str1直接对应数码管LED2。本项目中由专门的子程序将全局变量 time 计算拆分成 led_str0和 led_str1。void js()led_str1=time/10%10;led_str0=time%10;(4)数码管驱动程序数码管驱动程序“void chushi(char i)在定时中断服务程序中被调用执行。根据初始化程序的定义,定时中断服务程序每1ms被执行一次。定时中断服务程序中运用全局变量“t记录进入该服务程序的次数,“t ” 计满2000由定时中断服务程序清零。数码管驱动程序的参数“char i是用来确定当前点亮的
9、是 LED1还是LED2,当参数为“0时点亮LED1,LED1,奇数次进入定时中断参数为“1时点亮LED2。如果我们希望偶数次进入定时中断服务程序时点亮服务程序时点亮LED2,我们可以用程序调用语句“chushi(t%2) ”轻松实现。进入数码管驱动程序后首先调用子函数js(),计算当前的led_str0和led_str1。接下来将两个数码管全部熄灭以防止余晖的出现。最后点亮需要点亮的数码管并送出字型码。驱动程序代码如下:void chushi(char i)js(); /计算显示变量duan=0xff; / 去余晖wei1=i; wei2=!i;/ 确定片选duan=zixingled_st
10、ri; / 送字型码2、按键驱动程序按键驱动程序分为按键识别和按键功能执行两部分。按键功能执行可在按键按下时或按键抬起后执 行,文中将其设计在按键抬起后执行。(1)定义按键I/O地址根据实际电路,三个按键(启动键、复位键、暂停/启动键)分另U接在 P3 口的P3.2,P3.3和P3.4三个引脚上。为了取键值方便还将P3 口定义为“iokey,”程序中可作定义如下:#define iokey P3sbit key仁卩3人2;sbit key2=P 3人3;sbit key3=P 3人4;(2)按键驱动流程按键识别的通用流程为:I/O 口写“1”判断有无键按下 T延时去抖T确定键值T等待按键抬起T
11、执行按键功能。按键驱动程序中定义了两个静态变量“ts ”和“kv”,分别用来延时去抖和存放键值。(3) 延时去抖静态变量“ts用来延时去抖。按键驱动程序在定时中断服务程序中每1ms被执行一遍,每检测到有键按下“ts加1,检测到无键按下“ts清0。按键连续按下20ms,则连续20次执行按键驱动程序时都检测到有键按下,此时静态变量“ts累加到20,可确认按键按下有效。为防止按键一直按着不放而使“ts累加到溢出,确认有键按下后可使“ts的值保持为20,或大于20 的某一个值如21。(4) 取键值确认有键按下后即可通过读取按键的I/O 口状态来得到键值。为读取P3.2、P3.3和P3.4引脚状态,屏蔽
12、P3 口其他引脚的影响,可将读取后的数值按位或上11100011B(0xE3)再送给静态变量 “kv。静态变量“kv存放按键的键值,无键按下或按键抬起后 kv的值为0。按下启动键key1时kv=11111011B(0xFB),按下复位键 key2 时 kv=11110111B (0xF7),按下暂停 /启动键 key3 时 kv=11101111B( 0xEF)。(5) 执行按键功能按键抬起后第一次执行按键驱动程序时,静态变量“kv任保持着按键按下时最后得到的键值,以该键值作为参数调用按键执行程序“actkey(kv); ”即可执行按键功能。调用后kv值立刻清0,确保按一次键执行一次按键功能。
13、驱动程序代码如下:void key()static unsigned char kv=0;static unsigned char ts=0;key1=1;key2=1;key3=1;if(!(key1 &key2&key3)ts+;if(ts>=20)ts=20; / 有键按下if(ts=20)kv=iokey|0xe3; / 取键值else /无键按下或按键已抬起actkey(kv);ts=0;kv=0;函数actkey(kv)用来根据键值“kv执行相应操作。当“kv等于0xFB时代表启动键key1按下,函数actkey(kv)将全局变量act赋值为“1。当“ kv等于0xF7时代表复位键key2按下,函数actkey(kv)将全局变量“time复位为“30;当“kv等于0xEF时代表暂停/启动键按下,函数actkey(kv)将全局变量act取反。每按 一个按钮都有将全局变量 “t清0的操作,目的是每当复位、或启动计时时,进入定时中断的次数都从 始计算,否则会出现第1秒计时不准确的现象。程序代码如下:void actkey(unsigned char k)switch(k)case 0xfb:act=1;t=0;break;case 0xf7:time=30;t=0; break;case 0xef:act=act;t=0; brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江公务员面试模拟134
- 四川行政职业能力模拟54
- 甘肃省公务员面试真题汇编11
- 六年级上册书法教案
- 2024年个人月度工作总结30篇
- 2017年6月24日黑龙江省公务员考试(艰苦边远地区)面试真题
- 2024年假期补课协议书
- 2024年公司经营权转让合同
- 地方公务员西藏申论76
- 2024年机器设备买卖合同
- 半挂车使用说明书
- “互联网使人类社会更开放VS更封闭”辩论赛反方辩词一辩、二辩、三辩、四辩发言稿
- 2023年中级注册安全工程师《安全生产专业实务(金属非金属矿山安全)》真题及详解
- 中小学幼儿园教师专业发展示范学校建设标准(试行)
- 屋顶光伏项目施工方案范本
- 儿童歌曲弹唱课程标准
- 基于区域分割的三维自由曲面相似性评价算法
- 《我国运动员在奥林匹克运动会取得的辉煌成绩》 课件
- 小学道德与法治人教六年级上册我们是公民我是中国公民全国优质课
- 《无人机组装与调试》第5章-多旋翼无人机调试
- 临床用血执行情况自查表
评论
0/150
提交评论