首页 > 其他分享 >1. 数码管的静态动态控制

1. 数码管的静态动态控制

时间:2025-01-18 12:12:36浏览次数:1  
标签:case P2 char 静态 unsigned break 数码管 动态控制

数码管,我的超级LED
![[Pasted image 20250116130225.png]]
![[Pasted image 20250116134916.png]]
![[Pasted image 20250116130421.png]]
多个数码管共引脚连接节省接口
在同一个时刻相同引脚的数码管只能显示相同内容
动态数码管显示是根据人眼视觉残留与数码管余辉实现的
图中COM为公共端(数码管共阴极连接)
74HC245用于数据缓冲,防止传输的数据驱动能力不足

1. 数码管的静态控制

只在一个位置显示一个数字

#include <REGX52.H>

void nixie(unsigned char location, unsigned char number);
unsigned char nixieTable[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E,0x79, 0x71, 0x00};

/*
    @param location 用于确定数码管位置
    @param number 用于传递要在数码管上显示的值
    数码管的静态控制函数
*/
void nixie(unsigned char location, unsigned char number)
{
    switch (location)
    {
    case 1:P2_4 = 1, P2_3 = 1, P2_2 = 1;break;  // LED8    
    case 2:P2_4 = 1, P2_3 = 1, P2_2 = 0;break;  // LED7
    case 3:P2_4 = 1, P2_3 = 0, P2_2 = 1;break;  // LED6
    case 4:P2_4 = 1, P2_3 = 0, P2_2 = 0;break;  // LED5
    case 5:P2_4 = 0, P2_3 = 1, P2_2 = 1;break;  // LED4 
    case 6:P2_4 = 0, P2_3 = 1, P2_2 = 0;break;  // LED3 
    case 7:P2_4 = 0, P2_3 = 0, P2_2 = 1;break;  // LED2 
    case 8:P2_4 = 0, P2_3 = 0, P2_2 = 0;break;  // LED1 

    }
    P0 = nixieTable[number];
}

void main()
{
    nixie(7,8);

    while (1)
    {
        /* code */
    }
    
}

2. 数码管的动态控制

#include <REGX52.H>
#include <INTRINS.H> 

void nixie(unsigned char location, unsigned char number); 
void Delay1ms();
unsigned char nixieTable[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E,0x79, 0x71, 0x00};  

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}

void nixie(unsigned char location, unsigned char number)
{
    switch (location)
    {
    case 1:P2_4 = 1, P2_3 = 1, P2_2 = 1;break;  // LED8    
    case 2:P2_4 = 1, P2_3 = 1, P2_2 = 0;break;  // LED7
    case 3:P2_4 = 1, P2_3 = 0, P2_2 = 1;break;  // LED6
    case 4:P2_4 = 1, P2_3 = 0, P2_2 = 0;break;  // LED5
    case 5:P2_4 = 0, P2_3 = 1, P2_2 = 1;break;  // LED4 
    case 6:P2_4 = 0, P2_3 = 1, P2_2 = 0;break;  // LED3 
    case 7:P2_4 = 0, P2_3 = 0, P2_2 = 1;break;  // LED2 
    case 8:P2_4 = 0, P2_3 = 0, P2_2 = 0;break;  // LED1 

    }
    P0 = nixieTable[number];
}

void main()
{

    while (1)
    {
        nixie(7,8);
        Delay1ms();
        nixie(6,7);
        Delay1ms();
        nixie(1,1);
        Delay1ms();
        nixie(3,2);
        Delay1ms();
    }
    
}

实际上就是多次调用静态控制函数,并再调用一次后加上很小的延迟来起到同时显示的效果

若延迟给的过小或者没有给延迟,则数码管上会出现乱码;这是因为数码管先进行段选择再进行位置选择,多次调用静态控制函数实则在每一次调用后都会进行清零操作,之后再进行数码管段选择位置选择,因为单片机计算速度快导致在显示上人眼会看不出数字。

