篮球计分器「篮球计时计分系统」

体育正文 220 0

篮球计分器

篮球计时计分系统

求单片机用汇编写个篮球计分器的程序

用C多好,汇编已经很长时间没用了,勉为其难吧 P1.0到1.5对应AB队的比分按键+1、+2、+3(按下时为0)。P0口接数码管(通过74S373),P2.0到P2.3通过4个反相器分别控制4个数码管(为1时点亮,你可以设0时点亮,就看你是共阳极还是共阴极,本例采用共阴极)ORG 0000HSTA MOV R0,#00HMOV R1,#00HMAIN: MOV P1,#0FFHMOV A,P1CJNE A,#0FEH,LP1INC R0ACALL DELAYAJMP MAINLP1: CJNE A,#0FD,LP2INC R0INC R0ACALL DELAYAJMP MAINLP2: CJNE A,#0FBH,LP3INC R0INC R0INC R0ACALL DELAYAJMP MAINLP3: CJNE A,#0F7H,LP4INC R1ACALL DELAYAJMP MAINLLP4: CJNE A,#0EFH,LP5INC R1INC R1ACALL DELAYAJMP MAINLP5: CJNE A,#0DFH,MAININC R1INC R1INC R1ACALL DELAYAJMP MAINDELAY: MOV R2,#10HDISPL: MOV A,R0ANL A,#0FHMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#01HMOV P0,AMOV A,R0ANL A,#0FHSWAP AMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#02HMOV P0,ADISPL2: MOV A,R1ANL A,#0FHMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#04HMOV P0,AMOV A,R1ANL A,#0FHSWAP AMOV DPTR,#TABMOV A,@A+DPTRMOV P2,#08HMOV P0,ADJNZ R2,DISPLRET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,6FH,77H,7CH,39H,5EH,79H,71H,76H,73H
求单片机用汇编写个篮球计分器的程序

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

你好! 是c语言写代码吗?原理图确定了吗?程序什么时间要
单片机课程设计 篮球比赛计分器

篮球计时计分器是利用什么完成什么

由后台来完成的。 后台也是有人在操作的。比分、时间、节数都是有人操作的。但是有些也不是,比如进球后重新读的24秒,9秒等,这些数据是有电脑操作的。 一旦进球后,数据就重新开始。
你说的是电子记分牌吗,是靠控制台来完成设置 比赛队名、分数、局数、犯规次数、发球权等功能的
我只能说是单片机.
LED 自动控制
篮球计时计分器是利用什么完成什么

篮球计分器ge怎么编程

#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设为模式1TH1 = 0xFC;TL1 = 0x18; //1msEA = 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();//初始化定时器1UP_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++;//第一队分数加1ET1 = 1;//开启定时器1中断}if(DOWN_1==0) //如果第一队减分键按下{ET1 = 0;delay(5);while(DOWN_1==0);Grate_1--; //第一队分数减1ET1 = 1;}if(UP_2==0)//如果第二队加分键按下{ET1 = 0;delay(5);while(UP_2==0);Grate_2++;//第二队分数加1ET1 = 1;}if(DOWN_2==0)//如果第二队减分键按下{ET1 = 0;delay(5);while(DOWN_2==0);Grate_2--;//第二队分数减1ET1 = 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<=0)//如果时间计数到0{Time=99;//恢复初始时间TR1 = 0;//关闭定时器1beef(100);//发声}display(Grate_1,Grate_2,Time); //显示分数、时间}}void Timer1Interrupt(void) interrupt 3 //定时器1中断函数{TH1 = 0xFC; //重赋初值TL1 = 0x18;Flag++; //中断次数加1if(Flag>=1000)//1000次也就是1秒到{Flag=0;Time--;//秒变量减1} }
篮球计分器ge怎么编程

求一份关于篮球计分器的51单片机C语言程序

这是一个数码管显示的篮球计分程序,你可以参考一下:#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=0xf7;   wei=0;   P0=0xff;   duan=1;   P0=leddata[w3];   duan=0;   delay(5);       P0=0xff;  //显示第二队分数个位   wei=1;   P0=0xef;   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<=0)    //如果时间计数到0        {            Time=99;    //恢复初始时间            TR1 = 0;    //关闭定时器1            beef(100);    //发声        }display(Grate_1,Grate_2,Time); //显示分数、时间    }}void Timer1Interrupt(void) interrupt 3   //定时器1中断函数{    TH1 = 0xFC;   //重赋初值    TL1 = 0x18;    Flag++;   //中断次数加1    if(Flag>=1000)//1000次也就是1秒到    {        Flag=0;        Time--;    //秒变量减1    }}
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
求一份关于篮球计分器的51单片机C语言程序

欢迎 发表评论:

评论列表

暂时没有评论

暂无评论,快抢沙发吧~