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

应广单片机实现跑马灯

        应广单片机处处体现其mini的特性,非常适合做各种方案开发,特别是点灯,什么跑马灯,氛围灯,遥控灯,感应灯,拍拍灯等,用应广都OK。

       跑马灯是基础中的基础,我搭了一个框架,要进行扩展或是修改也很容易。不多说,上代码。
#include    "extern.h"

/*调试输出开关,关闭之后测试端口不输出了*/
//#define  DEBUG

/*1m 标记*/
bit msFlag;

/*us计数*/
byte ucUsCnt;
/*ms 计数*/
byte ucMsCnt;


Word    Reload_T16;

/*可以用示波器观察对应端口*/
#ifdef DEBUG
bit US100_OUT  :pa.7     
bit MS_OUT     :pa.6 
bit MS10_OUT   :pa.0  
#endif


byte ucLedst;

BIT     COM1           :       PA.3;

BIT     COM2           :       PA.4;

BIT     COM3           :       PA.6;

BIT     COM4           :       PA.7;


#define  SEG_A  COM4 


#define  SEG_B  COM3 


#define  SEG_C  COM2


#define  SEG_D  COM1

/*中断服务程序*/
void Interrupt(void)
{
    pushaf;
    if(Intrq.T16)
    {    
        STT16    Reload_T16;
        
        Intrq.T16 = 0;

      
       ucUsCnt++;
       if(ucUsCnt>9)
       {
              ucUsCnt=0;
           /*100us*10=1ms*/
           msFlag=1;
       }
        /*100u task,紧急任务放这边,但这里的任务尽量少,
        心脏部位,尽量减少干扰,需要保证tick精准*/
#ifdef DEBUG
     
       if(US100_OUT)
       {
              US100_OUT=0;
       }
       else
       {
             US100_OUT=1;
       }
#endif

    }    
    popaf;
}


/*T16设置*/
Void   Timer16_Init(void)
{
    /*向上计数 1600就发生中断 1600/16M=0.0001s=100us,理论设计*/
    //Reload_T16 = 32768 - 1600;
    
    /*根据测算(示波器校准),除去误差(约为20个sysclk周期),设置1580这个值可能更准确,
    SYSCLK越快,误差越小.从进入中断开始,到重新设置计数器,中间大概需要20个sysclk周期*/
    Reload_T16 = 32768 - 1580;
    
    /*设置计数器值*/
    STT16    Reload_T16;

    /*配置T16 控制寄存器*/
    $ T16M    IHRC,/1,BIT15;
    
    INTRQ.T16 = 0;
    INTEN.T16 = 1;

    
    msFlag=0;
    ucUsCnt=0;

    

    
}


void ShowBatSt(void)
{
       if(ucLedst==0)
       {
           SEG_A=0;
           SEG_B=0;
           SEG_C=0;
           SEG_D=0;
           //ucFlashSegCnt=0;
       }
       else if(ucLedst==1)
       {
           SEG_A=1;
           SEG_B=0;
           SEG_C=0;
           SEG_D=0;
           //ucFlashSegCnt=0;
       }
       else if(ucLedst==2)
       {
           SEG_A=1;
           SEG_B=1;
           SEG_C=0;
           SEG_D=0;
           //ucFlashSegCnt=0;
         
       }

       else if(ucLedst==3)
       {
           SEG_A=1;
           SEG_B=1;
           SEG_C=1;
           SEG_D=0;
           //ucFlashSegCnt=0;
         
       }
       else if(ucLedst==4)
       {
              SEG_A=1;
           SEG_B=1;
           SEG_C=1;
           SEG_D=1;
              //ucFlashSegCnt=20;/*闪烁10s,关机*/
       }
       else if(ucLedst==6)
       {
           SEG_A=0;
           SEG_B=1;
           SEG_C=1;
           SEG_D=1;
           //ucFlashSegCnt=0;
       }
       else if(ucLedst==7)
       {
           SEG_A=0;
           SEG_B=0;
           SEG_C=1;
           SEG_D=1;
           //ucFlashSegCnt=0;
         
       }

       else if(ucLedst==8)
       {
           SEG_A=0;
           SEG_B=0;
           SEG_C=0;
           SEG_D=1;
           //ucFlashSegCnt=0;
         
       }
       else if(ucLedst==9)
       {
              SEG_A=0;
           SEG_B=0;
           SEG_C=0;
           SEG_D=0;
              //ucFlashSegCnt=20;/*闪烁10s,关机*/
       }
       else
       {
       }

      

    
}

