篮球比赛电子计分牌

news/2024/11/17 9:27:01/文章来源:https://www.cnblogs.com/zhaojiahui/p/18294766

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

一、课程设计内容
根据篮球比赛的计分规则,设计篮球比赛计分牌,具体内容如下:
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(); // 初始化LCDwhile (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()函数就是扫描键盘。很重要但是不难。
其余代码就是实现各个逻辑功能啦,很简单,就不放出来了,留给大家自己探索哈。运行结果就是这样的:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习SpringCloud环境搭配

今天准备学习一下springcloud,在网上找了一个最新的学习视频需要更新一下之前安装的软件版本。突然想起来我还有个博客园的账号,就想记录一下环境搭建。 主要是分为以下几个部分Java 17+ Maven 3.9+ Mysql 8.0+ cloud 2023.0.0 boot 3.2.0 cloud alibaba 2022.0.0.0 之前…

进度报告4

(1)代码案例练习 1.public class helloworld { public static void main(String[] args) { double Price;int month;String x; Price=price(1000,6,"头等舱") ; System.out.println("优惠价为:"+Price); } public static double price(double a,int b,St…

day2

SSRF漏洞 1.SSRF漏洞介绍 SSRF(Server-Side Request Forgery)服务端请求为伪造,SSRF是⼀种由攻击者构造形成由服务端发起请求的⼀个安全漏洞。 ⼀般情况下,SSRF攻击的⽬标是从外⽹⽆法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连⽽与外⽹隔离…

[二、状态管理]2管理组件拥有的状态(4)@Provide装饰器和@Consume装饰器:与后代组件双向同步

@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,@Provide和@Consume摆脱参数传递机制的束缚,实现跨层级传递。 其中@Provide装饰的变量是在祖先节点中,可以理解为被“提供…

dedecms搭建网站怎么更换编辑器

入口: 系统 > 系统设置 > 系统基本参数 > 核心设置 > 编辑器默认可选参数: wangEditor 、 ckeditor 、 fck本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18294690

DedeCMS网站安装成功后点击登录网站后台报404错误怎么办?

DedeCMS 默认的管理后台路径为 /dede 。遇到这个问题,需先检查 /dede 目录是否被重命名了。如果被重命名了,改回 /dede 即可。或直接在浏览器地址栏手动输入相应的管理后台路径,就可以打开后台登录页面了。本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.…

关于DedeCMS版本号的说明

DedeCMS V5.7.73及后续的版本将采用 Semantic Versioning Specification (SemVer)(语义化版本 2.0.0) 进行维护。 语义化版本 2.0.0版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 1、主版本号:当你做了不兼容的 API 修改, 2、次版本号:当你做了向下兼容的功能性…

zblog报错“Invalid argument supplied for foreach”或者“unserialize(): Error at offset”的解决办法

大部分的报错提示是:”Invalid argument supplied for foreach“也有提示”unserialize(): Error at offset“的,本文来分享下这个bug的原因和解决办法。 BUG原因: zblog1.7版本改造了system的config表,这个表里面存放的是程序的核心内容,例如域名、语言版本、网站名称等等…

PC触摸屏之设备维护【PackGo】

TIA Portal V16平台Pack&Go功能如何使用? TIA Portal V16平台Pack&Go功能如何使用 (siemens.com.cn)简介 当我们无法建立从组态PC到HMI设备的直接连接,例如,现场PC未安装TIA Portal软件,还需要将项目下载到HMI设备,除了使用U盘方式下载程序外,还可以创建P…

ZBlog网站固定域名出错不能登入

使用空间面板的文件管理或者 FTP 修改文件:path/zb_users/c_option.php; 如果是固定域名出错,需要关闭固定域名功能,请在 c_option.php增加项目: ZC_PERMANENT_DOMAIN_ENABLE => false, //1.7.3版本及以后版本使用//或是 ZC_PERMANENT_DOMAIN_WHOLE_DISABLE => true…

imagecreatefrompng(): gd-png: libpng warning: iCCP: known incorrect sRGB profile

问题描述: imagecreatefrompng(): gd-png: libpng warning: iCCP: known incorrect sRGB profile 解决方法: 更新 GD 库或 调整PHP版本宝塔的话, 可以安装依赖yum install libpng libpng-devel -y补充: 如果后台先安装的“一条大河应用盒子”,这个也启用一下, 不然也会报…

记一次【PPT制作、PPT在线编辑预览】功能开发过程

背景 早上,正愉快写着helloWord(Java)。老大对我来了句,搞个【 根据用户输入的markdow文本内容,将数据插入到PPT模板中,生成新的PPT文件。并且要可以在线预览以及编辑】 。(ps:就是直接照着人家的功能抄一个出来,参考网址:https://www.*******.vip)。并且跟…