当前位置: 首页 > news >正文

基于PIC单片机篮球计分计时器

一、系统方案
本设计采用PIC单片机作为主控制器,矩阵键盘控制,比分,计时控制,24秒,液晶12864显示。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述
三、单片机软件设计
1、首先是系统初始化

2、液晶显示程序
/********************************************************************************************

  • 函数名称:Lcd_Write_Command()

  • 功 能:写指令代码

  • 入口参数:无

  • 出口参数:无
    */
    void Lcd_Write_Command(uchar temp)
    {
    port=temp;
    rs=0;
    rw=0;
    e=1;
    e=0;
    }
    /

  • 函数名称:Lcd_Write_Byte()

  • 功 能:写数据

  • 入口参数:无

  • 出口参数:无
    *****************/
    void Lcd_Write_Byte(uchar temp)
    {
    port=temp;
    rs=1;
    rw=0;
    e=1;
    e=0;
    }
    /

    *名称:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
    *功能:显示16X8字符(字母)
    *入口参数:
    *出口参数:
    *说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示
    /
    void Lcd_Character_16X8( uchar bit_flag, uchar x, uchar y, uchar point )
    {
    uchar i , j,temp;
    temp=y;
    if( bit_flag )
    {
    for( i=0; i<2; i++ )
    {
    x+=i;
    y=temp;
    for( j=0;j<8;j++ )
    {
    Lcd_Set_X_Y( x, y ); y++;
    Lcd_Write_Byte( point[ i
    8 + j] );
    }
    }
    }
    else
    {
    for( i = 0; i < 2; i++ )
    {
    x += i;
    y = temp;
    for( j = 0; j < 8; j++ )
    {
    Lcd_Set_X_Y( x, y ); y++;
    Lcd_Write_Byte( ~point[ i * 8 + j ] );
    }
    }
    }
    }
    /

  • 名称:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )

  • 功能:显示16*16字符(汉字)

  • 入口参数:x y data

  • 出口参数:无
    *说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示
    ****************************************************************************/
    void Lcd_Character_16X16( uchar bit_flag, uchar x, uchar y, uchar point )
    {
    uchar i,j,temp ;
    temp=y;
    if( bit_flag )
    {
    for( i=0; i<2; i++ )
    {
    x+=i;
    y=temp;
    for( j=0;j<16;j++ )
    {
    Lcd_Set_X_Y( x, y ); y++;
    Lcd_Write_Byte( point[ i
    16 + j] );
    }
    }
    }
    else
    {
    for( i = 0; i<2; i++ )
    {
    x += i;
    y = temp;
    for( j = 0; j < 16; j++ )
    {
    Lcd_Set_X_Y( x, y ); y++;
    Lcd_Write_Byte( ~ point[ i * 16 + j ] );
    }
    }
    }
    }
    3、按键程序
    RD4=0;//第一行赋值低电平
    RD5=1;//其他行赋值高电平
    RD6=1;//其他行赋值高电平
    RD7=1;//其他行赋值高电平
    if(RD00)//判断第一列是否有按键按下
    {
    delay_uint(10);//延时消去按键抖动
    if(RD0
    0)//再次判断按下是否按下
    {
    key_can=0;//按键键盘
    changshu++;//场数加1
    if(changshu>4) changshu=0;//场数大于4,清零
    while(!RD0)//判断按键可释放
    {
    }
    }
    }
    if(RD10)//第二列
    {
    delay_uint(10);//延时消去按键抖动
    if(RD1
    0)
    {
    key_can=1;
    en_flag1=1;
    while(!RD1)
    {

      	}}
    

    }
    if(RD20)//第3列
    {
    delay_uint(10);//延时消去按键抖动
    if(RD2
    0)
    {
    key_can=2;

            en_flag1=0;en_flag2=0;while(!RD2){}}
    

    }
    if(RD30)//第四列
    {
    delay_uint(10);//延时消去按键抖动
    if(RD3
    0)
    {
    key_can=3;
    flag=!flag;//交换场地
    while(!RD3)
    {

      	}}
    

    }
    4、核心算法程序
    /*主程序函数
    ************************************************/
    void main(void)
    {

    TRISD=0x0f;//RD高四位输出,低四位输入
    TRISC=0x00;//输出设置
    TRISB=0x00;//输出设置
    Lcd_Initial(); //LCD初始化
    TMR1L=(65536-12500)%256; //定时12500个时钟初始值
    TMR1H=(65536-12500)/256; //定时12500个时钟初始值
    GIE=1; //总中断允许
    PEIE=1; //外围功能模块中断允许
    TMR1IE=1; //TMR1中断允许
    TMR1ON=1; //启动TMR1
    while(1)
    {
    Lcd_Character_16X16(1,0,8,data_shuju[0]); //显示蓝
    Lcd_Character_16X16(1,0,24,data_shuju[1]); //显示球
    Lcd_Character_16X16(1,0,40,data_shuju[2]); //显示计
    Lcd_Character_16X16(1,0,56,data_shuju[3]); //显示分
    Lcd_Character_16X16(1,0,70,data_shuju[4]); //显示器

      Lcd_Character_16X16(1,2,0,data_shuju[5]);	//显示第Lcd_Character_16X8( 1,2,16, data_shuju1[changshu]);//显示场数Lcd_Character_16X16(1,2,24,data_shuju[6]);	//显示场Lcd_Character_16X8( 1,2,48, data_shuju1[fen/10]);//显示倒计时分的十位Lcd_Character_16X8( 1,2,56, data_shuju1[fen%10]);//显示倒计时分的个位Lcd_Character_16X8( 1,2,64, data_shuju1[12]);//显示:Lcd_Character_16X8( 1,2,72, data_shuju1[miao/10]);//显示倒计时秒的十位Lcd_Character_16X8( 1,2,80, data_shuju1[miao%10]); //显示倒计时秒的个位Lcd_Character_16X8( 1,4,72, data_shuju1[ss/10]);//显示倒计时秒的十位Lcd_Character_16X8( 1,4,80, data_shuju1[ss%10]); //显示倒计时秒的个位key();//按键检测if(flag==0)//场数交换{Lcd_Character_16X8( 1,4,0 ,data_shuju1[10]);//A队Lcd_Character_16X8( 1,4,8 ,data_shuju1[12]);//冒号Lcd_Character_16X8( 1,4,16, data_shuju1[fen1/100]);//A队分数千位Lcd_Character_16X8( 1,4,24, data_shuju1[fen1%100/10]);//分数十位Lcd_Character_16X8( 1,4,32, data_shuju1[fen1%10]);//分数个位Lcd_Character_16X8( 1,6,0, data_shuju1[11]);//B队Lcd_Character_16X8( 1,6,8 ,data_shuju1[12]);//冒号Lcd_Character_16X8( 1,6,16, data_shuju1[fen2/100]);//B队分数千位Lcd_Character_16X8( 1,6,24, data_shuju1[fen2%100/10]);//分数十位Lcd_Character_16X8( 1,6,32, data_shuju1[fen2%10]);//分数个位}else// 交换显示{Lcd_Character_16X8( 1,6,0 ,data_shuju1[10]);//A队Lcd_Character_16X8( 1,6,8 ,data_shuju1[12]);//冒号Lcd_Character_16X8( 1,6,16, data_shuju1[fen1/100]);//A队分数千位Lcd_Character_16X8( 1,6,24, data_shuju1[fen1%100/10]);//分数十位Lcd_Character_16X8( 1,6,32, data_shuju1[fen1%10]);//分数个位Lcd_Character_16X8( 1,4,0, data_shuju1[11]);//B队Lcd_Character_16X8( 1,4,8 ,data_shuju1[12]);//冒号Lcd_Character_16X8( 1,4,16, data_shuju1[fen2/100]);//B队分数千位Lcd_Character_16X8( 1,4,24, data_shuju1[fen2%100/10]);//分数十位Lcd_Character_16X8( 1,4,32, data_shuju1[fen2%10]);//分数个位}
    

    }
    }
    四、proteus仿真设计
    Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
    在这里插入图片描述

