工具/软件:Code Composer Studio
我想将 QC2004A LCD 连接到 TM4C 1294XL。
以下是我的代码。 无错误。 但显示为空白。
连接: RS-PB4、 EN-PB5、 D4-PE0、 D5-PE1、 D6-PE2、 D7-PE3、 VSS-GND、 VDD-5V、 VEE[PIN 3]-3.3V、 R/W-GND、 背光阳极- 3.3V。
请建议可能的解决方案/指出错误。
#include
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
/*
#define function_set 0x28 //4bit_2LINE_5x7
#define SCLOG_RIGHT 0x1E
#define SCLO_LEFT 0x18
#define RETURE_HOME 0x02
#define increment_cursor 0x06
#define Decreation_Cursor 0x04
#define DisplayON_CursorON 0x0E //显示开-关控制
#define 闪烁_光标 0x0F
#define Invisible _ Cursor 0x0C
#define BLANK_DISPLAY 0x08
#define CLEAR_DISPLAY 0x01
#define SetCursorto1 0x80
#define SetCursorto2 0xC0
#define SetCursorto3 0x94
#define SetCursorto4 0xD4
*/
void Initialize_LCD (void);
void string_to_LCD (unsigned char *s);
void lcd_write (unsigned char、unsigned int);
void main ()
{
SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlDelay (100000);//2ms
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
SysCtlDelay (100000);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlDelay (100000);
GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SysCtlDelay (100000);
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_4|GPIO_PIN_5);
SysCtlDelay (100000);
GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3、0x00);
SysCtlDelay (2000000);//20ms
initialize_lcd();
while (1){
LCD_WRITE (0X80、0);
string_to _LCD ("1234");
LCD_WRITE (0XC0、0);
string_to _LCD ("qwer");
LCD_WRITE (0X94、0);
String_TO_LCD ("ASDF");
LCD_WRITE (0XD4、0);
String_TO_LCD ("ZXCV");
SysCtlDelay (0XFFFFFF00);
}
}
void Initialize_LCD (void)
{
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_4、0);//RS 引脚低电平
SysCtlDelay (5000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、0);//EN 引脚低电平
SysCtlDelay (5000);
LCD_WRITE (0x20、0);
SysCtlDelay (5000);
LCD_WRITE (0x08,0);
SysCtlDelay (5000);
LCD_WRITE (0x01、0);
SysCtlDelay (5000);
LCD_WRITE (0x06、0);
SysCtlDelay (5000);
LCD_WRITE (0x0E、0);
SysCtlDelay (5000);
LCD_WRITE (0X01、0);
SysCtlDelay (100000);
}
void LCD_WRITE (unsigned char data、unsigned int RS)
{
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_4、RS);//Cammand/Data
SysCtlDelay (5000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、1);
SysCtlDelay (5000);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_0、((DATA & 0x10)>>4);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_1、((DATA & 0x20)>>5);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_2、((DATA & 0x40)>>6);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_3、((DATA & 0x80)>>7);
GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1_GPIO_PIN_0、((DATA & 0XF0>>4));
SysCtlDelay (5000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、0);
SysCtlDelay (5000);
SysCtlDelay (5000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、1);
SysCtlDelay (5000);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_0、(DATA & 0x01));
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_1、((DATA & 0x02)>1));
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_2、((DATA & 0x04)>>2);
//GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_3、((DATA & 0x08)>>3);
GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0、(DATA & 0x0F));
SysCtlDelay (5000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、0);
SysCtlDelay (5000);
}
void string_to_LCD (unsigned char * s)
{
unsigned int slen;
slen=strlen;
while (slen>0)
{
unsigned char D=*s;
lcd_write (*s、1);
SysCtlDelay (0XFFFF0000);
slen--;
S++;
}
}

