Pic16f877a lcd代码不工作
我最近一直在学习微控制器,现在我正在尝试使用MPLAB X ide和XC8制作一个LCD程序,但很难使用XC8库,但它根本不起作用。以下是所有详细信息:Pic16f877a lcd代码不工作,pic,microchip,lcd,mplab,Pic,Microchip,Lcd,Mplab,我最近一直在学习微控制器,现在我正在尝试使用MPLAB X ide和XC8制作一个LCD程序,但很难使用XC8库,但它根本不起作用。以下是所有详细信息: 组成部分: 液晶显示器LM016L 微控制器pic16f877a 引脚连接: 寄存器选择引脚-->引脚E0、读/写引脚-->引脚E1、寄存器选择引脚-->引脚E2 数据线(8位模式)端口D 下面是全部代码: #include "config.h" //port E pin 0 --> RS, pi
- 液晶显示器LM016L
- 微控制器pic16f877a
- 寄存器选择引脚-->引脚E0、读/写引脚-->引脚E1、寄存器选择引脚-->引脚E2
- 数据线(8位模式)端口D
#include "config.h"
//port E pin 0 --> RS, pin 1 --> R/W, pin 2 --> En
#define RS TRISE0
#define RW TRISE1
#define EN TRISE2
void blinkEnable(void);
void check_if_busy(void);
void send_a_command(int command);
void send_a_character(int character);
void main(){
blinkEnable();
__delay_ms(10);
check_if_busy();
__delay_ms(10);
send_a_command(0x01);
__delay_ms(10);
send_a_character(0x46);
while(1){
}
}
void blinkEnable(){
TRISEbits.EN = 1;
__delay_ms(10);
TRISEbits.EN = 0;
__delay_ms(10);
}
void check_if_busy(){
TRISEbits.RS = 0;
TRISEbits.RW = 1;
TRISDbits.TRISD7 = 1;
while(PORTDbits.RD7 == 1){
}
}
void send_a_command(int command){
TRISEbits.RW = 0;
TRISEbits.RS = 0;
PORTD = command;
}
void send_a_character(int character){
TRISEbits.RW = 0;
TRISEbits.RS = 1;
PORTD = character;
}
如果您是微芯片微控制器的初学者,我建议您尝试Matrix Multimedia开发的flowcode软件,该软件提供图形编程环境,您只需放置块来访问模块(例如,您的案例中的LCD模块),而无需编写代码(flowcode将为您编写代码,您只需输入并获得输出)最好的部分是,你可以看到你使用过的每个块的c代码,这为初学者提供了一个清晰的概念,我应该编写什么程序来访问不同的模块,另一个最好的部分是,你可以在硬件上运行之前在flowcode软件上模拟整个代码,flowcode已经获得了最好的微芯片微控制器编译器之一ers..您可以使用electroSome的XC8库。您可以从他们的网站下载库头文件并将其包含在项目中。这非常简单 使用此链接:
每次编写命令时,必须发送一个EN信号。重要的是要知道,您使用的是哪种类型的LCD?另外,为了正确设置LCD的内部寄存器,您必须遵循初始化顺序。此处的数据表