1.芯片简介
LCD1602显示屏为字符显示屏,显示字符为16*2。采用 LCD 显示一个字符时比较复杂,因为一个字符由 6×8 或 8×8 点阵组成,既要找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在 LCD1602上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。
主要特点如下
2. 24C02引脚定义
3.LCD1602控制时序
(1)读操作时序如图:
(2)写操作时序如图
4.LCD1602驱动程序
(1)LCD1602.h
#ifndef__LCD1602_H__#define__LCD1602_H__#include< reg52.h >sbit LCD1602_RS = P2^6; sbit LCD1602_RW = P2^5; sbit LCD1602_E = P2^7;#defineLCD1602_Data P0voiddelay_50us_1602(unsignedintt);voidLCD1602_write_com(unsignedcharcom);voidLCD1602_write_data(unsignedintdat);voidLCD1602_init(void);/******************************************* 函数名称:Disp_ZF 功 能:控制液晶显示字符 参 数:addr--显示位置的首地址 pt--指向显示数据的指针 num--显示字符个数 返回值 :无 ********************************************/voidLCD1602_Disp_ZF(unsignedcharaddr,constunsignedchar* pt,unsignedcharnum);#endif
(2)LCD1602.c
#include"LCD1602.h"//延时函数voiddelay_50us_1602(unsignedintt){unsignedcharj;for(;t >0;t--)for(j=19;j >0;j--); }//LCD1602写指令voidLCD1602_write_com(unsignedcharcom){ LCD1602_E =0; LCD1602_RS =0; LCD1602_RW =0; LCD1602_Data= com;delay_50us_1602(10); LCD1602_E =1;delay_50us_1602(20); LCD1602_E =0; }//LCD1602写数据voidLCD1602_write_data(unsignedintdat){ LCD1602_E =0; LCD1602_RS =1; LCD1602_RW =0; LCD1602_Data = dat;delay_50us_1602(10); LCD1602_E =1;delay_50us_1602(20); LCD1602_E =0; }//LCD1602初始化voidLCD1602_init(void){delay_50us_1602(300);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);LCD1602_write_com(0X38);LCD1602_write_com(0X08);LCD1602_write_com(0X01);LCD1602_write_com(0X06);LCD1602_write_com(0X0C); }voidLCD1602_Disp_ZF(unsignedcharaddr,constunsignedchar* pt,unsignedcharnum){unsignedchari;LCD1602_write_com(addr);for(i =0;i < (num*1);i++)LCD1602_write_data(*(pt++)); }
全部0条评论
快来发表一下你的评论吧 !