查看: 3817|回复: 8

[分享] [IRD-LPC1768-DEV测试]三、驱显LCD

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2019-2-16 07:31:41 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2019-2-16 07:43 编辑

    首先认为J_VFD接口的逻辑定义是正确的,见截图0_21。
    这是8位并口的4X20字符LCD,是否点阵LCD需要驱显后再看。
    1,2脚是电源,3脚是对比度调整不用,4是数据/命令寄存器选择——sreg,5是读写——srws,6相当于E写信号——sclk,7~14是8位数据线。需要定义8位宽的BUS和3个控制信号引脚。为此定义一个2004.h的文档,创建一个文件夹incs,将文件夹设置进来,将文件导入。2004.h内容如下,下边的代码是驱显1602的,需要改:
    //LCD1602 Include
    DigitalOut sreg(P2_8);//sreg=1Data/=0Command
    DigitalOut srws(P2_9);//srws=1Read/=0Write
    DigitalOut sclk(P2_10);//sclk=1->0Write
    BusOut myBus(P2_0,P2_1,P2_2,P2_3,P2_4,P2_5,P2_6,P2_7);//LSB->MSB

    //LCD Write,Num:0
    void wri(void){sclk=0;wait(0.00001);sclk=1;}//wait(0.00001);sclk=0;}
    //Send one word of data to the LCD,then clock it
    void b2l(char dat,char com){//dat-Data,com=0-Command,=1Data
    srws=0;
    wait(0.00001);
    sreg=com;//If com is high
    myBus=dat;
    wait(0.00001);
    wri();
    srws=1;
    }
    //Set X,Y
    void setXY(char x,char y){
    char addr;
    if(y==0)addr=0x80;else addr=0xC0;
    b2l(addr+x,0);
    }
    //Data Write to LCD,Num:x-,y-,c-ASCII Table
    void c2l(char x,char y,char c){
      setXY(x,y);
      b2l(c,1);
    }
    //LCD Initial
    void lcdInit(void){//Set to 4-bit mode
    b2l(0x02,0);//Reset LCD
    wait(0.1);
    b2l(0x38,0);//28=High 4bits Data/38=8bits Data=5X7 Dots ASCII
    wait(0.001);
    b2l(0x06,0);//L2=1|L1=1+Up/L1=0-Dw//L0=1Move/L0=0Fix
    wait(0.001);
    b2l(0x0C,0);//L3=1|L2=1CorsDisp/L2=0Not//L1=1CousOn/L1=0Off//L0=1Flash/L0=9NotFlash
    wait(0.001);
    //b2l(0x80,0);//DD ram=00
    //wait(0.001);
    b2l(0x38,0);//L4=1Move word/L4=0move Cursor//L3=1 Right/L3=0 Left
    wait(0.001);
    b2l(0x01,0);//LCD Clear
    wait(0.01);
    }
    一点动静也没有,于是静态测量引脚,发现截图0_21的5脚不是连接在P2_9上,而是连接在P0_22上!不知是因为什么,图纸与硬件对不上!以后的测试就会想抄板一样每个引脚都静态测试吗?测试的热情很受打击!
    改过来在经过一番计算和测试最终的代码如下:
    //LCD2004 Include
    DigitalOut sreg(P2_8);//sreg=1Data/=0Command
    DigitalOut srws(P0_22);//srws=1Read/=0Write
    DigitalOut sclk(P2_10);//sclk=1->0Write
    BusOut myBus(P2_0,P2_1,P2_2,P2_3,P2_4,P2_5,P2_6,P2_7);//LSB->MSB

    extern int k;

    //LCD Write,Num:0
    void wri(void){sclk=0;wait(0.00001);sclk=1;}//wait(0.00001);sclk=0;}
    //Send one word of data to the LCD,then clock it
    void b2l(char dat,char com){//dat-Data,com=0-Command,=1Data
    srws=0;
    wait(0.00001);
    sreg=com;//If com is high
    myBus=dat;
    wait(0.00001);
    wri();
    srws=1;
    }
    //Set X,Y
    void setXY(char x,char y){
    char addr;
    /*if(y==0)addr=0x80;else addr=0xC0;*/
    switch(y){
    case 1:
      addr=0xC0;break;
    case 2:
      addr=0x94;break;
    case 3:
      addr=0xD4;break;
    default:
      addr=0x80;break;
    }
    b2l(addr+x,0);
    }
    //Data Write to LCD,Num:x-,y-,c-ASCII Table
    void c2l(char x,char y,char c){
      setXY(x,y);
      b2l(c,1);
    }
    //LCD Initial
    void lcdInit(void){//Set to 4-bit mode
    b2l(0x02,0);//Reset LCD
    wait(0.1);
    b2l(0x38,0);//28=High 4bits Data/38=8bits Data=5X7 Dots ASCII
    wait(0.001);
    b2l(0x06,0);//L2=1|L1=1+Up/L1=0-Dw//L0=1Move/L0=0Fix
    wait(0.001);
    b2l(0x0C,0);//L3=1|L2=1CorsDisp/L2=0Not//L1=1CousOn/L1=0Off//L0=1Flash/L0=9NotFlash
    wait(0.001);
    //b2l(0x80,0);//DD ram=00
    //wait(0.001);
    b2l(0x38,0);//L4=1Move word/L4=0move Cursor//L3=1 Right/L3=0 Left
    wait(0.001);
    b2l(0x01,0);//LCD Clear
    wait(0.01);
    }
    //Display AscII
    void dispAsc2(void){
    int i,lineDisp;
    for(lineDisp=0;lineDisp<4;lineDisp++){
      for(i=0;i<20;i++){
       c2l(i,lineDisp,k);
       wait(0.00001);
       if(k<=0x80)k++;else if(k<0xA0)k=0xA0;
       if(k>=0xA0 & k<=0xFF)k++;else if(k>0xFF)k=0x20;
      }
    }
    }
    最后一个函数使用内置ASCII码刷屏,将高端的扩展ASCII码都刷屏。
    main主程序代码:
    #include "mbed.h"
    #include "2004.h"

    DigitalOut led1(LED1);
    DigitalOut led4(LED4);

    int k=0x20;

    //Led Test
    void ledTest(void){
    led1=!led1;led4=!led4;
    wait(0.1);
    }
    int main(){
    led1=1;led4=1;
    lcdInit();
    b2l(0x01,0);//Clear LCD
    while(1){
      dispAsc2();
      //c2l(0,0,0x31);c2l(1,1,0x32);c2l(2,2,0x33);c2l(3,3,0x34);//Test Row & Col
      ledTest();
      wait(2);
      b2l(0x01,0);//Clear LCD
      wait(0.01);
    }
    }
    结果见动画照片0_22。
    下边将板载ADC的测试结果显示在LCD上。
    主程序main前边增加两个函数:
    //Distply Base Mes,Num:x-,y-,c-ASCII Table
    void dispBase(void){
    c2l(0,0,0x4E);c2l(1,0,0x58);c2l(2,0,0x50);c2l(3,0,0x20);c2l(4,0,0x4C);c2l(5,0,0x50);//NXP LP
    c2l(6,0,0x43);c2l(7,0,0x31);c2l(8,0,0x37);c2l(9,0,0x36);c2l(10,0,0x38);//c2l(11,0,0x20);//C1768
    c2l(12,0,0x54);c2l(13,0,0x65);c2l(14,0,0x73);c2l(15,0,0x74);//c2l(16,0,0x20);//Test
    c2l(17,0,0x5F);c2l(18,0,0x5A);c2l(19,0,0x4C);//ZL
    c2l(0,1,0x4A);c2l(1,1,0x53);c2l(2,1,0x51);c2l(3,2,0x3D);//jsq=
    c2l(0,2,0x41);c2l(1,2,0x44);c2l(2,2,0x43);c2l(3,2,0x3A);c2l(4,2,0x3D);//ADC0=
    }
    //Display Measerge
    void dispMes(void){
    c2l(4,1,(jsq/100000)%10+48);c2l(5,1,(jsq/10000)%10+48);c2l(6,1,(jsq/1000)%10+48);c2l(7,1,(jsq/100)%10+48);c2l(8,1,(jsq/10)%10+48);c2l(9,1,(jsq)%10+48);//JSQ
    c2l(5,2,int(val0*10)%10+48);c2l(6,2,int(val0*100)%10+48);c2l(7,2,int(val0*100)%10+48);c2l(8,2,int(val0*1000)%10+48);//ADC0
    }
    主程序改为:
    int main(){
    led1=1;led4=1;
    lcdInit();
    b2l(0x01,0);//Clear LCD
    wait(0.02);
    dispBase();
    while(1){
      jsq++;
      val0=adc0.read();
      dispMes();
      ledTest();
      //wait(0.02);
    }
    }
    运行结果见照片0_23,0_24。结果发现其ADC的值非常非常稳定!分析原因:因为是浮点数,按照取前有效4位数值转换成十进制数的结果吧。照片0_25是LCD驱显特写。

    0_21

    0_21

    0_22

    0_22

    0_23

    0_23

    0_24

    0_24

    0_25

    0_25
    回复

    使用道具 举报

  • TA的每日心情

    2019-2-12 11:34
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    10

    主题

    149

    帖子

    2

    高级会员

    Rank: 4

    积分
    673
    最后登录
    2021-9-30
    发表于 2019-2-16 21:57:09 | 显示全部楼层
    这个是真快。。。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    28 分钟前
  • 签到天数: 1847 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112625
    最后登录
    2025-7-20
    发表于 2019-2-16 23:03:41 | 显示全部楼层
    本帖最后由 stm1024 于 2019-2-24 15:49 编辑

    1.png 2.png 感谢你的趟坑 3.png 4.png 10.png 9.png 8.png 5.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-30 21:50
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    9

    主题

    142

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1208
    最后登录
    2023-2-28
    发表于 2019-2-16 23:43:01 | 显示全部楼层
    感谢分享, 你这MBED玩的可真牛啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2022-6-3 10:27
  • 签到天数: 131 天

    连续签到: 1 天

    [LV.7]常住居民III

    19

    主题

    519

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1611
    最后登录
    2022-6-26
    发表于 2019-2-17 15:27:08 | 显示全部楼层
    对对我也发现原理图就没能对上的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 854 天

    连续签到: 1 天

    [LV.10]以坛为家III

    69

    主题

    3251

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10321
    最后登录
    2025-7-20
    发表于 2019-2-17 22:01:29 | 显示全部楼层
    进度挺快啊   
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2019-2-17 22:53:15 | 显示全部楼层
    感谢楼主分享。
    这块我还没有做呢,谢谢提示。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
    发表于 2019-2-24 12:38:44 | 显示全部楼层
    DKW3BSA_3SC~])OH1{T9$F1.png
    他这个原理图很恶心的,不对标号的,要看后面的英文,核心板上面有这个标注
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-2-4 09:24
  • 签到天数: 190 天

    连续签到: 1 天

    [LV.7]常住居民III

    38

    主题

    591

    帖子

    28

    金牌会员

    Rank: 6Rank: 6

    积分
    2205
    最后登录
    2025-2-22
    发表于 2019-2-25 09:06:42 | 显示全部楼层
    厉害了  大佬
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 23:20 , Processed in 0.102596 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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