请选择 进入手机版 | 继续访问电脑版
查看: 294|回复: 8

[原创] 【IRD-LPC1768-DEV】LCD+VFD驱动

[复制链接]
  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 38 天

    [LV.5]常住居民I

    21

    主题

    98

    帖子

    21

    金豆

    高级会员

    Rank: 4

    积分
    577
    最后登录
    2019-9-17
    发表于 2019-2-26 11:04:56 | 显示全部楼层 |阅读模式
    (一)显示屏驱动概述

    官方配套的显示套装是VFD,接口跟普通lcd是一样的,驱动形式一样,只是命令稍有不同。


    (二)接口定义


    参考数据手册:
    Industrial Platform 1v3 schematics
    U盘resource\Training Modules\PPT versions (Recommended)\Industrial Reference Design VFD AND LCD Rel2



    底板定义:
    11.png
    12.png

    核心板定义:
    13.png
    有点坑的是这个核心板和底板不对序号,要看后面的英文


    (三)引脚初始化引脚初始化:

    1. struct _GPIO_ID Lcd_GPIO[11]={
    2.         {2,0},
    3.         {2,1},
    4.         {2,2},
    5.         {2,3},
    6.         {2,4},
    7.         {2,5},
    8.         {2,6},
    9.         {2,7},
    10.         {2,8},
    11.         {2,10},
    12.         {0,22}
    13. };
    复制代码
    初始化函数:

    1. void LcdGPIOInit(void)
    2. {
    3.         unsigned int i;
    4.         for(i=0; i<12; i++)
    5.         {
    6.                 PIN_Configure(Lcd_GPIO[i].port, Lcd_GPIO[i].num, PIN_FUNC_0, PIN_PINMODE_PULLDOWN, PIN_PINMODE_NORMAL);
    7.                 GPIO_SetDir(Lcd_GPIO[i].port, Lcd_GPIO[i].num, GPIO_DIR_OUTPUT);
    8.                 GPIO_PinWrite(Lcd_GPIO[i].port, Lcd_GPIO[i].num, 0);
    9.         }
    10. }
    复制代码


    (四)写引脚



    数据引脚有8个,由于set寄存器和clr寄存器是置1起作用的,因此设置非常方便:

    1. void LCD_DatePin(unsigned char com)
    2. {
    3.         unsigned char temp = ~com;
    4.         LPC_GPIO(2)->SET = com;
    5.         LPC_GPIO(2)->CLR = temp;
    6. }
    复制代码


    (五)LCD驱动驱动初始化也非常简单,在51单片机学习的时候不知道用过多少次了:

    1. #ifndef                LCD1602_4PINS
    2. void Lcd1602_Init()                                                  //LCD初始化子程序
    3. {
    4.         LcdGPIOInit();
    5.          LcdWriteCom(0x38);  //开显示
    6.         LcdWriteCom(0x0c);  //开显示不显示光标
    7.         LcdWriteCom(0x06);  //写一个指针加1
    8.         LcdWriteCom(0x01);  //清屏
    9.         LcdWriteCom(0x80);  //设置数据指针起点
    10. }
    11. #else
    12. void Lcd1602_Init()                                                  //LCD初始化子程序
    13. {
    14.         LcdWriteCom(0x32);         //将8位总线转为4位总线
    15.         LcdWriteCom(0x28);         //在四位线下的初始化
    16.         LcdWriteCom(0x0c);  //开显示不显示光标
    17.         LcdWriteCom(0x06);  //写一个指针加1
    18.         LcdWriteCom(0x01);  //清屏
    19.         LcdWriteCom(0x80);  //设置数据指针起点
    20. }
    21. #endif
    复制代码


    (五)VFD初始化


    VFD命令列表:

    2.png
    初始化:

    1. void LcmVfd_Init(void)
    2. {
    3.         LcdGPIOInit();
    4.         VfdWriteCom(0x01);  //1,清屏
    5.         VfdWriteCom(0x02);  //10,光标返回起点
    6.         VfdWriteCom(0x06);  //110,设置光标移动方向、特殊移动显示
    7.          VfdWriteCom(0x0F);  //1111,开显示,显示光标、光标闪烁
    8.         //VfdWriteCom(0x80);  //1000 0000,DDRAM
    9.         VfdWriteCom(0x38);  //11 1000,设置8bit模式、两行、5*8
    10. }
    复制代码


    (六)应用函数
    只需要更改一下初始化函数就可以随意转换两个模块:
    1. //LcmVfd_Init();
    2.         Lcd1602_Init();
    3. const unsigned char welcome_str[]="welcome to LPC1768";

    4.         for(i=0;i<(sizeof(welcome_str)/sizeof(char)-1);i++)
    5.                 LcdWriteData(welcome_str[i]);        
    复制代码




    (七)效果展示
    VFD
    31.jpg
    LCD
    32.jpg

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-20 15:04
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    41

    主题

    165

    帖子

    1

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    1573
    最后登录
    2019-4-15
    发表于 2019-3-23 16:36:52 | 显示全部楼层
    LcdWriteCom的定义呢?发函数代码只发一半?
    今天心情不错
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    8 小时前
  • 签到天数: 468 天

    [LV.9]以坛为家II

    39

    主题

    1262

    帖子

    19

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    3388
    最后登录
    2019-9-19
    发表于 2019-3-23 17:48:12 | 显示全部楼层
    donatello1996 发表于 2019-3-23 16:36
    LcdWriteCom的定义呢?发函数代码只发一半?

    直接发工程就齐活了!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 38 天

    [LV.5]常住居民I

    21

    主题

    98

    帖子

    21

    金豆

    高级会员

    Rank: 4

    积分
    577
    最后登录
    2019-9-17
     楼主| 发表于 2019-3-24 00:04:50 | 显示全部楼层
    本帖最后由 day_day 于 2019-3-24 00:06 编辑
    donatello1996 发表于 2019-3-23 16:36
    LcdWriteCom的定义呢?发函数代码只发一半?

    就一般的51单片机例程都有吧,我也是直接拿普中的
    1. void LcdWriteCom(unsigned char com)          //写入命令
    2. {
    3.         LCD_EN(0);     //使能
    4.         LCD_RS(0);           //选择发送命令
    5.         LCD_WR(0);           //选择写入
    6.         
    7.         LCD_DatePin(com);     //放入命令
    8.         delay_ms(1);                //等待数据稳定

    9.         LCD_EN(1);                  //写入时序
    10.         delay_ms(5);          //保持时间
    11.         LCD_EN(0);
    12. }
    复制代码
    1. #define LCD_EN(n) Chip_GPIO_SetPinState(LPC_GPIO, 2, 10, n);
    2. #define LCD_RS(n) Chip_GPIO_SetPinState(LPC_GPIO, 2, 8, n);
    3. #define LCD_WR(n) Chip_GPIO_SetPinState(LPC_GPIO, 0, 22, n);
    复制代码
    1. #define LPC_GPIO_P(n)             ((LPC_GPIO_T *)(LPC_GPIO0_BASE + 0x00020*n))
    复制代码



    1. void LCD_DatePin(unsigned char com)
    2. {
    3.         unsigned char temp = ~com;
    4.         LPC_GPIO_P(2)->SET = com;
    5.         LPC_GPIO_P(2)->CLR = temp;
    6. }
    复制代码


    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 38 天

    [LV.5]常住居民I

    21

    主题

    98

    帖子

    21

    金豆

    高级会员

    Rank: 4

    积分
    577
    最后登录
    2019-9-17
     楼主| 发表于 2019-3-24 00:08:50 | 显示全部楼层
    okwh 发表于 2019-3-23 17:48
    直接发工程就齐活了!

    本来是想搞得差不多再发工程的,想把rtos和网络加上就差不多了,结果今年考研刚好270踩在国家线上面,一分都不差,好像能复试的样子,赶忙跑去狂补电路,没时间搞了……
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:34
  • 签到天数: 279 天

    [LV.8]以坛为家I

    102

    主题

    3098

    帖子

    63

    金豆

    超级版主

    Rank: 8Rank: 8

    积分
    17226
    最后登录
    2019-9-18
    发表于 2019-3-24 11:05:23 | 显示全部楼层
    哈哈,P0.22是最大的坑~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-8-2 16:15
  • 签到天数: 84 天

    [LV.6]常住居民II

    0

    主题

    141

    帖子

    0

    金豆

    中级会员

    Rank: 3Rank: 3

    积分
    347
    最后登录
    2019-8-2
    发表于 2019-3-24 11:44:08 | 显示全部楼层
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    8 小时前
  • 签到天数: 468 天

    [LV.9]以坛为家II

    39

    主题

    1262

    帖子

    19

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    3388
    最后登录
    2019-9-19
    发表于 2019-3-24 12:09:11 | 显示全部楼层
    day_day 发表于 2019-3-24 00:08
    本来是想搞得差不多再发工程的,想把rtos和网络加上就差不多了,结果今年考研刚好270踩在国家线上面,一 ...

    考研当然更重要了,  祝成功!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-5-1 06:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    0

    主题

    91

    帖子

    0

    金豆

    中级会员

    Rank: 3Rank: 3

    积分
    205
    最后登录
    2019-8-24
    发表于 2019-5-1 06:16:22 | 显示全部楼层
    谢谢分享
    开心!!!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-9-19 08:23 , Processed in 0.110606 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表