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.

[参考译文] CCS/TMS320F28027F:将一个16*2 LCD 与 TMS320F28027F 相连

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587916/ccs-tms320f28027f-interfacing-a-16-2-lcd-with-tms320f28027f

器件型号:TMS320F28027F

工具/软件:Code Composer Studio

我尝试 连接一个16*2 LCD Piccolo C2000 Launchpad。代码似乎正在构建,但 LCD 上没有输出。代码是

/******** /
/* LCD 接口- 8位模式*/
/**//
/* LCD 连接:-*/
/*---------- *
/* D0 -> GPIO0 */
/* D1 -> GPIO1 */
/* D2 -> GPIO2 */
/* D3 -> GPIO3 */
/* D4 -> GPIO4 */
/* D5 -> GPIO5 */
/* D6 -> GPIO6 */
/* D7 -> GPIO7 */
/**//
/* RS -> GPIO12 */
/* RW -> GND */
/* E -> GPIO19 */
/**//
/**//
/******** /

#include "DSP28x_Project.h"//器件头文件和示例 include 文件

#include "F2802x_common/include/gpio.h"
#include "F2802x_common/include/PIE.h"
#include "F2802x_common/include/clk.h"
#include "F2802x_common/include/flash.h"
#include "F2802x_common/include/PLL.h"
#include "F2802x_common/include/PWM.h"
#include "F2802x_common/include/cap。h"
#include "F2802x_common/include/wdog.h"
#include "piccolo_lcd.h"
#include
#include

unsigned char CommandByte;
char lineNumber;
字符*Message;
unsigned char DataByte;
unsigned char 值;
void CursorON (void);//使光标可见*/
void CursorOFF (void);
void DisplayLCD (char linenumber、char * Message);//在 LCD 上的给定位置显示给定的消息(16个字符)
空 WriteCommandLCD (无符号字符 CommandByte);
空 WriteDataLCD (无符号字符 DataByte);
void LCDDelay (void);
void LCDDelay1600 (void);
void SendByte (无符号字符值);
void InitializeLCD (void);//初始化 LCD */


#define RS GPIO_Number_12
#define E GPIO_Number_19

#define D0 GPIO_Number_0
#define D1 GPIO_Number_1
#define D2 GPIO_Number_2
#define D3 GPIO_Number_3
#define D4 GPIO_Number_4
#define D5 GPIO_Number_5
#define D6 GPIO_Number_6
#define D7 GPIO_Number_7
GPIO_Handle myGpio;
pll_handle myPll;
WDOG_Handle myWDog;
clk_handle myClk;

void main (void)

myWdDog = WDOG_INIT ((void *) WDOG_BASE_ADDR、sizeof (WDOG_Obj));
WDOG_DISABLE (myWDog);


myClk = CLK_init ((void *) CLK_base_ADDR、sizeof (CLK_Obj));
myPll = PLL_init ((void *) PLL_base_ADDR、sizeof (PLL_Obj));

CLK_setOscSrc (myClk、CLK_OscSrc_Internal);

PLL_setup (myPll、PLL_Multiplier_10、PLL_DivideSelect_CLKIN_BY_2);


myGpio = GPIO_init ((void *) GPIO_base_ADDR、sizeof (GPIO_Obj));
GPIO_setMode (myGpio、GPIO_Number_0、GPIO_0_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_0、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_1、GPIO_1_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_1、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_2、GPIO_2_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_2、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_3、GPIO_3_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_3、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_4、GPIO_4_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_4、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_5、GPIO_5_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_5、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_6、GPIO_6_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_6、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_7、GPIO_7_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_7、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_12、GPIO_12_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_12、GPIO_Direction_Output);
GPIO_setMode (myGpio、GPIO_Number_19、GPIO_19_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_19、GPIO_Direction_Output);

InitializeLCD();
DisplayLCD("1"、"abjuryoulpyuport");


/*初始化 LCD */
空初始化 LCD (空)

