1.我用c51单片机做了个篮球记分器,用proteus仿真时只出现时间倒计时,显示分数的数码管一直在0上 谁能帮帮

2.高分求篮球计时器设计

3.单片机c51篮球计时器程序

4.at89s52 篮球计时器 编写求助

5.篮球计分器程序(单片机汇编语言编写,不要C语言)

单片机篮球比赛计分器课程设计_单片机篮球比赛计时计分器

二篮球比赛计分器系列

[1]红外无线遥控篮球比赛计分器

可定制实现的功能:

通过红外遥控器进行设定比赛时间,可以实现开始、暂停、加减分、结束等功能,具有24S时间功能。

☆已作出的实物优酷视频演示地址:

单片机篮球比赛计时器(按键版本)

可定制实现的功能:

简单实现篮球比赛计时功能。

☆已作出的实物优酷视频演示地址:

手机蓝牙无线遥控篮球比赛记分牌

简介:同红外版本一样,通过手机蓝牙APP来实现无线遥控篮球比赛计分系统的设计。可以设定时间,遥控比赛开始,暂停,结束等,加减分等功能。

☆已作出的实物优酷视频演示地址:

style="font-size: 18px;font-weight: bold;border-left: 4px solid #a10d00;margin: 10px 0px 15px 0px;padding: 10px 0 10px 20px;background: #f1dada;">我用c51单片机做了个篮球记分器,用proteus仿真时只出现时间倒计时,显示分数的数码管一直在0上 谁能帮帮

摘 要篮球比赛30秒钟规则规定:进攻球队在场上控球时必须在30秒钟内投篮出手(NBA比赛为24秒,全美大学体育联合会比赛中为35秒),因此在比赛时裁判既要看比赛又要看秒表计时,而本文介绍的30秒倒计时器可以解决此问题。

关键词AT89C51单片机、30秒倒计时器、LED

30秒倒计时器的设计和制作有很多方法,本文介绍的30秒倒计时器以AT89C51单片机作为控制单元,采用两个数码管显示时间,用三个按键分别控制计时器的计时开始、复位和暂停。倒计时器初始状态显示“30”,当裁判员按下计时键,30秒倒计时开始,当计时器时间减到0时,计时器发出声光报警,提示裁判计时时间已到。

一、电路设计

30秒倒计时器的电路主要由电源电路、单片机最小系统、按键输入、显示驱动电路、报警电路组成,30秒倒计时器控制电路如图1所示。

图1 30秒倒计时器电路原理图

1、按键输入

“30秒倒计时器”采用了三个按键来完成计数器的启动计数、复位、暂停/继续计数等功能。

(1)K1键:启动按钮(P3.2)。

按下K1键,计数器倒计时开始,数码管显示数字从30开始每秒递减计数,当递减到到零时,报警电路发出声、光报警信号。当计数器处于暂停状态时按下K1键将回到计时状态。

(2)K2键:复位按钮(P3.3)。

按下K2键,不管计数器工作于什么状态,计数器立即复位到预置值 “30” ,在报警状态时按下K2键还可取消报警。

(3)K3键:暂停/计时切换按钮(P3.4)。

当计数器处于计时状态时按下该键计数器暂停计时,数码管显示数字保持不变;当计数器处于暂停状态按下该键计数器将回到计时状态;初始状态时该键无效。

2、显示驱动电路

“30秒倒计时器”用两个共阳数码管来显示时间,数码管显示方式为动态显示。显示驱动电路中,数码管的段码引脚通过470欧的电阻接到单片机的P1口,两个片选引脚各通过一个9012连接到正5V电源,由P3.0和P3.1控制。

4、报警电路

计时时间减到0,显示数码管显示“00”时,发光二极管D1由P3.5控制发出光报警,同时蜂鸣器由P3.7控制发出声报警。

二、软件编程思路

1、全局变量

“30秒倒计时器”动作流程主要受三个全局变量控制。首先是bit变量“act”,当“act”为“1”时倒计时开始,为“0”时倒计时停止,“act”初值为“0”,可以由按钮操作将其置“1”或清“0”。第二个全局变量是char变量“time”,存放倒计时的时间,当倒计时时间为0时,发出声光报警。变量“time”的初值为30,定时中断服务程序在“act”为1时,每1s对其进行减1操作,减到0时保持为0,按下“复位键”可将“time”复位为30。第三个全局变量是int变量“t”,记录响应定时中断0的次数。根据初始化定义,定时器0以方式1工作,每1ms发出一次中断请求。控制程序只开放了定时器0中断,因此不会有比定时器0中断更高级的中断被允许,所以每次请求都会立刻被响应。响应后在中断服务程序中将全局变量“t”加1记录响应中断次数,每响应1000次即为1秒钟。变量“t”初值为0,在中断服务程序中加1,当“t”为2000时由中断服务程序清0。在按键驱动程序中,按下启动键、复位键、暂停/启动键时将“t”清0,目的是从0ms开始计时。

