独立按键控制LED数码管

news/2025/3/31 17:09:38/文章来源:https://www.cnblogs.com/luckydoog/p/18798811

前言

通过1个独立按键,控制LED数码管显示字符。

结合之前我的两篇文章

  • 独立按键控制LED流水灯方向 https://www.cnblogs.com/luckydoog/p/18796974

  • 数码管静态显示 https://www.cnblogs.com/luckydoog/p/18797690

效果

原理

提前在程序里存储共阴极数码管的编码表,能表示的字符范围为

0-9,A,B,C,D,E,F,H,L,N,U,P,O,-

用数组存储这些字符对应的 P0 的编码

然后根据独立按键,改变数组下标,就可以达到改变数码管显示的字符的效果了。

共阴极数码管编码表

uchar code leddata[]={0x3F,  //"0"0x06,  //"1"0x5B,  //"2"0x4F,  //"3"0x66,  //"4"0x6D,  //"5"0x7D,  //"6"0x07,  //"7"0x7F,  //"8"0x6F,  //"9"0x77,  //"A"0x7C,  //"B"0x39,  //"C"0x5E,  //"D"0x79,  //"E"0x71,  //"F"0x76,  //"H"0x38,  //"L"0x37,  //"n"0x3E,  //"u"0x73,  //"P"0x5C,  //"o"0x40,  //"-"0x00  //熄灭};

遇到点问题

报错是说找不到 nop 这个指令的声明
其实 nop 空操作 8051 NOP 指令 是定义在 INTRINS.H 这个头文件里的
加上头文件 #include <INTRINS.H> 就OK了

完整代码

#include <REGX52.H>
#include <INTRINS.H>unsigned char data_total = 23;
unsigned char led_data[]={0x3F,  //"0"0x06,  //"1"0x5B,  //"2"0x4F,  //"3"0x66,  //"4"0x6D,  //"5"0x7D,  //"6"0x07,  //"7"0x7F,  //"8"0x6F,  //"9"0x77,  //"A"0x7C,  //"B"0x39,  //"C"0x5E,  //"D"0x79,  //"E"0x71,  //"F"0x76,  //"H"0x38,  //"L"0x37,  //"n"0x3E,  //"u"0x73,  //"P"0x5C,  //"o"0x40,  //"-"0x00  };void Delay1ms()		//@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}void Delay(int t){int i = 0;for(i=0;i<t;i++){Delay1ms();}
}void main()
{unsigned char data_pos = 0;P2_2 = 0;P2_3 = 0;P2_4 = 0;P0 = led_data[data_pos];while(1){if(0 == P3_1){Delay(10);while(0 == P3_1){//nop}Delay(10);  data_pos++;if(data_total == data_pos){data_pos = 0;}P0 = led_data[data_pos];}Delay(500);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907314.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day:32 jmeter操作数据库——参数化

一、数据库通过用户参数设置变量 1、建一个查询的jdbs请求2、前置处理器中添加用户参数3、修改线程数4、查看结果二、txt文档实现参数化 1.编辑sql语句中导入变量${变量名}新建一个txt文档:data 命名导入txt文档运行以上内容是将sql语句写入到txt文档中引用 2. 将数据写入txt文…

20242214 实验二《Python程序设计》实验报告

20242214 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2422 姓名: 陈冯 学号:20242214 实验教师:王志强 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善:在VS…

SvelteKit 最新中文文档教程(13)—— Hooks

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

day:32 jmeter操作数据库——安装及认识

一、jmeter数据库安装 1.下载数据驱动,安装数据驱动2、存放四个路径a.jre下的lib C:\ProgramFiles\Java\jre1.8.0_60\libb、存放在jre 下的lib 中的ext 路径: C:\ProgramFiles\Java\jre1.8.0_60\lib\extc、存放在jmeter下的lib 路径:D:\dcs\ruanjian\java\apache-jmeter-3.…

56. W5500以太网模块

一、W5500以太网模块W5500 是一款由 WIZnet 公司生产的以太网控制芯片,它集成了一个全双工的 10/100Mbps 以太网 MAC 和 PHY,以及一个硬件的 TCP/IP 协议栈。W5500 芯片通常被用于嵌入式系统中,为微控制器提供网络连接的能力,使得设备能够通过以太网进行数据传输和通信。W5…

[CF 1870E] Another MEX Problem

思路给你一个序列 \(a\), 让你选出一些不交的子段, 使得它们的 \(\rm{MEX}\) 的异或和最大不难发现因为是异或和, 可以简单转化成 \(\mathcal{O} (n^3)\) 的可行性 \(\rm{dp}\) 然后我进行了对固定右端点 \(r\) 一些优化尝试, 发现都比较寄 然后发现这个题, 它, 对, 右端点, 进…

ChatGPT-4o 更新:原生图像生成技术详解:自回归路线的逆袭

一种新的图像生成范式正在崛起,它不再依赖传统的扩散过程,而是用语言的方式“写”出图像。2025年3月,OpenAI 在更新 GPT-4o 的同时,低调上线了其“原生图像生成”功能。这一功能被嵌入到 GPT-4o 的多模态架构中,与文本、音频等能力无缝协同,带来了显著提升的图像生成质量…