技术文档

怎么给单片机写程序 程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍

小编 2024-10-06 技术文档 23 0

程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍

单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机最常用的四种烧写方式和所使用到的工具。

1.使用JTAG接口实现

JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多数的单片机都支持这种接口。这种接口除了电源线和复位引脚之外,还要用到单片机的四个引脚,分别是:TDI、TMS、TCK、TDO,他们所代表的含义如下所示:

TDI--数据输入 ,所有写入寄存器的数据都是通过TDI接口串行输入的;TMS--模式选择 ,Jlink输出给目标CPU的时钟信号;TCK--时钟信号 ,所有数据的输入输出都是以该时钟信号为基准的;TDO--数据输出 ,所有从寄存器读出的数据都是通过TDO接口串行输出的;

以上这四个引脚都是协议里强制要求的,而且协议建议在设计电路时要选用上拉电阻。JTAG接口有多种形式,常用的20引脚、14引脚和10引脚。以20引脚JTAG为例,所设计的JTAG烧写电路如下图所示:

JTAG接口

上图中JTAG接口都通过电阻上拉了,有的单片机的这几个引脚在内部已经上拉,所以这几个上拉电阻可以省略,减少了成本和PCB空间的占用。

JTAG接口烧录方式常用的工具为J-Link,实物图如下图所示。

Jlink实物图

相信大家都见过或者听过这个烧写工具,这个工具很通用,但是大家在使用的时候一定要注意版权信息,因为这个工具是有版权的,前两年因为版权风波,网购平台还集中整治过一次。

2.SWD接口烧录方式

SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线,分别为:SWCLK和SWDIO。他们的含义如下:

SWDIO --串行数据线,用于数据的读出和写入;SWDCLK --串行时钟线,提供所需要的时钟信号;

一般来说,大多数单片机的JTAG接口和SWDIO接口是复用的,SWD也是用J-Link工具来实现的。所以在使用的时候,只需要在软件界面做一下选择,使用SWD方式还是JTAG方式,硬件上无需改动。除了J-Link外,意法半导体的ST-Link也是支持SWD模式的。

SWD接口

SWD的接口如上图所示,可以看出,SWD和JTAG是相互复用的,由于SWD只需要两根线所以大大减少了对单片机GPIO口的占用,SWD方式也是可以在线调试的。

3.ISP烧写方式,用UART实现

使用过国产51单片机的朋友都清楚这种烧写方式,这种烧写方式是通过单片机的UART串口来实现的,所需要的工具也比较简单-USB/TTL。这个USB/TTL的芯片可以通过MAX232、CH340G等芯片来实现,通过MAX232实现的UART烧写电路如下所示:

UART串口烧写电路

在与单片机连接的时候,一定要注意交叉连接,所谓交叉连接即,单片机的TXD接串口RXD,单片机的RXD接串口TXD,否则数据通信失败。51单片机在使用该方式下载时需要断一下点再上电才能下载。

STM32单片机可以使用UART来实现程序下载,但是需要选择BOOT的模式,现在通过CH340G芯片可以实现自动ISP的下载方式,即不需要手动设置BOOT模式。

4.SWIM单总线下载方式

这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link,如下图所示:

ST-Link

以上为几种常见的烧写方式以及所使用的工具,欢迎大家留言评论,如果转载请注明作者信息和头条出处,感谢支持。

告诉你怎么编写一个最简单的单片机程序

在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以P1.0端口为例:

让该端口输出高电平的语句是:

SETB P1.0

让该端口输出低电平的语句是:

CLR P1.0

好了,现在我们将小灯接在单片机的P1.0端口上,如下图所示:

由上图可知,当端口P1.0输出高电平时,小灯D不亮,因为小灯中不会有电流通过;当端口P1.0输出低电平时,小灯就亮,因为此时小灯中有电流通过。

要让小灯亮一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让小灯亮一会儿、灭一会儿,交替闪烁的程序:

MAIN:;程序开始

SETB P1.0;让P1.0输出高电平

LCALL DELAY;这一行是调用延时子程序

;目的是让P1.0保持高电平

;多停留一段时间

CLR P1.0;让P1.0输出低电平

