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.

[参考译文] TMS320F28027F:8位模式 LCD 接口

Guru**** 2040210 points
Other Parts Discussed in Thread: TMS320F28027
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/802838/tms320f28027f-8-bit-mode-lcd-interfacing

器件型号:TMS320F28027F
主题中讨论的其他器件:TMS320F28027

大家好,

这与1602A LCD 与 TMS320F28027的连接有关、因此经过一小段残桩和研究后、我最终得到 了一个工作正常的 LCD 代码、并希望在这里向所有人分享以供将来参考。请注意、这是一个8位模式的代码、并且很快会出现 我还将上传4位模式的代码以及工作视频链接。代码如下所示:-

连接为(D0-D7)->(GPIO0-GPIO7)/(RS->GPIO12/EN->GPIO19)


#include "F2802x_Device.h"
#include "F2802x_examples.h"

void GPIO_select (void);
void SendByte (无符号字符值);
空 WriteCommandLCD (无符号字符 CommandByte);
void DisplayLCD (char* textptr);
void InitializeLCD (void);
void lcd_gotoxy (int x、int y);


void main (void)

memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
GPIO_SELECT();
InitializeLCD();
for (;;)

LCD_gotoxy (0、1);
DisplayLCD ("欢迎使用");
DELAY_US (1000000);


void SendByte (无符号字符值)

if ((value & 0x01)== 0x01)
GpioDataRegs.GPASET.bit.GPIO0 =1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO0 =1;

if ((value & 0x02)=0x02)
GpioDataRegs.GPASET.bit.GPIO1=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO1=1;

if ((value & 0x04)=0x04)
GpioDataRegs.GPASET.bit.GPIO2 =1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO2 =1;

if ((value & 0x08)== 0x08)
GpioDataRegs.GPASET.bit.GPIO3=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO3=1;

if ((value & 0x10)== 0x10)
GpioDataRegs.GPASET.bit.GPIO4=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO4=1;

if ((value & 0x20)== 0x20)
GpioDataRegs.GPASET.bit.GPIO5=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO5=1;

if ((value & 0x40)== 0x40)
GpioDataRegs.GPASET.bit.GPIO6=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO6=1;

if ((value & 0x80)== 0x80)
GpioDataRegs.GPASET.bit.GPIO7=1;
其他
GpioDataRegs.GPACLEAR.bit.GPIO7=1;

GpioDataRegs.GPASET.bit.GPIO19=1;
DELAY_US (1);
GpioDataRegs.GPACLEAR.bit.GPIO19=1;
DELAY_US (500);
};

空 WriteCommandLCD (无符号字符 CommandByte)

GpioDataRegs.GPACLEAR.bit.GPIO12=1;
SendByte (CommandByte);
GpioDataRegs.GPASET.bit.GPIO19=1;
DELAY_US (1);
GpioDataRegs.GPACLEAR.bit.GPIO19=1;
DELAY_US (3000);
};

空 DisplayLCD (char*文本)

for (;*textptr !='\0';+textptr)

GpioDataRegs.GPASET.bit.GPIO12=1;
SendByte (*文本);

};

空初始化 LCD (空)

DELAY_US (100000);

WriteCommandLCD (0x30);
DELAY_US (5000);

WriteCommandLCD (0x30);
DELAY_US (100);

WriteCommandLCD (0x30);

WriteCommandLCD (0x3C);
DELAY_US (10);

WriteCommandLCD (0x08);
DELAY_US (10);

WriteCommandLCD (0x01);
DELAY_US (10);

WriteCommandLCD (0x06);
DELAY_US (10);

WriteCommandLCD (0x0E);
DELAY_US (10);
};

void GPIO_select (void)

EALLOW;
GpioCtrlRegs.GPAMUX1.ALL = 0x00000000;
GpioCtrlRegs.GPAMUX2.ALL = 0x00000000;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO1=1;
GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO3=1;
GpioCtrlRegs.GPADIR.bit.GPIO4=1;
GpioCtrlRegs.GPADIR.bit.GPIO5=1;
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO7=1;
GpioCtrlRegs.GPADIR.bit.GPIO12=1;
GpioCtrlRegs.GPADIR.bit.GPIO19 = 1;
EDIS;
};

void lcd_gotoxy (int x、int y){
int 地址;

如果(y==1)
地址= 0x80;
其他
地址= 0xC0;

WriteCommandLCD (地址|x);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果您使该代码正常工作、则可以看到它。 如果您没有遇到任何问题、请允许我通过单击帖子下方的"此问题已解决"按钮来关闭此帖子。

    谢谢
    Himanshu