LED点阵显示与编程

发布者:快乐飞翔最新更新时间:2018-01-14 来源: eefocus关键字:LED  点阵显示  编程 手机看文章 扫描二维码
随时随地手机看文章

点阵的显示原理是行扫描列发送字码,或者是列扫描行发送字码。当点阵屏大于16×16时,普通的32个I/O口的 单片机 是无法直接连接了,必须通过串行输入/输出寄存器或者锁存器等I/O口扩展,例如锁存器:74HC373、74HC273等;串行输入并行输出寄存器:74HC595、74HC164等;I/O口扩展芯片:8255、8155等。


一、74HC273连接的16×16点阵示例

74HC273是8位数据/地址锁存器,D0~D7为数据出入端;Q0~Q7为数据输出端;WR为主清除端,低电平触发,将锁存数据清零;CLK是触发端,上升沿触发,即当CLK从低到高电平时,D0~D7的数据通过芯片输出到Q0~Q7,为0时将数据锁存。

 

74HC273的测试程序如下:

#include
sbit CLK=P3^0 ;
sbit MR=P3^1;
#define uchar unsigned char
#define uint unsigned int
//数码管字型表,对应0,1,2,3,4,5,6,7,8,9//
uchar Table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(uint i )        
{
   uchar j;
   for(;i!=0;i--)
      {for(j=200;j!=0;j--) ;}   
}


void main(void) 

uchar N;
MR=1;
while(1)
   { 
     for(N=0;N<10;N++)
       { 
        CLK=0;
        Delay(300);     //延时为了方便看到管脚电平变化
        P2=Table[N];
        CLK=1;
        Delay(300);
       }
     MR=!MR;
   } 
}
测试效果如下
利用74HC237连接的点阵如下图所示:
显示扫描方式也可以分为行扫描和列扫描,行扫描时,U1先输出行码依次扫描第1至第8行,同时U3输出第1行的左半部分列码,U4再输出第1行右半部分列码;扫描完1至8行后U2扫描8至16行,同时U3、U4输出对应的列码,这样就可以显示了。这仅仅是为了说明74HC273的连接图,不是最好的点阵连接方式,大家可以自己优化电路图。

二、74HC164与8255连接的点阵示例
    图中8255的PA、PB输出端应加上拉电阻(300Ω~1KΩ)。ULN2803为增加驱动列能力。
5288的地址:PA口为0000H、PB口为0100H、PK(控制)口为0300H。使用逐列扫描方式。
以显示四个静态的“欠一个吻”为例,参考程序如下:
#include
#includeCC.h>
#define PA8255 XBYTE[0X0000]
#define PB8255 XBYTE[0X0100]
#define PK8255 XBYTE[0X0300]
#define uhar unsigned char
uchar code Hzdot[]={
0x80,0x40,0x40,0x40,0x20,0x20,0x18,0x20,0x0F,0x10,0x0A,0x0C,0x08,0x03,0xE8,0x00,
0x08,0x03,0x08,0x0C,0x48,0x10,0x28,0x30,0x18,0x60,0x08,0x20,0x00,0x20,0x00,0x00,/*"欠",0*/
0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,/*"一",1*/
0x00,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x0C,0x00,0xE3,0x7F,
0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x60,0x00,0xC0,0x00,0x40,0x00,0x00,0x00,/*"个",2*/
0x00,0x00,0xFC,0x07,0x04,0x02,0x04,0x02,0xFC,0x03,0x40,0x48,0x30,0x44,0x0F,0x23,
0xCA,0x10,0x38,0x0C,0x08,0x03,0xF8,0x40,0x08,0x80,0x08,0x60,0xF8,0x1F,0x00,0x00/*"吻",3*/
};
uchar a,i,t,x[8]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
char b;
void main(void)
{
PK8255=0X80;
while(1)
{
    for(a=0;a<64;a++)
   {
    PA8255=0x00;
    PB8255=0x00;
    for(b=7;b>=0;b--)
      {
    SBUF=~x[b];
    while(!TI) ;TI=0;
    }
    PA8255=hzdot[2*a];
    PB8255=hzdot[2*a+1];
    for(i=0;i<8;i++)
      {
    if((x[7]&0x01)==0) goto LP;
    if((~x[i]!=0)&&((x[i]&0x01)!=0))
       x[i]=x[i]<<7|x[i]>>1;
    else if((~x[i]!=0)&&((x[i]&0x01)==0))
       {
     x[i]=0xff;
     x[i+1]=0x7f;
     break;
     }
    }
   }
LP:x[0]=0x7f;x[7]=0xff;
}
}
三、74HC595连接的点阵示例
    很多点阵都是使用74HC595连接的,74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻关断三态输出功能。 
   74HC595的功能表如下:

