深圳市景科科技有限公司
主营产品:
2023年07月16日 08:23
型号 |
JK-02 |
分辨率 |
1602 |
亮度 |
高亮cd/m2 |
品牌/型号 |
JK/JK-02 |
本链接的LCD1602A的工作电压是5V的,如果您需要3.3V的,请联系客服O
厂家资料+51单片机C语言例子程序下载地址:
http://ishare.iask.sina.com.cn/f/23917910.html(请复制到浏览器打开,)视频教程如下:http://www.tudou.com/programs/view/z27XlxJkZ4I/(请复制到浏览器打开,淘宝不支持外链)本店是LCD厂家一级代理商,质量有保证,价格有优势!51学习板配套液晶,全新(不带排针排母)。请注意,由于本店利润低,技术人员成本高,本液晶模块不提供技术支持,请淘友们自行学习,提高自学能力。我们的液晶模块在出厂前都经过严格的测试,质量有保证! 由于我们的LCD1602是全新的,上面不带排针排母的,如果需要,请联系客服。焊接注意事项:由于液晶模块带有精密元件,焊接时,请尽量使用质量好的烙铁焊接。因为部分低价劣质烙铁带有很高的静电,容易损坏精密元件。如果实在没有好质量的烙铁,可以用一条导线将烙铁与自来水管(如果你家的自来水管是铁的话)连到一起,或者和墙壁的铁门铁窗连到一起。这样虽然不是严格的接地,但是也可以起到一定的作用,保护我们的液晶模块。ILCD1602引脚说明如下:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光电源正极第16脚:背光电源负极本店LCD1602的尺寸图如下:
本店有蓝屏的LCD1602和黄绿屏的LCD1602,两者的区别如下图: 蓝屏和黄绿屏的尺寸、功能、引脚等完全一样,唯一的差别就是显示的效果不一样。由上图可以看到,蓝屏的是蓝色底白色字,黄绿屏的是黄色底黑色字。如果您是学习用的,不知道应该买哪种,我们建议买蓝屏的,因为最多人用蓝屏的。完美的包装,保护您的宝贝:
参考电路如下:如果发现LCD1602的显示效果不理想或者没有显示,请调节接到第3脚的可调电阻。参考的51单片机程序如下:
请注意电路的接口不同,程序需要相应地修改。再次声明,本店不提供技术支持,请淘友们自行学习!#include <reg51.h>
#include <intrins.h>
//#include <at89x51.h> sbit LCD_RS=P1^0;//定义引脚
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
#define LCD_Data P2
#define Busy 0x80 //用于检测LCD状态字中的Busy标识 void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char code uctech[] = {"ic2012.taobao.co"};
unsigned char code net[] = {"Happy every day!"};void main(void)
{
Delay400Ms(); //启动等待,等LCD讲入工作状态
LCDInit(); //LCM初始化
Delay5Ms(); //延时片刻(可不要) DisplayListChar(0, 0, uctech);
DisplayListChar(0, 5, net);
ReadDataLCD();//测试用句无意义
while(1);
}//写数据
void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD(); //检测忙
LCD_Data = WDLCD;
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 0; //若晶振速度太高可以在这后加小的延时
LCD_E = 0; //延时
LCD_E = 1;
}//写指令
void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测
{
if (BuysC) ReadStatusLCD(); //根据需要检测忙
LCD_Data = WCLCD;
LCD_RS = 0;
LCD_RW = 0;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
}//读数据
unsigned char ReadDataLCD(void)
{
LCD_RS = 1;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
return(LCD_Data);
}//读状态
unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
while (LCD_Data & Busy); //检测忙信号
return(LCD_Data);
}void LCDInit(void) //LCM初始化
{
LCD_Data = 0;
WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms(); WriteCommandLCD(0x38,1); //显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x08,1); //关闭显示
WriteCommandLCD(0x01,1); //显示清屏
WriteCommandLCD(0x06,1); //显示光标移动设置
WriteCommandLCD(0x0C,1); //显示开及光标设置
}//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; //算出指令码
WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength; ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20) //若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
ListLength++;
X++;
}
}
}//5ms延时
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}//400ms延时
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
联系方式