集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1183|回复: 1

求救:1602液晶的程序,不知道错在哪里。望指教,谢谢!

[复制链接]
hpcsx 发表于 2011-10-4 20:41:02 | 显示全部楼层 |阅读模式
//====初始设定函数(8位元传输模式)===================
void init_LCM(void)
{   
    E->DATA = 0;
        
    write_inst(0x38);
    write_inst(0x38);
   
   write_inst(0x0c);
    write_inst(0x01);
     write_inst(0x06);
   
   
}                       // init_LCM()函数结束


            

//==== 写入指令函数 / 检测忙信号的=======================ok
void write_inst(char inst)
{   
    E->DATA = 0;
    RS->DATA = 0;
     RW->DATA = 0;   delay1ms(5);
    DB->DATA = inst;   delay1ms(5);
    E->DATA = 1; delay1ms(5);
    E->DATA = 0; delay1ms(5);
   
    check_BF();             // 检查是否忙碌
}                           // write_inst()函数结束

//==== 写入字符数据函数 ============================ok
void write_char(char chardata)
{   
    E->DATA = 0;
    RS->DATA = 1;
     RW->DATA = 0;   delay1ms(5);
    DB->DATA = chardata;   delay1ms(5);
    E->DATA = 1; delay1ms(5);
    E->DATA = 0; delay1ms(5);
   
    check_BF();             // 检查是否忙碌
   
   
    delay1ms(1000);
}                           // write_char()函数结束


//====检查忙碌函数================================ok
void check_BF(void)
{   
      
        RS->DATA = 0;
        RW->DATA = 1; delay1ms(5);
        E->DATA = 1;   delay1ms(5);
        
        while(DB->DATA & 0x80);        // 忙碌继续等
   
        E->DATA=0;                    // 禁止读写动作
        
}                           //  check_BF()函数结束


//==== 延迟函数 ================================ok
void delay1ms(int x)
{
    usleep(1100*x);   
}


另外一个版本的初始化函数:
//====初始设定函数(8位元传输模式)===================
void init_LCM(void)
{   
    delay1ms(15);       //5.1
    write_inst_n(0x38);   // 5.2
    delay1ms(5);          //5.3
    write_inst_n(0x38);   // 5.4
    delay1ms(5);          //5.5   
    write_inst_n(0x38);   // 5.6
   
  
    write_inst(0x38);   // 5.8 英文LCM设定两列,中交LCM可忽略
    write_inst(0x08);   // 5.9 显示功能-关显示幕-无游标-游标不闪
    write_inst(0x01);   // 5.10 清除显示幕(填0x20,I/D=1)
    write_inst(0x06);   // 5.11 输入模式-位址递增-关显示幕
    write_inst(0x0c);   // 5.12 显示功能-开显示幕-无游标-游标不闪  
}                       // init_LCM()函数结束


请大家指教,谢谢!
 楼主| hpcsx 发表于 2011-10-4 21:15:59 | 显示全部楼层
补充:

D0~D7设置为1个bidir型8位PIO。RS、RW、E各为1为输出型PIO。
编译的时候,没有提示错误。通过AS方式下载,发现初始化的函数可以运行,但好像运行不正确(白屏)。后面预期显示的字符都显示不出来。从加入的LED显示知道,初始化函数、显示字符的语句都是运行到了的。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 11:15 , Processed in 0.063575 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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