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

2023-05-16

    默认的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接电源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仿真软件proteus构建LCD1602四线驱动实验 的相关文章

  • C++学习笔记一 —— 两个类文件互相引用的处理情况

    先记录一些零碎的知识点 xff1a 1 一个类可以被声明多次 xff0c 但只能定义一次 xff0c 也就是可以 class B class B class B class B 这样子 2 一个类 C 的声明中 xff08 函数只声明还没定
  • koa设置静态资源以加载html页面

    koa是express之后又一个node框架 xff0c 它可以很方便的构建http服务 一般 xff0c 我们看到的koa是配合koa router路由来做服务端请求控制 xff0c 大部分是要么返回string xff0c 要么返回js
  • springboot实现jsonp

    jsonp是ajax跨域解决方案的一种办法 xff0c 就是借助标签 lt script gt lt script gt 可以实现不同域之间数据请求的一种方式 xff0c 类似iframe xff0c 不受跨域限制 xff0c 它请求返回之
  • koa利用koa-views通过路由返回html页面

    前面一篇博客介绍了koa借助koa static依赖可以实现以静态资源的形式加载html xff0c 但是没有路由功能 xff0c 一般而言 xff0c 前后端分离之后 xff0c 路由控制是由前端控制 xff0c 也有一些不分离的项目 x
  • koa解决跨域问题

    koa作为一个node http服务框架 xff0c 它解决跨域问题 xff0c 跟其他框架跨域类似 xff0c 可以通过自定义中间件的方式对请求做处理 xff0c 也可以通过使用封装好的 64 koa cors依赖 xff0c 两行代码搞
  • nginx解决跨域问题

    跨域问题 xff0c 是因为浏览器同源策略 xff0c 页面从一个域发起另一个域的异步ajax请求时 xff0c 不被认可导致 如果我们的请求在一个域里面 xff0c 那么浏览器就会认为是安全的 xff0c 就不会造成跨域 xff0c 而n
  • cookie属性max-age与expires同时存在时谁会生效

    我以前面试前端的时候 xff0c 面试官问过这个问题 xff0c 这是一个比较刁钻的问题 xff0c 好像很难选择 max age表示最大生命周期 xff0c expires表示过期时间 xff0c cookie使用其中任何一个 xff0c
  • 带cookie的异步ajax跨域请求问题

    ajax跨域携带cookie需要增加一个参数 xff0c xhrFields withCredentials true xff0c 而且这个时候的cookie是种在服务端接口域里面的 xff0c 而不是页面所在的域 服务端解决跨域问题的时候
  • sqlmap工具与sql注入漏洞测试

    sql注入是我们在开发与面试中经常听到的一个词语 xff0c 它利用sql语句本身执行的特点 xff0c 加入一些特定的语句拼接 xff0c 骗过sql编译 xff0c 最后执行 xff0c 结果就出现意想不到的情况 我在之前的工作中并不了
  • Javascript保留两位小数

    javascript语言 xff0c 因为是弱类型语言 xff0c 没有java那么多类型 xff0c 所以在处理浮点数保留两位小数上 xff0c 没有那么多格式化办法 javascript语言中字符串和整数 xff0c 浮点数是有区别的
  • linux下strace命令跟踪java进程

    strace命令的使用 xff0c 是看了马士兵老师讲的netty底层原理课程 xff0c 里面举了一个例子 xff0c 使用java程序编写一个简单的socket服务器 xff0c 然后等待客户端连接 本身 xff0c 这个程序很简单 x
  • Deepin 下安装 Vmware 无法联网的问题

    问题描述 1 Could not connect 39 Ethernet0 39 to virtual network 39 dev vmnet0 39 解决办法 使用sudo vmware networks start查看是否能够启动网络
  • Mac下使用虚拟专用网络

    虚拟专用网络 xff0c 简称vpn xff0c 目前还是有很多地方有使用到的 xff0c 除了越狱 xff0c 很多公司也会给员工开通虚拟专用网的账号 xff0c 这样 xff0c 员工即使在家里也可以方便的与公司内网进行联通 xff0c
  • Mac下远程连接windows

    如题 xff0c 如果在windows系统下 xff0c 一台机器A如果开启了容许远程连接 xff0c 那么可以直接通过另一台机器B的远程桌面连接客户端 xff0c 输入主机地址 xff0c 然后加上用户名和密码 xff0c 就可以登入机器
  • 索引失效问题整理

    在面试的时候 xff0c 数据库方面的问题对于开发人员来说 xff0c 是绕不过的一个点 xff0c 而数据库方面 xff0c 很少直接面试SQL怎么写 xff0c 而是问效率相关的问题 xff0c 索引是提高查询效率的一种手段 xff0c
  • geoserver配合openlayers框架加载地图

    geoserver地图服务器如果搭建成功 xff0c 那么会有很多图层示例 这些图层可以用作练手示例 在实际工作中 xff0c 可能需要我们自己设计地图 xff0c 自己发布 xff0c 然后使用 这里以上一篇最后发布的中国地图为例 xff
  • Java操作mysql插入记录带时间戳时差问题

    如题所示 xff0c 我们在做mybatis相关项目的时候 xff0c 会用到mysql xff0c 如今更多的是直接使用springboot 43 mybatis组合 这样 xff0c 在配置数据源的时候 xff0c 会有这样的配置 xf
  • ArcGis导入经纬度坐标然后导出shp文件

    如题所示 xff0c 一般使用ArcGis制作shp文件 xff0c 需要数据 xff0c 这里直接利用经纬度坐标即可 1 获取经纬度数据 经纬度坐标从哪里获取 xff0c 这里推荐一个方法 xff1a 使用一个html页面 xff0c 配
  • win10安装ceres环境

    ceres是一个开源的c 43 43 库 xff0c 在windows上安装有点复杂 xff0c 它依赖其他三个库 Eigen gflags glog 好在这些依赖都可以通过源码安装 在windows上进行源码编译安装 xff0c 需要对应
  • 使用ceres库将经纬度坐标GCJ02到WGS84精确转换

    在之前的一篇博客中 xff0c 介绍了经纬度坐标系的关系 xff0c WGS84是世界大地坐标系 xff0c 属于原始坐标系 xff0c 在商用中 xff0c 需要通过火星加密算法将经纬度做转换 xff0c 转换之后的坐标 xff0c 称为