void    FPPA0 (void)
{
    /*注意,修改了sysclk,Reload_T16要做细微调整,可以试着改动sysclk,
    会发现Reload_T16误差变大*/
    
    .ADJUST_IC    SYSCLK=IHRC/8,IHRC=16MHz,init_ram,VDD=5V;        

    .delay 20*2000;
    //     $ SHOW_EN in ;

     $ COM1           OUT,low;

     $ COM2           OUT,low;

     $ COM3           OUT,low;

     $ COM4           OUT,low;

    
    /*初始化T16*/
    Timer16_Init();
    
#ifdef DEBUG    
    $ US100_OUT out,low;
    $ MS_OUT out,low;
    $ MS10_OUT out,low;
#endif
    ucLedst=0;
    Engint;

    while (1)
    {
    
        
        /*1ms标记*/
        if(msFlag)
        {
            ucMsCnt++;
            if(ucMsCnt>250)
            {
                /*1ms*10=10ms*/
                ucMsCnt=0;


                  ucLedst++;
                  if(ucLedst>10)
                  {
                       ucLedst=0;
                  }

                  ShowBatSt();
                /*10mstask 放这里*/
            #ifdef DEBUG

                   if(MS10_OUT)
                   {
                          MS10_OUT=0;
                   }
                   else
                   {
                         MS10_OUT=1;
                   }
             #endif
                
            }
           /*1ms task*/
          #ifdef DEBUG
           if(MS_OUT)
           {
                  MS_OUT=0;
           }
           else
           {
                 MS_OUT=1;
           }
           #endif

            msFlag=0;
        }

    }
}
/*creat by zhongvv QQ85547259*/

相关文章:

应广单片机实现跑马灯

应广单片机处处体现其mini的特性,非常适合做各种方案开发,特别是点灯,什么跑马灯,氛围灯,遥控灯,感应灯,拍拍灯等,用应广都OK。 跑马灯是基础中的基础,我搭了一个框架&am…...

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…...

【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

VScode连接远程JupyterNotebook显示点云ply文件

1. remote ssh的配置文件config中添加 Host Jupyter-ServerHostName <IP>ForwardX11 yesForwardX11Trusted yesForwardAgent yesUser <Username> 2. 在远程服务器的.sshd_config中把X11forward的开关打开为yes 3. 在home文件夹中更改.bashrc&#xff0c;加入以下…...

python安装wind10

一、下载&#xff1a; 官网:Python Releases for Windows | Python.org 二、安装 双击下载的安装程序文件。这将打开安装向导。安装界面图下方两个框的" Use admin privileges wheninstalling py. exe和” Add python. exe to PATH"都要勾选,一定要勾选!一定要勾选…...

uni-app 中 swiper 轮播图高度自适应

方法一 1、首先 swiper 标签的宽度是 width: 100% 2、swiper 标签存在默认高度是 height: 150px &#xff1b;高度无法实现由内容撑开&#xff0c;在默认情况下&#xff0c;图片的高度显示总是 150px swiper 宽度 / swiper 高度 原图宽度 / 原图高度 swiper 高度 swiper …...

开源风雷CFD软件多物理场耦合接口开发路线分享!!!

本文将基于开发过程中积累的经验&#xff0c;介绍风雷如何基于preCICE开发适配器。 preCICE是一个开源的多物理场数值模拟耦合库&#xff0c;可以用于多个求解器联合求解一个复杂的多场问题&#xff0c;支持在大规模并行系统上应用&#xff0c;具有良好的并行效率。并且可以对…...

浅谈Mysql读写分离的坑以及应对的方案 | 京东云技术团队

一、主从架构 为什么我们要进行读写分离&#xff1f;个人觉得还是业务发展到一定的规模&#xff0c;驱动技术架构的改革&#xff0c;读写分离可以减轻单台服务器的压力&#xff0c;将读请求和写请求分流到不同的服务器&#xff0c;分摊单台服务的负载&#xff0c;提高可用性&a…...

最近在对接电商供应链,说说开放平台API接口

