首页 > 其他分享 >篮球比赛电子计分牌

篮球比赛电子计分牌

时间:2024-07-10 18:21:09浏览次数:5  
标签:计分 void 篮球比赛 电子 char LCD lcd16 data unsigned

在学习单片机课设“篮球比赛电子计分牌”的时候遇到了很多问题。在网上搜索到的资源很杂很乱,很多内容都需要付费,在学习的过程遇到了不少的阻力,因此我打算把我所做的拿出来与大家共同讨论,不足的地方还请多多指教哈。学艺不精,成绩仅为良好,大家参考就行。另外能激发后人的动手能力,不涉及抄袭,我只拿出来一部分(狗头)。**

一、课程设计内容
根据篮球比赛的计分规则,设计篮球比赛计分牌,具体内容如下:
1.用LCD显示屏显示比赛双方比赛和计分信息;
2.制定计分标准,有得1分、2分和3分的情况,加、减分及显示功能利用矩阵键盘实现;
3.有倒计时时钟显示,“暂停时间到”和“比赛时间到”时发出声光提示。

以上是课设要求。使用Protues版本为8.17和keil5,实验箱为Lab8000。(沈航学子用的是这个)
本次课程设计硬件部分主要运用到51单片机、LM1602L模块、矩阵键盘模块硬件。通过矩阵键盘输入、单片机系统处理、LCD模块输出实现整个目标。单矩阵键盘连接单片机P1口,通过扫描P1口高低电平的交替变化来确认按下的是哪一个键然后执行该键说指功能。LCD显示模块连接单片机P0口,通过P0口输出信息给LM1602L显示。P2口连接38译码器使用,选择内驱连接。
实验电路图如下图所示。(这个博客排版我也不是很会,大家凑合看吧)

这个电路图是平时7次实验改编过来的,认真做实验一定能画出来,这里选择实验箱中的内驱。(外驱老师说比较难)
这个课设难的地方主要是LCD显示。是好几个同学共同研究出来的,方便后人学习,我分享给大家。

// 函数声明
void LCD_Init(void);
void LCD_Command(unsigned char cmd);
void LCD_WriteChar(unsigned char xta);
void LCD_WriteString(char *str);
void lcd16_set_cursor(unsigned char row, unsigned char col);
void lcd16_data(unsigned char val);


// LCD 初始化函数
void LCD_Init(void)
{
    // 设置为8位模式,2行,5x7点阵字符
    LCD_Command(0x38);
    delay(10);

    // 打开显示,关闭光标
    LCD_Command(0x0C);
    delay(10);

    // 清屏
    LCD_Command(0x01);
    delay(10);

    // 设置光标移动方向
    LCD_Command(0x06);
    delay(10);
    LCD_Command(0x18);
    delay(10);
}

// 发送命令到LCD
void LCD_Command(unsigned char cmd)
{

    // 写入命令
    *((unsigned char xdata *)LCD_BASE_ADDRESS) = cmd;
    // 产生使能脉冲
    delay(1);
}

// 发送数据到LCD
void LCD_WriteChar(unsigned char xta)
{

    // 写入数据
    *((unsigned char xdata *)LCD_Data_ADDRESS) = xta;
    // 产生使能脉冲
    delay(1);
}

// 发送字符串到LCD
void LCD_WriteString(char *str)
{
    while (*str)
    {
        LCD_WriteChar(*str++);
    }
}
void lcd16_data(unsigned char val)
{
    *((unsigned char xdata *)LCD_Data_ADDRESS) = val; // 将数据写入数据端
    delay(2);
}

void lcd16_set_cursor(unsigned char row, unsigned char col)
{
    unsigned char address;
    if (row == 0)
    {
        address = col; // 第一行
    }
    else
    {
        address = 0x40 + col; // 第二行
    }
    LCD_Command(0x80 + address); // 设置DDRAM地址命令 (0x80 | address)
}

这个代码应该也是同学们在网上搜罗研究出来的,如有侵权联系我哈。这是整个课设最关键的一步,能让LCD点亮。再次之前我也在网络上搜寻到另一版本代码,但是仿真能跑通,实验箱上就不对。
主函数调用就是这样哒


