单片机 篮球

作者&投稿:璩富 (若有异议请与网页底部的电邮联系)
如何用c51单片机编写一个篮球计分,计时器~

#include"reg52.h"#define u8 unsigned char#define u16 unsigned intsbit UP_1 = P1^1; //第一队加分键sbit DOWN_1 = P1^2; //第一队减分键sbit UP_2 = P1^3; //第二队加分键sbit DOWN_2 = P1^4; //第二队减分键sbit Change = P1^5; //交换键sbit Begin = P1^6; //开始键sbit Pause = P1^7; //暂停键sbit Beef = P2^4; //蜂鸣器sbit duan = P2^3; //段选sbit wei = P2^2; //位选u8 Grate_1=0; //第一队计分u8 Grate_2=0; //第二队计分u8 Grate_change=0; //换场标志u8 Time = 99; //总时间u16 Flag=0; //计时次数u8 leddata[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" }; void InitTimer1(void){ TMOD = 0x10;//定时器1设为模式1 TH1 = 0xFC; TL1 = 0x18; //1ms EA = 1; //开总中断 ET1 = 1; //开定时器1中断// TR1 = 1; //}void delay(u8 d) //延时{ u8 a,b,c; for(c=d;c>0;c--) for(b=17;b>0;b--) for(a=16;a>0;a--);}void beef(u8 d) //发声{ u8 a,b,c; for(c=d;c>0;c--) for(b=17;b>0;b--) for(a=16;a>0;a--) { Beef=~Beef; }}void display(u8 grate_1,u8 grate_2,u8 time) //显示{ u8 w1,w2,w3,w4,w7,w8; w1=grate_1/10;//计算第一队分数十位 w2=grate_1%10;//计算第一队分数个位 w3=grate_2/10;//计算第二队分数十位 w4=grate_2%10;//计算第二队分数个位 w7=time/10;//计算时间十位 w8=time%10;//计算时间个位 P0=0xff;//消隐,该段显示第一队分数十位 wei=1; P0=0xfe;//送位码 wei=0; P0=0xff; duan=1; P0=leddata[w1];//送段码 duan=0; delay(5); P0=0xff;//显示第一队分数个位 wei=1; P0=0xfd; wei=0; P0=0xff; duan=1; P0=leddata[w2]; duan=0; delay(5); P0=0xff;//显示第二队分数十位 wei=1; P0=0xfb; wei=0; P0=0xff; duan=1; P0=leddata[w3]; duan=0; delay(5); P0=0xff; //显示第二队分数个位 wei=1; P0=0xf7; wei=0; P0=0xff; duan=1; P0=leddata[w4]; duan=0; delay(5); P0=0xff; //显示时间十位 wei=1; P0=0xbf; wei=0; P0=0xff; duan=1; P0=leddata[w7]; duan=0; delay(5); P0=0xff; //显示时间个位 wei=1; P0=0x7f; wei=0; P0=0xff; duan=1; P0=leddata[w8]; duan=0; delay(5);}void main(){ InitTimer1(); //初始化定时器1 UP_1 = 1; //以下初始化IO口 DOWN_1 = 1; UP_2 = 1; DOWN_2 = 1; Change = 1; Begin = 1; while(1) { if(UP_1==0) //如果第一队加分键按下 { ET1 = 0; //关闭定时器1中断 delay(5); //稍加延时 while(UP_1==0);//等待按键抬起 Grate_1++; //第一队分数加1 ET1 = 1; //开启定时器1中断 } if(DOWN_1==0) //如果第一队减分键按下 { ET1 = 0; delay(5); while(DOWN_1==0); Grate_1--; //第一队分数减1 ET1 = 1; } if(UP_2==0) //如果第二队加分键按下 { ET1 = 0; delay(5); while(UP_2==0); Grate_2++; //第二队分数加1 ET1 = 1; } if(DOWN_2==0) //如果第二队减分键按下 { ET1 = 0; delay(5); while(DOWN_2==0); Grate_2--; //第二队分数减1 ET1 = 1; } if(Change==0) //如果换场键按下 { ET1 = 0; delay(5); while(Change==0); Grate_change=Grate_1; //一下三行语句完成分数交换显示 Grate_1=Grate_2; Grate_2=Grate_change; ET1 = 1; } if(Begin==0) //如果开始键按下 { delay(5); while(Begin==0); TR1 = 1; //开启定时器1 }if(Pause==0){delay(5);while(Pause==0);TR1=0;} if(Time=1000)//1000次也就是1秒到 { Flag=0; Time--; //秒变量减1 }}