2、控制流程

主程序主要用来检测全局变量“time”当“time”为0时发出“声光报警”。按键驱动、显示驱动和“time”操作都在定时器0中断服务程序中进行。其控制流程如图2所示。

图2 控制流程图

三、软件程序设计

1、数码管驱动程序

到计时器的两个数码管以动态显示的方式显示计时时间“time”(全局变量),LED1显示“time”的十位,LED2显示“time”的个位。

(1)定义段码数据口和片选信号

根据实际电路,在C51中定义段码的数据口为P1,两个片选信号为P3.0和P3.1。定义如下:

#define duan P1

sbit wei1=P3^0;

sbit wei2=P3^1;

(2)定义字形码

LED显示数字0~9以及全灭的字形码表格放在数组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_str[2]={10,10};

led_str[0]直接对应数码管LED1, led_str[1]直接对应数码管LED2。本项目中由专门的子程序将全局变量time计算拆分成led_str[0]和led_str[1]。

void js()

{

led_str[1]=time/10%10;

led_str[0]=time%10;

}

(4)数码管驱动程序

数码管驱动程序“void chushi(char i)”在定时中断服务程序中被调用执行。根据初始化程序的定义,定时中断服务程序每1ms被执行一次。定时中断服务程序中运用全局变量“t”记录进入该服务程序的次数,“t”计满2000由定时中断服务程序清零。

数码管驱动程序的参数“char i”是用来确定当前点亮的是LED1还是LED2,当参数为“0”时点亮LED1,参数为“1”时点亮LED2。如果我们希望偶数次进入定时中断服务程序时点亮LED1,奇数次进入定时中断服务程序时点亮LED2,我们可以用程序调用语句“chushi(t%2);”轻松实现。

进入数码管驱动程序后首先调用子函数js(),计算当前的led_str[0]和led_str[1]。接下来将两个数码管全部熄灭以防止余晖的出现。最后点亮需要点亮的数码管并送出字型码。驱动程序代码如下:

void chushi(char i)

{

js(); //计算显示变量

duan=0xff; //去余晖

wei1=i; wei2=!i; //确定片选

duan=zixing[led_str[i]]; //送字型码

}

2、按键驱动程序

按键驱动程序分为按键识别和按键功能执行两部分。按键功能执行可在按键按下时或按键抬起后执行,文中将其设计在按键抬起后执行。

(1)定义按键I/O地址

根据实际电路,三个按键(启动键、复位键、暂停/启动键)分别接在P3口的P3.2,P3.3和P3.4三个引脚上。为了取键值方便还将P3口定义为“iokey”,程序中可作定义如下:

#define iokey P3

sbit key1=P3^2;

sbit key2=P3^3;

sbit key3=P3^4;

(2)按键驱动流程

按键识别的通用流程为:I/O口写“1”→判断有无键按下→延时去抖→确定键值→等待按键抬起→执行按键功能。按键驱动程序中定义了两个静态变量“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引脚状态,屏蔽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,确保按一次键执行一次按键功能。驱动程序代码如下:

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的操作,目的是每当复位、或启动计时时,进入定时中断的次数都从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; break;

}

}

四、结束语

本文在编程过程中以面向对象的编程思路封装了两个LED数码管和三个独立按键。当其驱动程序在定时中断服务程序中被调用,编程者只要操作其接口:数组“led_str[2]”和函数“actkey(unsigned char k)”,无需直接对硬件进行编程即可改变功能,增强了软件的通用性和可移植性。

高分求篮球计时器设计

你可以尝试把去抖延时加进去,

void keyjiafen1() //加分按键子程序,在主程序中不断调用该子程序

