LED数码管的静态显示与动态显示(Keil+Proteus)
前言
就是今天看了一下书上的单片机实验,发现很多的器件在Proteus中都不知道怎么去查找,然后想做一下这个实验,尝试能不能实现,LED数码管的两个还可以实现,但是用LED点阵显示器的时候他那个网络标号不知道是什么情况,有两个东西,所以我也还没搞懂,先暂时就是把LED数码管的静态显示和动态显示来记录一下。由于之前的Keil版本太老了,然后我就下载了最新版的,不过应该也没有什么影响吧。实验完成的就是以下两个:
1.用静态的方法显示学号的最后两位。
2.用动态的方法流水显示学号的后面六位。
实验需要用到的元器件符号(在Proteus中)
| 元件名称 | Proteus关键字 |
| 单片机 | AT89C51 |
| 晶体振荡器 | CRYSTAL |
| 蓝色的数码管 | 7SEG-COM-AN-BLUE |
| 绿色的数码管 | 7SEG-COM-AN-GRN |
| 电阻 | RES |
| 七段数码管 | 7SEG-MPX8-CA-BLUE |
| 复位按钮 | BUTTON |
| 电容 | CAP |
| 电解电容 | CAP-ELEC |
| NPN三极管 | NPN |
| 排阻 | RX8 |
LED数码管的显示原理是利用LED的发光特性,通过控制LED的亮灭来显示不同的数字或字符。它由多个LED灯组成,通常为七个LED灯,排列成数字“8”的形状。每个LED灯代表一个数字段,分别为a、b、c、d、e、f、g段,其中a、b、c、d、e、f、g段分别对应数字“0”到“9”中的不同段。
LED数码管的控制方式有两种,一种是共阳极控制,一种是共阴极控制。共阳极控制是指将所有LED灯的阳极连接在一起,通过控制各个阴极的接通情况来控制LED数码管的亮灭;共阴极控制则是将所有LED灯的阴极连接在一起,通过控制各个阳极的接通情况来控制LED数码管的亮灭。
比如我采用的是共阳极的数码管,想输出2,他共阳极就是都接着同一个电源了,要想他亮,对应的位置就是0(低电平),1(高电平)就不亮,然后在纸上画着对应位置,就可以写出对应的字型码了(采用16进制)。

常见的字符的码段
| 显示字符 | 共阴极字型码 | 共阳极字型码 |
| 0 | 3FH | C0H |
| 1 | 06H | F9H |
| 2 | 5BH | A4H |
| 3 | 4FH | B0H |
| 4 | 66H | 99H |
| 5 | 6DH | 92H |
| 6 | 7DH | 82H |
| 7 | 07H | F8H |
| 8 | 7FH | 80H |
| 9 | 6FH | 90H |
| A | 77H | 88H |
| b | 7CH | 83H |
| C | 39H | C6H |
| d | 5EH | A1H |
| E | 79H | 86H |
| F | 71H | 8EH |
| P | 73H | 8CH |
| U | 3EH | C1H |
| T | 31H | CEH |
| y | 6EH | 91H |
| H | 76H | 89H |
| L | 38H | C7H |
| "灭" | 00H | FFH |
LED数码管的静态显示
首先就是要理解他的逻辑,通过Keil生成对应的.hex文件,再导入到Proteus中进行模拟。
Keil部分
新建项目

自己选择路径,起文件名(建议是用英文,但是目前中文也没有报错)
选择AT89C51
点击是

新建C语言文件

然后就是输入代码
#include"reg51.h" //包含8051单片机寄存器定义的头文件
void main(void){P0=0xa4;//将数字“2”的码段(共阳极)送P0口P1=0x82;//将数字“6”的码段(共阳极)送P1口while(1);//无限循环
}
没有错误就问题不大,但是此时我们还没有生成.hex文件,需要勾选一下。

再重新把程序构建一下就可以了。(文件在项目的Objects文件夹下面)
到这里Keil部分就可以了,接着就是Proteus部分:
Proteus部分
先要创建一个.DSN文件


添加电路图需要的元器件



然后就是添加后连线(直接连线就不用说了),这里说一下网络标号

输入标号(标号一致表示连接)

电源在左边的工具栏和通过鼠标右键都可以找到

导入hex文件(双击AT89C51)

左下角选择开始停止


运行结果