B2B电商开放平台的设计需要从以下几面去思考&#xff1a; 开放平台API接口的设计&#xff0c;主要是从功能需求的角度&#xff0c;设计满足业务需求的接口及对应的字段&#xff1b; 平台与商家之间信息的对接&#xff0c;对接的方法有哪些&#xff1f;对接过程中需要可能会遇到…...

【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server

【FusionInsight 迁移】HBase从C50迁移到6.5.1&#xff08;02&#xff09;C50上准备FTP Server HBase从C50迁移到6.5.1&#xff08;02&#xff09;C50上准备FTP Server登录老集群FusionInsight C50的Manager准备FTP User准备FTP Server HBase从C50迁移到6.5.1&#xff08;02&am…...

Java操作符学习笔记

1、布尔类型的逻辑操作符和按位操作符 & 和 &&、|| 和 | 其实是两种操作符。在使用逻辑判断时&#xff0c;有时不希望产生短路作用&#xff0c;会对两个布尔类型值使用单个的 & 或 |运算。这让我一直将单个 & 和 | 当成时逻辑操作符的一种&#xff0c;而事…...

【STM32】学习笔记-PWR(Power Control)电源控制

PWR&#xff08;Power Control&#xff09;电源控制 PWR&#xff08;Power Control&#xff09;电源控制是一种技术或设备&#xff0c;用于控制电源的开关和输出。它通常用于电源管理和节能&#xff0c;可以通过控制电源的工作状态来延长电子设备的使用寿命&#xff0c;减少能…...

安卓 MeasureCache优化了什么?

安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下&#xff0c;全网居然没有人提过 measureCache。 在前文中提到过&#xff0c;measure的时候&#xff0c;如果命中了 measureCache&#xff0c;会跳过 onMeasure&#xff0c;同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…...

docker save docker export 区别

docker save用于导出镜像到文件&#xff0c;包含镜像元数据和历史信息&#xff1b;docker export用于将当前容器状态导出至文件&#xff0c;类似快照&#xff0c;所以不包含元数据及历史信息&#xff0c;体积更小&#xff0c;此外从容器快照导入时也可以重新指定标签和元数据信…...

音频基础知识

文章目录 前言一、音频基本概念1、音频的基本概念①、声音的三要素②、音量与音调③、几个基本概念④、奈奎斯特采样定律 2、数字音频①、采样②、量化③、编码④、其他相关概念<1>、采样位数<2>、通道数<3>、音频帧<4>、比特率&#xff08;码率&#…...

TensorFlow(R与Python系列第四篇)

目录 一、TensorFlow介绍 二、张量 三、有用的TensorFlow运算符 四、reduce系列函数实现约减 1-第一种理解方式&#xff1a;引入轴概念后直观可理 2-第二种理解方式&#xff1a;按张量括号层次的方式 参考&#xff1a; 一、TensorFlow介绍 TensorFlow是一个强大的用于数…...

华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)

第261题 以下关于IPv6过渡技术的描述,正确的是哪些项? A、转换技术的原理是将IPv6的头部改写成IPv4的头部,或者将IPv4的头部改写成IPv6的头部 B、使用隧道技术,能够将IPv4封装在IPv6隧道中实现互通,但是隧道的端点需要支持双栈技术 C、转换技术适用于纯IPv4网络与纯IPv…...

论文《基于概率标签估计的半监督日志缺陷检测》翻译

论文《Semi-supervised Log-based Anomaly Detection via Probabilistic Label Estimation》翻译 Semi-supervised Log-based Anomaly Detection via Probabilistic Label Estimation翻译...

ajax day2

1、 2、控制弹框显示和隐藏&#xff1a; 3、右键tr&#xff0c;编辑为html&#xff0c;可直接复制tr部分的代码 4、删除时&#xff0c;点击删除按钮&#xff0c;可以获取图书id&#xff1a; 5、编辑图书 快速赋值表单元素内容&#xff0c;用于回显&#xff1a; 6、hidden …...

互联网摸鱼日报(2023-09-04)

互联网摸鱼日报(2023-09-04) 36氪新闻 腾讯游戏的棋中妙手 逐一解读北交所8大改革组合拳 本周双碳大事&#xff1a;全国碳市场清缴履约工作全面展开&#xff1b;宁德时代在成都成立新能源研究院&#xff1b;我国首个万吨级光伏发电直接制绿氢项目投产 你在上海 city walk&a…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...