为了形象的演示74HC595的功能,编写如下测试程序:
#include
#define uint unsigned int
#define uchar unsigned char
sbit DS=P3^4;      //74HC595的数据串行输入端口
sbit ST=P3^7;      //74HC595并行输出使能
sbit SH=P3^6;      //74HC595移位寄存器移位使能
//测试串行传输数据:
uchar code Test[]={0xFF,0x00,0xAA,0xCC,0xEE,};
//******延时子程序******//
void delay(uint a)  
{
   uint i,j;
   for(i=0;i   for(j=0;j<4;j++);
}
void SendByte(uchar date)   
{
uchar i;
for(i=0;i<8;i++)
   {
SH=0;
ST=0;
if(date&0x80)   //将date最高位移到74HC595的移位寄存器
DS=1;
else
DS=0;
SH=1;     //SH上升沿时移位
ST=1;     //ST上升沿时输出数据
date=date<<1;   //左移一位,将送出第二位数据
delay(5000);
}
}
//****主函数****//
void main()
{
uchar i;
while(1)
    { 
for(i=0;i<5;i++) 
    SendByte(Test[i]); 
    }
}
测试是依次输出0xFF,0x00,0xAA,0xCC,0xEE几个数据,在点阵显示程序中,是将数据全部送到74HC595的移位寄存器,再同时显示出来,并不是像下图所示一个一个流动显示,这个仅仅是测试数据的传输路径。

  ORG 0000H
    LJMP STAR
    ORG 0BH
    LJMP INTT0
STAR: MOV 20H,#00H
       MOV A,#0FFH
    MOV R7,#0
    MOV P1,A
    MOV P2,A
    MOV P3,A
    MOV P0,A
    CLR P1.6
    MOV TMOD,#01H
    MOV TH0,#0FEH
    MOV TL0,#18H
    MOV SCON,#0
    MOV IE,#82H
    MOV SP,#70H
    MOV R0,#0
MAIN: LCALL DIS1
    MOV DPTR ,#TAB
    LCALL MOV DISP
    LJMP MAIN
MOV DISP:MOV B,#00H
DISLOOP: MOV R3,#07H
DIS MOV : JNB 02H,AAA
       DEC DPH
    CLR 02
AAA:   MOV R2,#0
       MOV R1,B
       SETB TR0
WAIT MOV :JBC 00H,DISMOV1
       AJMP WAIT MOV 
DIS MOV 1:DJNZ R3,DISMOV
       JNB 02H,BBB
    DEC DPH
    CLR 02
BBB:   INC B
       MOV A,B
    CJNE A,#0,CC1
    INC DPH
    INC R7
CC0:   INC B
       MOV A,B
    CJNE A,#0,CCC
    INC DPH
    INC R7
CC1:   INC B
       MOV A,B
       CJNE A,#0,CCC
    INC DPH
    INC R7
CCC:   MOV A,R1
MOV OUT:CJNE R7,#3,DISLOOP
       MOV A,B
    CJNE A,#24,DISLOOP
    MOV R7,#0
    RET
DIS1: MOV R3,#0AH
       CLR P1.3
    CLR P1.4
    CLR P1.5
DIS11: MOV R2,#0
       MOV DPTR,#TAB
    MOV R1,#0H
    SETB TR0
WAIT11:JBC 01H,DIS11
       AJMP WAIT11
DIS111:DJNZ R3,DIS11
       RET
INTT0: INC R0
       PUSH ACC
    MOV TH0,#0FEH
    MOV TL0,#18H
    JBC 00H,GOEND
    MOV A,R1
    MOV C A,@A+DPTR
    MOV SBUF,A
WAIT: JBC TI,GO
       AJMP WAIT
GO:    INC R1
       CJNE R1,#0,AA
    INC DPH
    SETB 02H
AA:    MOV A,R1
       MOV C A,@A+DPTR
    MOV SBUF,A
WAIT1: JBC TI,GO1
       AJMP WAIT1
GO1:   INC R1
       CJNE R1,#0,BB
    INC DPH
    SETB 02H
BB:    MOV A,R1
       MOV C A,@A+DPTR
    MOV SBUF,A
WAIT2: JBC TI,GO2
       AJMP WAIT2
GO2:   CLR P1.3
       CLR P1.4
    CLR P1.5
    NOP
    SETB P1.6
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR P1.6
    MOV A,R2
    ANL A,#7H
    ANL P1,#0F8H
    ORL P1,A
P122: INC R2
       CJNE R2,#8,PAN1
    LJMP PAN1A
PAN1: JC PAN1A
       CJNE R2,#10H,PAN2
    LJMP PAN1B
PAN2: JC PAN1B
       CJNE R2,#018H,PAN3
    LJMP PAN1C
PAN3: JC PAN1C
       AJMP PANT
PAN1A: SETB P1.3
       AJMP PANT
PAN1B: SETB P1.4
       AJMP PANT
PAN1C: SETB P1.5
PANT: INC R1
       CJNE R1,#0,CC
    INC DPH
    SETB 02H
CC:    MOV A,R2
GO3:   CJNE R2,#24,GO4
    SETB 00H
GO4:   POP ACC
       RETI
GOEND: CLR TR0
       SETB 01H
    POP ACC
    RETI
    ORG 0A00H
TAB:   
;-- 逐行 顺向 --
DB 000H,000H,000H,003H,0C0H,000H,004H,030H,000H,004H,010H,000H,008H,03FH,0FCH,008H;
DB 000H,006H,010H,000H,002H,020H,000H,002H,020H,000H,002H,040H,083H,004H,041H,083H;
DB 004H,041H,083H,008H,042H,083H,008H,03FH,001H,0F0H,001H,001H,080H,002H,000H,0C0H;
DB 004H,000H,060H,008H,00CH,018H,030H,008H,004H,040H,01CH,002H,040H,026H,002H,040H;
DB 043H,002H,021H,080H,0C4H,03EH,000H,03CH;"欠",0
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,07FH,0FFH,0FCH,0C0H,000H;
DB 006H,080H,000H,002H,080H,000H,002H,080H,000H,002H,0C0H,000H,006H,07FH,0FFH,0FCH;
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;
DB 000H,000H,000H,000H,000H,000H,000H,000H;"一",1
DB 000H,000H,000H,000H,07CH,000H,000H,083H,000H,001H,000H,080H,006H,000H,060H,008H;
DB 000H,030H,030H,000H,00CH,040H,07EH,002H,080H,042H,001H,080H,082H,001H,081H,083H;
DB 081H,046H,082H,0E2H,078H,082H,01CH,000H,082H,000H,000H,082H,000H,000H,082H,000H;
DB 000H,082H,000H,000H,082H,000H,000H,082H,000H,000H,082H,000H,000H,082H,000H,000H;
DB 082H,000H,000H,082H,000H,000H,07CH,000H;"个",2
DB 000H,000H,000H,000H,01CH,000H,000H,022H,000H,07FH,0C1H,000H,0C0H,081H,0F8H,080H;
DB 080H,004H,080H,080H,002H,081H,000H,002H,08BH,000H,002H,08AH,002H,002H,08AH,022H;
DB 042H,089H,044H,042H,088H,0C4H,042H,088H,088H,042H,089H,008H,082H,082H,010H,082H;
DB 084H,020H,082H,084H,040H,082H,0C4H,083H,082H,07FH,084H,002H,001H,004H,004H,000H;
DB 084H,004H,000H,04CH,00CH,000H,033H,0F8H;"吻",3
……
END


关键字:LED  点阵显示  编程 引用地址:LED点阵显示与编程

上一篇:51单片机ADC0809+AD590温度检测、报警程序
下一篇:TC35i通讯模块AT指令(打电话与发短信)

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

LED行业七大常用测试方法详解
一、高温高压及其冲击测试:   针对对象:LED灯具(含LEDDriver的成品灯具)   参照标准:行业经验   测试方法:   1,将5款LED灯具放置在一个室温为60℃的房间;   2,通过调压器将LED灯具的输入电压调为最大额定输入电压的1.1倍;   3,接通电源,点灯24H,并观察灯具是否有损坏、材料受热变形等异常现象;   4,点灯测试后,通过继电器控制灯具在此环境下进行冲击测试,测试设置为:点灯20s、熄灯20s,循环100次。   测试要求:   A,灯具在经过高温高压测试后,不能发生表面脱漆、变色、开裂、材料变形等异常现象;   B,灯具在经过冲击测试后,不能发生漏电、点灯不亮等电气异常现象。   二、低温
[电源管理]
编程高精度测温集成电路LM76
    摘要: 高精度、12位信号输出集成电路LM76是由数字温度传感器和双线温度窗口比较器组成的,它具有功耗小、量程宽、串行总线接口等优点。文中介绍了该电路的工作特性、引脚功能及工作原理,最后给出了LM76用于API设计的典型应用电路。     关键词: 数字温度传感器  窗口比较器  超限警报  可编程  LM76 1 概述     LM76是一个由数字温度传感器、I2C串行总线接口和温度窗口比较器组成的集成电路。在70℃~100℃和-10℃~+45℃的温度范围内,其窗口比较器的串行总线接口的精度为±1℃。在25℃时,LM76CHM的精度可达±0.5℃。它的开漏中断输出(INT)在温度超过可
[应用]
欧司朗高性能 LED 照亮上海长江隧道
欧司朗光电半导体的 Golden DRAGON Plus LED 获得广东中龙交通科技有限公司的肯定,用于上海长江隧道照明项目。该隧道内径为 12.7 米,单洞长 8.9 公里,采用双管道结构,每一管道均为单向 3 车道设计,共安装有 5,886 套隧道灯,使用的欧司朗 Golden DRAGON Plus LED 超过 41 万多个,是目前全球最长的采用 LED 作为照明光源的隧道。 上海长江隧道将安装以欧司朗 Golden DRAGON Plus LED 作光源的中龙隧道灯 广东中龙交通科技有限公司是中国大陆一家知名的公路 LED 照明灯具专业制造商,凭借其在隧道照明产品开发应用方面的丰富经验以及欧司朗的
[电源管理]
欧司朗高性能 <font color='red'>LED</font> 照亮上海长江隧道
最新工业数字温度传感器具关断模式
  ST推出一系列高精度数字输出温度传感器。新系列产品温度测量范围从负55摄氏度到正125摄氏度。STxx75系列产品可以直接替换而且软件兼容工业标准的LM75、DS75和 TCN75A温度传感器芯片,同时还完善了ST的STLM20系列模拟温度传感器。   采用标准的8引线TSSOP和SO-8封装,STxx75系列产品适用于设备控制应用领域,如:处理器通过I2C总线/ SMBus读取一个本机数字温度数据后需要采取相应行动的控制应用;或者当本机温度达到系统预设温度时需要采取报警或中断措施的控制应用。该产品采用一个带隙式温度传感器,内置一个可编程的9位到12位的sigma-delta模数转换器(ADC),能够把模拟的温度读数信号转换
[焦点新闻]
最新工业数字温度传感器具关断模式
建筑物景观照明上的LED
   引言   目前,LED在我国城市夜景照明领域己升始普及,几乎全国所有城市夜景照明都J泛使用LED,特别是我国以2008年北京奥运和2010年上海世博会为契机,推动半导体在城市景观照明的应用,这必将进一步推动我国的城市照明领域更广泛地使用LED。但是,我们应该看到,相当一些城市在夜景照明方面由于对LED的特性不了解。在夜景照明设计、施工及维护管理等方面出现许多误区,造成城市夜景照明使用LED效果不佳,评价不高,特别是出现一些滥用LED,使城市夜景美感受到破坏,造成负面影响,导致部分人对城市夜景照明使用LED产生怀疑,影响了LED在城市夜晟照明中的声誉,如不及时加以解决,必将影响我国LED产业链的健康发展。
[电源管理]
建筑物景观照明上的<font color='red'>LED</font>
LED照明与功率因数关系解析
交流电流过负载时,加在该负载上的交流电压与通过该负载的交流电流产生相位差,人们便从中引出功率因数这一概念。人们生产、生活用电来自电网,电网提供频率为50Hz或60Hz的交流电。作为交流电的负载有电阻、电感、电容三种类型。 当交流电通过纯电阻负载时,加在该电阻上的交流电压与通过该电阻的交流电流是同相位的,即它们之间的相位夹角ф= 0°,同时在电阻负载上消耗有功功率,电网要供出能量。当交流电通过纯电感负载时,其上的交流电压的相位超前交流电流相位90°,它们之间的夹角ф= 90°,在电感负载上产生无功功率,电网供给的电能在电感中变为磁场能短暂储存后又回馈到电网变为电能,如此周期性循环不已,结果电网并不供出能量,故谓“无功功率”,但
[电源管理]
高清电视机背光照明应该用什么类型的LED
用来驱动白光 led 的 LED 驱动器集成电路约占总 LED 驱动器市场的 50%,白光 LED常用来为很多电池供电型手持式便携产品的小型显示屏提供背光照明。不过,这类照明应用已经成熟,未来 5 年不会有很高的年复合增长率。就 LED 照明应用而言,年复合增长率远高于手持式产品背光照明市场的 3 个最大的市场依次是:大型平板显示屏高清电视机、汽车前灯照明和通用照明。 随着消费者要求高清电视机具有更大的平板显示屏和更高的分辨率,对电视机的需求已经迅速从等离子高清电视机转向了 LED 高清电视机。根据 DisplaySearch 公司的数据,等离子高清电视机的销售高峰将出现在 2008 年,销售收入为 240 亿美元;而 2
[电源管理]
基于TDA4863-2的单级PFC反激LED电源设计与仿真
LED是一个非线性器件,正向电压的微小变化会引起电流的巨大变化;LED是一个半导体二极管,其伏安特性随温度变化而变化(-2mV/℃),假如温度升高,在恒压驱动下LED的电流会增加。长期超过额定电流工作,会大大缩短LED的使用寿命。而LED恒流主要目的是当输入或输出电压变化时,确保其工作电流不变。为了保证LED产品的优势,针对不同功率段的LED电源,必须选择合适的拓扑结构使LED驱动电源达到高效率,高可靠性,满足安规,EMI相关标准及低成本要求。对于15W-90W中小功率LED驱动电源通常选用结构简单的反激式拓扑。根据EN61000-3-2的C类标准,所有照明产品必须达到其要求,使得单级PFC反激架构在LED照明市场得到了迅速发展,
[电源管理]
基于TDA4863-2的单级PFC反激<font color='red'>LED</font>电源设计与仿真
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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