拓展
本来以为买的是一样的,结果发现不太一样。这个选择的是AT89C52.需要借助,STC-ISP.
之后就是下载/编程,就烧录到单片机里面了。

还是有区别的,这个程序。这个的有一个消影的布置,就是如果不这样就会导致输出的时候两个会重合,所以需要有清零重新打印的布置。
#include<regx52.h>
//打印的位置
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};
//延时函数
void delay(unsigned int xms){unsigned char i,j;while(xms--){i=2;j=239;do{while(--j);}while(--i);}
}
//打印的数字
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(){while(1){Nixie(1,2);Nixie(2,6);}
}


LED数码管的动态显示
同理可得
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code dis_code[]={0xA4,0xC0,0xC0,0xF9,0xA4,0x82};//200126
uchar code wei_code[]={0x01,0x02,0x04,0x08,0x10,0x20};//对应输出的位置void delay(uint t){uchar i;while(t--)for(i=0;i<200;i++);
}void main(){uchar i;while(1){for(i=0;i<6;i++){P0=dis_code[i];//P0口输出段码P2=wei_code[i];//P2口输入位控码delay(123);//延时}}
}
总线可以通过右键来找到(左边也有,还有电源和接地的符号)


流水灯
参考链接
KeilMDK5软件写不了汉字注释怎么解决?_keil怎么输入中文_第九荒岛的博客-CSDN博客
https://blog.csdn.net/qq_46600282/article/details/128550120proteus设计教程-数码管使用方法_proteus数码管_zd845101500的博客-CSDN博客
https://blog.csdn.net/zd845101500/article/details/126663186proteus常用元件图示和名称介绍 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/518410309?utm_id=0单片机Proteus中的这个16个引脚的元器件是什么?_百度知道 (baidu.com)
https://zhidao.baidu.com/question/2121623824451309267.htmlProteus如何设置网络标号-百度经验 (baidu.com)
https://jingyan.baidu.com/article/adc8151342d5a7b623bf73f3.html怎样把HEX文件载入PROTEUS 7仿真软件单片机里_360问答 (so.com)
https://wenda.so.com/q/1676834827210755proteus电源在哪-百度经验 (baidu.com)
https://jingyan.baidu.com/article/4e5b3e192806d8d0911e2423.html
51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1Mb411e7re/?spm_id_from=333.1007.0.0&vd_source=7c3bfbf39d037fe80c97234396acc524
总结
还是需要一点耐心的,其实我也不确定能不能运行成功,但是最后结果和自己理想中的一样的时候还是有点小激动的,未来继续努力。
相关文章:
LED数码管的静态显示与动态显示(Keil+Proteus)
前言 就是今天看了一下书上的单片机实验,发现很多的器件在Proteus中都不知道怎么去查找,然后想做一下这个实验,尝试能不能实现,LED数码管的两个还可以实现,但是用LED点阵显示器的时候他那个网络标号不知道是什么情况&…...
webGL编程指南 第五章 TexturedQuad_Clamp_Mirror
我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写,每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 :空 上一章节中我们学习了如何使用varyting变量绘制图片,本章节,我们学习texParameter…...
【Azure】存储服务:Azure 的存储账户
文章目录 一、前提知识(建议了解)二、介绍 Azure 存储帐户三、使用 Microsoft Azure 门户创建存储帐户 一、前提知识(建议了解) 在每一个云厂商中,都有自身的云存储,也有根据不同功能进行区分的不同类型的…...
高等数学啃书汇总重难点(十一)曲线积分与曲面积分
依旧是公式极其复杂恶心的一章,建议是:掌握两种线面积分的计算套路即可,和第8章一样属于同济版教材中最不重要的章节,不会对底层理解做过多考察~ 1.弧长曲线积分的几何意义 2.弧长曲线积分的定义和性质 3.弧长曲线积分的计算方式 …...
【算法专题】双指针—盛最多水的容器
一、题目解析 分析这个题目不难得出一个容积公式 二、算法原理 解法一:暴力枚举(超时) 套用上述的容积公式,使用两个for循环来枚举出所有可能的情况,再挑出最大值即可,但是这种写法会超时,导致…...
java入门,程序=数据结构+算法
一、前言 在学习java的时候,我印象最深的一句话是:程序数据结构算法,对于写java程序来说,这就是java的入门。 二、java基本数据结构与算法 1、数据类型 java中的数据类型8种基本数据类型: 整型 byte 、short 、int…...
9.MySQL索引的操作
个人主页:Lei宝啊 愿所有美好如期而遇 目录 索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文索引的创建 删除索引 索引创建原则 索引操作 查询索引 第一种方法: show keys from 表名\G 我们了解其中几个就好。 第二种方法…...
大型加油站3d全景虚拟现实展示平台实现全方位立体呈现
近年来,随着国民经济的快速发展,交通基础设施的不断改善,机动车保有量的持续飙升,以至于加油站的建设数量和密度也在不断扩张。加油站作为人流量大且常见的城市场景,对加油站进行安全防范措施具有非常重要的安全意义。…...
Reading:Deep dive into the OnPush change detection strategy in Angular
原文连接:IndepthApp 今天深入阅读并总结Angualr中onPush更新策略。 1. 两种策略 & whats Lview? Angular 实现了两种策略来控制各个组件级别的更改检测行为。这些策略定义为Default和OnPush: 被定义为枚举: export enum…...
野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍
STM32入门——基于野火 F407 霸天虎课程学习 前言 博主开始探索嵌入式以来,其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪,不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科…...
@reduxjs/toolkit配置react-redux解决createStore或将在未来被淘汰警告
通常 我们用redux都需要通过 createStore 但目前 你去用它 基本都会被划线 甚至有点厉害的的编辑器 他会直接告诉你这个东西基本快被弃用了 这个应该大家都知道 最好不要用已经被明确未来或弃用的语法 因为一旦弃用这个系统就需要维护 而且说 一般会被淘汰的语法 本身也就是有…...
致敬1024天前的自己
今早打开手机就收到了来自CSDN的消息,哦,距离我发表第一篇技术博客已经过去1024个日夜了。 我第一次发技术博客是我大二做完我第一个网站时写的。因为网站需要上线服务器,涉及到不少linux相关的知识,我在自学的过程中走了不少弯路…...
〖Python网络爬虫实战㊱〗- JavaScript 网站加密和混淆
订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度…...
基于单片机设计的电子柜锁
一、前言 随着现代社会的不断发展,电子柜锁的应用越来越广泛。传统的机械柜锁存在一些不便之处,例如钥匙容易丢失、密码容易泄露等问题。设计一款基于单片机的电子柜锁系统成为了一个有趣而有意义的项目。 该电子柜锁系统通过电磁锁作为柜锁的开关&…...
Windows安装tensorflow-gpu=1.14.0CUDA=10.0cuDNN=7.4 (多版本CUDA共存)
文章目录 0. 前置说明1. 查看版本对应关系2. 安装 cuda3. 安装 cudnn4. 添加环境变量5. 安装 tensorflow 0. 前置说明 本机(Windows 11)已安装CUDA 11.7 使用命令查看显卡驱动: nvidia-smi这里显示的CUDA Version: 11.7说明支持安装11.7版本…...
CodeWhisperer 初体验
文章作者:1颗 orange 最近用了一个叫 CodeWhisperer 的插件,这个软件对于来说开发人员,插件有好多实用的功能,编码更高效,代码质量也提升了很多。 CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于机器学习…...
HNU-算法设计与分析-讨论课1
第一次小班讨论 (以组为单位,每组一题,每组人人参与、合理分工,ppt中标记分工,尽量都有代码演示) 1.算法分析题 2-10、2-15(要求:有ppt(可代码演示)) 2.算法实现题 2-4、…...
java连接zookeeper
API ZooKeeper官方提供了Java API,可以通过Java代码来连接zookeeper服务进行操作。可以连接、创建节点、获取节点数据、监听节点变化等操作,具体有以下几个重要的类: ZooKeeper:ZooKeeper类是Java API的核心类,用于与…...
2023-11-01 node.js-electron-环境配置-记录
摘要: 2023-11-01 node.js-electron-环境配置-记录 相关文档: Node.js Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron node.js的国内源 - Python技术站 node.js 下载地址: https://nodejs.org/dist/v20.9.0/ 说明: 最好使用最新版本当前我使…...
使用 ElementUI 组件构建 Window 桌面应用探索与实践(WinForm)
零、实现原理与应用案例设计 1、原理 基础实例 Demo 可以参照以下这篇博文, 基于.Net CEF 实现 Vue 等前端技术栈构建 Windows 窗体应用-CSDN博客文章浏览阅读291次。基于 .Net CEF 库,能够使用 Vue 等前端技术栈构建 Windows 窗体应用https://blog.c…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