篮球比赛24秒倒计时器的设计
设计制作一个篮球竞赛计时系统,具有进攻方24秒倒计时功能,具体设计要求如下:
1、具有显示 24s 倒计时功能:用两个共阴数码管显示,其计时间隔为1s。 2、设置启暂停/继续键,控制两个计时器的计数,暂停/继续计数功能。 3、设置复位键:按复位键可随时返回初始状态,即进攻方计时器返回到24s。 4、计时器递减计数到“00”时,计时器跳回“24”停止工作,并给出声音和发光提示,即蜂鸣器发出声响和发光二极管发光 前言
电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
在许多领域中计时器均得到普遍应用,诸如在体育比赛,定时报警器、游戏中的倒时器,交通信号灯、红绿灯、行人灯、交通纤毫控制机,还可以用来做为各种药丸、药片,胶囊在指定时间提醒用药等等,由此可见计时器在现代社会的应用是相当普遍的。
在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就违例了。本课程设计“智能篮球比赛倒计时器的设计”,可用于篮球比赛中,用于对球员持球时间24秒限制。一旦球员的持球时间超过了24秒,它自动的报警从而判定此球员的违例。
本设计主要能完成:显示24秒倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为24秒递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。
1.1基本原理
24秒计时器的总体参考方案框图如图1所示。它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路(简称控制电路)等五个模块组成。其中计数器和控制电路是系统的主要模块。计数器完成24秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停/连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。

有没有硬件电路啊,没有 给你软件也没用啊

以下是我自己做过的一个三位数显板,MCU是STC12C2052,只有加一和清零功能,软件结构都和你的差不多,你知道怎么改,我也就不改了,你参考下:

#include"STC12_HEAD.H"

LED BIT P1.0

DIS_CLK BIT P3.1
DIS_DAT BIT P3.0
DIS_EA BIT P1.2

INT_0 BIT P3.2

KEY_ADD BIT P3.4
KEY_CLR BIT P3.5
;------------------------------

DIS_DATA1 DATA 30H
DIS_DATA2 DATA 31H
DIS_DATA3 DATA 32H

KEY2_DELAY1 DATA 33H
KEY2_DELAY2 DATA 34H
KEY2_DELAY3 DATA 35H

;***********************************************************************************************
ORG 0000H
SJMP START
ORG 0003H
LCALL INT0_INT
RETI
ORG 0013H
LCALL INT1_INT
RETI

ORG 0023H
;LCALL UART_INT
RETI

;-----------------------------------------------

START:
MOV SP,#50H
LCALL INITIAL ; 初始化
;

LCALL LOAD_DATA

;MOV DIS_DATA1,#0
;MOV DIS_DATA2,#0
;MOV DIS_DATA3,#0
LCALL DISPLAY

;**************************************************
ORG 0050H
MAIN:

;--------
JB KEY_ADD,NO_KEY_ADD
MOV R5,#10 ;2MS
KEY_ADD_CHECK:
JB KEY_ADD,NO_KEY_ADD
MOV R6,#255 ;200US
DJNZ R6,$
DJNZ R5,KEY_ADD_CHECK
;
LCALL ADD_ONE_BIT ;加1-----------------------
;
WATE_KEY_END1:
LCALL WARCH_DOG ;喂看门狗
JNB KEY_ADD,WATE_KEY_END1
;
NO_KEY_ADD:
;

;----------

JB KEY_CLR,NO_KEY_CLR

MOV KEY2_DELAY1,#100

KEY_CLR_CHECK:
LCALL DELAY_10MS
JB KEY_CLR,NO_KEY_CLR
DJNZ KEY2_DELAY1,KEY_CLR_CHECK
;
LCALL CLEAR_DATA ;;;clr-------------------------------
;
WATE_KEY_END2:
LCALL WARCH_DOG ;喂看门狗
JNB KEY_CLR,WATE_KEY_END2
;
NO_KEY_CLR:

