当前位置:首页 >> 信息与通信 >>

LCD1602的驱动


具体电路的制作是很简单的,就接了两个电阻,一个是 10 欧姆的背光限流电阻, 另一个是 2K 的 LCD 极板电压调节电阻。这两个电阻的阻值怎么定呢?背光比较简 单,它就相当于在后面接了几个发光二极管,任何时候你只要在 15、16 脚串上个 100 欧的电位器接上电源,调节电位器,觉得亮度合适。此时的阻值便可。LCD 液 晶极板驱动电压调节电阻的确定就稍微麻烦一点。在各数据线,控

制线接好关通上 电源的前提下在第 3 脚(VEE)和地之间接一个 10K 的电位器。调节电位器。当 3 脚 电压高时为全亮,电压为 0 时为全暗(液晶全显示为黑块)。你用电位器把屏幕从全 暗刚好调到变亮。这时便可调试程序。待屏幕能正确显示后再细调电位器,使对比 度合适。这时的阻值便可确定,然后换成等值的固定电阻焊上便可。 我们接着上次的系统板制做:

具体电路的制作是很简单的,就接了两个电阻,一个是 10 欧姆的背光限流电阻, 另一个是 2K 的 LCD 极板电压调节电阻。这两个电阻的阻值怎么定呢?背光比较 简单,它就相当于在后面接了几个发光二极管,任何时候你只要在 15、16 脚串 上个 100 欧的电位器接上电源,调节电位器,觉得亮度合适。此时的阻值便可。 LCD 液晶极板驱动电压调节电阻的确定就稍微麻烦一点。在各数据线,控制线接 好关通上电源的前提下在第 3 脚(VEE)和地之间接一个 10K 的电位器。调节电位 器。当 3 脚电压高时为全亮,电压为 0 时为全暗(液晶全显示为黑块)。你用电位 器把屏幕从全暗刚好调到变亮。这时便可调试程序。待屏幕能正确显示后再细调 电位器,使对比度合适。这时的阻值便可确定,然后换成等值的固定电阻焊上便 可。

反面:

组装后:

具体电路图:

接口说明:

运行:

用户自定义字符的应用: 我们从 CGROM 表上可以看到,在表的最左边是一列可以允许用户自定义的 CGRAM,从 上往下看着是 16 个,实际只有 8 个字节可用。它的字符码是 00000000-00000111 这 8 个地 址,表的下面还有 8 个字节,但因为这个 CGRAM 的字符码规定 0-2 位为地址,3 位无效, 4-7 全为零。因此 CGRAM 的字符码只有最后三位能用也就是 8 个字节了。等效为 0000X111,X 为无效位,最后三位为 000-111 共 8 个。 如果我们要想显示这 8 个用户自定义的字符,操作方法和显示 CGROM 的一样,先设置 DDRAM 位置,再向 DDRAM 写入字符码,例如“A”就是 41H。现在我们要显示 CGRAM 的 第 一个自 定义字 符,就向 DDRAM 写入 00000000B(00H),如果 要显示第 8 个就写 入 00000111(08H),简单吧! 好!现在我们来看怎么向这八个自定义字符写入字模。有个设置 CGRAM 地址的指令大家

还记得吗?赶快再找出来看看。

从这个指令可以看出指令数据的高 2 位已固定是 01,只有后面的 6 位是地址数据,而这 6 位中的高 3 位就表示这八个自定义字符, 最后的 3 位就是字模数据的八个地址了。 例如第一 个自定义字符的字模地址为 01000000-01000111 八个地址。我们向这 8 个字节写入字模数 据,让它能显示出“℃” 地址:01000000 数据:00010000 图示:○○○■○○○○ 01000001 00000110 ○○○○○■■○ 01000010 00001001 ○○○○■○○■ 01000011 00001000 ○○○○■○○○ 01000100 00001000 ○○○○■○○○ 01000101 00001001 ○○○○■○○■ 01000110 00000110 ○○○○○■■○ 01000111 00000000 ○○○○○○○○ 下面我们写一段程序让这 8 个自定义字符显示出一个心的图案: # include <reg51.h> unsigned char table1[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E, 0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00, 0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01, 0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00, 0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心图案 unsigned char table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//字符℃ #define CLEARSCREEN LCD_write_command(0x01) /**************定义接口************************/ #define LCDIO P2 sbit LCD1602_RS=P3^0; sbit LCD1602_RW=P3^1; sbit LCD1602_EN=P3^2; /**************定义函数************************/ void LCD_write_command(unsigned char command);//写入指令函数 void LCD_write_dat(unsigned char dat);//写入数据函数 void LCD_set_xy( unsigned char x, unsigned char y );//设置显示位置函数 void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//显示一个字符函数

