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.
工具/软件: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++;//递增指针
}
返回;
}
请有人帮我解决。