随机推荐

  • 百度地图api调用出现“APP Referer校验失败“错误

    如题所示 xff0c 在使用百度地图API的时候 xff0c 出现App Referer校验失败 这个是因为百度地图安全设置导致 xff0c 解决办法就是进入百度地图开放平台 xff0c 控制台下 xff0c 切换到 xff0c 应用管理
  • postgresql与postgis结合示例

    postgresql支持空间数据存储 postgis是postgresql的一个扩展 与postgresql配合使用 xff0c 需要对应的版本 如果是windows上安装 xff0c 可以参考这里选择对应的postgis版本 如果不安装p
  • vue3 语法糖获取axios返回值,vue3语法和vue2语法区别

    typescript怎么定义全局的函数 第一步 xff0c 双击打开HBuilderX编辑工具 xff0c 新建TypeScript文件并定义类Apple xff0c 定义三个变量a b c xff0c a是具体的数据类型 xff0c 而b
  • 蓝桥杯单片机开发板-数码管显示

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • postgresql导入shp地理文件并用uDig连接postgresql显示地图信息

    postgresql与postgis结合 xff0c 可以很好的支持空间数据库 shp文件可以通过postgis插件安装之后的工具 xff1a PostGIS Boundle 3 for PostgreSQL X64 9 6 Shapefi
  • 快速搭建springboot+mybatis+postgresql开发环境

    这里 xff0c 利用eclipse或者idea提供的springboot项目创建向导 xff0c 不用去找依赖 普通的eclipse需要安装spring插件 可以直接使用sts版本 全称是Spring Tools Suite 在eclip
  • mysql创建hash索引

    mysql支持的存储引擎与索引结构对照表如下 xff1a Storage Engine Permissible Index Types InnoDBBTREEMyISAMBTREEMEMORY HEAPHASH BTREENDBHASH B
  • docker搭建hbase环境

    hbase是hadoop生态中的一员 xff0c 最早搭建hbase xff0c 需要先安装hadoop xff0c 然后安装zookeeper xff0c 再安装hbase 现在通过docker可以直接安装hbase xff0c 而且容器
  • 使用c语言库asn1c对asn文件格式实现编解码

    针对asn文件编解码工作 xff0c asn1c这个开源工具对c c 43 43 的支持非常好 可以很方便的安装和使用 xff0c 目前这个工具是开源的 xff0c 最新版本是0 9 28 xff0c 项目地址 xff1a github c
  • ubuntu20.04版本安装gcc-4.8

    ubuntu20 04版本默认已经将gcc支持的版本更新到了gcc 9 xff0c 如果要降级gcc的版本 xff0c 需要设置新的源 xff0c 然后安装指定版本 xff0c 思路就是这样 可以看到如下这个图片 xff0c 4 8版本对应
  • WinRAR(去广告)中文繁体

    win10系统中 xff0c 如果没有winrar xff0c 可以使用本文提到的这个工具 xff0c 中文繁体 xff0c 不带广告 下载地址 xff1a tools 各种简单的工具 工具放在csdn xff0c 需要积分 xff0c 这
  • 单片机仿真软件proteus8安装与使用

    最近对Arduino 阿德伟诺 微控制器有点兴趣 xff0c 在学习的过程中 xff0c 如果我们没有机器 xff0c 其实可以通过仿真软件来模拟 xff0c 而proteus这个工具就非常适合单片机仿真 为此 xff0c proteus的
  • proteus电路仿真设计图中很多器件之间没有实线连线,它们是怎么实现的?

    如题所示 xff0c 在proteus电路仿真设计图中 xff0c 我们发现 xff0c 电子元器件之间 xff0c 很多时候并没有实线连接 xff0c 但是他们却可以工作 对于新手的我们 xff0c 可能觉着很奇怪 xff0c 独立的器件
  • 七段数码管显示原理研究

    在51单片机学习过程中 xff0c 相对基础的一个实验就是利用七段数码管依次显示数字0 9 很多时候 xff0c 我们按照要求 xff0c 搭建了电路 xff0c 编写了对应的显示控制程序 xff0c 最后运行 xff0c 可能对于七段数码
  • Cloudkitty – OpenStack计费服务

    https mp weixin qq com s biz 61 MzU0NDEyODkzMQ 61 61 amp mid 61 2247494964 amp idx 61 1 amp sn 61 259f86891d8e7bc07debd3
  • 51单片机c语言开发工具keil安装

    单片机分好几种 xff0c 常见的51单片机开发需要安装keil对应c51版本 xff0c 不能安装成了mdk版本 这个需要注意 目前 xff0c 比较好的工具 xff0c windows下自然是keil了 但是它是收费的 xff0c 只能
  • 仿真软件proteus构建LCD1602显示字符串实验

    LCD1602模块的显示需要注意几点 xff1a 1 显示两行 xff0c 第一行的起始地址是0x80 xff0c 第二行的地址是0x80 43 0x40 61 0xC0 2 RS RW EN接线没有说一定要接到P1 P2 P3上 xff0
  • 仿真软件proteus点亮led实验

    在这个实验之前 xff0c 确保系统已经正确安装了proteus和keil工具 proteus是用来设计电路图的 xff0c keil是用来编写c语言代码并编译成芯片可用的hex程序的 前面安装keil的时候 xff0c 最后提到 xff0
  • 仿真软件proteus构建七段数码管显示数字0-9实验

    七段数码管显示原理研究在前一篇博客中已经阐述过 xff0c 就是利用7个数码管构建一个 8 字形 xff0c 然后利用数字的形状特点 xff0c 依次点亮某一些段 xff0c 就可以显示数字了 七段数码管显示数字还是二极管发光原理的利用 这
  • 仿真软件proteus构建LCD1602四线驱动实验

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