void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//显示字符串函数 void LCD_init(void);//初始化函数 void delay_nms(unsigned int n);//延时函数 /********************************************/ /************初始化函数****************/ void LCD_init(void) { CLEARSCREEN;//clear screen LCD_write_command(0x38);//set 8 bit data transmission mode LCD_write_command(0x0c);//open display (enable lcd display) LCD_write_command(0x80);//set lcd first display address CLEARSCREEN;//clear screen } /****************************************************/ /**************写指令函数********************************/ void LCD_write_command(unsigned char command) { LCDIO=command; LCD1602_RS=0; LCD1602_RW=0; LCD1602_EN=0; LCD1602_EN=1; delay_nms(10); } /***************************************************/ /****************写数据函数************************/ void LCD_write_dat(unsigned char dat) { LCDIO=dat; LCD1602_RS=1; LCD1602_RW=0; LCD1602_EN=0; delay_nms(1); LCD1602_EN=1; } /****************************************************/ /***************设置显示位置**************************/ void LCD_set_xy( unsigned char x, unsigned char y ) { unsigned char address; if (y == 1) address = 0x80 + x; else address =0xc0+ x;

LCD_write_command(address); } /***************************************************/ /****************显示一个字符**********************/ void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat) { LCD_set_xy( x, y ); LCD_write_dat(dat); } /**********************************************/ /***************显示字符串函数***************/ void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s) { LCD_set_xy( X, Y ); while (*s) { LCD_write_dat(*s); s ++; } } /***********************************************/ /********** 延时**********************/ void delay_nms(unsigned int n) { unsigned int i=0,j=0; for (i=n;i>0;i--) for (j=0;j<10;j++); } /**************************************/ /***********主函数**************/ void main(void) { unsigned char i,j,k,tmp; LCD_init(); delay_nms(100); tmp=0x40;//设置 CGRAM 地址的格式字 k=0; for(j=0;j<8;j++) { for(i=0;i<8;i++) { LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址 delay_nms(2); LCD_write_dat(table1[k]); // 向 CGRAM 写入自定义字符表的数据

k++; delay_nms(2); } tmp=tmp+8; } LCD_dsp_string(1,1,"LCD TEST ");//在第一行第一列显示“LCD TEST” LCD_dsp_string(1,2,"SUCCESSFUL ");//在第二行第一列显示“SUCCESSFUL” for (i=0;i<4;i++) { LCD_dsp_char( 12+i,1,i);//在第一行第 12 列位置显示心图案的上半部 delay_nms(1); } for (i=4;i<8;i++) { LCD_dsp_char( 12+i-4,2,i);在第二行第 12 列位置显示心图案的下半部 delay_nms(1); } while (1); } /********************************************************************/ 实际效果如图:


相关文章:
LCD1602的单片机驱动详解
LCD1602 的单片机驱动详解一.接口 LCD1602 是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是 HD44780 或者其它兼容芯片。刚开始接触它的大多是单片机...
lcd1602的基本认识及驱动程序
玩过了数码管和 LED 点阵后开始玩 LCD 就从最简单的 LCD1602 开始 烧录 IC 太麻烦了,改用仿真 之前下过好几个版本的 PROTEUS,不过没用起来,昨天又下了一...
LCD1602在51最简单的驱动程序
LCD1602在51最简单的驱动程序_电子/电路_工程科技_专业资料。写者纯手打的一个小驱动,写的不好勿喷~~ 头文件 #ifndef _LCD1602_H #define _LCD1602_H #...
一个旋转编码器+LCD1602的驱动程序
一个旋转编码器+LCD1602的驱动程序_电子/电路_工程科技_专业资料。一个旋转编码器+LCD1602的驱动程序采用查询方式,用LED与LCD1602显示#...
LCD1602驱动程序
LCD1602驱动程序_工学_高等教育_教育专区。LCD1602驱动程序 自己编写的 绝对能用头文件部分: #ifndef __LCD1602_H__ #define __LCD1602_H__ #define uint8...
非常详细的verilog写的LCD1602驱动
最近在网上找了很多用 verilog 驱动 LCD1602 的程序,但基本没有一个是完美运 行,很多论坛所谓大神的代码综合时候一样很多缺陷,要知道每一个 warning 都有可能是...
LCD1602四线驱动的方法
LCD1602 四线驱动的方法一、 硬件连接:见下图,图图中 LCD1602 的高四位 DB7-DB4 和 RS、E 端接到单片机的 6 个 I/O 口,R/W 接地。这种连接方法只能...
51单片机任意2个IO口驱动LCD1602_图文
51 单片机任意 2 个 IO 口驱动 LCD1602 相信大家对 1602 显示屏已经十分熟悉,驱动方式有 8 线制(需要 11 根线)和 4 线制 (需要 7 根线) ,这里为大家...
51单片机驱动1602液晶(4线串行)
51 单片机驱动 1602 液晶(4 线串行) 2015-06-26 12:04:01 来源:51hei 关键字: 51 单片机 1602 液晶 4 线串行 /*单片机 I/O 口使单片机资源的重要组成...
LCD1602A驱动程序
LCD1602A驱动程序_信息与通信_工程科技_专业资料。lcd1602A驱动程序C 语言源程序 /*** ** 1602A 液晶屏驱动程序 ** 晶振频率:11.0592M ***/ #include <...
更多相关标签:
lcd1602驱动程序 | lcd1602 4线驱动 | stm32驱动lcd1602程序 | lcd1602四线驱动 | stm32驱动lcd1602电路 | lcd1602驱动电路 | stm32 驱动8线lcd1602 | stm32驱动lcd1602 |