Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pic16f877a lcd代码不工作_Pic_Microchip_Lcd_Mplab - Fatal编程技术网

Pic16f877a lcd代码不工作

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

我最近一直在学习微控制器,现在我正在尝试使用MPLAB X ide和XC8制作一个LCD程序,但很难使用XC8库,但它根本不起作用。以下是所有详细信息:

  • 组成部分:
    • 液晶显示器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的内部寄存器,您必须遵循初始化顺序。此处的数据表