微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求教!1602LCD 调一天了为什么还是没法用?

新手求教!1602LCD 调一天了为什么还是没法用?

时间:10-02 整理:3721RD 点击:
新买的 1602A 液晶屏,怎么搞都没法正常显示。
用的 STC89C52 ,自己焊板子搭线驱动 1602A。VDD<--->3.3V   ,  背光正极通过 560欧 接 +5V ,背光负极接 P0.3 控制背光亮灭, V0 通过 1K 电阻接地。
自己实在搞不清楚哪里出了问题,听说论坛里高手多,特来向大神们求教~! 第一次发帖不懂格式,见谅。
-----------------------------------------------------------------  1602LCD.c 代码如下:  ---------------------------------------------------------------------
#include <reg52.h>
#include "1602LCD.h"
void Delay(unsigned int z){
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
/*
void CHECK_BUSY(){
        DATA = 0XFF;
        do
        {
                RS = 1;
                RW = 1;
                Delay(5);
                E = 0;
                Delay(5);
                E = 1;
        }while(BUSY);
        E = 0;
}
*/
void W_CMD(unsigned char cmd){
        //CHECK_BUSY();
        RS = 0;
        RW = 0;
        DATA = cmd;
        Delay(5);
        E = 1;
        Delay(5);
        E = 0;
}
void W_DAT(unsigned char dat){
        //CHECK_BUSY();
        RS = 1;
        RW = 0;
        DATA = dat;
        Delay(5);
        E = 1;
//        Delay(5);
//        E = 0;        
}
void Init(){
        E = 0;
        W_CMD(0X38);          /* 显示模式设置   00111000   设置16*2显示   5*7点阵   8位数据接口 */
        W_CMD(0X0F);          /* 显示开关及光标设置   00001DCB
                                           * D=1 开显示                D=0  关显示
                                           * C=1 显示光标        C=0  不显示光标
                                           * B=1 光标闪烁        B=0  光标不闪烁
                                           */
        W_CMD(0X06);          //地址指针自动+1且光标+1,写字符屏幕不会移动
        W_CMD(0X01);
        W_CMD(0X80);
}
void main(){
        LIGHT = ON;       
        Init();               
        W_DAT('A');
        while(1);
}

-------------------------------------------------------------------------------  1602LCD.h 代码如下: --------------------------------------------------------------------------
#ifndef _1602LCD_H_
#define _1602LCD_H_
#define OFF 1
#define ON 0
#define DATA P2
sbit RS = P0^0;
sbit RW = P0^1;
sbit E = P0^2;
sbit LIGHT = P0^3;
sbit BUSY = P2^7;
#endif

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top