;--------------

LCALL DISPLAY

LCALL DELAY
CPL LED
LCALL WARCH_DOG ;喂看门狗
SJMP MAIN

;****************************************************

WARCH_DOG:
;MOV WDT_CONTR,#00110100B ;喂狗 682ms
MOV WDT_CONTR,#00110101B ;喂狗 1.365s
;MOV WDT_CONTR,#00110110B ;喂狗 2.6s
RET

;-------------

;-------------
DELAY: ;高精度延时0.5s (无中断)
DEY1 DATA 1FH
DEY2 DATA 1EH
DEY3 DATA 1DH
MOV DEY1,#16 ;0.05S ;167
DL1:
MOV DEY2,#20 ;3mS
DL2:
MOV DEY3,#184 ;150uS 6M(5T)
DJNZ DEY3,$
DJNZ DEY2,DL2
DJNZ DEY1,DL1
RET
;-------------

;-------------

;-------------
DELAY_10MS: ;高精度延时10Ms (无中断)
DEY4 DATA 1CH
DEY5 DATA 1BH
DEY6 DATA 1AH
MOV DEY4,#6 ;10MS
DL4:
MOV DEY5,#11 ;1.6mS
DL5:
MOV DEY6,#184 ;150uS 6M(5T)
DJNZ DEY6,$
DJNZ DEY5,DL5
DJNZ DEY4,DL4
RET
;-------------

;*********************************************************

ORG 0100H
#include"初始化.asm"
LJMP START
;
ORG 0200H
#include"中断.ASM"
LJMP START
;
ORG 0300H
#include"显示.asm"
LJMP START
;
ORG 0400H
#include"EPROM读取.asm"
LJMP START
;
ORG 0600H
#include"加减计数.asm"
LJMP START

END

; STC12系列单片机特殊寄存器定义
;#include"D:\keil c\常用模块\STC12_HEAD.H"

;****数据寄存器定义***** 软复位数据不变
;---------------------------------------
;00--07H ;R0--R7
;08--17H ;堆栈(16byte)
;18--1FH ;软件延时
;20--2FH ;位寻址(00--7FH)(16byte--128bit)
;30--7FH ;基本数据寄存器 用直接或间接寻址
;80--FFH ;扩展数据寄存器 用片外间接寻址
;---------------------------------------

