您的位置 首页 知识

MEGA8单片机对LCD1602液晶屏的驱动

MEGA8单片机对LCD1602液晶屏的驱动-1)由于找不到的1620资料,不知道它的操作时序。看到一些帖子说1620和1602没区别,还是有点将信将疑。后面用网友编写的1602程序试验,才知道它们俩没啥区别

2)关于是否检测LCD处于空闲,觉得还是最好在写指令和写数据时都加上。不检测,会导致显示结果不正常。

3)由于连线很多14根(加上背光就是16根),如果有一根除了问题就会影响到显示。所以我是用万用表一根线一根线量了之后才通电试验的。

4)看到很多帖子都建议在初始化LCD前延时几十毫秒。本例中并没有延时,显示也正常。

调试进程总结一下:

1)因为找不到的1620材料,不知道它的操作时序。看到一些帖子说1620和1602没差异,仍是有点将信将疑。后边用网友编写的1602程序实验,才知道它们俩没啥差异

2)关于是否检测LCD处于闲暇,觉得仍是最好在写指令和写数据时都加上。不检测,会导致显现成果不正常。

3)因为连线许多14根(加上背光便是16根),如果有一根除了问题就会影响到显现。所以我是用万用表一根线一根线量了之后才通电实验的。

4)看到许多帖子都主张在初始化LCD前延时几十毫秒。本例中并没有延时,显现也正常。

5)总的说来,不是很难。在遇到问题时只需可以仔细分析,就能找出原因和解决方法。自己前几天在试程序时便是显现成果不对,一直在查看自己的程序,没想到原来是单片机的Flash到寿数了那个抑郁啊。

头文件中有五个函数:

FuncTIon1.unsigned char AskBusy(void) 问询LCD1620是否闲暇, 返回值“1”闲暇, “0”为忙;

FuncTIon2.WritEDAta(char data) 写数据到LCD1620;

FuncTIon3.WriteCommand(char command) 写指令到LCD1620;

FuncTIon4.PutOneCharLCD(x,y,*Disp) 在LCD1620上显现一个字符, x,y界说方位

Function5.PutStringLCD(a,b,*DispString) 在LCD1620上显现一个字符串, a,b界说初始方位。 Function6.LCD_Init() 初始化LCD

在运用此头文件之前,必须有以下宏界说:

#define DataPortPullup PORTx

#define DataPortDirection DDRx

#define ReadLCDPINPINx

#defineCTRlPortPullup PORTx

#define CtrlPortDirection DDRx

#define RS_Bit Px?

#define RW_Bit Px?

#define E_Bit Px?

其间“x”代表B,C,D(mega8中无A口),“?”代表“0~1”

完好头文件如下(解说搞了一大堆,也学学用英语……):

/*******************************************************/

/* Project :1620 Display Headfile */

/* Date :2008,3,11 */

/* Author :lhy */

/* Version :v1.1 */

/* Rework :lhy */

/* Rework Date :2008.4.28 */

/* */

/* Comments : */

/* 1 Function Description */

/* Function1.unsigned char AskBusy(void) */

/* –Calls this Fun to ask if LCD is busy, */

/* 1–free,0–busy; */

/* Function2.WritEDAta(char data) */

/* –Write data to LCD */

/* Function3.WriteCommand(char command) */

/* –write command to LCD */

/* Function4.PutOneCharLCD(x,y,*Disp) */

/* –Put one char to LCD. */

/* Function5.PutStringLCD(a,b,*DispString) */

/* –Put String to LCD. Max length 32bits. */

/* */

/* 2 How to use */

/* Before use this HeadFile, */

/* need to define as below: */

/* #define DataPortPullup PORTx */

/* #define DataPortDirection DDRx */

/* #define ReadLCDPin PINx */

/* #define CtrlPortPullup PORTx */

/* #define CtrlPortDirection DDRx */

/* #define RS_Bit Px? */

/* #define RW_Bit Px? */

/* #define E_Bit Px? */

/* ‘x’ -》 A,B,C,D.。. */

/* ‘?’ -》 0,1,2,3,4,5,6,7 */

/* And set control port output,like this: */

/* CtrlPortDirection |= */

/* (1《/* 3 Add the Function “LCD_Init(void)” */

/* Before this Fun, you must set control port */

/* output. */

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/345508.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部