单片机LED点阵的介绍

发布者:EtherealBeauty最新更新时间:2017-11-15 来源: eefocus关键字:单片机  LED点阵 手机看文章 扫描二维码
随时随地手机看文章

点阵 LED 显示屏作为一种现代电子媒体,具有灵活的显示面积(可任意分割和拼装)、高亮度、长寿命、数字化、实时性等特点,应用非常广泛。

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

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

图7-2 8*8点阵结构原理图

从图7-2上可以看出,其实点阵 LED 点亮原理还是很简单的。在图中大方框外侧的就是点阵 LED 的引脚号,左侧的8个引脚是接的内部 LED 的阳极,上侧的8个引脚接的是内部 LED 的阴极。那么如果我们把9脚置成高电平、13脚置成低电平的话,左上角的那个 LED 小灯就会亮了。下面我们就用程序来实现一下,特别注意,控制点阵左侧引脚的 74HC138 是原理图上的 U4,8个引脚自上而下依次由 U4 的 Y0~Y7 输出来控制。

#include 

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 的整体赋值我们可以一次点亮点阵的一行,那么这次我们用程序来点亮点阵的第二行,对应的就需要编号 U4 的 74HC138 在其 Y1 引脚输出低电平了。

#include 

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 

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,定时 1 ms
    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;
    }
}


关键字:单片机  LED点阵 引用地址:单片机LED点阵的介绍

上一篇:单片机LED点阵的纵向移动
下一篇:单片机LED点阵的图形显示

推荐阅读最新更新时间:2024-03-16 15:45

MCS-51单片机访问超大容量存储器的实现
1 引言 MCS-51系列单片机有着优越的性价比,因此应用面宽,使用量也非常大;然而它只有16位地址线,最大能访问的存储空间为64K,且扩展接口与存储器统一编址,扩展接口会占用大量的地址空间,致使该系列单片机在数据量大的数据采集系统中,存储空间明显不足。 笔者最近在开发一数据采集系统时,经分析、探索,找到了解决的办法。 2 使用大容量存储器的原理 2.1 使扩展接口不占用单片机的存储地址空间 由于MCS-51单片机的扩展接口与存储器统一编址,采用常规的方法扩展接口时会占用大量的地址空间,而多数应用系统均会要求扩展接口(本例有七段LED的段输出口、位输出口、键盘口各一个),为此,使扩展接口不占用单片机的存储地址
[单片机]
MCS-51<font color='red'>单片机</font>访问超大容量存储器的实现
基于51单片机的语音合成模块
#include main.h bit bSysHalfSec; u8 TimeWaitCnt = 0; u8 code PrevFile = {0xAA, 0x05,0x00, 0xAF};/*此数组指令可以直接由上位机生成,复制过来即可 */ u8 code NextFile = {0xAA, 0x06, 0x00, 0xB0}; u8 code Path = {0xAA, 0x08, 0x10, 0x02, 0x2F, 0xB9, 0xE3, 0xB8, 0xE6, 0x2A, 0x2F, 0xD0, 0xA1, 0xC3, 0xD7, 0x2A, 0x4D, 0x50, 0x33, 0x8B, }; // flas
[单片机]
基于51<font color='red'>单片机</font>的语音合成模块
IC卡型H8/310系列单片机H8/310SeriesMicrocomputer
    摘要:H8/310系列单片机是日立公司生产的用于制作IC卡的专用8位单片机,该系列单片机有三种型号,具有相同的CPU和指令系统,仅在特性上稍有不同。文章介绍了H8/310系列IC卡型单片机的特性结构、指令系统及软件编程。      关键词:IC卡;单片机;指令;软件     IC 卡是一种把单片机和存贮器结合为一体的塑料智能卡片,与磁卡相比,它具有更好的保密措施和更大的存贮能力。 IC 卡能满足多功能卡的各种要求,目前已被广泛应用。 H8/310 系列八位单片机是日本日立公司生产的专门用于 IC 卡的专用单片机系列。 IC 卡专用单片机与通用单片机相比具有特殊的封装形式,即该封装必须要超薄,引脚少并带有 EE
