AT89C52实现篮球计分计时器,并通过proteus仿真

一、设计环境与器材

Keil开发uVision4开发环境,window10系统。

二、设计内容

a.设计内容分析:

1.能够记录整个赛程的比赛时间并可同时用数码管显示。

2.可通过键盘修改当前的比赛成绩。

3.能够通过数码管显示篮球比赛成绩。(由于数码管数量的限制,比赛时间和分数轮流显示)

4.比赛中场和结束时,能发出报警。

b.设计方案:

硬件使用网络标号连接,用到的AT89C52单片机引脚口:P0口八个引脚接上拉电阻,用于驱动数码管显示,P2口中P2.3引脚接FM,控制蜂鸣器,P2.6控制段码锁存器锁存数据,P2.7控制位码锁存器锁存数据,P3口八个引脚接矩阵键盘的4个行和4个列。所有引脚均作为IO口使用。

LED采用6个八位共阴数码管,前三位数码管交替显示分(minute)和第一个队的比分(蓝队),后三位数码管显示时钟秒数(second)和第二个队的比分。用锁存器将数码管的位码先锁存,然后再锁存段码。LED和锁存器之间加入上拉电阻(为了高电平驱动数码管段码显示),数码管从1~6交替显示,利用视觉暂留,能同时显示,显示一段时间分钟和秒钟后转到显示分数,然后时间数和分数交替显示。

 锁存器:

键盘检测:矩阵键盘的列加上拉电阻便于检测(不需要程序内对列线置为高电平),矩阵键盘的行用来单片机置低电平,然后单片机进行列扫描。

蜂鸣器:三极管接蜂鸣器,高电平驱动蜂鸣器发声音。

三、设计电路图(仿真及实际电路图)

四、C程序

下面列出了部分函数mian()

/********************************************************************
* 名称 : main()
* 功能 : 初始化 调用数码管显示 开启中断和定时器 
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
    //主函数
    uint8 i=0;
    uint8 number_key;
    P3=0xff;
    WELA = 0;
    DULA = 0;
    FM=0;
    //初始化数码管引脚
    SEG_PIN = 0x00;
    delay(1);
    DULA=1;
    delay(1);
    DULA=0;  ;
    //定时器0,方式1   tmod 00000001     0x01
    TMOD=0x01;
    TH0=(65536-50000)/256 ;//50ms
    TL0=(65536-50000)%256 ;
    while(key_scan()!=13)     //点击键盘上的开始比赛 才能进行记录分数,开始计数
    {
    
    };
    EA=1; //总中断
    ET0=1;        //定时器1中断
    TR0=1;
    
    while(1)
    {
        for(i=0;i<100;i++)
        {
        number_key=key_scan();
        display(now_second,SECOND,1);
        key_function(number_key);
        key_last=number_key;  //上一次的键值
        display(now_minute,MINUTE,0);
        number_key=key_scan();
        key_function(number_key);
        key_last=number_key;  //上一次的键值
        }
        for(i=0;i<100;i++)
        {
        number_key=key_scan();
        display(blue_score,BLUE,2) ;
        key_function(number_key);
        key_last=number_key;  //记录上一次的键值
        display(red_score,RED,2);
        number_key=key_scan();
        key_function(number_key);
        key_last=number_key;  //上一次的键值
        }
        

完整的程序和proteus工程图:

(55条消息) 单片机应用技术,AT89C51,篮球比赛计分、计时器-单片机文档类资源-CSDN文库https://download.csdn.net/download/weixin_52013159/85436389注意,积分下载的目的是为了让大家更好地借鉴其中的方法,同时防止滥用,请勿为了完成作业而照搬!

如有疑惑,评论区联系。

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机,可实现篮球比赛时间倒计时、24秒倒计时、100秒和60秒倒计时、)比赛时间、24秒倒计时和比赛节数等功能,内附文档说明。 (1)时钟模块 时钟模块用于实现篮球比赛时间倒计时(计时精度为0.1秒)、24秒倒计时、100秒和60秒倒计时。 (2)按键模块 按键模块共需要9个按键开关,其中8个半径为4厘米圆形按键分别为:减一分钟、加一分钟、启动/继续、暂停、5分钟、节数、60秒、100秒;1个手握式开关24位复位键,每个按键可随意摆放,方便操作。 (3)显示模块 显示模块中显示屏采用LED数码管显示屏,正方体四面显示屏上每面显示屏包含25厘米的8个七段数码管,1个数码管显示比赛的节数为第一行,5个数码管显示比赛时间为第二行,2个数码管显示24秒为第三行。正方形显示屏包含15厘米的3个七段数码管,用于显示100秒或60秒。 (4)声音模块 声音模块中有6个音响串联,可实现比赛开始时发出短哨声、每小节比赛结束发出笛声、24秒倒计时递减到零时发出长哨声。 (5)控制 控制中有4个存储,分别存储比赛时间倒计时、24秒倒计时、100秒和60秒倒计时。控制不断地从时钟模块中提取时钟信号与存储相比较,使存储中时间以0.1秒递减并同时在显示模块中显示时间倒计时。控制随时监视着按键模块和时钟模块,当有按键按下,控制接受到按键模块后控制时钟模块和控制存储,并同时通过控制在显示模块中显示时间和比赛节数;当存储中的时间到达特殊的时间点时,由控制来调出相对应的音频并在声音模块中发出声音。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值