当前位置: 首页 > article >正文

51单片机Proteus仿真速成教程——P1-软件与配置+Proteus绘制51单片机最小系统+新建程序模版

前言:本文主要围绕 51 单片机最小系统的绘制及程序模板创建展开。首先介绍了使用 Proteus 绘制 51 单片机最小系统的详细步骤,包括软件安装获取途径、工程创建、器件添加(如单片机 AT89C51、晶振、电容、电阻、按键等)、外围电路(晶振电路、复位电路等)绘制、连线以及电源和地的设置,还说明了 EA 引脚和 P0 口上拉电阻的作用。接着阐述了在 Keil 中新建程序模板的过程,包含项目创建、单片机型号选择、新建 main.c 文件、编写程序框架、编译设置、生成 HEX 文件等操作,并介绍了将 HEX 文件加载到 Proteus 中运行的方法,最后给出了测试程序以判断程序是否正常运行,以及修改 HEX 文件名称的方式。

目录

一、Proteus绘制51单片机最小系统

二、新建程序模版


一、Proteus绘制51单片机最小系统

本教程需要安装proteus与keil 5软件,这个在网上有很多教程,可自行查阅安装,可关注我的微信公众号:阿齐Archie。回复关键字:51单片机Proteus与keil安装与配置,免费获取安装包及安装文档。

使用 Proteus绘制51单片机的最小系统。首先打开 Proteus,可通过点击新建工程或使用文件菜单中的新建工程选项

将工程名称修改为 “P1-51单片机最小系统”,路径暂设置在桌面,选择新工程后点击下一步。

使用默认模板创建原理图

因不需要 PCB,选择不创建 PCB

此处选择无固定项目,不建议选用后面两项

点击finish后完成操作。

此时画布空白,需手动添加器件。

先添加单片机 AT89C51,点击界面中的 “p” 进行搜索,在左上角关键字区域输入 “at89c51”,选择后点击确定。

此时鼠标变为笔的形状,在画布任意位置单击出现单片机外框,在合适位置再次单击完成放置。

接下来绘制最小系统的外围电路,其包含晶振电路、复位电路、EA 启动选择引脚设置以及 P0 口的上拉电阻。

绘制前说明一下网格密度设置,可通过 Ctrl+F1 设置更密,F2 设置为稍稀疏(个人偏好),默认 F3 为某一密度,F4 更稀疏。

开始绘制晶振电路,它由一个晶振和两个电容组成。

同样点击 “p”,若不清楚晶振英文,可网上搜索 “proteus 晶振”,按下 “p”,输入晶振关键字CRYSTAL,出现两个晶振选项。当出现两个相同器件时,单独选中查看右边模型是否符合需求,这两个晶振的符号及原理图仿真模型都一样,任选一个点击确定。

在画布点击鼠标,按快捷键进行旋转,旋转到合适角度后单击放置。

接着放置电容,若不知器件搜索关键词,可采用百度搜索的方法。电容英文为 “cap”,选择无极性电容,默认第一个即可

单击、旋转并放置后,双击电容将其值设置为 30pF。

单击选中电容,复制粘贴另一个相同的电容。

再看复位电路,由一个极性电容、一个电阻和一个按键组成。

先放置极性电容cap,有两个选项,个人偏好其中一种

放置后调整位置并将值设置为 10μF。注意极性,带弯的一端为负极,另一端为正极

接着放置按键,英文为 “button”,确定后旋转并放置。

然后放置电阻 “RES”,默认 10K 无需修改。

还有排阻 “respack”(“res” 代表电阻,“pack” 代表包,即电阻包),P0 口有 8 个引脚,需 8 个电阻,选择 “8 - 8” 的排阻确定放置。

完成器件放置后进行连线。

有简便方法,按下滑轮放大到合适位置,将两个器件尖端对准后点击确定并放置,按住拖动完成连线;

也可先连好第一根线,如从 39 连到 2,当 38 处出现红色方框时双击,可重复上一步划线操作。

完成上述操作后进行电源和地的设置

选择终端模式

“power” 是电源符号, “GND”(地)符号。

然后选择第一个选择模式,将相关器件连接起来,至此 51 单片机最小系统绘制完成。

其中 EA 是启动选择引脚,上拉接 VCC 表示从内部启动,接地则从外部存储器启动,51 单片机一般从内部启动,所以通常接 VCC 高电平。

P0 口需接一个上拉电阻,因为 P0 口没有内部上拉,不接外部上拉电阻无法正常输出高低电平。

