(六)数码管动态刷新

news/2024/5/21 10:43:26 标签: 蓝桥杯, 单片机, c语言, 嵌入式

文章目录

  • 如何实现
    • 利用人眼的余晖效应(100hz无闪烁)
    • 1ms刷一个数码管 8个看起来就是一块亮的
  • 结合前面内容进行操作
    • 前面内容传送门:
    • 如何==段==选
      • 原理图
      • 代码写法
      • 这里借助isp复制==共阴==数码管码值
    • 如何==位==选
      • 原理图
      • 代码写法
    • 如何消隐
      • 在每次 段选 赋值之前 不选通位 即可
      • 代码写法
    • 综上一次性刷新8个数码管代码
  • 程序现象


如何实现

利用人眼的余晖效应(100hz无闪烁)

1ms刷一个数码管 8个看起来就是一块亮的


结合前面内容进行操作

前面内容传送门:

(二)搞定烦人的蜂鸣器和继电器

如何

原理图

在这里插入图片描述

通过分析 P2 赋值 0xe0;P0 赋值 所要显示的 字码(数字或者字母)

比如:显示0 P0赋值 0xc0 ;显示1 P0赋值 0xf9

代码写法

DeviceCtrl(0xe0,0xc0);// 显示‘0’

这里借助isp复制共阴数码管码值

当然比赛资源包里面会提供共阳码值

在这里插入图片描述
在这里插入图片描述

数组改名为smgcode,并添加一个0x00—灭的码值

u8 code smgcode[]={                       //标准字库
//   0    1    2    3    4    5    6    7    8    9    
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,
};

这个数组的码值是 共阴码值 需要取反


如何

原理图

在这里插入图片描述
通过分析 P2 赋值 0xC0;P0 赋值 所要选通的 位(也就是第几个数码管)

比如:选通com1,P0赋值0x01;

代码写法

DeviceCtrl(0xc0,0x01);//com1

如何消隐

在每次 段选 赋值之前 不选通位 即可

代码写法

DeviceCtrl(0xc0,0x00);//不选通位

综上一次性刷新8个数码管代码

#include "smg.h"

u8 code smgcode[]={                       //标准字库
//   0    1    2    3    4    5    6    7    8    9    
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,
};
u8 smgbuf[8];

void ScanSmgTask()
{
	static u8 i =0;
	
	DeviceCtrl(0xC0,0x00);//消隐
	DeviceCtrl(0xe0,~smgbuf[i]);//duan
	DeviceCtrl(0xC0,0x01<<i);//com
	i++;
	if(i>=8){
		i = 0;
	}
}

说明:只需将ScanSmgTask();在之前开启的1ms定时器2中断服务函数中调用即可;

定时器2中断开启传送门:

(四)开启定时器2中断

另外:smgbuf 在主函数被赋值smgcode了,写smgcode效果是一样的

比如 将 smgbuf里面的缓存 修改成 2020 :

在这里插入图片描述


程序现象

在这里插入图片描述



----- 如有错误欢迎大家批评指正!!!


http://www.niftyadmin.cn/n/5299794.html

相关文章

软件测试方法都有哪些分类

按开发阶段划分 1,单元测试 (Unit Testing) 又称模块测试。对软件的组成单位进行测试,其目的是检验软件 基本组成单位的正确性。测试的对象的是软件测试的最小单位:模块。 2,集成测试 (Integration Testing) 集成测试也称联合测试(联调)、组装测试:将程序模块采用适…

计算机网络课程设计-企业网三层架构

&#xff08;单人版&#xff09; 摘 要 本篇报告主要解决了为一家名为西宫的公司网络搭建问题&#xff0c;该网络采用企业网三层架构对完了过进行设计。首先使用以太网中继&#xff0c;主要使用VLAN划分的技术来划定不同部门。使用MSTP对每个组配置生成树&#xff0c;防止交换机…

用户管理第2节课 -- idea 2023.2 创建表--鱼皮

二、【先确定idea版本&鱼皮是否一致&#xff0c;再决定看不看这行】建表 2.1 idea 里连接数据库&#xff0c;通过可视化建表 2.1.1 清空表中数据 的 命令 truncate 清空 2.1.2 先输入删除表&#xff0c;的命令&#xff0c;再选中这行命令&#xff0c;执行&#xff0c;…

计算机科学专业选网络安全方向咋样?

结论&#xff1a;慎重选择 原因&#xff1a;不妨看看学校相关方向的培养方案 如果学校真的是想让你成为一流网安人才的话 过来人告诉你&#xff1a; 计科的课你得上 不是计科的课你也得上(一般是数学课&#xff0c;比如密码学&#xff0c;数论) 还得在计算机系统基础实验…

python 1200例——【17】日期、时间操作汇总

Python中处理日期和时间可以使用标准库中的datetime模块。 请添加图片描述 以下是一些常用的日期和时间操作: 导入datetime模块:import datetime获取当前日期和时间:now = datetime.datetime.now() print(now)格式化日期和时间:formatted_now = now.strftime("%Y-%m-…

NodeJs - Chrome内存分析工具使用

NodeJs - Chrome内存分析工具使用 一. 前期准备二. Chrome 内存分析工具使用2.1 查看快照2.2 使用案例 一. 前期准备 我们下载好相关依赖&#xff1a; npm i v8-profiler-next测试代码&#xff1a; const v8Profiler require(v8-profiler-next) const fs require(fs)funct…

电脑病毒感染 - 华为OD统一考试

OD统一考试 题解&#xff1a; Java / Python / C 题目描述 一个局域网只内有很多台电脑&#xff0c;分别标注为 1 ~ N 的数字。相连接的电脑距离不一样&#xff0c;所以感染时间不一样&#xff0c;感染时间用t 表示。 其中网络内一台电脑被病毒感染&#xff0c;求其感染网络内…

普中STM32-PZ6806L 使用FlyMcu串口烧录程序

简介 我的串口下载电路坏掉了, 所以研究了下如何通过USB转TTL进行程序的下载, 为后续Bootloader部分做准备;连接 我的板几乎是十年前买的&#xff0c; 所以电路与现有网上的资料有些差异, 所以仅供参考 USB 转 TTL线 与开发板 连接&#xff0c; 如图图中 ①, 需要去掉第一个…