【STM32 .Net MF开发板学习-25】LED数码管显示
在单片机系统中,LED数码管的应用是很常见的,不过对我们偏软件开发的人来说,要想研究LED还得储备一定的知识才能进行近一步的工作。不过采用.NET Micro Framework系统,我们马上就可以站在软件人员的角度来研究LED数码管显示0~F数字的原理了。
为了便于演示,我们选用的是一款共阴的单个LED显示数码管,其阴极接GND之前需要串联一个330欧的电阻,其管脚定义如下:
注:左上角pin脚为1脚。
LED数码管和开发板的接线表如下:
序号 |
LED管脚 |
开发板 |
备注 |
1 |
A(10) |
PC0 |
|
2 |
B(9) |
PC1 |
|
3 |
C(8) |
PC2 |
|
4 |
D(5) |
PC3 |
|
5 |
E(4) |
PC4 |
|
6 |
F(2) |
PC5 |
|
7 |
G(3) |
PC6 |
|
8 |
DP(7) |
PC7 |
小数点 |
9 |
1或6 |
GND |
中间接330欧电阻 |
最终器件的接线效果图如下:
为了便于显示数字0、1、2…A、B…F,我们进行了如下编码:
//0 1 2 3 4 5 6 7 8 9 A B C D E F
byte[] DigitalFlag = new byte[] { 0xBF, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71 };
类似字符库中的编码,通过这个编码我们就可以比较容易的显示对应的数字了,相关代码如下:
public void Display(int hex, bool decimalpoint)
{
if (hex < 0 || hex > 15) return;
for (int i = 0; i < 7; i++)
{
LED_Data[i].Write((DigitalFlag[hex] >> i & 0x1) > 0);
}
LED_Data[7].Write(decimalpoint);
}
hex的取值就是0~15,decimalpoint表示是否显示小数点。这些代码编写好后,主程序就非常简单了,相关代码如下:
public static void Main()
{
int i = 0;
while (true)
{
if (i > 15) i = 0;
led.Display(i++, false);
Thread.Sleep(1000);
}
}
演示视频网址:http://video.sina.com.cn/v/b/44112962-1804832611.html
(1)、.NET Micro Framework开发板
http://item.taobao.com/item.htm?id=7117999726
(2)、LED显示相关套件
http://item.taobao.com/item.htm?id=8836634908
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/LEDDisplayTest.rar
MF快速参考: .NET Micro Framework 快速入门
MF中文讨论组:http://space.cnblogs.com/group/MFSoft/
【低价开发板】http://item.taobao.com/item.htm?id=7117999726
参加了博客大赛,请大家投上一票!您的支持,将是我最大的动力,谢谢!http://2010blog.51cto.com/1635641
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?