基于单片机动态控制数码管显示的方法实际上非常耗费硬件资源,实际应该使用专门的芯片来进行图像数据处理(CPU一个个像素点硬算和显卡直接计算打印的区别)

标签:case,P2,char,静态,unsigned,break,数码管,动态控制
From: https://www.cnblogs.com/surime/p/18675015

相关文章

  • 使用jsdelivr加速hexo github pages博客的静态资源
    目录使用介绍LoadanyGitHubrelease,commit,orbranch:Loadexactversion:Useaversionrangeinsteadofanexactversion(onlyworkswithvalidsemverversions):使用hexo将博客部署在githubpages上面,有时候访问速度会比较慢,可以将图片等静态资源,使用jsdelivr进行cd......
  • 如何配置伪静态301跳转和自定义404错误页面?
    在网站开发和运维过程中,配置伪静态301跳转和自定义404错误页面是提升用户体验和搜索引擎优化(SEO)的重要步骤。以下是详细的配置方法:一、配置伪静态301跳转伪静态301跳转可以将旧的URL永久重定向到新的URL,确保用户和搜索引擎能够正确访问新页面,避免流量损失。具体步骤如下:选择......
  • caddy的用法 小型静态服务器
    caddy的用法小型静态服务器欢迎使用Caddy安装Caddy的各种方法快速入门使用API使用Caddyfile静态文件命令行......
  • Java反射、静态代理、动态代理
    概述反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。Spring、mybatis、动态代理、注解都是使用了反射。优点:可以让......
  • 代码审计-PHP原生开发&SQL注入&数据库监控&正则搜索&文件定位&静态分析
    知识点1、PHP审计-原生态开发-SQL注入&数据库语句监控2、PHP审计-原生态开发-SQL注入&正则匹配搜索3、PHP审计-原生态开发-SQL注入&功能追踪代码审计分类:1、原生态开发-代码审计源码案例2、框架类开发-代码审计源码案例3、组件类开发-代码审计源码案例4、前端类开发-代码......
  • 网站内容更新后,首页静态页面无法自动刷新
    您好,关于您提到的网站内容更新后,首页静态页面无法自动刷新的问题,我们将为您提供详细的解决方案。静态页面生成是许多内容管理系统(CMS)中常见的功能,确保每次更新内容后,首页能够及时反映最新的信息。以下是针对您使用织梦CMS的具体指导。分析问题原因缓存机制:您的服务器或浏览......
  • 如何自定义设置伪静态规则?
    关于您提到的如何自定义设置伪静态规则的问题,我们将为您提供详细的解决方案。伪静态(RewriteRules)是一种将动态URL转换为静态URL的技术,可以提高网站的SEO友好性并改善用户体验。不同类型的Web服务器有不同的配置方法,以下是针对几种常见服务器的详细说明。ApacheWeb服务器编辑......
  • 【IO编程】静态库 和 动态库
    在软件开发中,库是一组已编译的代码集合,提供了程序可以直接调用的功能模块(如数学运算、字符串处理、文件操作等)。库的主要作用是提高代码复用性、减少重复开发,并提供标准化功能。什么是库库(Library)是一个包含函数、类或其他可重用代码的集合。开发者在程序中调用库中的函......
  • 静态分析在分支开发主干发布模式下的应用
    静态分析在分支开发主干发布模式下的应用在采用分支开发主干发布模式的项目中,静态分析可以有效地确保每次合并到主干的代码质量。以下是具体的操作步骤和措施,确保变更请求经过审批,并在审批过程中检查静态分析的结果。1.配置管理工具和静态分析工具的集成目标确保静态分......
  • 【Varnish】:解决 Varnish 7.6 CDN 静态资源缓存失效问题
    项目场景:在一个使用Varnish作为反向代理的Web应用中,我们依赖CDN(内容分发网络)来缓存静态资源(如图片、CSS、JavaScript文件等),以提高全球用户的访问速度并减轻源站服务器的负载。然而,在实际运行中,我们遇到了一个问题:CDN缓存的静态资源全部一直回源,导致源站服务器负载过高,响应时间......