打印

关于液晶模块的

[复制链接]
1946|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hxiaon|  楼主 | 2007-1-30 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhaoyu2005| | 2007-1-30 12:29 | 只看该作者

建议下载一个例程看一下

你也可以下载1602液晶的资料,有的厂家带有例子,一看不就知道了?

使用特权

评论回复
板凳
hxiaon|  楼主 | 2007-1-30 12:30 | 只看该作者

enen

有用过的指教下,急~

使用特权

评论回复
地板
hxiaon|  楼主 | 2007-1-30 12:32 | 只看该作者

按时打发

液晶模块的启动是不是有时要热启动?通电直接进行操作能不能行

使用特权

评论回复
5
rocl_li77| | 2007-1-31 22:09 | 只看该作者

回复问题

(1)你那控制芯片的没用过,但是你买液晶的时候有说明书,如果E上面有一个上画线就表示低电平有效,否则高电平有效
(2)至于不显示问题就很难说了,但是肯定和你所猜测的这个E是没有关系了(只要你把1弄好了)

使用特权

评论回复
6
FZJ| | 2007-2-1 08:00 | 只看该作者

以下是个用PIC驱动1602的程序,你可以参考一下

***************************************************************************************************/
#include    <pic.h>
/**************************************************************************************************/
#define      RS             RA0
#define      E              RA1
#define      RW             RA2
#define      LCD_DATA       PORTB   //数据端
#define      LCD_DATATRIS   TRISB
#define      INPUT          0XFF
#define      OUTPUT         0
#define      BF             lcddata_temp&0x80
/**************************************************************************************************/
void    write_bytelcd    (unsigned char  lcddata,unsigned char r_s);  //命令数据写函数
bit       lcd_busy       (void);  //检测"忙"
void      lcd_init       (void);  //LCD初始化
void      init_mcu       (void);  //MCU初始化
/**************************************************************************************************/
void    write_bytelcd    (unsigned char  lcddata,unsigned char r_s)  //命令数据写函数
{    unsigned int  i;
     for   (i=1000;i!=0;i--)
    { if    (lcd_busy())
      { LCD_DATATRIS=OUTPUT; //设为数据发送
        RS=r_s;              //0=写指令, 1=写数据
        RW=0;                //写操作
        E=1;
        LCD_DATA=lcddata;    //送入数据
        E=0;                 //写入HD44780(KS0066)
        break;
      }
    }
       LCD_DATATRIS=OUTPUT;  //设为数据发送
}
/***************************************************************************************************/
bit       lcd_busy      (void)  //检测"忙"
{   unsigned char  lcddata_temp;
    CLRWDT();
    LCD_DATATRIS=INPUT;          //设为数据接收
    RS=0;                        //命令类型
    RW=1;                        //读
    E=1;
    lcddata_temp=LCD_DATA;
    E=0;
    if    (BF)   return  (0);   //忙标志
    else
    return  (1);                //不忙
}
/****************************************************************************************************/
void      lcd_init     (void)
{  write_bytelcd(0X38,0);       //8位接口2行显示 5*7
   write_bytelcd(8,0);          //关显示,光标不闪烁
   write_bytelcd(1,0);          //清屏
   write_bytelcd(0xC,0);        //开显示
   write_bytelcd(6,0);          //光标右移,文字不动
}
/****************************************************************************************************/
void      init_mcu     (void)
{   CLRWDT();
    TRISA=0;
    TRISB=0;
    ADCON1=7;
    INTCON=0;
    OPTION=0X80;
}
/***************************************************************************************************/
void      main        (void)
{   unsigned int  i;
    unsigned char count=40;
    PORTA=0;
    PORTB=0;
    for (i=10000;i!=0;i--)  {init_mcu();}
    lcd_init();
    while   (1)
   {
     write_bytelcd(0x80,0);  //DDRAM地址设置
     do{
     write_bytelcd(65,1);  //写数据
     }
     while (--count);
     count=40;            //在DDRAM从地址0开始40个地址中连续写入数据"65"   
   }

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

36

帖子

0

粉丝