STC89C52与LCD1602液晶显示的软硬件仿真

news2024/11/14 15:29:54

STC89C52与LCD1602液晶显示的软硬件仿真

硬件仿真平台:protues8.13
软件仿真平台:keil5

硬件连接图:
在这里插入图片描述
软件代码实现: (复制后 粘贴到keil5中,即可使用,无需修改)

#include <REGX52.H>

#define LCD_DATA P0       // 数据线连接 P0.0 - P0.7
#define RS P2_7           // RS 连接 P2.7
#define RW P2_6           // RW 连接 P2.6
#define E P2_5            // E 连接 P2.5

void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = 0; i < ms; i++)
        for (j = 0; j < 110; j++);   // 根据实际情况调整延迟时间
}

void lcd_command(unsigned char command) {
    LCD_DATA = command;     // 将命令写入数据线
    RS = 0;                 // 设置为命令模式
    RW = 0;                 // 写入模式
    E = 1;                  // 使能信号置高
    delay(1);               // 稍作延时
    E = 0;                  // 使能信号置低
}

void lcd_data(unsigned char data1) {
    LCD_DATA = data1;        // 将数据写入数据线
    RS = 1;                 // 设置为数据模式
    RW = 0;                 // 写入模式
    E = 1;                  // 使能信号置高
    delay(1);               // 稍作延时
    E = 0;                  // 使能信号置低
}

void lcd_init() {
    lcd_command(0x38);      // 设置显示模式为2行、5x7点阵
    lcd_command(0x0C);      // 打开显示,关闭光标
    lcd_command(0x06);      // 光标右移
    lcd_command(0x01);      // 清除显示
    delay(5);               // 初始化需要一定的延时
}

void lcd_print_line1(const char *str) {
    lcd_command(0x80);      // 设置光标位置到第一行开头
    while (*str) {
        lcd_data(*str++);
    }
}

void lcd_print_line2(const char *str) {
    lcd_command(0xC0);      // 设置光标位置到第二行开头
    while (*str) {
        lcd_data(*str++);
    }
}

void main() {
    lcd_init();                 // 初始化液晶显示屏
    lcd_print_line1("hello ++ =="); // 显示 "hello world" 在第一行
    lcd_print_line2("Welcome to myblog");    // 显示 "hello me" 在第二行
    while (1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud-Nacos注册中心

文章目录 Nacos注册中心服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 5.3.服务分级存储模型给user-service配置集群同集群优先的负载均衡 权重配置环境隔离创建namespace给微服务配置namespace Nacos与Eureka的区别 Nacos注册中心 服务注…

v8-tc39-ecma262: at,代替“arr[0]“取值

首先是语义化 其次是函数式&#xff0c;意味着加入流式调用队列 如上图&#xff0c;解释如下&#xff1a; 对象&#xff0c;调用对象函数处理类数组&#xff0c;调用类数组处理关联下标&#xff1f;转为Integer或者Infinity类型如果下标的值大于等于0&#xff0c;则设置赋值给…

Windows 驱动开发环境搭建

Windows 驱动开发环境搭建及 windbg 调试工具安装使用 引言了解 Windows 驱动开发环境下载 Windows 驱动开发环境根据需要下载安装对应版本的 Visual Studio下载安装对应的 WDK 工具包 编写第一个驱动代码总结参考资料 引言 对于 Windows 驱动开发&#xff0c;在微软官方的文档…

go定时任务crontab

在linux里可以通过crontab -e或者vi /etc/crontab编辑定时任务&#xff0c;区别在于后者只有root用户可以&#xff0c;还可以指定shell环境&#xff0c;不建议修改&#xff0c;修改前建议备份&#xff0c;前者任何用户都可以使用&#xff0c;两者修改后都不用修改自动重启。 1…

尚无忧宠物托运小程序app源码前景如何?

宠物托运市场调研分析 由于宠物托运在交通运输中并不是一个很大的类目&#xff0c;行业尚缺乏标准的流程规范与相关的监管机制&#xff0c;目前我国市面上常见的三方宠物托运公司多无正规手续&#xff0c;更有多数公司不具备相关运输资质。 如今&#xff0c;宠物经济不断崛起…

Linux:安装tomcat

注意&#xff1a;1.安装tomcat时最好用非root用户安装 2.可以选择新建一个用户&#xff0c;用户安装部署tomcat&#xff0c;本文将继续用fovace账户进行tomcat安装 一、前置条件 安装tomcat需要先安装jdk&#xff0c;所以先确定系统中是否已经有jdk&#xff0c;如下&#xff1a…

Minecraft-生成运行Spigot服务端

一、安装 先下载一个.jar的服务端核心&#xff0c;选择自己需要的版本 spigot核心下载 二、配置 下载完后&#xff0c;创建一个.bat批处理文件 内容填写如下&#xff0c;xxx.jar是你下载的核心名称 -Xms1G表示服务器所使用的最低运行内存为1G -Xmx1G表示服务器所使用的最高运行…

力扣 113. 路径总和 II

题目来源&#xff1a;https://leetcode.cn/problems/path-sum-ii/description/ C题解&#xff1a;采用递归法&#xff0c;前序遍历&#xff0c;遍历每个叶子节点&#xff0c;路径和满足条件则将该路径保存下来。 class Solution { public:void getlujing(TreeNode* node, int …

【MySQL】表中插入数据时,查询时,中文数据变成??

解决办法&#xff1a; 重新创建一个表&#xff08;users&#xff09; 将字符集那栏勾选上

[Windows] 电脑专属后花园 HideUL软件隐藏工具v1.0便携版

如下图所示:这一堆乱七八糟的东西,看起来又特难受…… 下载:https://download.csdn.net/download/mo3408/87961003 更有甚者,如果我们在电脑安装了一些比较特殊且不方便被别人看到的软件,也是一件麻烦事。 所以,今天我就给大家推荐一款可以隐藏电脑软件的小工具,仅需简…

【致敬未来的攻城狮计划】打卡4:检测按键

按键模块 后台轮询 按键也是一个比较简单的模块&#xff0c;主要是为了学习IO输入模式。 查看RA2E1电路图可见&#xff1a; 按键相关引脚是004引脚&#xff0c;默认上拉高电平&#xff0c;按下接地为低电平。 首先第一步还是设置对应引脚。类似上一期设置LED的方式&#xf…

【电磁泄密】网络杂谈(2)之电磁泄密及防护

涉及知识点 什么是电磁泄密&#xff0c;电磁泄密的渠道&#xff0c;电磁泄密该如何去防护&#xff0c;电磁泄密的防护标准。深入了解电磁泄密防护手段。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感激 文章目录 …

内存分区.

内存模型分区&#xff1a; ****代码区&#xff1a;存放CPU执行的机器指令。通常代码区是可共享的(即另外的执行程序可以调用它)&#xff0c;使其可共享的目的是对于频繁被执行的程序&#xff0c;只需要在内存中有一份代码即可。代码区通常楚只读的&#xff0c;使其只读的原因是…

NXP i.MX 8M Plus工业开发板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

前 言 本文主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板&#xff0c;由核心板和评估底板组成。ARM Cortex-A53(…

VR全景如何保存本地,一个按钮即可解决

导语&#xff1a; 对于许多用户来说&#xff0c;保存VR全景作品到本地常常是一项繁琐而费时的任务。然而&#xff0c;现在有了蛙色3DVR平台&#xff0c;一切变得简单轻松&#xff0c;让您享受到便捷的离线导出体验。 平台为用户提供了专业的离线导出功能&#xff0c;使您能够轻…

Seata-DTX|分布式事务金融场景案例介绍

文&#xff5c;魏陈豪&#xff08;花名&#xff1a;无陈 Sam) 蚂蚁集团 SOFAStack 产品专家 本文 2966 字 阅读 8 分钟 序言 今天给大家带来一篇 Seata-DTX[1] 商业版分布式事务在金融行业如何保证事务一致性的实践介绍。从一个全局视角出发看看一致性的保证、分别有哪些节点&a…

全志科技T3国产工业评估板规格书(四核ARM Cortex-A7,主频1.2GHz)

1 评估板简介 创龙科技TLT3-EVM是一款基于全志科技T3处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板&#xff0c;每核主频高达1.2GHz&#xff0c;由核心板和评估底板组成。 评估板接口资源丰富&#xff0c;引出双路网口、双路CAN、双路USB、双路RS485等通信接口&#x…

3、Redis7 十大数据类型(二)

1.8 bitmap&#xff08;位图&#xff09;操作命令 SETBIT 设置 格式&#xff1a;setbit 参数1 参数2 参数3 参数1&#xff1a;bitmap名称 参数2&#xff1a;索引 参数3&#xff1a;值&#xff08; 1 | 0 &#xff09; 示例&#xff1a; 将bitmap1的第一个位置的值设为1 s…

常用的flex布局

文章目录 1. flex布局流式布局自动换行2. flex布局流式布局自动换行3. flex横向滚动4. flex 等分5. flex百分比布局6. flex圣杯布局 1. flex布局流式布局自动换行 <!-- 第一种方式: flex布局流式布局自动换行 每行显示3个 --> <div class"box"><div c…

Matlab 主成分分析法

主成分分析 本文将介绍主成分分析(PCA)&#xff0c;主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能反映出原始数据的大部分信息。 一般来说&#xff0c;…