;***系统设置***
R8 EQU 08H
R9 EQU 09H
R10 EQU 0AH
R11 EQU 0BH
R12 EQU 0CH
R13 EQU 0DH
R14 EQU 0EH
R15 EQU 0FH
;ACC EQU 0E0H
;B EQU 0F0H
;PSW EQU 0D0H ; CY--AC--F0--RS1--RS0--OV--F1--P
F1 BIT PSW.1
;SP EQU 81H
;DPL EQU 82H
;DPH EQU 83H
;PCON EQU 87H ;7-SMOD(波特率倍增)6-SMOD0()5-LVDF()4-POF()3-GF1(用户标志)2-GF0(用户标志)1-PD(掉电方式)0-IDL(空闲方式)
CLK_DIV EQU 0C7H;时钟分频 空闲模式时有效 7-()6-()5-()4-()3-()2-CLKS2()、1-CLKS1()、0-CLKS0() (=00000111 时 系统时钟/12)
;P0 EQU 80H
P0M0 EQU 93H ;P0口模式 0- 0- 1- 1-
P0M1 EQU 94H ;P0口模式 0-准双向口 1-推换输出 0-高阻输入 1-开漏
;P1 EQU 90H
P1M0 EQU 91H ;P1口模式 准双向口时(灌电流20mA,拉电流230uA)
P1M1 EQU 92H ;P1口模式 推换输出时(有强上拉,20mA输出,要加限流电阻)
;P2 EQU A0H
P2M0 EQU 95H ;P2口模式 高阻输入时(仅为输入)
P2M1 EQU 96H ;P2口模式 开漏时 (内部上拉电阻断开)
;P3 EQU B0H
P3M0 EQU 0B1H ;P3口模式 PxMx (7:0)
P3M1 EQU 0B2H ;P3口模式
AUXR EQU 8EH ;系统扩展设置 7-T0x12(TO 12倍速)6-T1x12(T1 12倍速)5-UART_M0x6(串口模式0时6倍速)4-EADCI(AD中断)3-ESPI(SPI中断)2-ELVDI(低电压中断)1-()0-()
;******************
;
;****定时器设置****
;TCON EQU 88H ; TF1(T1中断位)--TR1(开T1)--TF0(T0中断位)--TR0(开T0)--IE1(INT1中断位)--IT1(1下边沿触发/0电平)--IE0(INT0中断位)--IT0(1下边沿触发/0电平)
;TMOD EQU 89H ; GATE1--C/T1--1M1--1M0--GATE0--C/T0--0M1--0M0
;TL0 EQU 8AH ;
;TH0 EQU 8CH ;
;TL1 EQU 8BH ;
;TH1 EQU 8DH ;
;AUXR EQU 8EH ; 7-T0x12(TO 12倍速) 6-T1x12(T1 12倍速)
;******************
;
;****串行口设置****
;SCON EQU 98H ; 7--SM0(串口方式)6--SM1(串口方式)5--SM2(多机控制)4--REN(接收允许)3--TB8(发9位)2--RB8(收9位)1--TI(发送中断)0--RI(接收中断)
;SBUF EQU 99H ;
SADEN EQU 0B9H ; ?
ASDDR EQU 0A9H ; ?
;PCON EQU 87H ; 7-SMOD(波特率倍增) 6-SMOD0()
;AUXR EQU 8EH ; 5-UART_M0x6(串口模式0时6倍速)
;******************
;
;****中断设置******
;IE EQU 0A8H ; EA--EPCA_LVD--EADC_SPI--ES--ET1--EX1--ET0--EX0 中断开关
;IP EQU 0E8H ; *--PPCA_LVD--PADC_SPI--PS--PT1--PX1--PT0--PX0 一级优先
IPH EQU 0B7H ; *--PPCA_LVDH--PADC_SPIH--PSH--PT1H--PX1H--PT0H--PX0H 二级优先
;TCON EQU 88H ; TF1--*--TF0--*--IE1--IT1
;SCON EQU 98H ;
;PCON EQU 87H ;
;CCON EQU 0D8H ; 7-CF(PCA溢出中断) 3-CCF3(模块3中断) 2-CCF2(模块2中断) 1-CCF1(模块1中断) 0-CCF0(模块0中断)
;CMOD EQU 0D9H ; 0-ECF(PCA溢出中断开关)
;CCAPM0 EQU 0DAH ;
;CCAPM1 EQU 0DBH ; 0-ECCF1(模块1中断开关)
;CCAPM2 EQU 0DCH ;
;CCAPM3 EQU 0DDH ;
;AUXR EQU 8EH ; 4-EADCI(AD中断开关) 3-ESPI(SPI中断开关) 2-ELVDI(低电压中断开关)
;******************
;
;****PCA设置*******
EPCA_LVD BIT IE.6 ;PCA/LVD共用中断开关
CCON EQU 0D8H ; 7-CF(PCA溢出中断)6-CR(PCA开关)5-()4-()3-CCF3(模块3中断)2-CCF2(模块2中断)1-CCF1(模块1中断)0-CCF0(模块0中断)
CF BIT CCON.7 ;PCA溢出中断
CR BIT CCON.6 ;PCA开关
CCF3 BIT CCON.3 ;模块3中断
CCF2 BIT CCON.2 ;模块2中断
CCF1 BIT CCON.1 ;模块1中断
CCF0 BIT CCON.0 ;模块0中断
;
CMOD EQU 0D9H ; 7-CIDL(PCA空闲停止)-6-()5-()4-()3-()-2-CPS1(PCA时钟源)-1-CPS0(PCA时钟源)-0-ECF(PCA溢出中断开关)
CCAPM0 EQU 0DAH ; 7-()-6-ECOM0(比较开关)-5-CAPP0(上沿捕获)-4-CAPN0(下沿捕获)-3-MAT0(比较)-2-TOG0(脉冲输出)-1-PWM0(PWM输出)-0-ECCF0(模块中断开关)
CCAPM1 EQU 0DBH ; 模块的 0010000x--16位上沿捕获 0100100x--16位软件定时器
CCAPM2 EQU 0DCH ; 工作 0001000x--16位下沿捕获 0100110x--16位脉冲输出
CCAPM3 EQU 0DDH ; 模式 0011000x--16位上下沿捕获 01000010--8位PWM输出
CL EQU 0E9H ;PCA定时器低8位
CH EQU 0F9H ;PCA定时器高8位
CCAP0L EQU 0EAH
CCAP0H EQU 0FAH
CCAP1L EQU 0EBH ;PCA的捕获/比较寄存器低8位
CCAP1H EQU 0FBH ;PCA的捕获/比较寄存器高8位
CCAP2L EQU 0ECH
CCAP2H EQU 0FCH
CCAP3L EQU 0EDH
CCAP3H EQU 0FDH
PCA_PWM0 EQU 0F2H ;7-()6-()5-()4-()3-()2-()1-EPC0H(与CCAP0H组成9位数)-0-EPC0L(与CCAP0L组成9位数)
PCA_PWM1 EQU 0F3H ;PWM寄存器 与CCAP1L/H组成9位数
PCA_PWM2 EQU 0F4H
PCA_PWM3 EQU 0F5H