点击运行,系统运行起来,但 message 信息处有黄色叹号,点击查看是 警告,提示未载入程序文件,将其关闭。下一课将进行程序模板创建。

二、新建程序模版

上节课通过 Proteus 绘制了一个单片机的最小系统,但该系统没有程序文件。

接下来创建程序文件,打开keil并选择 “project new” 新建

选择之前使用的文件夹后再新建一个名为 “P1-新建程序模版程” 的文件夹,双击文件名,简单选择 “project” 后保存。

先选择单片机型号,默认是ARM还有 STM,若安装了 MDK 则默认使用ARM系列,通过下拉菜单选择第二项,若默认就是该项则无需更改

在搜索设置里搜索 “AT89C51” 并选择该型号后点击 “OK”

接着点击否

之后进行新建操作,点击新建。

新建一个main.c文件,该文件路径是本工程路径

编写第一行 “include”,使用 51 函数时为 “REG51.h”,若为 52 则是 “REG52.h”

右键点击添加头文件

写如下框架,这样就形成了一个 51 单片机的程序模板。

对该程序模板进行编译,若出现 0 错误 0 警告则正常,若出现错误或警告,需检查各个单词拼写是否正确以及 “main函数” 是否正确添加。

若要让 Proteus 能够使用该程序,需点击魔法棒一样的图标,选择 “output”,选中 “创建 HEX 文件” 后确定,然后重新编译。

回到 Proteus,双击芯片,点击程序文件后面文件夹形状的图标,选择 “程序 obj project.hex” 后双击确定,再次运行,之前的警告应会消失。

为判断程序是否正常运行,编写测试程序,在前面添加 “P0 = 0X55”。正常运行时,P0 口应呈现高电平、低电平交替的状态。

每次修改程序后都要进行编译以确保无错误,然后点击运行,查看 P0 口状态,红色代表高电平,蓝色代表低电平,若呈现一个红、一个蓝交替的状态,从高位到低位为 “01010101”,正好对应 “0X55”,则说明程序运行正确。

若想修改 HEX 文件的名称,可在 “output” 里进行修改,例如将其修改为 “最小系统”,编译后双击芯片,重新选择修改后的 HEX 文件即可。

相关文章:

51单片机Proteus仿真速成教程——P1-软件与配置+Proteus绘制51单片机最小系统+新建程序模版

前言:本文主要围绕 51 单片机最小系统的绘制及程序模板创建展开。首先介绍了使用 Proteus 绘制 51 单片机最小系统的详细步骤,包括软件安装获取途径、工程创建、器件添加(如单片机 AT89C51、晶振、电容、电阻、按键等)、外围电路&…...

使用 pytesseract 进行 OCR 识别:以固定区域经纬度提取为例

引言 在智能交通、地图定位等应用场景中,经常会遇到需要从图像中提取经纬度信息的需求。本篇文章将介绍如何利用 Python 的 pytesseract 库结合 PIL 对图像进行预处理,通过固定区域裁剪,来有效地识别出图像上显示的经纬度信息。 1. OCR 与 …...

【18】单片机编程核心技巧:变量赋值与高位填充机制

【18】单片机编程核心技巧:变量赋值与高位填充机制 七律 变量赋值探秘 单字赋多字疑云开,高位零填自天来。 清零保守虽稳妥,强制转换更悠哉。 实验验证真章显,编译器间无异态。 嵌入式海行舟稳,类型分明避坑台。 注释…...

网络安全系统集成

随着信息技术的迅猛发展,网络安全问题变得越来越突出。为了应对这一挑战,软考网络安全系统集成应运而生,成为众多企业和机构的重要需求。软考网络安全系统集成旨在培养具备网络安全系统设计、实施和维护能力的专业人才,以满足国家…...

【51单片机】程序实验15.DS18B20温度传感器

主要参考学习资料:B站【普中官方】51单片机手把手教学视频 开发资料下载链接:http://www.prechin.cn/gongsixinwen/208.html 单片机套装:普中STC51单片机开发板A4标准版套餐7 目录 DS18B20介绍主要特性内部结构控制时序初始化时序写时序读时序…...

Vue项目上传到GitHub,vscode拉取vue项目更新后推送到GitHub上

1、新建Vue项目 2、在GitHub新建仓库 3、留意建立好仓库后提示的命令 4、进入vue项目目录,在空白处点击鼠标右键选择git bash here 5、输入命令 git init git add . git commit -m "注释内容" 输入之前创建GitHub仓库后记下的代码的第一句 git remote…...

