基于单片机ISP技术原理及在线编程器的实现

2023-11-13

编程接口一般:芯片不焊在电路中,如华邦的51单片机  40引脚  可能是串口下载。STC  焊在板上的USB转串口下载,下面的ATMEL的ISP是模拟SPI下载,用单片机的P1.5P1.6P1.7下载

以ATMEL公司的AT89S51/AT89S52单片机为例,介绍ISP技术原理,及ISP在线编程器的实现方法。
  
  AT89S51/AT89S52单片机的ISP引脚共有4个:RST、MOSI、MISO和SCK。
  
  各引脚的功能如下:RST为在线编程输入控制端,仅在ISP下载过程中保持高电平,在系统正常工作时该引脚为系统复位端,保持低电平状态。MOSI为主机输出/从机输入的数据端,系统正常工作时,该引脚为通用I/OP1.5口线。MISO为主机输入/从机输出的数据端。系统正常工作时,该引脚为通用1/0P1.6口线。SCK为串行编程的时钟端,可实现主、从机时序的同步,该时钟频率不得超过系统时钟的1/16。
  
  系统正常工作时,该引脚为通用I/OPl.7口线。AT89S51/AT89S52单片机的ISP引脚功能如下图所示。

AT89S51/AT89S52单片机的ISP引脚功能图


  
  ISP下载是基于串行传输方式,并且符合SPI协议。在SPI协议中,数据的发送和接收是同步进行的,即在同步时钟的作用下,在发送数据的同时也接收数据。
  
  ISP的时序如下图所示。每一字节的数据都是低位在先,高位在后,在串行时钟的作用下逐位传输。在传输过程中,数据是在时钟输入端为高电平时有效,在时钟输入端低电平时更新数据,在编写ISP下载程序时务必注意这一点。

ISP的时序图


  
  ISP下载功能的指令集如下表所示。

ISP下载功能的指令集


  
  使用上述指令时,需注意以下事项:
  
  1.要进行ISP编程,首先要确保RST引脚为高电平,且该高电平一直持续到整个编程过程结束。
  
  2.ISP编程操作是通过不同的指令实现的,以编程使能命令作为其他命令的前导命令,必须首先执行编程使能命令,再执行其他命令。例如要擦除芯片,首先执行编程使能命令,然后执行芯片擦除命令,这样才能完成操作擦除。
  
  3.各个命令有自己的格式,使用不同命令时,必须严格按照命令的格式进行,例如在芯片擦除命令中,虽然有2个多字节可为任意数据,但也要发送。
  
  4.ISP数据传输符合SPI协议,虽然在发送数据的同时也接收数据,但接收数据的取舍是由用户决定。
  
  5.在ISP编程中尤其是写Flash的过程中,最好不要被意外情况中断,比如断电,或者RST引脚电压变低,这样容易造成芯片内部的Flash永久性损坏。
  
  AT89S51/AT89S52单片机的在线编程(ISP)电路设计如下:计算机并行接口共有25个口线,丰要包括数据端口DO—D7(端口发地址为378H,用于数据输出);状态端口Busy、nAck.PE、Select、nError(端口地址为379H,用于数据输入);控制端口nSelin、nlnit、AnrtoFeed、nStrobe(端口地址为37AH,用于输出控制)。从中选出4个口线来模拟ISP所需的引脚,非常灵活,只需考虑数据的输入、输出方向及操作方便,但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分作输入,另一端分作输出。电路下图可实现ISP(在系统编程)的功能。
  
  该电路在计算机并行接口部分,用第⑥脚模拟SCK、第⑦脚模拟MOSI,第⑨脚模拟RST、第⑩脚模拟MISO。用第④脚来控制驱动隔离电路SN74AS244的使能端。注意不同端口操作地址不同,这涉及程序的编写。下图中UIB的引脚A2、A3、A4并接是为了增大驱动能力,上拉电阻是为了确保空闲时的电平状态。该电路制作出的实物如右图所示。
  
  不同的在线编程电路对应于不同的硬件电路,在程序实现上也有区别。本文的硬件电路设计完全依照共享软件Easy51Pro来完成设计的,故可上网下载此共享软件来实现在线编程,并目,下载后无须安装即可直接运行该程序以实现ISP(在线编程)的功能。