相关文章:

基于PIC单片机篮球计分计时器

一、系统方案 本设计采用PIC单片机作为主控制器&#xff0c;矩阵键盘控制&#xff0c;比分&#xff0c;计时控制&#xff0c;24秒&#xff0c;液晶12864显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 2、液晶显示程序 /*************…...

关于Maxwell与Kafka和数据库的监控

1.Maxwell的配置 其实就是配置两端的配置信息,都要能连接上,然后才能去传输数据 config.properties #Maxwell数据发送目的地&#xff0c;可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis producerkafka # 目标Kafka集群地址 kafka.bootstrap.servershadoop102…...

【设计模式】Java设计模式详细讲解

一、概述 Java设计模式是Java程序设计中一种重要的最佳实践&#xff0c;它提供了一种框架和结构&#xff0c;可以帮助开发者更好地理解和设计复杂的系统。设计模式不仅仅是一种语法规则&#xff0c;更是一种思想和方法论&#xff0c;它能够帮助开发者更好地分析、设计和实现软…...

【MySQL】表的增删查改(进阶)

目录 1.数据库约束 1.1NOT NULL&#xff1a;非空约束 1.2UNIQUE&#xff1a;唯一值约束 1.3DEFAULT&#xff1a;默认值约束 1.4PRIMARY KEY&#xff1a;主键约束 1.5FOREIGN KEY&#xff1a;外键约束 1.6CHECK约束 2.表的设计 2.1一对一 2.2一对多 2.3多对多 3.新增…...