数字孪生技术在工业制造中的应用探索

一、数字孪生:工业4.0的虚实纽带 1.1 技术定义与发展脉络 数字孪生(Digital Twin)通过实时数据映射,在虚拟空间构建物理实体的动态镜像。其演进历程: 概念萌芽(2002年):NASA首次提…...

# linux有哪些桌面环境?有哪些显示服务器协议及显示服务器?有哪些用于开发图形用户界面的工具包?

linux有哪些桌面环境?有哪些显示服务器协议及显示服务器?有哪些用于开发图形用户界面的工具包? 文章目录 linux有哪些桌面环境?有哪些显示服务器协议及显示服务器?有哪些用于开发图形用户界面的工具包?1 显…...

【心理课堂】学习软件的道路上若感到了困难和迷茫怎么办

在科技飞速发展的今天,软件领域以其广阔的发展前景和丰厚的薪资待遇吸引着众多人投身其中。然而,学习软件并非一帆风顺,在这个过程中,我们难免会遇到困难和迷茫。那么,当我们在学习软件的道路上感到力不从心时&#xf…...

【Docker项目实战】使用Docker与Caddy部署BanBan任务管理工具

【Docker项目实战】使用Docker部署BanBan任务管理工具 一、BanBan介绍1.1 BanBan简介1.2 主要特点1.3 使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载BanBan镜像五、…...

InternVL:论文阅读 -- 多模态大模型(视觉语言模型)

更多内容:XiaoJ的知识星球 文章目录 InternVL: 扩展视觉基础模型与通用视觉语言任务对齐1.概述2.InternVL整体架构1)大型视觉编码器:InternViT-6B2)语言中间件:QLLaMA。3)训练策略(1&#xff09…...

【BUG】类文件具有错误的版本 61.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。

报错: [ERROR] 类文件具有错误的版本 61.0, 应为 52.0 [ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图: 原因:Java 版本和 Spring 不兼容,显示 Spring 版本过高 解决方法 1. 使用更高版本的 J…...

康谋应用 | 基于多传感器融合的海洋数据采集系统

在海洋监测领域,基于无人艇能够实现高效、实时、自动化的海洋数据采集,从而为海洋环境保护、资源开发等提供有力支持。其中,无人艇的控制算法训练往往需要大量高质量的数据支持。然而,海洋数据采集也面临数据噪声和误差、数据融合…...

双周报Vol.67: 模式匹配支持守卫、LLVM 后端发布、支持 Attribute 语法...多项核心技术更新!

2025-03-10 语言更新 模式匹配支持守卫(Pattern Guard) 模式守卫可以通过在模式后追加 if ... 的语法结构来指定。有模式守卫的分支只有在被模式匹配的值满足对应模式,并且模式守卫为真的情况下才会执行。如果模式守卫为假,则会…...

深入探索 Java Stream

目录 引言一、Java Stream 基础二、Java Stream 常用操作的语法结构及示例三、Java Stream 的应用场景四、总结 引言 在 Java 编程领域,随着数据量的不断增长以及对高效数据处理需求的日益迫切,Java 8 引入的 Stream API 成为了开发者们的得力助手。Str…...

搜广推校招面经四十六

Minimax llm&广告推荐算法 一、反向梯度下降的数学推导(以逻辑回归为例) 1.1. 模型定义 假设模型为逻辑回归,输入特征为 x ∈ R d \mathbf{x} \in \mathbb{R}^d x∈Rd,权重参数为 w ∈ R d \mathbf{w} \in \mathbb{R}^d …...

【Java 和 Scala】-- Java 与 Scala 的 Assert 断言对比

目录 Java 与 Scala 的 Assert 断言对比 1. 什么是 Assert(断言)? 2. 断言的使用场景 3. Java 断言示例 3.1 Java 断言的基本用法 3.2 Java 启用断言 4. Scala 断言示例 4.1 Scala 断言的基本用法 4.2 Scala 断言默认行为 5. Java 与…...

嵌入式软件测试的东方智慧:WinAMS工具的技术哲学与实践启示——一名汽车电子工程师的七年工具演进观察

引言:在丰田精益生产线上诞生的测试哲学 2017年参与某日系车企的ECU(电子控制单元)联合开发时,我第一次在名古屋工厂见到产线旁部署的WinAMS测试站。不同于欧美工具强调的“全流程覆盖”,这个诞生于日本制造业精益文化…...

MCP-代码解读TypeScript版本

MCP-代码解读TypeScript版本 文章目录 MCP-代码解读TypeScript版本1-参考网址2-TypeScript代码3-代码解读1-[非重点]定义函数2-[非重点]定义工具说明3-[重点]运行MCP服务 1-参考网址 B站视频参考 2-TypeScript代码 import { McpServer } from "modelcontextprotocol/sd…...

写了一个二叉树构造函数和画图函数,方便debug

代码 class TreeNode(object):def __init__(self, val, leftNone, rightNone):self.val valself.left leftself.right rightdef construct_tree(nodes):if not nodes:return Noneroot TreeNode(nodes[0])queue [root]index 1while index < len(nodes):node queue.p…...

docker 小记

一、卸载 查看当前版本 docker -v2. 如果有&#xff0c;先停止docker systemctl stop docker如果是yum安装&#xff0c;卸载方式为 #已防版本冲突&#xff0c;直接卸载 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-lat…...

G-Star 公益行起航,挥动开源技术点亮公益!

公益组织&#xff0c;一直是社会温暖的传递者&#xff0c;但在数字化浪潮中&#xff0c;也面临着诸多比大众想象中复杂的挑战&#xff1a;项目管理如何更高效&#xff1f;志愿者管理又该如何创新&#xff1f;宣传推广怎么才能更有影响力&#xff1f;内部管理和技术支持又该如何…...

CMD批处理一些冷门命令,编写windows脚本常用?

场景1&#xff1a; 考虑一种情况&#xff0c;需要使用变量对变量循环替换这个时候&#xff0c;如果不加以一些特殊的设置&#xff0c;很有可能出现与预设的结果不相符的情况&#xff0c;这个时候可以通过设置这样一个命令来避免这个问题。 解决方式&#xff1a; setlocal ena…...

医疗AI测试实战:如何确保人工智能安全赋能医疗行业?

一、医疗AI测试的重要性 人工智能&#xff08;AI&#xff09;正广泛应用于医疗行业&#xff0c;如疾病诊断、医学影像分析、药物研发、手术机器人和智能健康管理等领域。医疗AI技术的应用不仅提高了诊断效率&#xff0c;还能降低误诊率&#xff0c;改善患者治疗效果。然而&…...

k9s入门及实战

概述 k9s&#xff0c;GitHub&#xff0c;是用于管理k8s集群的CLI&#xff0c;提供一个终端UI来与k8s集群进行交互。通过封装kubectl功能&#xff0c;k9s会以特定时间间隔监控k8s的变化&#xff0c;默认为2秒&#xff0c;并提供后续命令来与k8s资源进行交互&#xff0c;k9s可让…...

嵌入式硬件篇---手柄控制控制麦克纳姆轮子

文章目录 前言1. 变量定义2. 摇杆死区设置3. 模式检查4. 摇杆数据处理4.1 右摇杆垂直值&#xff08;psx_buf[7]&#xff09;4.2 右摇杆水平值&#xff08;psx_buf[8]&#xff09;4.3 左摇杆水平值&#xff08;psx_buf[5]&#xff09;4.4 左摇杆垂直值&#xff08;psx_buf[6]&am…...

redis增加ip白名单

Redis增加IP白名单 随着互联网的快速发展&#xff0c;网络安全问题也日益凸显。为了保护服务器安全&#xff0c;我们常常需要对访问服务器的IP地址进行限制。而Redis作为一种高性能的缓存数据库&#xff0c;可以用来实现IP白名单功能。本文将介绍如何使用Redis来增加IP白名单&…...

git commit messege 模板设置 (规范化管理git)

配置方法 git config --global core.editor vim &#xff08;设置 Git 的默认编辑器为 Vim&#xff09;在用户根目录下&#xff08;~&#xff09;&#xff0c;创建一个.git_commit_msg文件&#xff0c;然后把下面的内容拷贝到文件中并保存。 [version][模块][类型]{解决xxx问题…...

Franka机器人ROS 2 发布:赋能机器人研究和行业应用

Franka机器人 ROS 2 发布&#xff1a;赋能机器人研究和行业应用 Franka ROS 2 发布&#xff1a;赋能机器人研究和行业应用 由zlem Odeh 于Franka Robotics 发布 在机器人操作系统 (ROS) 等技术和生态系统的推动下&#xff0c;机器人世界正以前所未有的速度发展。ROS 2 是广受…...

docker部署jenkins,安装使用一条龙教程

Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。 2. 什么是CI / CD…...