仿真软件proteus构建LCD1602四线驱动实验

Posted luffy5459

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仿真软件proteus构建LCD1602四线驱动实验相关的知识,希望对你有一定的参考价值。

    默认的LCD1602都是8线驱动,数据口D0~D7都要接线,这种方式对于写数据而言,很方便,不需要考虑太多。但是因为要的数据线过多,在实际布线过程中,可能会考虑使用四线驱动。

    因为少了4根线,原来的11根线,现在只需要7根就可以了。

    proteus电路设计与实验效果:

     源代码:

#include <reg52.h>
#include <stdio.h>
#include <string.h>
unsigned char code table1[] = "hello,world.";
unsigned char code table2[] = "0123456789";
sbit RS=P2^0;   
sbit RW=P2^1;   
sbit EN=P2^2;   
void delay(unsigned int n)      

    unsigned int i=0,j=0;
    for (i=n;i>0;i--)
     for (j=0;j<110;j++);  

void writecmd(unsigned char command)
    
        RS = 0;           
        RW = 0;  
        P3 = command;              
        EN = 1;        
        delay(2);
        EN = 0;

        RS = 0;           
        RW = 0;                
        P3 = command << 4;
        EN = 1;        
        delay(2);
        EN = 0;

void writedata(unsigned char dat)

        
        RS = 1;        
        RW = 0; 
        P3 = dat;               
        EN = 1;        
        delay(2);
        EN = 0;

        
        RS = 1;        
        RW = 0;                
        P3 = dat << 4;
        EN = 1;        
        delay(2);
        EN = 0;


void display(unsigned int len,unsigned char *s)

    unsigned int i;
    for(i=0;i<len;i++)
        writedata(s[i]);

void init_1602(void)

    delay(50);
    writecmd(0x33);//原来1602初始化成4位数据线之前必需先初始化成8位(此时命令发送方式是8位格式,但数据线只需接4位)
    writecmd(0x32);//然后再改到4位线宽,这样初始化才稳定
    writecmd(0x28);//四线模式设置
    writecmd(0x0c);//显示开--对应开关显示控制指令
    writecmd(0x01);
    delay(30);


void main(void)

   init_1602();
   writecmd(0x80);
   display(strlen(table1),table1);
   writecmd(0xc0);
   display(strlen(table2),table2);
   while(1);                  

    需要注意的是,四线接法,虽然代码上与八线接法很多雷同的地方,但是仍然需要注意,这里四线接法在初始化的时候:

writecmd(0x33);
writecmd(0x32);
writecmd(0x28);

    这几个很关键,尤其是0x28是设置四线模式,但是前面几项0x33,0x32是先设置八线模式,然后切换到四线模式,这一步最最关键,往往很多资料上都没有提,我经过很多次试验,发现这两句代码太关键了。

    四线模式写指令和数据的时候,需要先写高四位,再写低四位,所以代码上有这样的地方:

P3 = command;               
...            
P3 = command << 4;

    注意了这两块,四线模式就很容易了。

    在很多地方提到,四线模式,需要RW接地,其实从代码和试验结果来看,并不是一定要RW接地。

    ///

    按照四线驱动的仿真实验理论,我通过自己的普中-2单片机成功接线并让LCD1602显示了结果。实验现象如下所示:

    

    唯一的缺点就是,显示屏不太亮,我根据仿真实验接线,VDD接到了开发板上的5v电源,效果就这样,但是可以大概看出来,字母和数字显示没问题。

    这个接线完全按照仿真实验接线,包括VSS,VDD,VO 都需要接线,VSS,VO需要接地。VDD接电源。

以上是关于仿真软件proteus构建LCD1602四线驱动实验的主要内容,如果未能解决你的问题,请参考以下文章

Proteus仿真51单片机+LCD1602驱动模板

Proteus仿真51单片机+LCD1602驱动显示模板程序

51单片机+驱动LCD1602模板范例+Proteus仿真

Proteus仿真51单片机+LCD1602+74HC164驱动显示

Proteus仿真STC15单片机+LCD1602驱动显示时间(DEMO)示例

STC89C52RC+ LCD1602+PCF8574转IIC接口屏幕驱动显示+Proteus仿真