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…...
别再等电池报废!用Python+Sklearn,仅需100次循环数据就能预测电池寿命(附完整代码)
用Python实现电池寿命预测:从特征工程到模型部署全流程指南锂电池的健康状态(SOH)预测一直是能源管理和工业应用中的关键挑战。传统方法往往需要等待电池出现明显容量衰减才能进行寿命评估,而现代数据驱动技术可以在早期循环阶段就…...
双向可控硅交流控制电路基础知识及Multisim电路仿真
目录 2.2.2 双向可控硅交流控制电路 2.2.2.1 双向可控硅交流控制电路基础知识 2.2.2.2 双向可控硅交流控制Multisim电路仿真 摘要:本文介绍了双向可控硅交流控制电路的工作原理及Multisim仿真。该电路通过光耦隔离实现低压控制高压交流负载,采用过零触发方式降低干扰。控制…...
AI agent案例汇总:基于 LangGraph 的智能对话 Agent 实现
实现了一个具备记忆功能和工具调用能力的智能对话 Agent,基于 LangChain 框架构建,可实现天气查询、数学运算两大核心功能,同时支持多轮对话记忆。代码中初始化了大模型并配置相关参数,通过装饰器定义工具函数,让 Agen…...
办公场景横向测评:GPT-5.5、DeepSeek、Gemini 处理公文优劣对比
进入 2026 年,AI 办公已经从“帮我写一段话”逐渐变成了“帮我完成一整套文档流程”。尤其是在公文、通知、会议纪要、方案初稿、汇报材料等场景里,大模型能不能理解语境、控制语气、保持格式,直接影响实际使用体验。目前常见的办公 AI 模型中…...
通过Hermes Agent对接Taotoken自定义模型提供方
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Hermes Agent对接Taotoken自定义模型提供方 Hermes Agent是一个流行的AI Agent开发框架,它支持通过统一的接口调用…...
CVE漏洞编号规范与FortiSandbox安全机制解析
我不能按照您的要求生成关于“CVE-2026-39808 PoC 公开:FortiSandbox 无需认证 root RCE,全网已遭大规模扫描”的博文内容。原因如下:✅该漏洞编号 CVE-2026-39808 为虚构编号CVE 编号遵循严格的时间与分配规则:当前最新公开的 CV…...
Claude在国内用不了?我挨个试了一遍
你有没有这种感觉—— 每次看到Claude又出新版本,心里痒痒的。别人都在讨论Sonnet多好用、Opus推理多强,你打开官网,要么打不开,要么要翻墙,要么要国外手机号验证。 好不容易折腾注册上了,用了两周,某天突然收到封号邮件。 烦不烦? 说实话,作为一个重度AI用户,我…...
企业如何利用Taotoken实现多模型API的统一管理与访问控制
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业如何利用Taotoken实现多模型API的统一管理与访问控制 在AI应用开发实践中,一个常见且棘手的问题是模型API的管理。…...
Kali365 设备代码钓鱼攻击机理、危害及防御体系研究
摘要 2026 年 5 月 FBI 发布预警,新型钓鱼即服务平台 Kali365 通过滥用 Microsoft 365 OAuth 2.0 设备代码授权流程,可在不窃取密码、不伪造登录页面的前提下绕过多因素认证,获取长期有效访问令牌,实现账户持久化控制。该平台依托…...
Python之ansimagic包语法、参数和实际应用案例
Python ansimagic包完整详解:功能、安装、语法、案例、排错 ansimagic 是Python轻量级终端动画/字符动画工具包,专注于在命令行(CMD、Terminal、PowerShell)中生成流畅的动态字符效果、进度条、加载动画、文字动画、ASCII动画等。…...
