程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍
单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程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
以上为几种常见的烧写方式以及所使用的工具,欢迎大家留言评论,如果转载请注明作者信息和头条出处,感谢支持。
单片机烧写程序过程以及详细说明【图文】
Step 1:Keil软件的安装
1.选中文件夹中的C51V900安装程序并打开,如图:
2.在安装对话框里一直选择Next,直到Finish完成Keil的安装。
Step 2: 安装USB转串口线的驱动程序的安装
扩展阅读:什么是单片机烧写?
1. 选中并打开文件夹中的HL-340安装程序
2.点击INSTALL即可自动完成安装
Step 3:Keil工程的建立
1. 打开桌面上的Keil图标
,建立一个新工程单击【Project】菜单中的【New μVision Project】,如下图:
2. 选择工程保存的位置,建议最好新建一个文件夹用来保存此工程文件,方便以后管理。
3. 选择单片机型号:打开Atmel
目录,选择子目录下的AT89C52,点击OK,在弹出的新对话框中选择否(N)。
4. 单击【File】菜单中的【New】菜单项,或者Ctrl+N可新建一个文件Text1
,单击工具栏的图标
或者Ctrl+S,在弹出的保存对话框输入文件名,注意必须在文件名后加上“.c”作为保存的文件类型(例如shuangshuangbang.c),然后保存。
5. 回到编辑界面,单击【Target】前面的“+”号,然后在【Source Group 1】选项上单击右键,弹出下图所示菜单。然后选择【Add Files to Group ‘Source Group1’】菜单项,如下图:
6. 在弹出的对话框中选中刚才保存的“XXX.c”文件并单击【Add】,再单击【Close】,如图:
7. 单击左侧【Source Group 1】前面的“+”号,这时可以注意到【Source Group 1】文件夹中多了一个子项【XXX.c】,这时源代码文件就与工程关联起来了,这时在右边的“XXX.c”代码编辑窗口把伟哥的代码复制过来即可,如图:
8.单击工具栏的【Target Options…】,打开Output选项卡并选择【Creat Hex File】,点击【OK】,这时编译完成后才会产生可供下载到单片机的Hex文件,如下图:
8. 单击工具栏的【Rebuild】,可看到状态栏显示的状态(0错误和0警告),这时便完成了Keil工程的建立并产生了可下载到单片机的Hex文件,如下图:
Step 4:COM口的查询
1.用USB转串口线把电脑的USB口和单片机的串口连接;
2.右键点击“我的电脑”并单击“管理”,在弹出的窗口中选择“设备管理器”,在点击右边的“端口”,可以看到USB转串口线的COM口(如图为COM3口),记住显示的是COM几口,下载程序时要用到,如下图:
Step 5:Hex文件的下载
1.打开文件夹里的“程序下载”压缩包,打开里面的STC_ISP_V481.exe程序,如图:
2.在弹出的界面中选择MCU Type为STC89C52RC,单击【打开程序文件】,在你之前Keil保存工程的位置找到以“.hex”后缀的文件,并选择打开,选择“COM”为Step 4中显示的COM口(我的电脑显示的是COM3,所以我选择了COM3,但是不同电脑可能会不一样,一定要根据自己的电脑来选择),如下图:
2. 最后单击【Download/下载】(单击【Download/下载】之前一定不能先让单片机通电),然后再按下单片机的电源开关,让单片机通电,这时开始程序到单片机的下载,如下图表示程序已经成功烧写到单片机了,你只需把已经烧写程序的单片机安装到爽爽棒上即可:
相关问答
程序是怎么 写入单片机 的?程序写入单片机的过程一般被叫做烧录,烧录的实际过程是:1.通过编译器编译生成单片机能够识别的执行程序2.通过上位机按照某种通讯协议,把二进制可执行文件...
单片机 可以烧录多少次?烧录时要注意些什么?能烧录多少次看的是存储器类型:一般掩膜存储器就是一次,比方义隆单片机就是。有些单片机为了自身的保护,采用了OTP(Onetimeprogram程序设了熔断,只能一次...
单片机 的读和写是什么意思啊,ROM只读呢?读是数据从存储器到单片机上的过程写是数据从单片机到存储器上的过程。rom只读的意思是这个存储器只能读取数据,不能向里面写入读是数据从存储器到单片机上的...
C++语言可以 写入单片机 吗?你需要用单片机c写程序,也就是在如KEIL软件环境下进行编写,然后编译生成可烧录文件。建议你去你们学校图书馆借本单片机c语言方面的书籍看看,都有介绍的。若...
如何向 单片机 写程序?要向单片机写程序,首先需要选择合适的编程语言,如C、C++或汇编语言,并学习相应的语法和逻辑。然后,根据硬件平台的要求,编写程序代码,包括初始化设置、输...
单片机 怎么烧写程序?首先,将烧写线把开发板与电脑连接,安装驱动之后,烧写程序能自动识别设备。首先,在界面左上角有个单片机型号,一般选择STC89C51系列下的STC89C52RC/LE52RC...
单片机 程序写不进是什么情况?这种问题很常见,建议你尝试以下方法解决1.单击下载按钮,让软件向单片机写入程序,如果出现这个提示无法下载,请在下载状态下关闭单片机电源再重新打开,看烧写...
怎样把 单片机 里的程序读取出来和把程序写进 单片机 ?要将程序读取或写入单片机,你需要一些必要的工具和步骤。以下是一个简单的指南,帮助你了解如何执行这些操作:1.准备必要的设备-单片机开发板-U...-确保...
赛元 单片机 怎么 写入 ?赛元单片机是一种常见的微控制器,它的写入操作可以通过多种方式实现。根据提供的信息,以下是一种常见的方法:使用编程器:使用编程器将程序下载到单片机中。...
刚学 单片机 ,写程序时前边那些头文件肿么写,可以不写吗,有什...4条回答:【推荐答案】不可以不写,这些文件是你把你需要应用到的函数声明所在的头文件文件包含到你的代码中,要不然编译不成功的。依据就是你用到了哪些函数。