{ //当检测到甲队加分按键按下时,对应加分

if(RXD==0)

{ //调用延时子程序 实现消除按键抖动功能,即,当

delay(1); //检测到按键按下时候,延时,按键仍按下,说明按键

if(RXD==0) //确实按下,非抖动,甲队对应加分

{

while(RXD==0);

x++;

while(!RXD)//等待按键释放

}

}

if(TXD==0) //同理,检测乙队加分按键时候按下,并加分

{

delay(1);

if(TXD==0)

{

while(TXD==0);

y++;

while(!TXD)//等待按键释放

}

}

}

void keyjianfen1() //减分按键检测子程序,其基本算法及功能与加{

{ if(WR==0) //相同

{

delay(1);

if(WR==0)

{

while(WR==0);

x--;

while(!WR)//等待按键释放

}

}

if(RD==0)

{

delay(1);

if(RD==0)

{

while(RD==0);

y--;

while(!RD)//等待按键释放

}

}

}

你可以尝试一下,再仿真试试!

单片机c51篮球计时器程序

MAX PLUS II 主要是提供你的一些器件提取

你只要自己找到连接的电路图就能用了

MAX PLUS II的基础操作还是很简单的

在篮球比赛中,规定了球员的持球时间不能超过30秒,否则就犯规了。本课程设计的“篮球竞赛30秒计时器”,可用于篮球比赛中,用于对球员持球时间30秒限制。一旦球员的持球时间超过了30秒,它自动的报警从而判定此球员的犯规。

本设计主要能完成:显示30秒倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为30秒递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。

整个电路的设计借助于EWB5.12仿真软件和数字逻辑电路相关理论知识,并在EWB5.12下设计和进行仿真,得到了预期的结果。

设计原理

30秒计时器的总体参考方案框图如图2-1所示。它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路(简称控制电路)等五个模块组成。其中计数器和控制电路是系统的主要模块。计数器完成30秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停/连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。

秒脉冲发生器产生的信号是电路的时钟脉冲和定时标准,但本设计对此信号要求并不太高,故电路可采用555集成电路或由TTL与非门组成的多谐振荡器构成。

译码显示电路由74LS48和共阴极七段LED显示器组成。报警电路在实验中可用发光二极管代替。

设计方案

分析设计任务,计数器和控制电路是系统的主要部分。计数器完成30s计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示和灭灯功能。为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关系。在操作直接清零开关时,要求计数器清零,数码显示器灭灯。

当启动开关闭合时,控制电路应封锁时钟信号CP,同时计数器完成置数功能,译码显示电路显示“30”字样;当启动开关断开时,计数器开始计数;当暂停/

at89s52 篮球计时器 编写求助

暑假写的,你参考参考#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineoutbitP3#defineoutsegP1ucharsecond;sbitp20=P2^0;//设置sbitp21=P2^1;//+sbitp22=P2^2;//-sbitchange=P2^3;//显示选择sbitspeak=P2^4;//蜂鸣器ucharclock[7]={6,6,12,58,12,59,0};//依次为月日时分闹钟时闹钟分比较量ucharcodeTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharm,n,q,i,h;j=6;k=1;a=0xff;b=0xff;c=0xff;d=0xff;voiddelay(){uinte;for(e=0;e1)clock[j]=clock[j]-1;elseclock[j]=12;break;case1:if(clock[j]>1)clock[j]=clock[j]-1;elseclock[j]=31;break;case2:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case3:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;case4:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case5:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;default:break;}}if(change==1){while(1){P2=0x0f;if((P2&0x0f)==0x0f)break;}}}main(){EA=1;ET0=1;TMOD=0x01;TH0=-20000/256;TL0=-20000%256;TR0=1;while(1){display();keyscan();if(j==6){if(change==1){m=clock[3]%10;//选择显示时间n=clock[3]/10;q=clock[2]%10;i=clock[2]/10;outbit=0x08;//显示秒的点闪动outseg=second;delay();}else{m=clock[1]%10;//选择显示日期n=clock[1]/10;q=clock[0]%10;i=clock[0]/10;}}elseif(j==0){q=clock[j]%10;i=clock[j]/10;}elseif(j==1){m=clock[j]%10;n=clock[j]/10;}elseif(j==2){q=clock[j]%10;i=clock[j]/10;}elseif(j==3){m=clock[j]%10;n=clock[j]/10;}elseif(j==4){q=clock[j]%10;i=clock[j]/10;}elseif(j==5){m=clock[j]%10;n=clock[j]/10;}if(clock[2]==clock[4]&&clock[3]==clock[5])//定点报时{if(p20==0||p21==0||p22==0||change==0)//有键按下则停止报警k=0;speak=1&k;}elsek=1;}}voidtimer0()interrupt1using1{uchare,f,g,h;TH0=-20000/256;TL0=-20000%256;e=e+1;if(e==50)//1sec{e=0;g=g+1;second=second^0x80;if(g==60)//1min{g=0;if(clock[3]==59)//每过60s改变下时间{if(clock[2]==23){clock[2]=0;clock[3]=0;}else{clock[2]=clock[2]+1;clock[3]=0;}}elseclock[3]=clock[3]+1;if(clock[3]==0&&clock[2]==0)//时间都为0时改变日期{switch(clock[0]){case1:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=2;}break;case2:if(clock[1]<29)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=3;}break;case3:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=4;}break;case4:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=5;}break;case5:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=6;}break;case6:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=7;}break;case7:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=8;}break;case8:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=9;}break;case9:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=10;}break;case10:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=11;}break;case11:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=12;}break;case12:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=1;}break;default:break;}}}if(j!=6){f=f+1;if(f!=10)//判断10s是否到是否有键按下{switch(j)//所设置的那位闪动{case0:a=~a;b=~b;c=0;d=0;break;case1:c=~c;d=~d;a=0;b=0;break;case2:a=~a;b=~b;c=0;d=0;break;case3:c=~c;d=~d;a=0;b=0;break;case4:a=~a;b=~b;c=0;d=0;break;case5:c=~c;d=~d;a=0;b=0;break;default:break;}if(clock[6]!=clock[j]||h!=j){f=0;h=j;clock[6]=clock[j];}}else{j=6;f=0;a=0xff;b=0xff;c=0xff;d=0xff;}}else{a=0xff;b=0xff;c=0xff;d=0xff;}}}