Vim几种跳转方式

ps: 以下时我常用的一些跳转指令&#xff0c;用于参考和复习记忆。还有一些后续会更新。 文件内跳转 移动光标 普通模式下左h&#xff0c;右l&#xff0c;上k&#xff0c;下j。&#xff08;可以使用数字hlkj&#xff0c;实现跳跃式移动&#xff09;。 字符间跳转 …...

element-ui 弹窗里面嵌套弹窗,解决第二个弹窗被遮罩层掩盖无法显示的问题

当我们在 element-ui 中使用弹窗嵌套弹窗时&#xff0c;会出现第二个弹窗打开时被一个遮罩层挡着&#xff0c;就像下面这样&#xff1a; 下面提供两种解决方案 &#xff1a; 一、第一种方案 我们查询element-ui 官网可以发现 el-dialog 有这样几个属性&#xff1a; 具体使用就…...

【业务功能篇76】微服务网关路由predicates断言条件-filters路由转换地址-跨域问题-多级目录树化层级设计-mybatisPlus逻辑删除

业务开发-基础业务-分类管理 启动renren-fast如果出现如下错误 -Djps.track.ap.dependenciesfalse 添加相关配置即可 分类管理 1.后端分类接口 JDK8特性&#xff1a;https://blog.csdn.net/qq_38526573/category_11113126.html 在后端服务中我们需要查询出所有的三级分类信…...

apache的ab工具测试网页优化效果速度以及服务器承载

今天为大家介绍一款apache自带的一种的测试网页优化效果速度以及服务器承载的工具——ab.exe。 大家在工作中或者开发中可以使用apache的ab工具来测试自己的网站并发量大小&#xff0c;和某个页面的访问时间。 一、基本用法 如果你是用的是apache的话&#xff0c;那么只要进…...

【进阶篇】MySQL 存储引擎详解

文章目录 0.前言1.基础介绍2.1. InnoDB存储引擎底层原理InnoDB记录存储结构和索引页结构InnoDB记录存储结构&#xff1a;InnoDB索引页结构&#xff1a; 3. MVCC 详解3.1. 版本号分配&#xff1a;3.2. 数据读取&#xff1a;3.3. 数据写入&#xff1a;3.4. 事务隔离级别&#xff…...

Spring集成【MyBatis】和【PageHelper分页插件】整合---详细介绍