LCALL DELAY;这一行也是调用延时子程序

;和刚才一样,让P1.0保持低

;电平停留一段时间,其实就

;是让它多亮一会儿再熄灭

LJMP MAIN;跳转到MAIN处执行(循环)

;以下是延时子程序,有关该延时程序的内容以后再学

DELAY: MOV R7,#250

D1: MOV R6,#250

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“Keil uVision2”的软件中汇编完成,汇编后得到一个*.hex文件,这就是目标文件,然后用编程器将该文件“写”到单片机89s51中,这样该89s51就具有自动控制小灯闪烁的功能了。

在实验的时候,通常用发光二极管LED代替小灯,由于LED工作电压小,由此LED要串接一个小电阻,用220欧姆——1k之间的都行,我用的是510欧姆的。

这样还不够,单片机工作还需要两个条件,一是需要加上一定的工作电压,AT89S51工作电压为5V,第20脚接负极,第40脚接正极;另外还要给单片机安装一个心脏起搏器,就是振荡器,通常叫做时钟,只要在18脚和19脚之间接一个石英晶体就行了,我用的是12MHz的,另外为了保证振荡器稳定工作,还要在18脚、19脚分别接一个27PF的小电容到地(就是接到负极),此外,89s51的第9脚为复位端,要接一个10uF电容到正极,再接一个10K电阻到负极,最后,第31脚也要和电源的正极接起来,关于31脚,以后再说,这样一台由单片机控制的会自动闪烁的小灯就做好了。下面是完整的电路图:

没有使用的管脚空着就行了,什么也不用接。一通上电,小灯就开始不停的闪烁了。大约1秒钟闪烁3——4次。

本文转载自网络,如有侵权,请联系删除。

相关问答

如何向 单片机写程序 ?

要向单片机写程序,首先需要选择合适的编程语言,如C、C++或汇编语言,并学习相应的语法和逻辑。然后,根据硬件平台的要求,编写程序代码,包括初始化设置、输...

单片机程序 编写?

以下是我的回答,单片机程序编写是电子工程领域的一项重要技能。它涉及使用特定的编程语言(如C或汇编语言)来编写代码,这些代码将控制单片机的操作。编写单片...

单片机 如何写入 程序 ?

可以采用ISP下载线,写入单片机程序的STC系列单片机可以采用单片机编程器,下载程序的,兼容51系列的单片机可以采用ISP下载线,写入单片机程序的STC系列单片机...

单片机程序 讲解?

单片机程序是由中央处理器、存储器、输入输出端口(包括并行I/O、串行I/O、模数转换器)、计时器和计数器等组成,具有完整数字处理功能的大规模集成电路。单片...

怎么把 程序写 单片机 ?

程序写入单片机的过程一般被叫做烧录,烧录的实际过程是:1.通过编译器编译生成单片机能够识别的执行程序2.通过上位机按照某种通讯协议,把二进制可执行文件...

程序 怎么写 单片机 的?

程序写入单片机的过程一般被叫做烧录,烧录的实际过程是:1.通过编译器编译生成单片机能够识别的执行程序2.通过上位机按照某种通讯协议,把二进制可执行文件...

如何把 程序写 单片机 ?

程序写入单片机的过程一般被叫做烧录,烧录的实际过程是:1.通过编译器编译生成单片机能够识别的执行程序2.通过上位机按照某种通讯协议,把二进制可执行文件...

单片机 串口 程序 编写流程?

GCC只是一个编译器,和别的编译器一样。串口通讯程序一般都是这样一个流程(AVR单片机正常工作的情况下):1配置时钟,包括使能时钟,配置串口波特率。2其他配...

怎样把 单片机 里的程序读取出来和把 程序写 单片机 ?

将单片机中的程序读取出来,可以通过以下步骤实现:1.连接单片机与计算机:使用适当的连接线将单片机与计算机连接起来,通常使用串口或USB接口。2.下载调试工...

单片机 数码管 程序怎么写 ?

单片机数码管程序可以通过以下步骤来编写:首先,需要确定使用的数码管类型(共阴极还是共阳极),并且了解其引脚连接方式。然后,通过设置相应的端口为输出模...

猜你喜欢