This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于DSP28335控制LCD12864的问题

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

  • 之后我根据原理图的引脚接线,自己尝试数据一位位传输的方式

    #include"DSP2833x_Device.h"
    #include "DSP2833x_Examples.h"
    #define EN GpioDataRegs.GPBDAT.bit.GPIO54
    #define RW GpioDataRegs.GPBDAT.bit.GPIO56
    #define RS GpioDataRegs.GPBDAT.bit.GPIO57

    #define D0 GpioDataRegs.GPCDAT.bit.GPIO79
    #define D1 GpioDataRegs.GPCDAT.bit.GPIO78
    #define D2 GpioDataRegs.GPCDAT.bit.GPIO77
    #define D3 GpioDataRegs.GPCDAT.bit.GPIO76
    #define D4 GpioDataRegs.GPCDAT.bit.GPIO75
    #define D5 GpioDataRegs.GPCDAT.bit.GPIO74
    #define D6 GpioDataRegs.GPCDAT.bit.GPIO73
    #define D7 GpioDataRegs.GPCDAT.bit.GPIO72

    #define uchar unsigned char
    extern uchar menu1[]={"选择电机定时设置"};
    extern uchar menu2[]={"时间设置1"};
    extern uchar menu3[]={"时间设置2"};
    extern uchar menu4[]={"时间设置3"};

    void LCDInit(void);
    void Write_order(uchar order);
    void Write_data(uchar data);
    void delay(uchar t);
    void configio(void);
    void InitXintf(void);
    void display(void);
    }

    void LCD_DATA (uchar d)
    {
    D0=d&0x01;
    D1=d&0x02;
    D2=d&0x04;
    D3=d&0x08;
    D4=d&0x10;
    D5=d&0x20;
    D6=d&0x40;
    D7=d&0x80;
    }

    。。。。。

    void configio(void)
    {
    EALLOW;

    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO54 = 1;
    GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1;
    GpioCtrlRegs.GPBMUX2.bit.GPIO57= 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO79 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO78 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO77 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO76 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO75 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO74 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO73 = 1;

    GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 0;
    GpioCtrlRegs.GPCDIR.bit.GPIO72 = 1;
    EDIS;

    }

    但是之前能显示的汉字却不能显示,不知道这是为什么?求解答

  • 看你的屏支不支持串行显示

  • 这个不是应该是并行传输的吗?屏是支持串并行的

  • 这个不是应该是并行传输的吗?屏是支持串并行的

  • 您好,为啥我也是烧的例程确无法显示汉字

  • 你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。

  • 你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。

  • 你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。