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/TM4C123GH6PGE:tm4c123gh6pge 中16x2 char LCD 上的自定义字符生成问题

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/622307/ccs-tm4c123gh6pge-custom-character-generation-problem-on-16x2-char-lcd-in-tm4c123gh6pge

器件型号:TM4C123GH6PGE

工具/软件:Code Composer Studio

#include
#include
#include "inc/hw_memmap.h"
#include "driverlib/fpu.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/pin_map.h"
#include "driverlib/uart.h"
#include "grlib/grlib.h"
#include "drivers/cfal96x64x16.h"
#include "utils/uartstdio.h"
#include "driverlib/gpio.h"
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"

CHAR CGRAM_LUT[8]={0x1f、0x11、0x11、0x11、0x11、0x11、0x1f、0x00};


//////////////////////////////////////// LCD_CMD ()//////////////////////////////////////////////
LCD_CMD (无符号字符 cmd)

GPIOPinWrite (GPIO_PORTF_BASE、(GPIO_PIN_0 | GPIO_PIN_1 |GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 |GPIO_PIN_6 | GPIO_PIN_7)、(cmd);
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_5,0X00);//RS=0;
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_6、0x00);//r/w
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_7,0X80);//en=1
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_7、0x00);//en=0
SysCtlDelay (160000);

///////////////////////////////////////////////////// LCD_DATA//////////////////////
LCD_DATA (无符号字符数据)

GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_7,0X00);
GPIOPinWrite (GPIO_PORTF_BASE、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)、DATA);

GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_5,0X20);//RS=1;
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_6、0x00);//r/w
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_7,0X80);//en=1
GPIOPinWrite (GPIO_Porth_BASE、GPIO_PIN_7、0);//en=0
SysCtlDelay (160000);

LCD_STR (char * p)

while (* p)

LCD_DATA (*(p++));
SysCtlDelay (SysCtlClockGet ()/11);

////////////////////////////////////////// LCD_Init//////////////////////////////////////////////////////////////////////////////
lcd_init ()

LCD_CMD (0x30);
SysCtlDelay (1500);
LCD_CMD (0x38);
SysCtlDelay (1500);
LCD_CMD (0x10);
SysCtlDelay (150);
LCD_CMD (0x01);
SysCtlDelay (150);
LCD_CMD (0x06);
SysCtlDelay (150);
LCD_CMD (0x0F);

////////////////// (三 STORE _CGRAM (存储 CGRAM)*****
void Store_CGRAM (空)

字符 I;
LCD_CMD (0x00);
for (i=0;i<8;i++)

LCD_CMD (0x40+8*I);
LCD_DATA (CGRAM_LUT[i]);
SysCtlDelay (500);
// LCD_CMD (0x00+8);



内部
main (空)


SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

SysCtlPeripheralSlepEnable (SYSCTL_Periph_GPIOH);
SysCtlPeripheralSlepEnable (SYSCTL_Periph_GPIOF);

HWREG (GPIO_PORTF_BASE + GPIO_LO_LOCK)= GPIO_LOCK_KEY;

HWREG (GPIO_PORTF_BASE + GPIO_O_CR)|= 0x01;
HWREG (GPIO_PORTF_BASE + GPIO_AFSEL)|= 0x000;
HWREG (GPIO_PORTF_BASE + GPIO_LO_LOCK)= 0;

GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_3);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_5);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_6);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_7);
//******** 其他引脚********

GPIOPinTypeGPIOOutput (GPIO_Porth_BASE、GPIO_PIN_5);//RS
GPIOPinTypeGPIOOutput (GPIO_Porth_BASE、GPIO_PIN_6);//R/W
GPIOPinTypeGPIOOutput (GPIO_Porth_BASE、GPIO_PIN_7);//en


lcd_init();

SysCtlDelay (1500);


LCD_CMD (0x80);

LCD_STR ("Satu");
LCD_CMD (0xC0);

/////////////////////////////////////////////////////////// CGRAM ////////////////////////////////////////////////////////////////
STORE_CGRAM();

LCD_CMD (0xca);
LCD_DATA (0);
while (1)

SysCtlDelay (SysCtlClockGet ()/11);
//LCD_CMD (0x1C);

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

    您是否愿意(在某种程度上)为您描述您的"自定义字符生成问题"、以便在这里(愿意和能够)提供帮助?

    (强迫您的"帮助者"挖掘"该代码转储-在(付出大量努力)尝试"解决"您的问题-证明(并非特别)有吸引力...