;******************
;
;***SPI总线设置****
EADC_SPI BIT IE.5 ;SPI\ADC共用中断开关
SPCTL EQU 85H ; 7-SSIG(SS脚功能)-6-SPEN(SPI开关)-5-DORD(数据方向)-4-MSTR(主从模式)-3-CPOL(时钟方向)-2-CPHA(时钟相位)-1-SPR1(时钟频率)-0-SPR0(时钟频率)
SPSTAT EQU 84H ; 7-SPIF(SPI传输完成)-6-WCOL(写冲突标志)
SPDAT EQU 86H ; SPI数据缓存
;AUXR EQU 8EH ; 3-ESPI(SPI中断开关)
;******************
;
;****AD转换设置****
;EADC_SPI BIT IE.5 ; SPI\ADC共用中断开关
ADC_CONTR EQU 0C5H ; 7-ADC_POWER(ADC电源开关)-6-SPEED1(转换速度)-5-SPEED0(转换速度)-4-ADC_FLAG(转换结束)-3-ACD_START(转换开始)-2-CHS2(通道)-1-CHS1(通道)-0-CHS0(通道)
ADC_DATA EQU 0C6H ; 转换结果数据高8位(00000000)
ADC_LOW2 EQU 0BEH ; 转换结果数据低2位(xxxxxx00)
;AUXR EQU 8EH ; 4-EADCI(AD中断开关)
;******************
;
;***ISP/IAP设置****
ISP_DATA EQU 0E2H ; ISP数据寄存器
ISP_ADDRH EQU 0E3H ; ISP地址寄存器高8位
ISP_ADDRL EQU 0E4H ; ISP地址寄存器低8位
ISP_CMD EQU 0E5H ; ISP操作 (00H-无 01H-读 02H-写 03H-扇区擦除)
ISP_TRIG EQU 0E6H ; ISP触发 (先写46H,再写B9H)
ISP_CONTR EQU 0E7H ; 7-ISPEN(ISP开关)-6-SWBS(启动区选择)-5-SWRST(软件复位)-4-CMD_FALL(ISP失败)-3-1(1)-2-WT2(等待时间)-1-WT1(等待时间)-0-WT0(等待时间)
;******************
;
;****看门狗设置****
WDT_CONTR EQU 0E1H ; 7-WDT_FLAG(WDT溢出)-6-()-5-EN_WDT(WDT开关)-4-CLR_WDT(WDT清0)-3-IDLE_WDT(空闲计数)-2-PS2(分频)-1-PS1(分频)-0-PS0(分频)
;******************

INITIAL: ; 初始化

;MOV A,WDT_CONTR ;看门狗
;RRC A
;JC WDT_RESET ; ;看门狗复位

CLR DIS_EA
CLR DIS_DAT
CLR DIS_CLK
CLR LED