[应用]
AVR单片机(学习ing)—(二)、ATMEGA16的中断系统—02
二、ATMEGA16的中断系统 二—(02)、4*4行列式按键的睡眠模式中断唤醒 废话不多说了,上一篇有这一片所用的寄存器,所以你要想看这篇,还是建议看看上一篇 ,当然要是会~~~ 直接上图~~~ 好了,下面的就是程序了(这里要注意一下,Proteus中的二极管的作用,一定要弄明白~~呵呵,虽然我不明白~~笨死了~~但是有一点我是知道的,防止回流,但是为什么这么接~~我蛋疼了~~不会啊) //------------------------------------------------------------------------------ //4*4行列式按键的睡眠模式中断唤醒实验 //其中睡眠模式再 intri
[单片机]
AVR<font color='red'>单片机</font>(学习ing)—(二)、ATMEGA16的中断系统—02
c51单片机中断号及中断向量
1、外部中断 0、 1;分别由引脚/INT0、/INT1的电平信号引起。 2、定时/计数器 0、1;分别由T0、 T1的溢出引起。 3、串行口发送、接收;发送完一个字节或接收到一个字节引起。 上述共5个中断源。 一、中断号 外部中断0 0 定时器T0 1 外部中断1 2 定时器T1 3 串口中断 4 二、 interrupt 和 using 在C51中断中的使用 8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个
[单片机]
c51<font color='red'>单片机</font>中断号及中断向量
AT89C51单片机驱动128x64液晶显示C语言
/******************************************************************* AT89C51单片机驱动128x64液晶显示C语言 ****************************************************************/ #include AT89x51.h #define uchar unsigned char /***************************************** 电路连接 P1------DB0~DB7 P2.0------RS P2.1------RW P2.2------E *******
[单片机]
基于单片机+FPGA频谱分析仪系统电路设计详解
  目前,由于频谱分析仪价格昂贵,高等院校只是少数实验室配有频谱仪。但电子信息类教学,如果没有频谱仪辅助观察,学生只能从书本中抽象理解信号特征,严重影响教学实验效果。针对这种现状提出一种基于FPGA的简易频谱分析仪设计方案,其优点是成本低,性能指标满足教学实验所要求的检测信号范围。   设计方案   图1为系统设计总体框图。该系统采用C8051($8.5125)系列单片机中的 C8051($8.5125)F121作为控制器,CvcloneⅢ系列EP3C40F484C8($86.5000)型FPGA为数字信号算法处理单元。系统设计遵循抽样定理,在时域内截取一段适当长度信号,对其信号抽样量化,按照具体的步骤求取信号的频谱,并在LCD上
[单片机]
基于<font color='red'>单片机</font>+FPGA频谱分析仪系统电路设计详解
基于单片机和PWM控制方法调速实现无刷控制器检测设计
引言 伴随着城市化进程,人们生活的交通距离不断扩大,代替燃油汽车和自行车的电动车的普及大幅度的提高了电力资源的利用效率,促进了国民经济的健康发展。电动自行车以电力作动力,骑行中不产生污染,无损于空气质量。从改善人们的出行方式、保护环境和经济条件许可情况等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。电动自行车所用直流电机分为有刷电机和无刷电机两种。其中有刷电机控制较简单。但其易磨损的电刷带来维修保养工作量相对较大、使用寿命相对较短等缺点。而直流无刷电机本身没有易磨损部件,电机寿命长,维修保养工作量小。但直流无刷电机采用电子换向原理工作,其控制过程比有刷电机复杂得多,因此对控制器质量的要求也高得多。 目前电动自行车采
[单片机]
基于<font color='red'>单片机</font>和PWM控制方法调速实现无刷控制器检测设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved