700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 仿真软件proteus构建LCD1602四线驱动实验

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

时间:2022-11-25 05:23:17

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。