找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2635|回复: 8
收起左侧

求帮助!!!

[复制链接]
ID:50469 发表于 2013-8-6 11:22 | 显示全部楼层 |阅读模式
有哪位大神会IIC液晶啊,可以提示一点也行,我现在根本是无从下手啊,那三个控制端口RS,RW,EN不知道如何是好???
回复

使用道具 举报

ID:52066 发表于 2013-8-6 12:29 | 显示全部楼层
RS=1是写数据,RS=0是写地址;RW=1是在液晶里读数据,RW=0是在液晶里写数据;E是使能;
写地址可以这样:
          RS=0;
         delay(5);//延迟5ms左右
         P2=com;  //写地址(com)
         EN=1;
         delay(5);
         EN=0;
写数据将RS=1;其他不变就行。
写地址要参照液晶说明。
回复

使用道具 举报

ID:50469 发表于 2013-8-6 14:42 | 显示全部楼层
这种并行的我也会写,我问的是串行液晶的,和IIC一起,只有两条线,SDA和SCL
回复

使用道具 举报

ID:1 发表于 2013-8-6 15:15 | 显示全部楼层
回复

使用道具 举报

ID:50469 发表于 2013-8-6 21:20 | 显示全部楼层
admin 发表于 2013-8-6 15:15
这里有答案:http://www.51hei.com/mcu/2036.html

这个是写LCD1602直接就有外接的控制接口RS,R/W,E的,然后是四线串行,有没有以IIC为串行器件的?电路图是这样的,外接的接口只有vcc,GND,SCL,SDA四个,还是很感谢,给了我不少启发!!!
回复

使用道具 举报

ID:50469 发表于 2013-8-6 21:22 | 显示全部楼层
我的那个IIC液晶是基于Arduino写的,但是用51单片机写不会。
回复

使用道具 举报

ID:50469 发表于 2013-8-7 17:28 | 显示全部楼层
IIC液晶:我已经写出点了,但还不能很好的控制,给大家参考一下:
#include <reg52.h>
#include "intrins.h"
#define uint  unsigned int
#define uchar unsigned char
sbit SCL=P2^1;
sbit SDA=P2^0;
//延时函数
void delayus()
{
        ;;;;;
}
void delayms(uchar x)
{
        uchar j;
        while(x--)
                for(j=110;j>0;j--);
}
//开始信号
void iic_start(void)
{
        SDA = 1;
        delayus();
    _nop_();_nop_();_nop_();_nop_();_nop_();
        SCL = 1;
        delayus();
        SDA=0;
        delayus();
}
//停止信号
void iic_stop(void)
{
        SDA = 0;
        delayus();
        SCL = 1;
        delayus();
        SDA = 1;
        delayus();
}
//初始化
void iicinit(void)
{       
        SDA = 1;
        delayus();
        SCL=1;
        delayus();
}
//应答
void respons(void)
{
        uchar i=0;
        SCL = 1;
        delayus();
        while((SDA=1)&&(i<255))
                i++;
        SCL = 0;
        delayus();
}
//发送一个字节
void write_byte(uchar date)
{
        uchar i,temp;
        temp=date;                                                       
        for(i=0;i<8;i++)
        {
                temp=temp<<1;                                                        
                SCL = 0;
                delayus();
                SDA=CY;
                delayus();
                SCL = 1;
                delayus();       
        }
        SCL=0;
        delayus();
        SDA=1;
        delayus();
}
//写地址,数据
void write_lcd(uchar contr1,uchar contr2,uchar date1,uchar date2)
{
        iic_start();
        write_byte(0x4e);                                               
        respons();
        write_byte(contr1);
        write_byte(contr2);
        respons();
        delayms(5);
        write_byte(date1);
        write_byte(date2);
        respons();
        iic_stop();
}
void lcd_init()
{
        write_lcd(0x3c,0x8c,0xf8,0xf8);       
        write_lcd(0x0c,0xcc,0xf8,0xf8);       
        write_lcd(0x0c,0x6c,0xf8,0xf8);       
        write_lcd(0x0c,0x1c,0xf8,0xf8);       
}
void main()
{
        iicinit();
        lcd_init();
        while(1)
        {
                write_lcd(0xfc,0x0c,0xf8,0x08);                //先写地址
                write_lcd(0x4d,0x3d,0x48,0x38);                //写数据
                write_lcd(0x4d,0x4d,0x48,0x48);                //写数据
                write_lcd(0xad,0x0d,0xa8,0x08);                //写数据
        }
}
回复

使用道具 举报

ID:50469 发表于 2013-8-7 17:29 | 显示全部楼层
在百度上搜IIC液晶会有他的原理的讲解!
回复

使用道具 举报

ID:32572 发表于 2013-8-7 17:34 | 显示全部楼层
你会IIC总线接口的方式吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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