LCD1602从我接触单片机开始就在用,以前用的时候,有时用RS和EN,RW接地,有时也用四线模式,但是用到最后,我发现还是用8跟数据线,RS,RW,EN都接到单片机上是最好用的......
Proteus仿真图:
LCD1602.H代码:
#ifndef _LCD1602_H_ #define _LCD1602_H_ #include #include "TYPEDEF.H" //液晶初始化函数:
|
LCD1602.C代码:
#include "LCD1602.H" #include "TYPEDEF.H" #include "CONFIG.H" //写命令函数 static void LCD1602_WriteCommand( uint8 com ); //判忙函数 static void LCD1602_CheckBusy(); //写数据函数 static void LCD1602_WriteData( uint8 dat ); //将数据转化为字符串 static void Uint32_To_String( uint8 *str, uint32 dat );
LCD1602_WriteCommand( 0x38
);//8跟数据线,2行显示,5*8点阵 LCD1602_WriteCommand( 0x0c
);//不显示光标,不闪烁 void LCD1602_SetPosition( uint8 x, uint8 y ) { if( x==0 ) LCD1602_WriteCommand( 0X80+y ); else if( x==1 ) LCD1602_WriteCommand( 0X80+0x40+y
);
} void LCD1602_WriteString(
uint8 x, uint8 y, uint8 *str ) uint8 buf[12] =
{0}; } LCD1602_SetPosition( x, y
); LCD1602_CheckBusy(); uint8 dat = 0; en = H; PORT_DATA = dat; //uint32
数据的最大值为4294967295,有10位数 }while( dat != 0
); |
这个LCD1602中把我平常常用的关于液晶的函数都写到了里面,用的时候直接调用就可以了,很多时候这样写很好,但是有时候,当很多个文件在一起时,每个文件里面都写很多函数,会发现data太大了,超过了RAM空间的大小,发生编译错误,在proteus中无法使用xdata,仿真会发生错误,在实际中可以使用。
上一篇:(Time)DS1302时钟芯片驱动程序
下一篇:51单片机开发系列五_矩阵按键扫描
推荐阅读最新更新时间:2024-03-16 15:24