131 1300 0010
其他
当前位置: 首页>> 元件技术>>其他>>
  • 导航栏目
  • 二极管
  • 整流桥
  • MOS管
  • 其他
  • MEGA8单片机对LCD1602液晶屏的驱动
    MEGA8单片机对LCD1602液晶屏的驱动
  • MEGA8单片机对LCD1602液晶屏的驱动
  •   发布日期: 2019-04-09  浏览次数: 1,130

    调试过程总结一下:

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

     

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

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

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

    5)总的说来,不是很难。在遇到问题时只要能够仔细分析,就能找出原因和解决方法。自己前几天在试程序时就是显示结果不对,一直在检查自己的程序,没想到原来是单片机的Flash到寿命了那个郁闷啊。

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

    头文件中有五个函数:

    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. */


  • ·上一篇:
    ·下一篇:
  • 其他关联资讯
    深圳市日月辰科技有限公司
    地址:深圳市宝安区松岗镇潭头第二工业城A区27栋3楼
    电话:0755-2955 6626
    传真:0755-2978 1585
    手机:131 1300 0010
    邮箱:hu@szryc.com

    深圳市日月辰科技有限公司 版权所有:Copyright©2010-2023 www.szryc.com 电话:13113000010 粤ICP备2021111333号