;
;*****SPI初始化*****
; SPCTL EQU 85H ; 7-SSIG(SS脚功能)-6-SPEN(SPI开关)-5-DORD(数据方向)-4-MSTR(主从模式)-3-CPOL(时钟方向)-2-CPHA(时钟相位)-1-SPR1(时钟频率)-0-SPR0(时钟频率)
;MOV SPCTL,#11110001B ;SS脚无效,SPI允许,低位先发,主机,CLK为低,上升沿采样,18000/16=1125KHz
;MOV SPCTL,#11110011B ;SS脚无效,SPI允许,低位先发,主机,CLK为低,上升沿采样,280/4KHz
;MOV SPSTAT,#11000000B ;清中断
;****************
;
;*****串口初始化********
;MOV PCON,#80H ;SMOD=1 X2
;MOV SCON,#50H ;串口方式1(10位)
;MOV SCON,#0D0H ;串口方式3(11位)
MOV SCON,#00H ;串口方式0(8位串行移位)
MOV TMOD,#20H ;T1为8位重装
MOV TH1,#0FDH ;9600PTS 11.0592M (12T)
MOV TL1,#0FDH
;MOV TH1,#0FAH ;4800PTS 11.0592M (12T)
;MOV TL1,#0FAH
;MOV TH0,#0FFH
;MOV TL0,#0FFH
;**********************

;********************
;
;****输出清零*******

;WDT_RESET: ; ;看门狗复位

;MOV WDT_CONTR,#00110100B ;喂狗 682ms
MOV WDT_CONTR,#00110101B ;喂狗 1.365s
;MOV WDT_CONTR,#00110110B ;喂狗 2.6s

;*****硬件地址设定*******

;MOV IP,#01H ; *--PPCA_LVD--PADC_SPI--PS--PT1--PX1--PT0--PX0 一级优先

CLR TI
CLR RI
;SETB ES
;SETB TR1
;SETB TR0
;SETB ET0
SETB IT0
SETB EX0
SETB IT1
SETB EX1
SETB EA
;;------------------------------

RET

INT0_INT:
LCALL SAVE_DATA
RET
;************************************************

INT1_INT:
;
LCALL SAVE_DATA
;
RET

DISPLAY:

MOV DPTR,#LEDTAB
MOV A,DIS_DATA1
MOVC A,@A+DPTR
;MOV SBUF,A
LCALL DIS_SEND
;JNB TI,$
;CLR TI
;
MOV A,DIS_DATA2
MOVC A,@A+DPTR
;CPL A
;MOV SBUF,A
LCALL DIS_SEND
;JNB TI,$
;CLR TI
;
MOV A,DIS_DATA3
MOVC A,@A+DPTR
;MOV SBUF,A
LCALL DIS_SEND
;JNB TI,$
;CLR TI
;
SETB DIS_EA
MOV R4,#255
DJNZ R4,$
CLR DIS_EA

RET

DIS_SEND:
MOV R3,#8
DIS_RR:
CLR DIS_CLK

MOV R4,#255
DJNZ R4,$

RRC A
MOV DIS_DAT,C

MOV R4,#255
DJNZ R4,$

SETB DIS_CLK

MOV R4,#255
DJNZ R4,$

DJNZ R3,DIS_RR

RET

;低位先发送时:
LEDTAB: ;共阳(标准)
DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71H
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
DB 02H,9EH,24H,0CH,98H,48H,40H,1EH,00H,08H,10H,0C0H,62H,84H,60H,70H
; 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. A. B. C. D. E. F.

ADD_ONE_BIT:
;-----------
INC DIS_DATA1
MOV A,DIS_DATA1
CJNE A,#10,DATA_ADD_END
MOV DIS_DATA1,#0
;
INC DIS_DATA2
MOV A,DIS_DATA2
CJNE A,#10,DATA_ADD_END
MOV DIS_DATA2,#0
;
INC DIS_DATA3
MOV A,DIS_DATA3
CJNE A,#10,DATA_ADD_END
MOV DIS_DATA3,#0
LCALL SAVE_DATA
;

DATA_ADD_END:
;LCALL SAVE_DATA
LCALL DISPLAY
;

RET
;************************************************

CLEAR_DATA:
;-----------
MOV DIS_DATA1,#0
MOV DIS_DATA2,#0
MOV DIS_DATA3,#0

MOV DPTR,#2800H
LCALL EEPROM_ERASE ;擦除内部EEPROM扇区
MOV DPTR,#2A00H
LCALL EEPROM_ERASE ;擦除内部EEPROM扇区

