[英]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.