单片机/MCUwilliam hill官网
直播中

tghsbhsc110

9年用户 21经验值
擅长:嵌入式技术
私信 关注
[问答]

求教:关于51单片机连接1602显示屏IO口的问题

1602显示屏使用说明如图:
1602接线图说明


但是为了方便连接PCB,我是这样画的:
我的连线

IO口不是从1.0连到1.7,而是从1.7连到1.0。像这样画的话,1602可以工作吗,单片机是STC89C52;这样连需不需要在程序上做修改。
已退回2积分

回帖(5)

keil-uvision4

2015-12-3 21:17:01
刚好在做的项目有相关的部分,我用的是STC12C5410AD,数据总线和你连接的一模一样,留个邮箱,如果今天有空我把文件发给你,改一下引脚定义就可以直接用。
举报

keil-uvision4

2015-12-6 23:09:42

#ifndef _LCD1602_H_
#define _LCD1602_H_

#include "reg51.h"
#include "intrins.h"

#define NOP _nop_()
#define GPIO_LCD P1
#define WAIT()         NOP,NOP,NOP,NOP;
#define LCD_WRITE  0
#define LCD_READ   1
#define LCD_DAT    1
#define LCD_CMD    0


***it RW = P2^1;
***it RS = P3^7;
***it EN = P2^0;


void LcdInit(void);
extern void Lcd1602WriteData(unsigned char Data);
extern void Lcd1602WriteCommand(unsigned char Command);
static void Delay(void);

void Lcd1602WriteCommand(unsigned char Command)
{
        unsigned char i;
        unsigned char Lcd;
        RS = LCD_WRITE;
        WAIT();
        RW = LCD_CMD;
        WAIT();
        for(i = 0;i < 8;i++)
        {
                Lcd<<=1;
                Lcd |= Command&0x01;
                Command>>=1;
        }
        GPIO_LCD = Lcd;
        EN = 1;       
        Delay();
        EN = 0;          
}

void Lcd1602WriteData(unsigned char Data)
{
        unsigned char i;
        unsigned char Lcd;
        RS = LCD_DAT;
        WAIT();
        RW = LCD_WRITE;
        WAIT();
        for(i = 0;i < 8;i++)
        {
                Lcd<<=1;
                Lcd |= Data&0x01;
                Data>>=1;
        }
        GPIO_LCD = Lcd;
        EN = 1;       
        Delay();
        EN = 0;
}



static void Delay(void)
{
        unsigned char i, j;

        _nop_();
        i = 11;
        j = 19;
        do
        {
                while (--j);
        } while (--i);
}

void LcdInit(void)
{
        Lcd1602WriteCommand(0x38);        //16*2,8位数据接口
        Lcd1602WriteCommand(0x0c);        //开启显示,光标不显示、不闪烁
        Lcd1602WriteCommand(0x40);        //数据指针自增1,字符不移动
        Lcd1602WriteCommand(0x06);
        Lcd1602WriteCommand(0x01);        //清屏
        Lcd1602WriteCommand(0x80);        //数据指针指向第一行第一个字符
}
//我吧两个文件合在一起了。
举报

杨永胜

2015-12-26 08:34:37
如果这样连接的话,代码是需要修改的,相当于,你要把要写的数据进行颠倒顺序,硬件是死的,软件是活的。
举报

工田

2016-6-2 15:03:22
66666666666666666666666666666666666666666666666666666666666666666666666666666666666
举报

沈涛强

2016-6-7 14:17:58
这个不是给自己找麻烦么?
你需要将输出的数据一个个调换
举报

更多回帖

发帖
×
20
完善资料,
赚取积分