GPIO_setLow (myGpio、E);
LCDDelay1600();
LCDDelay1600();
LCDDelay1600();
LCDDelay1600();

WriteCommandLCD (0x38);//选择8位接口的命令
LCDDelay1600();

WriteCommandLCD (0x38);//选择8位接口的命令
LCDDelay();//小延迟

WriteCommandLCD (0x38);//选择8位接口的命令
LCDDelay();


WriteCommandLCD (0x08);//命令到关闭光标,显示关闭
WriteCommandLCD (0x01);//用于清除 LCD 的命令
LCDDelay1600();
WriteCommandLCD (0x06);//用于设置进入模式的命令

WriteCommandLCD (0x0F);//命令到光标,闪烁光标
LCDDelay1600();
WriteCommandLCD (0x02);//命令将光标返回到主页
LCDDelay1600();


/*将命令字节写入 LCD */
空 WriteCommandLCD (无符号字符 CommandByte)

GPIO_setHigh (myGpio、RS);//清除 RS 引脚以写入命令
SendByte (CommandByte);
LCDDelay();//小延迟


/*向 LCD 发送一个字节的数据*/
void SendByte (无符号字符值)

unsigned char temp;


if ((value & 0x01)== 0x01)
GPIO_setLow (myGpio、D0);
其他
GPIO_setHigh (myGpio、D0);


if ((value & 0x02)=0x02)
GPIO_setLow (myGpio、D1);
其他
GPIO_setHigh (myGpio、D1);


if ((value & 0x04)=0x04)
GPIO_setLow (myGpio、D2);
其他
GPIO_setHigh (myGpio、D2);

if ((value & 0x08)== 0x08)
GPIO_setLow (myGpio、D3);
其他
GPIO_setHigh (myGpio、D3);

if ((value & 0x10)== 0x10)
GPIO_setLow (myGpio、D4);
其他
GPIO_setHigh (myGpio、D4);


if ((value & 0x20)== 0x20)
GPIO_setLow (myGpio、D5);
其他
GPIO_setHigh (myGpio、D5);


if ((value & 0x40)== 0x40)
GPIO_setLow (myGpio、D6);
其他
GPIO_setHigh (myGpio、D6);


if ((value & 0x80)== 0x80)
GPIO_setLow (myGpio、D7);
其他
GPIO_setHigh (myGpio、D7);


GPIO_setLow (myGpio、E);//设置 E 引脚以选择 LCD
for (temp=0;temp<5;temp++);
GPIO_setHigh (myGpio、E);//清除 E 引脚以取消选择 LCD
LCDDelay();//小延迟

/*将数据字节写入 LCD */
空 WriteDataLCD (无符号字符 DataByte)

GPIO_setLow (myGpio、RS);//将 RS 引脚设置为1以写入数据
SendByte (DataByte);
LCDDelay();//小延迟


/*小延迟*/
空 LCDDelay (空)

DELAY_US (50);

/*大延迟*/
空 LCDDelay1600 (空)

DELAY_US (1600);


/*使光标可见*/
void CursorON (void)

WriteCommandLCD (0x0F);//打开光标的命令

/*使光标不可见*/
空 CursorOFF (空)

WriteCommandLCD (0x0c);//关闭光标的命令


/*在 LCD 上显示一条消息*/
void DisplayLCD (char lineNumber、char *消息)

Int A;
if (lineNumber = 1)
{//第一行
WriteCommandLCD (0x80);//选择第一行

其他
{//第二行
WriteCommandLCD (0xc0);//选择第二行

for (a=0;a<16;a++)

WriteDataLCD (*消息);//显示字符
message++;//递增指针

返回;

请有人帮我解决。

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

    您的代码没有任何问题会在我身上跳出来。 您能否在 CCS 寄存器视图中查看 GPIO 寄存器并确认它们已正确配置? 您是否能够单步执行代码并观察示波器或其他仪器上的信号切换、以确保引脚正确连接?

    我猜这是来自这里的 Mani 的代码吗?
    embedjournal.com/.../

    谢谢、
    惠特尼