一&#xff0c;spring集成Mybatis的概念 Spring 整合 MyBatis 是将 MyBatis 数据访问框架与 Spring 框架进行集成&#xff0c;以实现更便捷的开发和管理。在集成过程中&#xff0c;Spring 提供了许多特性和功能&#xff0c;如依赖注入、声明式事务管理、AOP 等 它所带来给我们的…...

PyCharm下安装配置PySide6开发环境(Qt Designer(打开,编辑)、PyUIC和PyRCC)

一.准备工作 1.安装python和pycharm并配置好环境变量 python安装路径 pycharm安装路径&#xff1a; python系统变量&#xff1a; pycharm环境变量&#xff1a; 注意&#xff1a;正常安装&#xff0c;并勾选ADD PATH一般会自动配好 2.在pycharm创建一个新的python的虚拟环境 …...

pytest fixture 创建一个 requests.session() 对象

当你运行这段代码时&#xff0c;它会执行以下操作&#xff1a; 1. 导入必要的库&#xff1a;pytest 和 requests。 2. 定义一个夹具&#xff08;fixture&#xff09;函数 session&#xff0c;使用 pytest.fixture(scopesession) 装饰器进行标记。这个夹具函数在整个测试会话期…...

深入分析负载均衡情景

本文出现的内核代码来自Linux5.4.28&#xff0c;为了减少篇幅&#xff0c;我们尽量不引用代码&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、有几种负载均衡的方式&#xff1f; 整个Linux的负载均衡器有下面的几个类型&#xff1a; 实际上内核的负载均衡…...

WPF基础入门-Class5-WPF命令

WPF基础入门 Class5-WPF命令 1、xaml编写一个button&#xff0c;Command绑定一个命令 <Grid><ButtonWidth"100"Height"40" Command"{Binding ShowCommand}"></Button> </Grid>2、编写一个model.cs namespace WPF_Le…...

云安全攻防(十三)之 使用minikube安装搭建 K8s 集群

使用minikube安装搭建 K8s 集群 Kubernetes 是一个可移植的、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化,一般来说K8s安装有三种方式&#xff0c;分别是Minikube装搭建 K8s 集群&#xff0c;特点是只有一个节点的集群&…...

Python数据分析 | 各种图表对比总结

本期将带领大家一起对在数据可视化的过程中常用的一些图表进行下总结&#xff1a; 条形图 【适用场景】 适用场合是二维数据集&#xff08;每个数据点包括两个值x和y&#xff09;&#xff0c;但只有一个维度需要比较&#xff0c;用于显示一段时间内的数据变化或显示各项之间的…...

linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:适用所有应用和命令的判断

前言 项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种&#xff0c;但是很多都不通用&#xff0c; 脚本代码就不容易做成统一的 解决方案 用下面的脚本代码去进行判断 用jdk测试 脚本意思如下&#xff1a; 输入java -version命令&#xff0c;将返回的字…...