MOV DPTR,#2800H
MOV A,#0A5H
LCALL EEPROM_WRITE
;LCALL SAVE_DATA

LCALL DISPLAY
;

RET

哇塞 好专业 不懂

20分就够这些啊····震荡电路 和服务自己搞定  程序有点贵啊····主要是写数码管那里 有点麻烦··在实际电路中 记得给数码管加驱动!!!!!




靖西县18720674476: 基于单片机的篮球比赛计分器 -
诏底苏新: 这个程序 起始也就是 3个按键控制 +1 +2+ 3 1个按键控制 红方蓝方的电路 很简单 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int // 段码 uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x...

靖西县18720674476: 求:单片机篮球计分器程序,简单点的,不要中断系统. -
诏底苏新: #include <AT89LV52.h>void main(void) {int dd[6],dd1=0,dd2=0,i=0,j;int xianshi[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//数码管数据0~9while(1){if(P2_0) dd1=dd1+1; //这是1分,P2接6个按键else if(P2_1) dd1 = dd1 ...

靖西县18720674476: 如何用c51单片机编写一个篮球计分,计时器 -
诏底苏新: #include"reg52.h"#define u8 unsigned char #define u16 unsigned int sbit UP_1 = P1^1; //第一队加分键 sbit DOWN_1 = P1^2; //第一队减分键 sbit UP_2 = P1^3; //第二队加分键 sbit DOWN_2 = P1^4; //第二队减分键 sbit Change = P1^5...

靖西县18720674476: 用单片机实现简易的篮球比赛记分牌设计 -
诏底苏新: 做是没问题,但是要求写的太笼统.发送端是用按键还是无线发射..

靖西县18720674476: 基于单片机的篮球计分器怎么实现计分功能的
诏底苏新: 需要有3或者2的数值变化,根据手势进行判断

靖西县18720674476: 单片机课程—篮球赛计分牌设计
诏底苏新: 我给你数码管的显示程序! #include"Smg.h"#define DataSmg P1 //数码管数据端口sbit Duan=P2^7; //数码管段选端口sbit Wei=P2^6; //数码管位选端口uchar code Integer[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9不带...

靖西县18720674476: 51单片机实现篮球记分牌 -
诏底苏新: 我认为输入可以用按钮键盘,用于加分,比如加1分按1键,3分按3键,减分另设键盘,这个你可以自己设计,应该用到的键格不多,键盘可以采用中断扫描的方法查询键值,如果条件允许就直接用按键输入就行,这样编程简单.至于数码管那只能用简单的符号表示队名比如u表示正队,n表示反队.应该用到两个三位的数码管就行.显示可采用动态显示,如果有六个寄存器,完全可以采用静态显示,这样编程很简单.我认为自己焊板子更好,想怎么搞就怎么搞,只是注意一下ISP烧录程序的电路.不会很麻烦,多琢磨一下吧!

靖西县18720674476: 单片机篮球计时计分器程序 -
诏底苏新: 3个按钮分别为1 2 3 分得分按钮 数码管 74HC164驱动即可利用单片机的按钮查询方式即可 数码管动态扫描

靖西县18720674476: 基于凌阳单片机篮球比赛计时记分系统设计主要是倒计时和记分显示模块
诏底苏新: 主要是倒计时和记分显示模块的程序编写 时间的暂停与开始,分数的累加,通过接入键盘电路实现.系统共涉及4个按键,分别定义为: K1键功能:暂停键,即当比赛需要暂停时,可以使24 s和总时间随时暂停; K2键功能:开始键,即暂停结束后,比赛需要重新开始; K3键功能:1队加分键,即分数加1键; K4.键功能:2队加分键,即分数加1键. (3)按键的接人方式 K1键:通过P3口的INTO引脚接入,中断工作方式; K2键:通过P3口的INTl引脚接人,中断工作方式; K3键:通过P3口的P3.0引脚接入,查询工作方式; K4键:通过P3口的P3.1引脚接入,查询工作方式.

靖西县18720674476: 单片机控制篮球24S计时器 -
诏底苏新: 用单片机的输入输出控制2位数码管,用单片机内部自带的晶振来调用时间定时器,每1s改变个位输入值,当为0的时候十位减一,当十位和个位都为零时在给一个输出一个高频信号去点亮LED.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网