繁体   English   中英

LCD 显示随机字符 (MPLAB)

[英]LCD shows random characters (MPLAB)

我正在尝试将我的 LCD 屏幕 (16x02 QAPASS) 连接到 MPLAB 上的 PIC16F1937,但它显示随机字符(在本例中为中文字符、问号和斜线)而不是字母数字。 但是,所有 PIN 连接都已在库中声明并正确连接到 PIC。 我使用 XC8 编译器。

以下是连接:

VSS --> 地
VDD --> 5V
VO --> 680Ω 电阻
EN --> RD1
RW --> RD6
RS --> RD0
LCD_D4 --> RD2
LCD_D5 --> RD3
LCD_D6 --> RD4
LCD_D7 --> RD5
阳极 --> 5V
阴极 --> GND

global 项目是一个传感器,用于检测物体的距离并在 LCD 上显示相同的距离。 LCD 不显示字符这一事实影响了项目的其余部分,因为如果 LCD 出现故障,我将无法设置数学计算。

1)库代码:lcd.h(头文件)这是Microchip为LCD库提供的代码,我添加了PIN-LCD连接:

// single bit for selecting command register or data register 
#define instr 0 #define data 1

// These #defines create the pin connections to the LCD in case they 
are changed on a future demo board
#define LCD_PORT     PORTD
#define LCD_PWR      PORTDbits.RD7   // LCD power pin
#define LCD_EN       PORTDbits.RD1   // LCD enable
#define LCD_RW       PORTDbits.RD6   // LCD read/write line
#define LCD_RS       PORTDbits.RD0   
#define LCD_D4       PORTDbits.RD2
#define LCD_D5       PORTDbits.RD3
#define LCD_D6       PORTDbits.RD4
#define LCD_D7       PORTDbits.RD5

// LCD register select line

#define NB_LINES    2   // Number of display lines
#define NB_COL      16  // Number of 
characters per line

2) 库代码 2 : lcd.c (Source Files) 包含 LCD 相关的命令

3)主代码:main.c(源文件)

#include "mcc_generated_files/mcc.h"
#include "lcd.h"
#define _XTAL_FREQ 4000000

 void main(void)
 {
 // initialize the device
 SYSTEM_Initialize();

 // initialize LCD
 LCD_Initialize();

LCDGoto(4, 1);           // go to column 4, row 1
LCDPutChar("test1");
LCDGoto(3, 2);           // go to column 3, row 2
LCDPutStr("test2");

while (1)
{

}
}

@AfricaOMM,

看起来您的代码可能基于此链接中的代码。

因为您只发布了片段,所以无法确定您尝试使用的代码有多糟糕。

我发现链接中的代码具有 Microchip 版权,但它的质量很差,有一些错误会导致您遇到几个问题。

从长远来看,您可以通过自己解决这个烂摊子而受益。

我最好的建议是在连接到 LCD 模块的信号线上放置 LED,并验证您的 PIC16F1937 在初始化代码运行时将每条线设置为正确状态。

我怀疑您在接线和代码中都有错误。

问题解决了!

问题与图书馆有关。 Microchip 提供的库充满了故障,因此在执行命令时,PIC 没有收到它应该收到的假定信息,这就是 LCD 显示随机字符的原因。

我建议您使用electrosome 开发:我确认它是 100% 可操作的,感谢他们!

另一件事:为了解决对比度问题,最好将 LCD 的 VO 端口连接到电位计。

当我们在 LCD 上发送 msg 时,它会显示有趣的字符或一些奇​​怪的符号,因为硬件需要一些时间来刷新。 你可以试着给一些睡眠时间。在这行之后

LCDPutStr("test2").   Put above sleep time
LCD.sleep(5)

它在我的情况下有效。 它在我的情况下有效。

当我们在 LCD 上发送 msg 时,它会显示有趣的字符或一些奇​​怪的符号,因为硬件需要一些时间来刷新。 你可以试着给一些睡眠时间。在这行之后

LCDPutStr("test2").   Put above sleep time
LCD.sleep(5)

它在我的情况下有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM