8051单片机开发工具DIY

发布者:数字行者最新更新时间:2013-01-24 来源: 21IC 关键字:单片机  开发工具 手机看文章 扫描二维码
随时随地手机看文章

引 言:

目前介绍单片机应用的文章很多,但介绍单片机开发工具制作的文章却较少。由于单片机是一门实践性很强的课程,如果采用传统的开发模式,则要购买价格昂贵的仿真器、编程器等开发工具来作实验。其实由于芯片功能的日益完善,我们可以利用芯片的在系统编程(ISP)功能制作出实用而低价的开发工具。本文旨在帮助DIY爱好者开发制作出适合自己的开发工具。

1 当前常用开发模式

目前,基本上有两种开发模式可供选择:用仿真器、用编程器。

① 用仿真器。优点:方便,可以设置断点,可以观察存储器及寄存器的内容。缺点:价格昂贵,不同类型的单片机要购买不同的仿真器;仿真器终究不是单片机,有时代码在仿真器上能通过,但在单片机中不能正常工作,反而增加了调试的难度。

② 用编程器。优点:价格相对便宜,通常一款编程器可编程多种器件。缺点:操作相当不便,每次要将芯片在目标板与编程器之间转移,并且还要在编译操作界面与编程器操作界面之间切换,大部分时间在做简单的重复工作。

2 新的开发模式介绍及芯片选择

本文介绍的开发工具采用一种新的开发模式(类似于编程器开发模式)。由于利用了芯片的在系统编程功能,因此不需要移动芯片。在软件设计时设计成:一旦代码文件被重新编过,即自动下载到芯片,并自动复位运行,是真正的“所编即所得”。

目前很多单片机都支持在系统编程。8051系列单片机支持在系统编程的也很多,但大多数是支持通过PC机的串口对单片机进行编程。这样有四个不方便的地方:一是项目本身与PC机串行通信不方便;二是要增加1片MAX232电平转换芯片;三是有的芯片要按特定的步骤进入下载模式,编程过程需要手工干预;四是有的芯片需要固件(定制的程序)的支持,如果不小心损坏了固件,则芯片的在系统编程功能也没有了。

经过比较,Atmel公司生产的AT89S8252是一种比较理想的芯片,适合制作开发工具。此芯片有如下特点:

与8051兼容;

内含8KB可擦写1000次的程序存储器,2KB可擦写超过100 000次的数据存储器及256字节8位宽内部RAM;

可通过SPI接口在系统串行编程,与8051兼容

串行编程时有自动擦写周期,在调试大程序时可以分段下载,节约时间;

低电压下载,无需12V编程电压。

3 AT89S8252串行编程

(1)AT89S8252串行编程模式

当芯片的RST引脚置高电平时,所有程序和数据存储器可以通过SPI总线接口[SCK,MOSI(input),MISO(output)]编程。RST变高以后,在编程或擦除操作之前必须首先发送一条编程允许命令。在串行编程模式下,芯片会在字节编程之前自动插入一个擦除周期。因此,除非芯片的代码保护位被编程,编程之前不需要执行全片擦除命令。SPI接口之SCK时钟频率须低于晶振频率的1/40。

(2)AT89S8252串行编程步骤

① 在XTAL1与XTAL2之间连接一个3~24MHz的晶振;在VCC与GND之前加上电源电压,将RST置高,等待10ms。

② 发送串行编程允许命令。

③ 发送写/读/擦除等命令及数据,串行数据高位在前,低位在后,数据在时钟的上升沿锁定。

④ 如果上一步是写命令,至少等待2.5ms。

⑤ 需要时重复③、④两步。

⑥ 将RST置低,芯片开始运行。

(3)AT89S8252串行编程命令

AT89S8252串行编程命令如表1所列。

4)AT89S8252串行编程时序图

AT89S8252串行编程时序如图1所示。

[page]

4 硬件设计

① 通过计算机并口与单片机SPI口连接;

② 为了保护计算机并口,需要增加1片74HC244作为隔离。

实用的原理图如图2所示。(已经过实践检验,可放心使用。)

5 用VB编程进行并口控制

打印端口的基地址一般为0x278、0x378或0x3BC,可以从控制面板中查到。为了方便读者,表2列出了常用打印端口引脚及寄存器位元的说明。

在Windows环境下最简单易学的语言恐怕非VB莫属,所以我们的开发工具也选用VB作为编程语言。但由于Windows的保护,VB无法直接读写打印端口,因此我们需要另外的程序模块来实现打印端口的直接读写。在Internet网上可以找到许多此类模块,并且相当多的模块可以免费使用。经过试用,笔者推荐使用Winio v2.0。该模块支持Win9X/NT/2000/XP(http://www.internals.com Yariv Kaplan ),并且带有详细的帮助、例子程序及源码。使用时,将Winio.sys、Winio.dll、Winio.vxd及Winio.bas四个文件拷贝到工作目录下,在VB中直接添加Winio.bas模块即可。本例中用到的函数有四个,分别说明如下。 ① Initialize():允许端口控制函数。在使用端口输入输出函数之前调用一次,成功返回“1”,失败返回“0”。

② Shutdown():关闭端口控制函数。在退出程序时执行一次,成功返回“1”,失败返回“0”。

③ GetPortVal(ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean:读取端口函数,PortAddr 为端口地址, Portval为端口值,bSize为要读取的字节数。读取成功时返回“1”,失败时返回“0”。

④ SetPortVal(ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean:写端口函数。PortAddr 为端口地址, Portval为要写的值,bSize为要写入的字节数。写入成功返回“1”,失败返回“0”。

四个函数在Winio.bas模块中的声明如下:

Declare Function InitializeWinIo Lib 揥inIo.dll” () As Boolean

Declare Function ShutdownWinIo Lib 揥inIo.dll” () As Boolean

Declare Function GetPortVal Lib 揥inIo.dll” (ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean

Declare Function SetPortVal Lib 揥inIo.dll” (ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean

6 Intel HEX 格式文件

由于一般编译软件产生的用于写入芯片的文件都是Intel HEX格式的文件。Intel HEX文件属于文本文件,可以用记事本查看。一个Intel HEX文件的一行称为一个记录,每个记录都是由十六进制字符组成的,两个字符表示一个字节的值。Intel HEX文件通常由若干条记录组成,每个记录都具有如下的形式:

:LLAAAATTDD...DDCC

“:”——记录的起始标志;

LL——记录长度,表示该记录中的数据字节数;

AAAA——数据装入的首地址(16位);

TT——记录类型,00表示数据记录,01表示文件结束;(注意:有的编译软件会产生大于01的记录类型,本应用中对大于01记录类型的记录忽略掉即可。)

DD——数据值(字节);

CC——校验和。(将其本身与记录中除起始标志外的所有字节相加应为0,不为0则有错。)

VB编程详细说明见本刊网络补充版(http://www.dpj.com.cn)。(由于各子程序的流程都较简单,所以直接给出源码,而未画出流程图。程序采用由底至顶的设计方法。)

结 语

虽然上述程序能实现各种基本的功能,但并不完善,并未考虑各种异常情况,读者可根据实际情况进行完善。编程功力较差的朋友可直接到笔者的网站(http: //www.mcudiy.com)下载相对较完善的应用程序 。如果充分理解了上述程序,那么DIY一个AVR或PIC单片机的开发工具也非难事。在笔者的网站也有制作完成的“MCS51/AVR/PIC三合一下载器资料”供爱好者下载。

由于AT89S8252的价格还是较贵,所以现在市场上较难买,不过Atmel公司推出的替代AT89C51/52的AT89S51/52也有在系统编程功能,且价格便宜。其在系统编程的实现方法与AT89S8252类似,对本例部分程序稍作修改即可支持该器件。笔者制作的“MCS51/AVR/PIC三合一下载器”增加了对AT89S51/52的支持。

关键字:单片机  开发工具 引用地址:8051单片机开发工具DIY

上一篇:51单片机时序及延时分析
下一篇:基于单总线数字温度传感器DS18B20的测温系统设计

推荐阅读最新更新时间:2024-03-16 13:17

单片机智能开发平台解决方案
一、单片机应用开发平台的意义   单片机是最初的大型计算机的一个分支,主要用于:工业自动化控制、智能仪器、仪表、航海、航天、智能家电等领域。单片机作为一种嵌入式产品应用的主流控制芯片,应用十分广泛,而支持它的开发手段国内还比较落后,目前我国单片机嵌入式产品的开发行业中,仍实行随意性个体的自然经济的落后方式,即便技术力量较强的公司,也仍在实行“板凳模式”的产品开发方法,大量低水平的重复劳动形成了顽症。采用平台开发模式实行“阶梯模式”的开发方式从根本上解决了“板凳模式”的弊端。 二、单片机开发平台简介   单片机应用智能开发平台是为单片机的应用开发提供的一套解决方案,包括有中文开发平台操作系统、基础平台、扩展功能函数库、仿真调试等
[单片机]
基于18B20和单片机89C52的测温程序
#include reg51.h #include intrins.h #include KEY.h #include IIC.h #define uint unsigned int #define uchar unsigned char #define IICADDR 0x20 //存储地址 #define LEDIO P0 //P0扫描段码,P2扫描位选信号 #define LEDCHIP P2 sbit DQ=P3^2; //18B20接口 sbit BEEP=P3^7; // 蜂鸣器接口 uchar i=0,mod=0; //扫描变量 uchar key1,key2=20; //按
[单片机]
单片机控制的动态数据缓存器的控制电路
  由于单片机具有功能强,使用灵活,体积小,性价比高等特点,近年来在测控系统中得到广泛应用。而在许多场合,单片机作为下位机,担负着控制数据测量、采集和向上位机传送的任务,也即起着收集、缓冲和存储数据的作用。动态存储器DRAM具有容量大,价格低的特点,适合于数据量比较大的单片机应用系统;但其不足之处在于,必须在规定的时间范围内进行定时刷新。本节介绍一种单片机控制的动态数据缓存器,通过合理设计软硬件,即可实现对DRAM的控制,特别适合性价比高的单片机系统。      控制电路      为了便于说明,给出单片机系统的部分组成电路,如图1所示。单片机采用51系列的8031,外扩16 KB的EPROM,动态存储器采用1 MB的微机内存,J
[单片机]
<font color='red'>单片机</font>控制的动态数据缓存器的控制电路
中微CMS80F231x移动空调方案性能MCU
参数与应用领域: CMS80F231x系列MCU,增强型1T 8051 Flash MCU,最快支持48MHz外设运行,24MHz内核运行,被广泛应用于物联网智能家居、新能源、医疗电子、小家电、电机、工商业等领域。CMS80F231x是增强型1T 8051 Flash MCU,最快支持48MHz外设运行,24MHz内核运行,工作电压2.1V-5.5V,GPIO最多可达22个,内置2路模拟比较器,2路运算放大器,1路可编程增益放大器,提供6通道增强型PWM输出 ,最多达22路12位ADC,2个UART, 1个SPI, 1个I2C,可任意映射I/O口。工业级标准设计,可工作在-40℃至105℃,并提供SOP16,SOP20及SOP24
[单片机]
基于C8051F020的SD卡主控制器设计
1 引言   飞机飞行状况监测及数据采集仪.用于采集飞机试飞时的各种飞行数据,要求大量的存储容量。在飞机回到地面后,需要方便地将采集数据传输到通用计算机上,以便作进一步的数据处理和分析。为了把采集的数据从采集系统传输到通用计算机内.在过去,是将数据存储部分设计为可分离的一个存储板,数据存储板上设计有CPU和串口。将数据存储板从数据采集系统上取下来,通过串口与通用计算机通信,将数据传输到通用计算机内。可以看出。这种方法有几个缺点:第一,操作麻烦,每次都要将存储板从采集系统取下来,然后再装上;第二,经常插拔存储板降低整个采集系统的可靠性:第三,读取数据的通用计算机需要安装专用程序。此程序是专门开发用于通用计算机与数据存储板之间的串口通信
[单片机]
基于C<font color='red'>8051</font>F020的SD卡主控制器设计
基于单片机的新型步进电机运动控制器
1 引言   数控技术是一种采用计算机对机械加工过程中各种控制信息进行数字化运算处理,并通过高性能的驱动单元对机械执行构件进行自动化控制的高新技术。现代机械加工业逐步向柔性化、集成化、智能化方向发展,因此新一代数控技术就必需强调具有开放式、智能化、网络化的特征 。本文采用新型微处理器、高性能集成电路,研究开发智能步进电机控制卡。 2 系统总体结构设计   通过对步进电机控制器关键技术进行分析、研究和比较,并综合国内外运动控制器产品智能化、集成化、开放化的发展趋势,我们提出的步进电机运动控制器总体结构如图1所示。 图1 系统总体结构 3 系统硬件电路设计   3.1 脉冲分频电路设计   本系统的主要控制对象为步
[单片机]
ZQ9712单片机汇编控制源程序
;************IC:ZQ9712************** ;编缉: 版本:1.0 时间:2005.9.30 ;功能: 七种模式 1.七色段填充 ; 2.七色单填充 ; 3.七色整体变化 ;****10米**** 4.七色段慢追 ; 5.七色段快追 ; 6.七色流水 ; 7.七色浪涌 ;*********一般寄存器************* p5==0x05 p6==0x06 iocb==0x0c iocd==0x0d pc==0x02 status==0x03 ;*********位定义********** c==0 z==2 data==0 LI==2 clk==1 ;*********自定义*********
[单片机]
常用单片机易混指令区别分析
分析下面各组指令,区分它们的不同之处。 MOV A,30H 与 MOV A,#30H 前者表示:(30H)→A 后者表示:30H→A MOV A,R0 与 MOV A,@R0 前者表示:(R0)→A 后者表示:((R0))→A MOV A,@R1 与 MOVX A,@R1 前者表示:在片内数据存储器((R1))→A 后者表示:在片外数据存储器((R1))→A MOVX A,@R0 与 MOVX A,@DPTR 前者R0表示8位地址 后者DPTR表示16位地址 MOVX A,@DPTR 与 MOVC A,@A+DPTR 前者表示:((DPTR))→A 后者表示:((DPTR)+(A))→A
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved