1602A的基本描述

1602A的基本描述这篇博客介绍了 LCD1602 和 LCD12864 两种液晶显示器 重点在于它们的使用方法 包括初始化 写命令 写数据等操作

大家好,欢迎来到IT知识分享网。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
LCD1602的主控芯片是HD44780或者其它兼容芯片。
与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除了普通字符外,还可以显示点阵图案,带有汉字库的还可以显示汉字,它的并行驱动方式与LCD1602相差无几,所以,在这里花点时间是值得的。

在这里插入图片描述

//File1 #ifndef __ZHANGTYPE_H__ #define __ZHANGTYPE_H__ #define uint8 unsigned char #define uint16 unsigned short int #define uint32 unsigned long int #define int8 signed char #define int16 signed short int #define int32 signed long int #define uint64 unsigned long long int #define int64 signed long long int #endif //File2 #ifndef __FUN_H__ #define __FUN_H__ #include "ZhangType.h" #include void Delay(uint16 time); #endif //File3 #include "fun.h" void Delay(uint16 time) { 
    while(time--); } //File4 #ifndef __1602_H__ #define __1602_H__ #include #include "ZhangType.h" //变量类型 #include "fun.h" //常用函数  #define SETMODE 0x38 //16*2显示,5*7点阵,8位数据接口 #define DISOPEN 0x0C //显示开,不显示光标,光标不闪烁 #define DISMODE 0x06 //读写字符后地址加1,屏显不移动 #define SETADDR 0x80 //设置数据地址指针初始值 #define CLEAR 0x01 //清屏,数据指针清零 #define RET 0x02 //回车,数据指针清零 #define PORT P2 //I/O口 sbit RS = P1^0; sbit RW = P1^1; sbit E = P1^2; void Init1602(void); //初始化1602 void Write1602_Com(uint8 com); //写命令 void Write1602_Dat(uint8 dat); //写数据 void CheckBusy(void); //检查忙 void Write1602_One_Dat(uint8 X,uint8 Y,uint8 dat); //写一个数据 void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf); //写一个数据串 #endif// //File5 #include "1602.h" void Write1602_Com(uint8 com) { 
    E=0; RS=0; //命令 Delay(50); //延时 RW=0; //写 Delay(50); PORT=com; //端口赋值 Delay(50); E=1; //高脉冲 Delay(50); E=0; } void Write1602_Dat(uint8 dat) { 
    E=0; RS=1; //数据 Delay(50); //延时 RW=0; //写 Delay(50); PORT=dat; //端口赋值 Delay(50); E=1; //高脉冲 Delay(50); E=0; } void CheckBusy(void) { 
    uint8 temp; RS=0; //命令 RW=1; //读 E=0; while(1) { 
    PORT=0xFF; //端口为输入 E=1; //高脉冲 temp=PORT; E=0; if ((temp&0x80)==0) //检查BF位是否为0 break; } } void Init1602(void) { 
    Write1602_Com(SETMODE); //模式设置 Delay(500); Write1602_Com(DISOPEN); //显示设置 Delay(500); Write1602_Com(DISMODE); //显示模式 Delay(500); Write1602_Com(CLEAR); //清屏 Delay(500); } void Write1602_One_Dat(uint8 x,uint8 y,uint8 dat) { 
    x&=0x0f; y&=0x01; if(y) x|=0x40; x|=0x80; Write1602_Com(x); Write1602_Dat(dat); } void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf) { 
    uint8 i; Write1602_Com(addr); for(i=0;i { 
    Write1602_Dat(pbuf[i]); } } //File6 /* *名称:主文件(_main.c) *功能:测试 *日期:2014/09/09 */ #include "1602.h" #include "fun.h"  uint8 code hot[8]={ 
    //摄氏温度字模 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00 }; uint8 code pi[8]={ 
    0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,0x00 //pai }; uint8 code strMCU[]="I love MCU!"; uint8 code strTest[]="LCD1602 Test!"; uint8 code blog[]="Welcome to my blog!"; uint8 i; void main() { 
    Init1602(); //初始化1602 //自定义CGRAM Write1602_Str(0x40,8,hot); //摄氏温标 Write1602_Str(0x48,8,pi); //pai Write1602_Str(0x80,strlen(strMCU),strMCU); //"I love MCU!" Write1602_Str(0x80+0x40,strlen(strTest),strTest); //"LCD1602 Test!" for(i=0;i<50;i++) //延时一段时间 Delay(10000); Write1602_Com(CLEAR); //指令执行时间较长 Delay(500); //多加一些延时 for(i=0;i<16;i++) Write1602_Dat(0); Write1602_Com(0xc0); //设置DDRAM地址 for(i=0;i<16;i++) Write1602_Dat(1); for(i=0;i<50;i++) //延时一段时间 Delay(10000); Write1602_Com(CLEAR); //指令执行时间较长 Delay(500); //多加一些延时 Write1602_Str(0x80+0x10,strlen(blog),blog); //写在显示之外 while(1) { 
    Write1602_Com(0x18); //左移 for(i=0;i<20;i++) //延时 Delay(10000); } } 

个人学习用途博客 部分内容摘抄自网络

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139931.html

(0)
上一篇 2025-05-31 21:20
下一篇 2025-05-31 21:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信