您好,欢迎访问38坊节能led灯有限公司!
全国咨询热线+86 0000 8968772
38坊_38坊网址-亚洲顶级国际

新闻动态

NEWS CENTER
单片机LED点阵的先容
发布时间:2021-02-16 08:59浏览次数:

点阵 LED 显示屏作为一种现代电子媒体,具有机动的显示面积(可任意支解和拼装)、高亮度、长命命、数字化、及时性等特点,应用很是遍及。

前边学了 LED 小灯和 LED 数码管后,学 LED 点阵就要轻松得多了。一个数码管是 8 个LED 构成,同理,一个 8*8 的点阵就是由 64 个 LED 小灯构成。图 7-1 就是一个点阵 LED 最小单位,即一个 8*8 的点阵 LED,图 7-2 是它的内部布局道理图。

图 7-1  8*8LED 点阵外观


图 7-1  8*8LED 点阵外观

图 7-2  8*8 点阵布局道理图


图 7-2  8*8 点阵布局道理图


从图 7-2 上可以看出,其实点阵 LED 点亮道理照旧很简朴的。在图中大方框外侧的就是点阵 LED 的引脚号,左侧的 8 个引脚是接的内部 LED 的阳极,上侧的 8 个引脚接的是内部LED 的阴极。那么假如我们把 9 脚置成高电平、13 脚置成低电平的话,左上角的谁人 LED小灯就会亮了。下面我们就用措施来实现一下,出格留意,节制点阵左侧引脚的 74HC138是道理图上的 U4,8 个引脚自上而下依次由 U4 的 Y0~Y7 输出来节制。 #include <reg52.h> sbit LED = P0^0; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main(){ ENLED = 0; //U3、U4 两片 74HC138 总使能 ADDR3 = 0; //使能 U4 使之正常输出 ADDR2 = 0; //经 U4 的 Y0 输出开启三极管 Q10 ADDR1 = 0; ADDR0 = 0; LED = 0; //向 P0.0 写入 0 来点亮左上角的一个点 while(1); //措施遏制在这里 }
那么同样的要领,通过对 P0 的整体赋值我们可以一次点亮点阵的一行,那么这次我们用措施来点亮点阵的第二行,38坊网址,对应的就需要编号 U4 的 74HC138 在其 Y1 引脚输出低电平了。 #include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main(){ ENLED = 0; //U3、U4 两片 74HC138 总使能 ADDR3 = 0; //使能 U4 使之正常输出 ADDR2 = 0; //经 U4 的 Y1 输出开启三极管 Q11 ADDR1 = 0; ADDR0 = 1; P0 = 0x00; //向 P0 写入 0 来点亮一行 while(1); //措施遏制在这里 } 从这里我们可以慢慢发明点阵的节制道理了。我们前面讲了一个数码管就是 8 个 LED 小灯,一个点阵是 64 个 LED 小灯。同样的原理,我们还可以把一个点阵领略成是 8 个数码管。颠末前面的进修已经把握了 6 个数码管同时显示的要领,那 8 个数码管也应该轻轻松松了。下面我们就操作按时器间断和数码管动态显示的道理来把这个点阵全部点亮。 #include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main(){ EA = 1; //使能总间断 ENLED = 0; //使能 U4,选择 LED 点阵 ADDR3 = 0; //因为需要动态改变 ADDR0-2 的值,所以不需要再初始化了 TMOD = 0x01; //配置 T0 为模式 1 TH0 = 0xFC; //为 T0 赋初值 0xFC67,按时 1ms TL0 = 0x67; ET0 = 1; //使能 T0 间断 TR0 = 1; //启动 T0 while (1); //措施停在这里,期待按时器间断 } /* 按时器 0 间断处事函数 */ void InterruptTimer0() interrupt 1{ static unsigned char i = 0; //动态扫描的索引 TH0 = 0xFC; //从头加载初值 TL0 = 0x67; //以下代码完成 LED 点阵动态扫描刷新 P0 = 0xFF; //显示消隐 switch (i){ case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=0x00; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=0x00; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=0x00; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=0x00; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=0x00; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=0x00; break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=0x00; break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=0x00; break; default: break; } }

在线客服
联系电话
全国免费咨询热线 +86 0000 8968772
  • · 专业的设计咨询
  • · 精准的解决方案
  • · 灵活的价格调整
  • · 1对1贴心服务
在线留言
回到顶部