69|0

1460

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【翌创ET6001测评】点阵板显示驱动 [复制链接]

 

在通常的情况下,我们所用的显示器件多为数码管、液晶屏等。但在公共场合,则需要使用较大尺寸和规格的显示器件。

市场上的告广牌多是由半板拼接而成的,这里就选用一款P4.75的红色点阵板,其显示分辨率为16*64像素点,其外观如图1所示。

在通常的情况下,我们所用的显示器件多为数码管、液晶屏等。但在公共场合,则需要使用较大尺寸和规格的显示器件。

市场上的告广牌多是由半板拼接而成的,这里就选用一款P4.75的红色点阵板,其显示分辨率为16*64像素点,其外观如图1所示。

 

图1 点阵屏外观

 

该点阵板随使用的接口方式为HUB08,其各引脚的名称如图2所示。

 

图2  HUB08接口

 

点阵板与开发板的引脚连接关系为:

A  ---- P24

B  ---- P11

C  ---- P12

D  ----P13

R1 ---- P23

CLK----P22

EN ---- P21

STB---- P25

 

所用引脚的工作模式配置函数为:

static void dzp_CONFIG(void)
{
    IOC_Init_TypeDef init;
    IOC_ConfigStructInit(&init);
    init.mode = IOC_AF_MODE_3;
    init.dir = GPIO_DIR_OUT;
    init.pull = IOC_PULL_NONE;
    IOC_Config(IOC_PIN_GPIO_PLL_REF, &init);
    GPIO_PortOutputEnable(GPIO2, GPIO_PIN_01);
    GPIO_PortOutputEnable(GPIO2, GPIO_PIN_02);
    GPIO_PortOutputEnable(GPIO2, GPIO_PIN_03);
    GPIO_PortOutputEnable(GPIO2, GPIO_PIN_04);
    GPIO_PortOutputEnable(GPIO2, GPIO_PIN_05);
    GPIO_PortOutputEnable(GPIO1, GPIO_PIN_01);
    GPIO_PortOutputEnable(GPIO1, GPIO_PIN_02);
    GPIO_PortOutputEnable(GPIO1, GPIO_PIN_03);
}

 

所用引脚输出高低电平的语句定义为:

#define LR1_high   GPIO_WritePin(GPIO2, GPIO_PIN_03, SET)    

#define LR1_low    GPIO_WritePin(GPIO2, GPIO_PIN_03, RESET)

 

#define CLK_high   GPIO_WritePin(GPIO2, GPIO_PIN_02, SET)

#define CLK_low    GPIO_WritePin(GPIO2, GPIO_PIN_02, RESET)

 

#define LSTB_high  GPIO_WritePin(GPIO2, GPIO_PIN_05, SET)

#define LSTB_low   GPIO_WritePin(GPIO2, GPIO_PIN_05, RESET)

 

#define LEN_high   GPIO_WritePin(GPIO2, GPIO_PIN_01, SET)

#define LEN_low    GPIO_WritePin(GPIO2, GPIO_PIN_01, RESET)

 

#define LA_high    GPIO_WritePin(GPIO2, GPIO_PIN_04, SET)

#define LA_low     GPIO_WritePin(GPIO2, GPIO_PIN_04, RESET)

 

#define LB_high    GPIO_WritePin(GPIO1, GPIO_PIN_01, SET)

#define LB_low     GPIO_WritePin(GPIO1, GPIO_PIN_01, RESET)

 

#define LC_high    GPIO_WritePin(GPIO1, GPIO_PIN_02, SET)

#define LC_low     GPIO_WritePin(GPIO1, GPIO_PIN_02, RESET)

 

#define LD_high    GPIO_WritePin(GPIO1, GPIO_PIN_03, SET)

#define LD_low     GPIO_WritePin(GPIO1, GPIO_PIN_03, RESET)

 

点阵板发送数据的函数为:

static void OutByte(uint16_t dat)
{
    uint8_t i=0 ;
    for(i=0;i<16;i++)
    {
        CLK_low;
        if(dat&0x0001) 
        {
            LR1_high;
        }
        else
        {
            LR1_low;
        }
        dat=dat>>1; 
        CLK_high;
    }
}

 

发送多列数据的函数为:

static void DisCol(uint16_t lenght)
{
    uint16_t dat;
    uint8_t m=0;
    while(lenght--)
    {
         dat=(S[sj[m+1]*16+ScanRow]<<8)+S[sj[m]*16+ScanRow];
         OutByte(dat);
         m=m+2;
    }
}

 

输出行地址的函数为:

static void  SeleRow(uint8_t Nd)
{
    uint8_t N;
    N=Nd;
    N=N%16;
    if(N&0x01)   LA_high;
    else  LA_low;
    if (N&0x02)  LB_high;
    else  LB_low;
    if (N&0x04)  LC_high;
    else  LC_low;
    if (N&0x08)  LD_high;
    else  LD_low;
}

 

实现显示输出的函数为:

static void  Display(void)
{
      DisCol(4);
      LEN_high;
      LSTB_high;
      LSTB_low;
      SeleRow(ScanRow);
      LEN_low;
      ScanRow++;
      if(ScanRow>15)  ScanRow=0;
}

 

模拟RTC计时效果的显示函数为:

static void ShowTime(void)
{
    sj[0]= 1;
    sj[1]= 2;
	sj[2]= 10;
    sj[3]= 3;
    sj[4]= 0;
	sj[5]= 10;
    sj[6]= 0;
    sj[7]= 8;
    Display();
}

 

为进行显示,所配置的字模由数组来存储,其内容为:

uint8_t S[]={
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",0*/
0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"1",1*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00,/*"2",2*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,0x22,0x1C,0x00,0x00,/*"3",3*/
0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7E,0x20,0x20,0x78,0x00,0x00,/*"4",4*/
0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1A,0x26,0x40,0x40,0x42,0x22,0x1C,0x00,0x00,/*"5",5*/
0x00,0x00,0x00,0x38,0x24,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"6",6*/
0x00,0x00,0x00,0x7E,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,/*"7",7*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*"8",8*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1C,0x00,0x00,/*"9",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*":",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"-",11*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

 

实现显示输出的主程序为:

int32_t main(void)
{
    dzp_CONFIG();
    ScanRow=0;
    while (1)
    {
         ShowTime();
    }
}

 

经程序的编译与运行,其执行效果如图3所示。

 

图3  硬件连接及显示效果

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表