篮球计分器程序(单片机汇编语言编写,不要C语言)

摘要

本文主要介绍:篮球比赛计时器。本文首先介绍单片机的相关知识,对单片机进行相应的研究,并将其与74HC595串行显示电路配合使用。本电路主要核心是AT89S51,利用软件和硬件的结合实现开机自动置节计数器为第一节,节计时器为12分00秒,24秒违例为24秒。用数字显示篮球比赛当时节数,每节时间及24秒的倒计时,采用单片机串行显示。最后,本文会详细叙述此电路的安装与调试,并对调试过程中出现的问题做简要说明。

关键词 AT89S52单片机;74HC595;XXX

Abstract

Abstract this article mainly introduced: Basketball game timer. This article first introduced that monolithic integrated circuit's related knowledge, conducts the corresponding research to the monolithic integrated circuit, and its and 74HC595 serial display circuit coordination use. This electric circuit main core is AT89S51, realizes using the software and hardware's union starting sets at the festival counter for first, the festival timer is 12 minute 00 second automatically, 24 second case of breaching the rules is 24 seconds. With the digital demonstration basketball game at that time the pitch number, each time and 24 second countdown, used the monolithic integrated circuit serial demonstration. Finally, this article will narrate this electric circuit's installment and the debugging in detail, and to will debug the question which in the process will appear to give the briefing。

key words 89S52 monolithic integrated circuit; 74HC595; XXX

课题背景

在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。在我们身边,由单片机作为主控制器的全自动洗衣机、高档电风扇、电子厨具、变频空调、遥控彩电、录像机、VCD/DVD机、组合音响、电子琴等。单片机已在广阔的计算机应用领域中表现得淋漓尽致,出尽了风头。从家用消费类电器到复印机、打印机、扫描仪、传真机等办公自动化产品;从智能仪表、工业测控装置到CT、MRI、γ刀等医疗设备;从数码相机、摄录一体机到航天技术、导航设备、现代军事装备;从形形的电子货币如电话卡、水电气卡到身份识别卡、门禁控制卡、档案管理卡及相关读/写卡机等等都有单片机在里面扮演重要角色。因此,单片机已成为电子类工作者必须掌握的专业技术之一。单片机就是一个微型中央处理器,通过编程即能完成很多智能化的工作 ,因此它的出现给电子技术智能化和微型化起到了很大的推动作用。随着人们生活水平的提高,社会经济的发展,人们开始考虑精神生活的享受,并开始注重身体素质的提高。开始举办一些小型的篮球比赛。这就需要裁判有一个公正的判罚,以保证比赛的顺利进行。这就需要有一个专门计时的工具。所以我就设计了一个篮球比赛计时器。设计简单,耗费少,容易制作。可用于街头篮球比赛和校园篮球比赛。花很少的钱就可以得到一个实用的篮球比赛计时器。

