[驱动库]I2C接口的1602液晶

发布于 2013-02-26 18:08:47
想起了刚学51单片机那会,基本上所有开发板都配了一个1602的LCD。
大家用51单片机做的产品很多也配了一个1602。
但我是不喜欢1602的,因为他需要16根线,算得上一个字一根线了,至于嘛 [s:184]

当然,也有人使用4bit方式,甚至人肉驱动,这类超出人类能力之外的不在讨论之列。
直到有一天,YRW跟我说有I2C接口的1602,去介绍界面一看真的只有2根线。。。
I2C_1602_001.jpg果断下单。

今天收到了,驱动了一下,果然很容易。
// Wire Master Writer
#include

void setup()
{
}

byte x = 0;

void initial_lcd(void)
{
Wire.begin();
Wire.beginTransmission(0x3C);

Wire.write(0x00); // control: Co=0,A0=0, send commands.
Wire.write(0x38); // function set.
Wire.write(0x0C); // display on/off.
Wire.write(0x01); // clear display.
Wire.write(0x06); // entry mode set.
Wire.endTransmission();
}

/*
* line: 0/1
* column: 0~15
* str: "hello world!"
*/
void disp_str(int line, int column, const char * str)
{
Wire.begin();
Wire.beginTransmission(0x3C);

Wire.write(0x80); // Co=1,A0=0,sends 1 command.
Wire.write(0x80 + line * 0x40 + column); // set DDRAM ADDRESS.

Wire.write(0x40); // write data.
delay(1); //delay 1ms.
while(*str && (column <16))
{
Wire.write(*str);
str++;
column++;
}

Wire.endTransmission(); // stop transmitting
}

void loop()
{
initial_lcd();
disp_str(0, 0, "hello world!");
disp_str(1, 0, "**JLX1602I LCM**");

x++;
delay(500);
}


适用于ART的驱动库代码:待续

查看更多

关注者
0
被浏览
4.8k
4 个回答
wnnwoo
wnnwoo 2013-03-10
请问如何得到wire 这个lib, 已经在art work里了吗?
aozima
aozima 2013-03-10
拒绝白嫖,拒绝键盘侠!
请问如何得到wire 这个lib, 已经在art work里了吗?

待写ing... [s:182]
nongxiaoming
nongxiaoming 2013-04-14
不是吧,第一次看到还有个I2C接口的1602,是每个都有吗?还是这个是特殊的啊?记得amobbs那里有大神两根线搞定过,但要加好多电容电阻

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览