找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7308|回复: 10
打印 上一主题 下一主题
收起左侧

单片机做的乒乓球电子记分板

[复制链接]
跳转到指定楼层
楼主
        前一个单片机读写PLC的成功,让自己幸福了一周.

        如今脑袋里没了想头,空落落得难受.还是给自己找点动力,做个乒乓球的记分板吧.

        自己喜欢打乒乓球,但每次矿上组织比赛,发给的都是手翻的记分牌,动不动就卡住翻不过来,有时连翻两张......
        到最后一局的半局,还要换场地,比分换翻更是手忙心乱......
        问题不止这些....因为一门心思在看球赛上,一人两次的发球,到底该谁发球了?动不动就给人家记错了......        
        唉,忙着看球,又得忙翻分,比赛都过两分了,号还没给人家翻过来呢,连看球的观众都有意见.
        干脆,自己用单片机制作一个记分牌吧,方便,快捷,自动.按个按键就能搞定,何乐而不为呢?

        呵呵,想法不错,能实现的话,可以让自己专心看比赛了........

        说干就干.

1.先根据比赛的实际情况,写出要实现的功能
    A:一键加分.比赛时,按一个键,给参赛的胜方加分.
    B:一键换场地:按一个键,实现比分的位置左右互换
    C:一键复位,重新计分
    D:自动标识发球的一方
    E:大局比分的显示

2.画出电路图


3.写出程序
;====R0:甲得分,R1:乙得分,R2:比分,R3:十位位码,R4:个位位码,R5/R6延时用,R7:换发球判断值;====键1:复位/RST,键2:交换换场地,同时交换发球方标识/P1.0,键3:甲得分加1/P1.1,键4:乙得分加1/P1.2ORG00HLJMPSTARTORG30HSTART:MOVR0,#00H甲比分赋初值为0MOVR1,#00H乙比分赋初值为0MOVR7,#02H换发球判断赋值MOVP1,#027H    给发/接球方赋标识值MAIN:JNBP1.0,JHCD如按下P1.0,转交换场地JNBP1.1,ADD1如按下P1.1,转甲加1JNBP1.2,ADD2如按下P1.2,转乙加1LCALLDISP        LJMPMAIN;========显示甲的比分========DISP:MOVA,R0        MOVR2,A        MOVR3,#01H十位的位码MOVR4,#02H个位的位码LCALLDT2D;========显示乙的比分========MOVA,R1MOVR2,A        MOVR3,#04H十位的位码MOVR4,#08H个位的位码LCALLDT2D        RET;========把比分拆为十/个位分别显示========DT2D:MOVA,R2    对2位数/比分进行十位/高位,个位/低位拆分MOVB,A把比分赋B,保护原数ANLA,#0F0H屏蔽低位SWAPA高低位互换位置MOVDPTR,#TAB字形码表首址赋给DPTRMOVCA,@A+DPTR查表找出数字相对应的字形码MOVP2,A;高位字形码送P1输出显示MOVP3,R3高位位码送P3LCALLDLY1SMOVP3,#00H关断P3,字符消隐MOVA,BANLA,#0FH屏蔽高位MOVDPTR,#TAB字形码表首址赋给DPTRMOVCA,@A+DPTR查表找出数字相对应的字形码MOVP2,A    低位字形码送P1显示MOVP3,R4低位位码送P3LCALLDLY1SMOVP3,#00H关断P3,字符消隐RET;========比赛中交换场地,分数左右交换显示,发球方标识同时交换========JHCD:判断键2是否按下LCALLDLY10MS按下延时消抖JBP1.0,MAIN键释放,返回JNBP1.0,$等待键释放MOVA,R0    键释放,则左右交换比分XCHA,R1    A与R1值交换MOVR0,ACPLP1.5    发球方标识转换CPLP1.6   发球方标识转换LJMPMAINRET;========甲方比分加1========ADD1:LCALLDLY10MS    按下延时消抖JBP1.1,MAIN键释放,返回JNBP1.1,$等待键释放,防止连续加1MOVA,R0    甲比分送累加器加1ADDA,#01H        DAA十进制调整MOVR0,A    加1后的比分再返回R0;========换发球判断========        DJNZR7,BACK    减1后判断发球方,不为0转主程序MOVR7,#02H    为0,则表示一人已经发够两个球,随即转换发球方标识,并再赋判断初值        CPLP1.5    发球方标识转换CPLP1.6    发球方标识转换BACK:LJMPMAINADD2:LCALLDLY10MS    按下延时消抖JBP1.2,MAIN键释放,返回JNBP1.2,$等待键释放,防止连续加1MOVA,R1    乙比分送累加器加1ADDA,#01HDAA十进制调整MOVR1,A    加1后的比分再返回R1DJNZR7,BACK减1后判断发球方,不为0转主程序MOVR7,#02H为0,则转换发球方标识,并再赋发球方判断开关初值CPLP1.5    发/接球方标识转换CPLP1.6    发/接球方标识转换LJMPMAIN;========延时程序========DLY10MS:MOVR5,#14HLOOP1:MOVR6,#0FFHDJNZR6,$DJNZR5,LOOP1RETDLY1S:MOVR5,#0AHLOOP:MOVR6,#0FFHDJNZR6,$DJNZR5,LOOPRET;========字形码表========TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H        共阳段码表 "0""1""2" "3""4""5""6""7" "8""9"END

计分功能实现了,又加进了交换场地功能.
交换场地实现了,又加进了发球权的自动判断.
发球权判断实现了,又想加进一局输赢比分的自动判断.
输赢判断实现了,又想加进大局比分的自动加1.

唉,这个程序,越编越复杂了.
唉,数学功底太次,没办法,为了这个程序,吃睡不香的日子,还得过一阵子了.

4.仿真测试
终于把程序写完了.完美收工.仿真测试,一是自动,二是无误.呵呵,高兴至极.

5.实际制作


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:155830 发表于 2016-12-19 21:09 | 只看该作者
很厉害,想看完整程序,谢谢
回复

使用道具 举报

板凳
ID:155830 发表于 2016-12-19 21:10 | 只看该作者
很给力,想看完整程序
回复

使用道具 举报

地板
ID:150601 发表于 2016-12-20 18:19 | 只看该作者
很厉害,很久就想看例子了
回复

使用道具 举报

5#
ID:157123 发表于 2016-12-23 14:07 | 只看该作者
厉害了
回复

使用道具 举报

6#
ID:426123 发表于 2018-11-14 02:42 来自手机 | 只看该作者
楼主,想咨询一下我在编程中出现了问题,可以问你么?
回复

使用道具 举报

7#
ID:426123 发表于 2018-11-16 09:44 来自手机 | 只看该作者
柠檬水hi 发表于 2018-11-14 02:42
楼主,想咨询一下我在编程中出现了问题,可以问你么?

我用的是C语言,不是汇编
回复

使用道具 举报

8#
ID:658853 发表于 2019-12-8 15:11 | 只看该作者
我也是乒乓球爱好者,现在在上大学,学了单片机课程,也想做个乒乓球记分板,希望大佬能多多指教,我用c语言,想看看大佬的程序
回复

使用道具 举报

9#
ID:658853 发表于 2019-12-8 15:15 | 只看该作者
想看完整程序,我要是乒乓球爱好者,最近在学单片机
回复

使用道具 举报

10#
ID:700025 发表于 2020-2-29 11:32 | 只看该作者
群主   想看完整的代码
回复

使用道具 举报

11#
ID:700025 发表于 2020-3-4 14:38 来自手机 | 只看该作者
想自己动手做一个  所以想看完整的代码   谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表