Python3多线程/多进程解决方案(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 文章目录 1. 多线程2. 多进程示例1&#xff1a;multiprocessing.Pool直接实现对一个列表中的每个元素的函数操作示例2&#xff1a;使用苏神写的工具函数实现对一个迭代器中每个元素的函数操作 1. 多线程 2. 多进程 示例1&#xff1a;multiproc…...

在`CentOS`中安装`Docker Engine`

本文总结如何在CentOS中安装Docker Engine 〇、Docker Engine 介绍 Docker Engine是一种开源容器化技术&#xff0c;用于构建和容器化应用程序。Docker引擎作为一个客户端-服务器应用程序: 具有长时间运行守护进程的服务器。指定接口的api&#xff0c;程序可以使用这些接口与…...

[ VMware 虚拟机 ] 启动不了图形界面,报 “The system is running in low-graphics mode” 错误

文章目录 问题现象异常原因解决方案 问题现象 在启动虚拟机的时候&#xff0c;不能正常的进入图形界面&#xff0c;报 “The system is running in low-graphics mode” 错误。 异常原因 启动界面的xorg.conf文件失败并删除。 解决方案 1、点击异常界面上的 “ok”后&…...

RK3588平台IMX415摄像头驱动调试全流程与实战指南

1. 项目概述与核心挑战最近在基于瑞芯微RK3588平台调试索尼IMX415摄像头&#xff0c;整个过程可以说是既典型又充满细节。对于嵌入式Linux开发&#xff0c;尤其是多媒体应用&#xff0c;摄像头驱动调试往往是硬件适配中最关键也最磨人的一环。RK3588作为一款高性能的AIoT SoC&a…...

Taotoken CLI工具安装与一键配置全模型环境指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken CLI工具安装与一键配置全模型环境指南 对于需要接入多个大模型服务的开发团队而言&#xff0c;统一管理API密钥、模型配置…...

录音转文字app免费版有哪些?2026年免费录音转文字app排行榜实测对比

做语音采访、课程记录或会议纪要的时候&#xff0c;经常卡在两个问题上&#xff1a;一是转写完的文字错漏太多得反复修改&#xff0c;二是处理一堆音频文件特别耗时间。微信里有个叫提词匠的小程序在这类需求里效率比较高&#xff0c;下面会重点拆解它&#xff0c;同时对比几个…...

Unet学习笔记1——全矩阵运算理解5种核心操作(傻瓜版)

Unet学习笔记1——全矩阵运算理解5种核心操作&#xff08;傻瓜版&#xff09; 文章目录Unet学习笔记1——全矩阵运算理解5种核心操作&#xff08;傻瓜版&#xff09;一、unet模型干了什么二、宏观架构&#xff1a;“U”型流水线的三个核心乐章三、看懂图纸上的 5 种核心操作&am…...

Cursor Pro功能完整破解指南:三步实现免费无限使用

Cursor Pro功能完整破解指南&#xff1a;三步实现免费无限使用 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial …...

Adobe-GenP 3.0终极指南:5分钟快速激活Adobe全系列创意软件

Adobe-GenP 3.0终极指南&#xff1a;5分钟快速激活Adobe全系列创意软件 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款专为Adobe Creative Cloud用…...

告别笨重MCU:用纯Verilog在FPGA里实现I2C Slave与EEPROM通信

纯Verilog实现FPGA内I2C从机与EEPROM仿真实战指南 当树莓派需要通过I2C读取传感器数据时&#xff0c;传统方案需要外挂一颗AT24C02之类的EEPROM芯片。但如果你手头正好有闲置的FPGA&#xff0c;完全可以用硬件描述语言在可编程逻辑内部虚拟出一个I2C从设备&#xff0c;既能节省…...

基于YOLOv8的苹果叶片病害检测系统

基于YOLOv8的苹果叶片病害检测系统 系统概述基于YOLOv8深度学习模型的苹果叶片病害检测系统&#xff0c;采用PyQt5构建桌面图形界面&#xff0c;支持多种YOLOv8模型版本选择。系统包含完整的苹果叶片病害数据集、预训练模型和可视化界面&#xff0c;为果农、农业技术人员和研究…...

VR技术如何革新无障碍设计:Empath-D系统实践

1. VR技术赋能无障碍设计的创新实践作为一名长期关注人机交互技术的开发者&#xff0c;我亲历了VR技术从娱乐工具到专业设计辅助的转型过程。Empath-D系统的出现标志着无障碍设计进入了"共情式开发"的新阶段——开发者不再需要凭空想象用户需求&#xff0c;而是能真正…...

手把手教你给STM32H743的0.96寸OLED屏移植STemWin(裸机+FreeRTOS双版本)

STM32H743与0.96寸OLED的STemWin深度移植实战&#xff1a;裸机与RTOS双环境解析 在嵌入式图形界面开发领域&#xff0c;STemWin作为ST官方推出的图形库解决方案&#xff0c;以其高效的渲染性能和丰富的控件资源&#xff0c;成为STM32开发者构建人机界面的首选。本文将聚焦STM32…...