本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。此次设计更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。

设计简介

篮球比赛中除了有总时间倒计时外,为了加快比赛的节奏,新的规则还要求进攻方在24秒内有一次投篮动作,否则视为违例。根据要求,以AT89S52单片机为核心,设计篮球比赛计时控制器。篮球比赛上下半场四节制,每节12分钟,要求能随时暂停,启动后继续计时,一节比赛结束后可清零。按篮球比赛规则,进攻方有24秒为例计时。"分""秒"显示用LED数码管。用开关控制计时器的启动/暂停。该篮球比赛计时器的设计,可对比赛总时间和各方每次控球时间计时。该计时器采用按键操作、LED显示,非常实用。此计时器在程序参数稍加修改后也可作为其他球类比赛的计时器。

主控芯片为AT89S52,采用12MHz晶振,P0.0-P0.7作键盘输入。A1为12分钟暂停键;A2为启动12分钟计时键,,24秒计时开始;A3为24S复位开启键(投篮或交换控球时按下此键); A4为24秒计时停止键(没有违例);A5为总计时和24秒计时同时启动键;A6为总计时和24S计时同时停止键。

电路采用静态显示,一起点亮各位数码管,同时显示不同的字符。点亮各位数码管锁存输出。显示器的第一位显示计时节数,3至6位显示计时的分,最后2位显示24秒。用T0定时器中断进行24秒处理,12分钟计时用T1定时器中断计时。同时电路通过键盘扫描,根据键值转相应键处理。

系统电路的设计方案

系统设计方案的提出

本设计是基于89S52单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我拟订了下面两种方案:

第一种方案:

键盘控制采用矩阵扫描键盘,可以用普通按键构成4×4矩阵键盘,直接接到89S52单片机的P0口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。显示部分采用动态显示,采用移位寄存器74LS164和译码器74LS138通过显示驱动程序驱动七段数码管显示。此方案成本低,所用到的两个外围芯片价格都很低廉,而且单片机的I/O口占用较少,可以节约单片机接口资源。

第二种方案:

键盘控制采用独立是式键盘,每个按键的"接零端"均接地,每个按键的"测试端"各接一条输入线,通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单。这种方法比较适合按键较少或操作速度较高的场合。显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。

方案的确定

本设计要求按键较多,且本次设计只是对所学知识的一次实践,设计要求简单,容易实现,成本低。比较以上两中设计方案,第二种成本低,占用单片机资源少,且容易实现,这样的设计比较适合本次设计,故选用第二种设计方案。

电路设计原理及芯片介绍

键盘控制及显示电路设计的原理及要求

电路的设计原理与功能要求

本设计采用AT89S52单片机芯片作为中央处理芯片,采用AT89S52的P0口构成独立8键键盘,采用AT89S52串行口静态显示,选用74HC595作为LED驱动芯片。

本电路设计有以下功能及要求:

(1)篮球比赛计时器全场时间为48分钟,共四节,每节12分钟和24秒违例。要求开机自动置节计数器为第一节,节计时器为12分00秒,24秒违例为24秒。

(2)用数字显示篮球比赛当时节数,每节时间及24秒的倒计时,采用单片机串行显示。

(3)能随时用按纽开关控制比赛的启动/暂停,启动后开始比赛,暂停期间不计时,重新启动后继续计时。

电路的总设计框图

根据设计任务与要求,可初步将系统分为五大功能模块:主电路、开关启/停控制电路、显示电路、音响电路和+5V稳压电源。进一步细说,主电路选用89S52作为中央处理器;开关启/停控制电路由八个按键组成;显示电路由八位七段数码管和74HC595组成;音响电路用ULN2003驱动蜂鸣器;+5V稳压电路采用7805稳压块把电源电压稳定在+5V。

很好写的

显示加判断

org 00h

main:

mov p1,#00h

mov r1,#00h

a1:call dis

jb p3.2, j1

jb p3.3,j2

jb p3.4,j3

jmp a1

dis:

mov a,r1

mov b,#10

div ab

mov p1,a

setb p2.0

call yanshi

mov p1,b

clr p2.0

call yanshi

ret

ji:call yanshi

jnb p3.2,a1

inc r1

ret

j2:call yanshi

jnb p3.3,a1

inc r1

inc r1

ret

j3:call yanshi

jnb p3.4,a1

subb r1 ,#01h

ret

yanshi :

延时自己写好了

ret

end