仿真软件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接电源。

  • 5
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值