ISP电路图

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于单片机ISP技术原理及在线编程器的实现 的相关文章

  • 在 Python 中将字符串转换为数组

    使用 str split 方法将字符串转换为数组 例如 array string split str split 方法将在每次出现提供的分隔符时将字符串拆分为一个列表 string www jiyik com 将逗号分隔的字符串转换为数组
  • [springboot+thymeleaf ] 前台js读取后台传值

    后台代码 通过ModelAndView类型返回 RequestMapping value list method RequestMethod GET public ModelAndView list RequestParam value p
  • wxWidgets:使用wxDataViewCtrl类的示例

    wxWidgets 使用wxDataViewCtrl类的示例 wxWidgets是一个跨平台的C 图形用户界面 GUI 库 它提供了丰富的控件和功能 使开发者能够轻松构建跨平台的应用程序 其中的wxDataViewCtrl类是一个强大的控件
  • 在Raspberry Pi上使用PySimpleGUI创建图表

    PySimpleGUI python库在本地GUI和Web界面具有相同代码的能力中脱颖而出 PySimpleGUI并非以图表包为重点 而是具有画布和图形元素 可让您创建实时条形图和实时趋势图 图形元素入门 图形元素可以具有不同的坐标方向 例
  • matlab2019a中LSTM网络使用方法及源码示例(Deep Learning Toolbox系列篇6)

    此示例说明如何使用长短期记忆 LSTM 网络对序列数据进行分类 要训练深度神经网络以对序列数据进行分类 可以使用 LSTM 网络 LSTM 网络允许您将序列数据输入网络 并根据序列数据的各个时间步进行预测 此示例使用 1 和 2 中所述的日
  • 机器人编程有等级考试吗?

    很多学习机器人编程的同学 都想通过等级考试来检验自己的学习效果 通过考试发现自己的学习短板 查漏补缺 如果能取得不错的成绩 对自己的学习自信心也会有非常大的提升 机器人编程有等级考试吗 今天小贝老师就来帮助大家解答这个问题 其实 机器人编程
  • 网络编程是什么

    转载 http peixun eol cn company company article detail php articleid 15033 对于初学者 或者没有接触过网络编程的程序员 会觉得网络编程涉及的知识很高深 很难 其实这是一种
  • connect()函数

    connect 用于建立与指定socket的连接 头文件 include
  • Java 读取resources下的资源文件

    Web项目中应该经常有这样的需求 在maven项目的resources目录下放一些文件 比如一些配置文件 资源文件等 文件的读取方式有好几种方式 本文会对常用的读取方式做一个总结 并说明一下应该注意的地方 准备工作 新建一个spring t
  • 阿里老哥独家珍藏的Java面试突击宝典,轻松应对95%秋招面试题

    临近秋招 想必有不少老哥已经在为面试做准备了 大家想必也知道现在面试就是看项目经验 基本技术 个人潜力 也就是值不值得培养 总之就是每一次面试都是对我们能力的检验 无论是软实力还是硬实力 软实力其实就是简历包装 自我介绍 与面试官交谈技巧等
  • 大起大落,蚂蚁上市被叫停,蚂蚁的程序员们怎么样了?

    继马云被有关部门联合约谈以后 万众瞩目的蚂蚁上市被叫停了 一石激起千层浪 这个爆炸性的新闻引起了人们的热议 来看看大家都说了些什么 首先表达一下对蚂蚁金服员工的深切同情 毕竟之前大家都以为马上就能实现财务自由 走上人生巅峰 结果来了这么一出
  • 树的广度优先遍历与深度优先遍历算法

    1 树的广度优先遍历算法 广度优先遍历算法 又叫宽度优先遍历 或横向优先遍历 是从根节点开始 沿着树的宽度遍历树的节点 如果所有节点均被访问 则算法中止 如上图所示的二叉树 A 是第一个访问的 然后顺序是 B C 然后再是 D E F G
  • 多处理器编程的艺术(二)-并行程序设计

    当处理器的性能的发展受到各方面因素的限制的时候 计算机产业开始用多处理器结构实现并行计算来提高计算的效率 我们使用多处理器共享存储器的方式实现了多处理器编程 也就是多核编程 当然在这样的系统结构下我们面临着各种各样的挑战 例如如何协调各个处
  • 使用CUDA和CUFFT进行快速1D卷积的示例

    使用CUDA和CUFFT进行快速1D卷积的示例 在计算机视觉 数字信号处理和机器学习中 卷积是一种常见的操作 然而 卷积操作通常需要大量计算 因此需要一种高效的方法来完成 CUDA和CUFFT可以用于对使用FFT的快速1D卷积进行加速 在本
  • Qt实现窗口关闭时提示确认退出

    Qt实现窗口关闭时提示确认退出 在Qt中 当用户点击窗口关闭按钮时 程序会直接退出 这样可能会导致数据丢失或其他不必要的操作 为了提高用户体验 我们可以在窗口关闭前给出一个提示框 询问用户是否确认退出 一 实现思路 通过重写QWidget类
  • 编程杂感两篇

    一 Null是个巨大的错误吗 为null正名 null可以表示未初始化的引用 为什么不强迫初始化 因为初始化时可能抛异常 变量声明放进try块 又可能有跨作用域的需求 一种常见的做法是大改语法引入maybe关键字支持代数类型 并且函数做模式
  • Matlab中文注释在Linux中乱码解决

    Linux for Matlab中文注释乱码 Linux for Matlab中文注释乱码 亲测有效 中文注释乱码的原因是windows下的m文件采用的是gbk编码 只要将所有的m文件转成 utf8文件 显示就正常了 查看支持的语言 enc
  • C++简易计数器

    Created by Carlgood Note This program is written in version DEV C 5 11 include
  • Java语言真的跌落神坛了吗?

    Java语言真的跌落神坛了吗 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Java的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评论区回复 888 之后私信回复 888 即可拿走
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用

