STC89C51学习笔记(四)
STC89C51学习笔记(四)
综述:本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。
一、数码管
1.数码管显示原理
位选:对74HC138芯片的输入端的配置(P22、P23、P24),来选择实现位选(哪个数码管显示数字)。

段选:对74LS245芯片的输入端进行配置(P00、P01、P02、P03、P04、P05、P06、P07),来实现段选(显示什么数字)。

数码管连接方式:共阳极时配置0则点亮,共阴极配置1则点亮。
2.显示方式
1)直接配置
P2_4=1;
P2_3=0;
P2_2=1;
P0=0x7d;
即可实现第三个数码管显示数字6
2)撰写子函数
unsigned char NixieTable[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x3e,0x79,0x71,0x00};void Nixie(unsigned char Location,Number)
{switch(Location){case 1:P2_4=1;P2_3=1;P2_2=1;break;case 2:P2_4=1;P2_3=1;P2_2=0;break;case 3:P2_4=1;P2_3=0;P2_2=1;break;case 4:P2_4=1;P2_3=0;P2_2=0;break;case 5:P2_4=0;P2_3=1;P2_2=1;break;case 6:P2_4=0;P2_3=1;P2_2=0;break;case 7:P2_4=0;P2_3=0;P2_2=1;break;case 8:P2_4=0;P2_3=0;P2_2=0;break;}P0=NixieTable[Number];Delay(1);//稳定显示P0=0x00;//清零}void main()
{Nixie(7,2);while(1){ }
}
二、模块化编程
传统方式的编程直接放在main函数里面,不利于代码的组织、管理、移动和查找错误。模块化编程将各个模块的代码放在不同的c文件里面,在h文件里面提供外部可调用函数的声明,需要代码时,只需要#include “xxx.h”
①建立.c文件和.h文件


②攥写.c文件,记得添加头文件

③攥写.h文件
前两行是为了防止重复定义,第三行的函数末尾记得加分号,否则会报错。

三、LCD1602
注意:LCD1602与数码管和LED引脚冲突,当使用LCD1602时,一般不使用数码管和LED。

①LCD1602的相关函数和作用

②函数的使用和演示结果
先将LCD1602的.c和.h文件复制到当前的项目文件夹下,然后在项目中添加LCD1602的.c和.h文件

在main函数中调用LCD1602.h,并使用相关函数

LCD1602演示结果

参考视频:51单片机学习视频
侵权联系删除!
相关文章:
STC89C51学习笔记(四)
STC89C51学习笔记(四) 综述:本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。 一、数码管 1.数码管显示原理 位选:对74HC138芯片的输入端的配置(P22、P23、P24),来选择实现位选&…...
Arcgis Pro地理配准
目录 一、目的 二、配准 1、找到配准工具 2、添加控制点 3、选择控制点 4、添加更多控制点 5、配准完成、保存 三、附录 1、查看控制点或删除控制点 2、效果不好怎么办 一、目的 下面我们将两张地图进行配准,其中一张有地理位置,而另外一张没…...
数字转型新动力,开源创新赋能数字经济高质量发展
应开放原子开源基金会的邀请,软通动力董事、鸿湖万联董事长黄颖基于对软通动力开源战略的思考,为本次专题撰文——数字转型新动力,开源创新赋能数字经济高质量发展。本文首发于2023年12月12日《中国电子报》“开源发展与开发者”专题第8版。以…...
解决JavaWeb中IDEA2023新版本无法创建Servlet的问题
出现问题:IDEA右键创建Servlet时,找不到选项 原因分析:IDEA的2023版的已经不支持Servlet了,如果还要使用的话,需要自己创建模板使用 创建模板 右击设置,选择(File and Code Templates&#x…...
关于oracle切换mysql8总结
最近由于项目换库,特此记录 1.字段类型 number(8) -> int(8) number(16) -> bigint(16) varchar2() -> varchar() 2.导数据 从oracle迁移数据到mysql,除了用专门的数据泵,经常需要用csv导入到mysql; 导出的csv数据如果…...
Docker 容器编排技术解析与实践
探索了容器编排技术的核心概念、工具和高级应用,包括 Docker Compose、Kubernetes 等主要平台及其高级功能如网络和存储管理、监控、安全等。此外,文章还探讨了这些技术在实际应用中的案例,提供了对未来趋势的洞见。 一、容器编排介绍 容器编…...
微信小程序 ---- 慕尚花坊 订单列表
订单列表 本章节为课堂作业 01. 封装订单列表接口 API 思路分析: 为了方便后续进行商品管理模块的开发,我们在这一节将商品管理所有的接口封装成接口 API 函数 落地代码: ➡️ api/orderpay.js /*** description 获取订单列表* returns …...
Tuxera2023 NTFS for Mac下载,安装和序列号激活
对于必须在Windows电脑和Mac电脑之间来回切换的Mac朋友来说,跨平台不兼容一直是一个巨大的障碍,尤其是当我们需要使用NTFS格式的硬盘在Windows和macOS之间共享文件时。因为Mac默认不支持写入NTFS磁盘。 为了解决这一问题,很多朋友会选择很便捷…...
移动Web学习04-移动端订单结算页PC端个人中心页面
5、电商结算页面案例 css body{background-color: #F2F2F2; } * {box-sizing: border-box;margin: 0;padding: 0; }.main{padding: 12px 11px 80px; }.pay{display: flex;height: 80px;background-color: #fff;bottom: 0;width: 100%;border-top: 1px solid #ededed;position:…...
Linux基础篇:Linux网络yum源——以配置阿里云yum源为例
Linux网络yum源——以阿里云为例 一、网络yum源介绍 Linux中的YUM(Yellowdog Updater, Modified)源是一个软件包管理器,它可以自动处理依赖关系并安装、更新、卸载软件包。YUM源是一个包含软件包的远程仓库,它可以让用户轻松地安…...
2024.2.10力扣每日一题——二叉树的中序遍历
2024.2.10 题目来源我的题解方法一 递归方式方法二 非递归方式 题目来源 力扣每日一题;题序:94 我的题解 方法一 递归方式 使用递归实现,结果List也可以定义为一个类变量。 按照访问左子树——根节点——右子树的方式遍历这棵树࿰…...
MVP惊现神秘买家,或疑为华尔街传奇投资人?
随着距离美国总统大选已不足240天,全球都开始聚焦这次具有历史意义的重大事件,作为全球唯一的超级大国,美国大选的最终结果,将会更深远的影响世界的走向。 除了我们熟知的全球性安全问题,美国这次大选更是一次意识形态…...
观察者模式 C++
👂 Honey Honey - 孙燕姿 - 单曲 - 网易云音乐 目录 🌼前言 🌼描述 🎂问题 💪解决方案 🈲现实场景 代码 场景1 -- 报纸发行 场景 解释 代码 场景2 -- 气象资料发布 场景3 -- 过红绿灯 &#x…...
每日一题 --- 删除字符串中的所有相邻重复项[力扣][Go]
删除字符串中的所有相邻重复项 题目:1047. 删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所…...
前端三剑客 —— CSS (第四节)
目录 内容回顾: 1.常见样式 2.特殊样式 特殊样式 过滤效果 动画效果 动画案例: 渐变效果 其他效果: 多列效果 字体图标(icon) 内容回顾: 1.常见样式 text-shadow x轴 y轴 阴影的模糊程度 阴影的…...
Linux文件IO(3):使用文件IO进行文件的打开、关闭、读写、定位等相关操作
目录 1. 文件IO的概念 2. 文件描述符概念 3. 函数介绍 3.1 文件IO-open函数 3.2 文件IO-close函数 3.3 文件IO-read函数 3.4 文件IO-write函数 3.5 文件IO-lseek函数 4. 代码练习 4.1 要求 4.2 具体实现代码 4.3 测试结果 5. 总结 1. 文件IO的概念 posix(可移植操作系统接…...
Vite 项目中环境变量的配置和使用
Vite 项目中环境变量的声明 我们要在 Vite 项目中进行环境变量的声明,那么需要在项目的根目录下,新建 .env.[mode] 文件用于声明环境变量,如: .env.test 文件用于测试环境下项目全局变量的声明.env.dev 文件用于开发环境下项目全…...
C++读取.bin二进制文件
C读取.bin二进制文件 在C中,可以使用文件输入/输出流来进行二进制文件的读写操作,方便数据的保存和读写。 //C读取bin二进制文件 int read_bin() {std::ifstream file("data_100.bin", std::ios::in | std::ios::binary);if (file) {// 按照…...
【ZZULIOJ】1038: 绝对值最大(Java)
目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入3个整数,输出绝对值最大的那个数。 输入 输入包含3个int范围内的整数,用空格隔开。 输出 输出三个数中绝对值最大的数,单独占一行。若绝对值最大的数不唯…...
递归算法讲解2
前情提要 上一篇递归算法讲解在这里 递归算法讲解(结合内存图) 没看过的小伙伴可以进去瞅一眼,谢谢! 递归算法的重要性 递归算法是非常重要的,如果想要进大厂,以递归算法为基础的动态规划是必考的&…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
