803|1

7126

帖子

11

TA的资源

版主

楼主
 

【CW32L052评测】LCD显示 [复制链接]

 

【CW32L052评测】LCD显示

板载LCD可以显示8个位加数点。本示例展示如何在某个位显示出数字。

  1. 新建lcd.h与lcd.h,并把文件导入到工程:
  2. LCD中编写了数据0-F以及字符L、H、-三字符的编码,并分为高低两个数组,代码如下:
    /* 段码低8(左) */
    static const uint8_t num_L[19] = {
    0x0d, //0
    0x00, //1
    0x0e, //2
    0x0a, //3
    0x03, //4
    0x0b, //5
    0x0f, //6
    0x00, //7
    0x0f, //8
    0x0b, //9
    0x07, //A
    0x0f, //b
    0x0d, //C
    0x0e, //d
    0x0f, //E
    0x07, //F
    0x07, //H
    0x0d, //L
    0x02, //-
    };
    /* 段码高8(右) */
    static const uint8_t num_H[19] = {
    0x07,
    0x06,
    0x03,
    0x07,//3
    0x06,//4
    0x05, //5
    0x05, //
    0x07, //7
    0x07, //8
    0x07, //9
    0x07, //A
    0x04, //B
    0x01, //C
    0x06, //d
    0x01, //e
    0x01, //f
    0x06, //H
    0x00, //L
    0x00, //-
    };
  3. 编写显示函数,主要传入参数为需要显示的位置,以及显示的字符的序号:
    /*
    *函数功能:在指定的段码屏位置上显示指定序号的字符
    *参数wei:指定需要显示的位
    *参数num:需要显示的序号。
    */
    void show_string(uint8_t wei, uint8_t num)
    {
    if(wei>7 || num > sizeof(num_H))
    {
    return;
    }
    switch(wei)
    {
    case 7:
    {
    //显示第7个数码管
    CW_LCD->RAM[0] |= num_H[num]<<8 | num_L[num];

    break;
    }
    case 6:
    {
    //显示第6个数码管
    CW_LCD->RAM[0] |= (num_H[num]<<8 | num_L[num]) <<16;
    break;
    }
    case 5:
    {
    //显示第5个数码管
    CW_LCD->RAM[1] |= num_H[num]<<8 | num_L[num];
    break;
    }
    case 4:
    {
    //显示第4个数码管
    CW_LCD->RAM[1] |= (num_H[num]<<8 | num_L[num]) <<16;
    break;
    }
    case 3:
    {
    //显示第3个数码管
    CW_LCD->RAM[2] |= num_H[num]<<8 | num_L[num];
    break;
    }
    case 2:
    {
    //显示第2个数码管
    CW_LCD->RAM[3] |= (num_H[num]<<8);
    CW_LCD->RAM[2] |= (num_L[num]<<16);
    break;
    }
    case 1:
    {
    //显示第1个数码管
    CW_LCD->RAM[3] |= num_H[num]<<24 | num_L[num]<<16;
    break;
    }
    case 0:
    {
    //显示第0个数码管
    CW_LCD->RAM[4] |= (num_H[num]<<8 | num_L[num]);
    break;
    }
    }

    }
  4. 编写主函数测试如下:

int32_t main(void)

{

int i;

//配置RCC

RCC_Configuration();

 

InitTick( 24000000 ); //24000000

//配置GPIO

GPIO_Configuration();

/* NVIC Configuration */

NVIC_Configuration();

RCC_LSI_Enable(); // 启动LSI为LCD提供时钟

LCD_Configuration();

gKey1Status = 0;

gKey2Status = 0;

 

while(1)

{

lcd_clear_all();

for(i=0; i<8; i++)

{

show_string(i,i);

SysTickDelay(1000);//200ms.

 

}

 

}

 

}

显示效果详见视频。

 

点赞 关注
 
 

回复
举报

7126

帖子

11

TA的资源

版主

沙发
 
 
 

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

随便看看
查找数据手册?

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-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表