随机推荐

  • 网站弹窗公告一天弹窗一次源码简单好看

    介绍 简单好看到爆炸 上传到根目录使用即可 一天只弹一次 使用cookie记录 网盘下载地址 http kekewangLuo net T2ztQxJWt16 图片
  • kullback-leibler distance的计算(matlab)

    KL distance是用来计算两组离散数值的信息量 相对熵 的 一般针对的是离散数据 可以用来做特征筛选 但如果是连续数据 则先要离散化求每个bin内的frequency后再计算KL distance KL distance的解释 1 h
  • linux 文件测试运算符

    文件测试运算符用于检测 Unix 文件的各种属性 属性检测描述如下 b file 检测文件是否是块设备文件 如果是 则返回 true b file 返回 false c file 检测文件是否是字符设备文件 如果是 则返回 true c f
  • 板端电源硬件调试BUG

    项目场景 问题1 MC34063A负压电路调试 MC34063A是一款常用于产生负压的开关电源 但是去年我花PCB板子进行调试 负压产生的电压是0V 问题2 采用MP2359开关电源产生5V电压 问题3 这一步调试成功 但是AMS1117
  • Linux centos8 docker中安装postgresql12.4及远程访问设置

    centos 8 0 docker 安装postgresql 12 4 及远程连接设置 一 docker 安装 postgresql 12 4 1 拉取镜像 docker pull postgres 12 4 2 运行容器 docker r
  • VMware Workstation Pro 17 虚拟机安装Ubuntu18.4.06

    VMware Workstation Pro 17 虚拟机安装Ubuntu18 4 06 1 下载Ubuntu镜像文件 2 安装VMware Workstation Pro 17 3 使用VMware创建虚拟机 4 安装Ubuntu18 4
  • YC 带你快速入门区块链

    1 介 绍 如果你在这里 我们假设你是一个受区块链影响的开发者 黑客 你确信你了解它是如何工作的 现在你很想知道区块链对你和你所掌握的开发者技能的意义 如果你需要更多的底气 我们建议你先从比特币白皮书和以太坊白皮书开始 比特币白皮书学习资料
  • 权限系统控制到按钮级别开源推荐 Spring Boot-Shiro-Vue

    再搞权限系统的时候 权限控制到菜单很容易 但是很多情况要控制到按钮接口级别 这个时候设计就要研究下了 方案好几种 这里推荐一个不错的开源方案 大伙可以参考学习下 Spring Boot Shiro Vue实现 github开源地址及系统演示
  • JavaWeb-云日志

    前不久 我在哔哩哔哩上学了一个教写了云日志web项目 但讲的不全 我自己学习过程中 做个笔记 也分享给大家 源码链接在最后面 目录 1 数据库设计 2 登录模块 3 个人中心模块 4 类别模块 5 日志模块 6 数据报表模块 7 主页模块
  • Android SIM卡识别加载流程

    文章目录 总述 代码路径 UICC框架 SIM卡识别加载流程 日志分析举例 总述 本文基于Android N Android 7 首先要知道SIM卡一般是挂载在CP侧 MODEM侧 的 由MODEM给予真正的上电 识别 通信等 然后通过AP
  • Python selenium Boss直聘数据爬取(仅供学习使用)

    写在前面 因为最近刚好需要分析行业数据 又在查询时 发现了许多博主写了一些东西 但很多都已经失效了 所以写了那么一篇文章 希望能够帮到大家 注 BOSS直聘数据为js加载数据 故使用selenium 一 pip selenium bs4 下
  • Microsemi Libero系列教程(四)——PLL的使用

    文章目录 PLL是什么 Libero中PLL的使用 官方文档 交流群 系列教程 Microsemi Libero系列教程 PLL是什么 PLL Phase Locked Loop 为锁相回路或锁相环 用来统一整合时钟信号 使高频器件正常工作
  • 远程链接腾讯云Redis-遇到的坑

    开门见山 1 配置腾讯安全组 不用重启机器 首先找到默认的安全组 一个实例必须有一个安全组 即这个 点进去 就会进入安全组下全部的安全策略 根据需要配置 2 更改Redis配置redis conf 注意 1 一定找到启动Redis对应的re
  • C++ STL模板库用法查询及一些常见面试题(自用)

    C STL模板库 文章目录 C STL模板库 用法查询 Array 1 使用 2 创建 3 成员函数 Vector 1 使用 2 创建 3 成员函数 deque 1 使用 2 创建 3 成员函数 list 1 使用 2 创建 3 成员函数
  • 「如何优雅有效利用周末和下班时间?」

    文章目录 每日一句正能量 前言 下班的时间规划 周末的时间规划 提升周末体验感的好方法 怎样才能获得充分的休息 后记 每日一句正能量 眼望古城街尽 心谱落愁无序 旧时的誓言 曾而相似 河水在遵循河道的指引下 在曲折前进中放声的歌唱 我却在心
  • 记录QTcpSocket碰到的ConnectToHost失败问题

    之前尝试Qt的QTcpSocket 发现ConnectToHost失败 waitForConnected一直返回false 一直不得其解 放弃了 直到最近再次使用 仍然是返回false 下定决心要解决这个问题 心血来潮查了QT的文档 发现有
  • 一文让你知道关于App推送那些事

    推送相关介绍 在用户未打开App时 服务端向用户推送服务器最新的消息数据 称为推送 消息推送在移动开发中用到的场景非常多 比如典电商类app的商品促销活动 资讯类的app的新闻推送等等 在实际开发中 我们常常会根据产品设计的需要 进行推送功
  • RF4CE安全性:概述

    配对流程 RF4CE配对是一个相当简单的过程 带来一些安全隐患 可能是由于试图简化最终用户的配对过程 首先 我们有发现阶段 外围设备发送具有一些特定属性集的发现请求命令 并等待来自满足这些要求的设备的发现响应命令 配对本身从外围设备发出的配
  • 服务器基础知识

    服务器基础知识 服务器是网络环境中的高性能计算机 它侦听网络上的其他计算机 客户机 提交的服务请求 并提供相应的服务 为此服务器必须具有承担服务并且保障服务的能力 一 服务器的分类 1 塔式服务器 塔式服务器即常见的立式 卧式机箱结构的服务
  • 基于单片机ISP技术原理及在线编程器的实现

    编程接口一般 芯片不焊在电路中 如华邦的51单片机 40引脚 可能是串口下载 STC 焊在板上的USB转串口下载 下面的ATMEL的ISP是模拟SPI下载 用单片机的P1 5P1 6P1 7下载 以ATMEL公司的AT89S51 AT89S