应广单片机实现跑马灯
应广单片机处处体现其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. 情景一 单列布局 对于上图这种情况,只需要给el-select加上style"width: 100%"即可,如下: <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…...
【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏: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,加入以下…...
python安装wind10
一、下载: 官网: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 ;高度无法实现由内容撑开,在默认情况下,图片的高度显示总是 150px swiper 宽度 / swiper 高度 原图宽度 / 原图高度 swiper 高度 swiper …...
开源风雷CFD软件多物理场耦合接口开发路线分享!!!
本文将基于开发过程中积累的经验,介绍风雷如何基于preCICE开发适配器。 preCICE是一个开源的多物理场数值模拟耦合库,可以用于多个求解器联合求解一个复杂的多场问题,支持在大规模并行系统上应用,具有良好的并行效率。并且可以对…...
浅谈Mysql读写分离的坑以及应对的方案 | 京东云技术团队
一、主从架构 为什么我们要进行读写分离?个人觉得还是业务发展到一定的规模,驱动技术架构的改革,读写分离可以减轻单台服务器的压力,将读请求和写请求分流到不同的服务器,分摊单台服务的负载,提高可用性&a…...
最近在对接电商供应链,说说开放平台API接口
B2B电商开放平台的设计需要从以下几面去思考: 开放平台API接口的设计,主要是从功能需求的角度,设计满足业务需求的接口及对应的字段; 平台与商家之间信息的对接,对接的方法有哪些?对接过程中需要可能会遇到…...
【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server
【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server HBase从C50迁移到6.5.1(02)C50上准备FTP Server登录老集群FusionInsight C50的Manager准备FTP User准备FTP Server HBase从C50迁移到6.5.1(02&am…...
Java操作符学习笔记
1、布尔类型的逻辑操作符和按位操作符 & 和 &&、|| 和 | 其实是两种操作符。在使用逻辑判断时,有时不希望产生短路作用,会对两个布尔类型值使用单个的 & 或 |运算。这让我一直将单个 & 和 | 当成时逻辑操作符的一种,而事…...
【STM32】学习笔记-PWR(Power Control)电源控制
PWR(Power Control)电源控制 PWR(Power Control)电源控制是一种技术或设备,用于控制电源的开关和输出。它通常用于电源管理和节能,可以通过控制电源的工作状态来延长电子设备的使用寿命,减少能…...
安卓 MeasureCache优化了什么?
安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下,全网居然没有人提过 measureCache。 在前文中提到过,measure的时候,如果命中了 measureCache,会跳过 onMeasure,同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…...
docker save docker export 区别
docker save用于导出镜像到文件,包含镜像元数据和历史信息;docker export用于将当前容器状态导出至文件,类似快照,所以不包含元数据及历史信息,体积更小,此外从容器快照导入时也可以重新指定标签和元数据信…...
音频基础知识
文章目录 前言一、音频基本概念1、音频的基本概念①、声音的三要素②、音量与音调③、几个基本概念④、奈奎斯特采样定律 2、数字音频①、采样②、量化③、编码④、其他相关概念<1>、采样位数<2>、通道数<3>、音频帧<4>、比特率(码率&#…...
TensorFlow(R与Python系列第四篇)
目录 一、TensorFlow介绍 二、张量 三、有用的TensorFlow运算符 四、reduce系列函数实现约减 1-第一种理解方式:引入轴概念后直观可理 2-第二种理解方式:按张量括号层次的方式 参考: 一、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、控制弹框显示和隐藏: 3、右键tr,编辑为html,可直接复制tr部分的代码 4、删除时,点击删除按钮,可以获取图书id: 5、编辑图书 快速赋值表单元素内容,用于回显: 6、hidden …...
互联网摸鱼日报(2023-09-04)
互联网摸鱼日报(2023-09-04) 36氪新闻 腾讯游戏的棋中妙手 逐一解读北交所8大改革组合拳 本周双碳大事:全国碳市场清缴履约工作全面展开;宁德时代在成都成立新能源研究院;我国首个万吨级光伏发电直接制绿氢项目投产 你在上海 city walk&a…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