void main(void)
{

    TMOD |= 0X01; // 3?ê??ˉ?¨ê±?÷
    TH0 = 0X3C;
    TL0 = 0XB0;
    ET0 = 1; // ′ò?a?¨ê±?÷0?D???êDí
    EA = 1;  // ′ò?a×ü?D??
    TR0 = 1; // ′ò?a?¨ê±?÷

    while (1)
    {

        LCD_Init(); // 初始化LCD
        while (1)
        {
            lcd16_set_cursor(0, 0);
            B_scan();
            lcd16_data('0' + fen / 10);
            lcd16_data('0' + fen % 10);
            LCD_WriteString(":");
            lcd16_data('0' + miao / 10);
            lcd16_data('0' + miao % 10);
            LCD_WriteString("TeamA:");
            lcd16_data('0' + score1[0]);
            lcd16_data('0' + score1[1]);
            lcd16_data('0' + score1[2]);
            lcd16_set_cursor(1, 0);
            //	 lcd16_data('0' +team);
            LCD_WriteString("     ");
            LCD_WriteString("TeamB:");
            lcd16_data('0' + point1[0]);
            lcd16_data('0' + point1[1]);
            lcd16_data('0' + point1[2]);

            if (sks == 0)
            {
            }
            else
            {
                sks = 0;
                temp1 = fen;
                temp2 = miao;
                fen = 00;
                miao = 10;
            }
        }
    }
}

这里面的B_scan()函数就是扫描键盘。很重要但是不难。
其余代码就是实现各个逻辑功能啦,很简单,就不放出来了,留给大家自己探索哈。运行结果就是这样的:

标签:计分,void,篮球比赛,电子,char,LCD,lcd16,data,unsigned
From: https://www.cnblogs.com/zhaojiahui/p/18294766

相关文章

  • 基于8255 8253电子琴仿真系统
    1.设计内容硬件模拟:使用Proteus提供的8086处理器模型进行仿真。模拟外部RAM和ROM,以存储程序代码、音频样本和临时数据。使用虚拟的输入设备模拟琴键按下和释放的输入信号。功能实现:琴键输入模拟:通过逻辑开关或者按钮模拟琴键的按下和释放动作。音频生成模拟:使用808......
  • 企业电子商务网站建设全面解决方案
    一、前言在数字化浪潮席卷全球的今天,电子商务以其无可比拟的便捷性和高效性,已经成为现代企业不可或缺的一部分。它打破了时间和空间的限制,让商业活动可以在任何时间、任何地点进行,为企业带来了前所未有的机遇。然而,随着电子商务的蓬勃发展,竞争也变得愈发激烈。如何在众多竞争......
  • 有关电力电子技术的一些相关仿真和分析:②单相电压二重化逆变电路(MATLAB/Siumlink仿真)
    1.1题目要求使用单相半桥型逆变器或全桥型逆变器,构建单相电压二重化逆变电路,参看教材中图4-20。仿真观察单个逆变器的时序波形及输入输出电压关系,研究串联多重化的基本原理,分析绘制移相角与输出电压的幅值关系曲线,移相角与输出电压畸变率的关系曲线,移相角与3、5、6、7、9次谐......
  • 有关电力电子技术的一些相关仿真和分析:③三相桥式逆变电路(MATLAB/Siumlink仿真)
    三相桥式逆变电路题目要求三相桥式逆变电路。仿真实现其基本时序波形,分析开关的电压、电流状态。计算输出电压和输出电流中基波及5、7、11、13次谐波含量,并与仿真结果对比。参数设置:三相桥式逆变电路,直流侧电压200V,系统频率50HZ,阻感负载R=5Ω,L=0.01H。参数设置首先在MATL......
  • 比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容
    比赛获奖的武林秘籍:05电子计算机类比赛国奖队伍技术如何分工和学习内容摘要本文主要介绍了在电子计算机类比赛中技术层面上的团队分工和需要学习的内容,分为了嵌入式硬件、嵌入式软件、视觉图像处理、机械、上位机软件开发和数据分析等六个方向,并结合自身经历给出相关建议。正......
  • python+flask计算机毕业设计个性化电子书籍商城系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和数字阅读习惯的普及,电子书籍已成为现代人获取知识、享受阅读乐趣的重要方式。然而,当前市场上的电子书籍商城大多......
  • 比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南
    比赛获奖的武林秘籍:04电子类比赛嵌入式开发快速必看的上手指南摘要本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容,并结合自身比赛经历给出了相关建议。正文如何开始上手做自己第一个项目学姐也是从大一过来的,所......
  • 国开大学2024《电子商务法律与法规(统设课)》
    一、单选题1.2017年8月18日()挂牌成立,这是全国第一家集中审理涉网案件的试点法院。A.北京互联网法院B.广州互联网法院C.杭州互联网法院D.上海互联网法院答案:C2.电子合同是平等主体之间以()的形式达成的,设立、变更、终止民事权利义务关系的协议。A.电子签名B.数......
  • 比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南
    比赛获奖的武林秘籍:04电子类比赛嵌入式开发快速必看的上手指南摘要本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容,并结合自身比赛经历给出了相关建议。正文如何开始上手做自己第一个项目学姐也是从大一过来的,所以完全......
  • 基于Java电子商城
    作者介绍:✌全网粉丝10W+本平台特邀作者、博客专家、CSDN新星计划导师、软件领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于项目实战✌一、作品包含源码+数据库+设计文档万字+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Cs......