admin 管理员组文章数量: 1086019
2024年4月30日发(作者:xquery 子句)
中国观代敷甫装备 2008年第l2期(总第70期)
单片机串行在线编程器的设计与实现木
毋茂盛
肇庆学院 广东肇庆 526061
摘要:本文主要研究了对AT 8 9 S 5 1单片机进行串行在线编程技术。首先介绍了编程系统的硬件结构,然
后讨论了Int el Hex文件格式和系统软件的编制方法,并设计了通过USB口对AT8 9s 51进行在线编程的硬
件电路;最后给出了对单片机进行读、写一个字节数据的子程序。
关键词:单片机在线编程通用串行总线
单片机因具有体积小、成本低、功能强等优点在工
业控制、家用电器、电子玩具、仪器仪表以及汽车电子
等领域得到了广泛应用,我国的各类技校、大专、本科
甚至研究生教育中有许多专业如电子、计算机、自动
化、机电一体化、通信、仪器仪表等都开设了《单片机
原理与开发》课程,这是一门实用性很强的课程,学好
的关键在于动手实验。虽然MCS一5 1系列单片机是一种
基于总线结构的单片机,且功能较弱,但凶为网上有许
多免费的编译程序,故在国内单片机教学中有很高的普
及率。Atme1公司的Flash技术领先全球,它把F1ash
大家介绍一种对AT89S51单片机进行串行编程的系统设
计与制作方法。
一
、
系统设计
1.系统的结构与功能
编程系统主要由计算机和对AT89S51单片机进行串
行编程的编程单元两部分组成,结构如图1所示:
技术 ̄HMCS一5l单片机内核相结合,设计出了与MCS一51
相兼容的AT 8 9系列单片机,如AT 8 9 C 5 1/5 2/5 5、
AT89S51/52等。与MCS一51相比,AT89S51系列单片机
增加了4KB可串行在线编程(ISP)Flash程序存储器和
看门狗电路【】],使用更方便,功能更强大,成为国内最
为畅销的单片机之一,也是教学中使用最多的单片机。
目前,大学生的就业压力很大,许多学生为了提高自己
的动手能力,非常渴望在校学习期间或毕业设计时能够
动手开发具有一定功能的单片机应用系统,购买一台编
程器对于在校大学生是一笔不小的开支, 此,本文给
算
机
¨
I SPI接}_=】
∞
疑
图1 A T 8 9 s 5 1单片机串行编程系统结构
为了实现对AT89S51单片机进行串行编程,需要完
成三项工作,①编写在计算机上运行的系统软件:②设
计编程单元硬件电路;③编写在编程单元上运行的对
AT89S5 1单片机进行串行编程的程序。
2.系统软件编写
系统软件的功能主要是向编程单元发送各种命令
(如芯片擦除、查空、编程等)、待编程的机器码以及
显示编程过程中的各种相关信息等,可以用VC、VB以及
收稿日期:2 00 8—09—1 8
Delphi等编程语言中任何一个来编写。由于vc++具有
界面友好,功能强大等特点,一直深受业内人士的青
睐,故在计算机上运行的系统软件选用VC++编写。为了
降低编程难度,选择串行口发送待编程的代码数据。这
样,系统软件主要涉及对代码文件和计算机串行口进行
操作,用VC++设计系统软件时,可以用相同的API函数
作者简介:毋茂盛,博士,教授。
・本文系河南省教育厅科技攻关计划项目,项目名
称:大学生科技创新能力培养训练系统开发。项
目编号:2 0 0 8A 5 2 0 01 4。
58
~e@ 膨
2008年第l2期(总第70期)
实现对代码文件和计算机串行口进行打开、读、写和关
闭等操作,如CreateFile()、ReadFile()、
WriteFile 0以及CloseHandle 0函数等分别实现
打开、读、写以及关闭文件或串口;对文件和串口的操
作过程也相同,都是先打开,然后进行读、写操作,最
后关闭;对文件和串口操作的API函数还有许多,如移
动文件指针、删除文件、设置串口、清除串口输入输出
缓冲区等 ,这里不再详述。下面主要介绍待编程的代
中国现代毂育装备
4332 3932 3734 3038 3131”,这是代码数据,每两
个字节对应一个字节的机器码,分别为:75 8l 60 78
OA D2 92 74 08 1l 25 C2 92 74 08 l1。
第41、42字节“323l”为校验和,其值为十六进
制数“21H”;
最后两个字节(ODOA)为回车和换行,这两个字节
在WORD不显示。
注意:上面数据之间的空格,是为了让读者更容易
码文件及其格式。
AT89S51单片机代码文件采用Inte1 HEX格式,它
是文本文件,由若干行组成,每一行称为一个记录,每
个记录都以“:”(3A)开始,以回车、换行(ODOA)结
束,中间由十六进制字符组成,两个字符表示一个字节
代码数据。记录形式如下:
“
:LLAAAATTDD…DDCC’’
“
:
” 记录的起始标志;
“LL” 记录长度,表示该记录中的数据字节数;
“AAAA”数据装入的首地址;
“TT” 记录类型,o0表示数据记录,0l表示文
件结束;
“DD” 代码数据,每两个表示一个字节;
“CC”校验和。即将其本身与记录中除起始标志
外的所有字节相加和应为0。
在CC的后面是回车、换行(ODOA)。
例如,某汇编语言程序对应的Int el HEX文件用
WORD打开时显示如下所示:
:10000O0O758l6078OAD2927408l125C29274081121
:100010OO25D8F27805D292743C1125C292743C1115
:1OO02OO025D8F280DEF53O7F647E7DDEFEDFFAD5F6
:0300300030F52286
:00000001FF
由于Intel HEX文件是采用文本文件格式,第一行
内容在文件中的实际存储为:
“3A 3130 3030 3030 3030 3735 383l 3630
3738 3041 4432 3932 3734 3038 3131 3235 4332
3932 3734 3038"3131 3231 ODOA”,其中:
第0字节“3A”为记录起始标志,显示为“:”
第1、2字节“3130”为记录长度,显示为IOH,即
该记录含有1 6个字节的代码数据;
第3、4、5、6字节“30303030”为记录装入首地
址,即“O000H”;
第7、8字节“3030”为记录类型,显示为“OOH”
表示该记录为数据记录;
第9—40字节共32个字节,分别为“3 735 383 1
3630 3738 3041 4432 3932 3734 3038 3131 3235
一 @2 肥
看清楚才加入的,实际文件中是没有空格的。
了解了Intel HEX文件的格式后,就可以用VC++提
供的API函数,首先打开Inte1 HEX格式的代码文件,
读出文件中的数据,然后转换成十六进制数,通过串行
口送给编程单元。
3。编程单元硬件电路设计
目前,对AT89S5 l单片机的串行编程有两种方法:
一
种是基于计算机并口实现的,另一种是通过计算机串
行口的RTS,CTS,DTE,DCE信号实现。这两种方法都
需要设计专门的电源电路。由于USB具有速度快、支持
热插拔、易于扩展以及自带电源等优点口],目前已成为
计算机中最流行的外设接口,许多原来采用并行接口或
串行接口的外设现在都采用了USB接口,因此,本文设
计了基于uSB接口的串行编程单元,硬件电路如图2所
示。编程单元中主要使用了两个芯片,即CP 2 1 0 2和
AT89C2051单片机。CP2l02是美国Si l icon Labora—
tories公司设计的单片USB—UART转换芯片,内部集成
了USB发送接收器、内部时钟以及1024字节的EEPROM
等,不需要外接电阻或时钟,支持USB2.0规范,采用
28针QFN封闭方式,尺寸为5x5mm…。由它实现USB到
UART的转换非常方便,且系统电源可直接由USB接口获
取。CP21O2的驱动程序可直接从SiliCon Laborat0一
ries公司网站下载,安装成功后,对CP2102连接的USB
口的操作就变成了对一个虚拟串口的操作,这样省去了
编写USB接口驱动程序的麻烦。AT89C2051内部含有2K
的F1ash程序存储器、15条可编程的I/0口线以及UART
等资源。它通过CP2102接收来自PC机的代码或命令,
通过SPI接口实现对AT89S51单片机进行串行编程。
P3.5 AT89('2o5l
—
PP.3 J?'三|=
I)_
D十
GND
v
C!P2lO2
冀c 9 E E E
图2对AT 8 9 s 51单片机进行串行鳊程的硬件电路
59
中国观代敷有装备
4.编程单元的软件编程
对AT89S5 1单片机进行串行编程共有9条命令,分
别用来实现编程允许、芯片擦除、读/写数据(字节或
RLC
2008年第1 2期(总第7O期)
A
DJr ̄Z
MOV
CLR
REX
R3,INB
MEM1,A
SCK
页模式两种)、读加密位以及读签名字节内容等功能
l5l
。
AT89C2051单片机通过P1.4、P1.5、P1.6模拟SPI
接口信号,完成对AT89S51单片机的串行编程和校验。
编程和校验波形如图3所示:
s呸 厂-I-I ]
MO
< ) …二×
竺 二二>< ) 二…二×
图3 A T 8 9 s 5 1单片机串行编程与校验波形
从图3可以看出,对AT 8 9 S 5 1单片机编程或校验
时,字节数据总是高位在前,低位在后。写数据(编
程)时,在SCK为低电平期间,将数据送NMosI;而读
数据(校验)是在SCK为高电平时进行。发送和读取一
个字节数据的子程序如下:
SCK BIT P1.4 :时钟
MOSI BIT P1.5 :数据输出(编程)
M1SO BIT P1.6 :数据输入(校验)
MEM1 EOU 30H :存放待读/写的数据
;
发送一个字节数据的子程序如下:
OUTBYTE:
MOV A,MEM1
MOV R3,#8
OUTB: CLR SCK ・
NOP
RLC A
MOV MOSI,C
NOP
SETB SCK
NOP
DJNZ R3,O1JTB
LCALL DLTSOOuS :延时500 1.t S
CLR SCK
RET
;
读取一个字节数据的子程序为:
INBYTE:
M0V R3. #8
INB: CLR SCK
NOP
SETB SCK
NOP
MOV C,MISO
6o
二、结束语
本文主要讨论了对AT89S51单片机进行串行编程的
技术,有非常重要的应用价值。文中提到的CP2 l O2芯
片采用QFN封装,它的引脚在芯片的底部,不能使用普
通的电烙铁进行焊接,焊接后也无法用万用表测量焊接
效果,所以,焊接时一定要十分小心。文中设计的对
AT89S51单片机串行编程系统在多个高校的单片机实验
室进行了实际应用,效果良好。
本文设计的对AT89S51单片机进行串行编程系统,
采用USB接口,省去了电源电路,使用方便。通过串行
方法实现对单片机的编程,为单片机应用系统的在线编
程奠定了基础。对于用串行方法实现对单片机编程的用
户来讲,用本文所述的方法为产品升级软件时,不再需
要打开机箱,甚至在异地通过internet和GPRS等就可
以完成;对于用AT89S5 1单片机开发各种应用系统的大
学生、研究生以及单片机爱好者,可以不用再去购买编
程器就能完成系统开发。
参考文献
【1]A t m e l C o r D 0 r a t i 0 n.A t me l 8一b i t
MiCrocont roller wi th 2K Bytes Fla sh AT89C2051
【EB/OL】.http://www.atme1.com/dyn/re sou rce s/
pr0d—document S/doc 0 368.pdf,2 005,6
【2]龙勇.基于Vc 6的分布式仿真系统多线程串
行通信的实现【J].计算机工程与应用,2 O 0 6,6
[3]张安生.PDI uSBD1 2在USB接口设计中的应用
探析[J].中国现代教育装备,2 0 O 8,2
【4]Si 1 icon Laboratories INC.SII ̄GLE—CHIP
USB TO IJART BRIDGE CP21 02[EB/OL】.http://www.
SilabS.com/pub1iC/document S/tpub—doc/dSbeet/
Mi C rocont ro1 l e r s/Inte rface/en/cp21 02.pdf,
2 0 0 5,9
【5]A t me l C 0 r p 0 r a t i 0 n.A t me l 8一b i t
Microcont rol ler wi th 4K Bytes In—Sy S tem Pro-
grammab1e Fla sh AT8 9S 51【F,B/OL】.httD://www.
atme\.com l dYn|t e s our ce s| rod—d0Ctimen t S|
doc 248 7.pdf,2O05,3
琶
V
版权声明:本文标题:单片机串行在线编程器的设计与实功 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1714489498a682463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论