当前位置:首页 > 单片机 > 单片机
[导读]随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。AT89S系列单片机提供的ISP在线编

随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。AT89S系列单片机提供的ISP在线编程技术彻底地改变了传统的开发模式,开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率,因此它是对市场定型产品进行现场升级和维护的经济、有效的方式,极大地促进了PLD产品的发展。

1  PC机并行口

1.1  并行口硬件接口简介

  标准并行口有25个引脚,其中数据端口引脚为2~9,状态端口引脚为15、10~13,控制端口引脚1、14、16、17用于连接器件,其他引脚18~25是接地引脚GND。25针并行口如图1所示。


图1  25针并行口

  并行口工作在SPP模式下,PC机是通过对3个8位端口寄存器的读或写来实现对它们的控制。端口寄存器分别是:

  ◆ 数据端口(地址0x378)为D7~D0,对应引脚P9~P2;
  ◆ 状态端口(地址0x379)为S7~S3,对应引脚P11、P10、P12、P13、P15;
  ◆ 控制端口(地址0x37A)为C3~C0,对应引脚P17、P16、P14、P1。

  注意: S7、C0、C1、C3信号的逻辑状态在连接器处是与相应寄存器位相反的。对这些位进行写操作时,写入的值应该与连接器处设置的值相反;同样,进行读操作时,读取的值也与连接器处设置的值相反。

1.2  并行口编程简介

  Windows对系统底层操作采取了屏蔽的策略,但是在硬件或系统软件开发中只要涉及系统底层的操作,就不得不深入到Windows的内核去编写属于系统级的设备驱动程序。对并行口的读/写操作就是如此。为了绕过 Windows安全保护机制,需要允许32位 Windows程序直接对 I/O口进行操作。这里使用由 Yariv Kaplan编写的 WinIo库中的几个函数来实现对I/O口的读/写。

(1)  初始化与终止
  对端口读/写前后要分别初始化和终止。
  InitializeWinIo();
  ShutdownWinIo();

(2)  安装与卸载
  如果操作系统是Windows98或Windows95,则需要调用驱动函数。
  InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  RemoveWinIoDriver();

(3)  读/写I/O口
  GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
  SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);

  GetPortVal函数从指定端口读取一个BYTE/WORD/DWORD类型的值;SetPortVal函数向指定端口写入一个BYTE/WORD/DWORD类型的值;wPortAddr是指定一个端口地址值;pdwPortVal为指向一双字节型变量的指针,该变量存储从wPortAddr端口读取的值;dwPortVal为一双字节型变量写到wPortAddr端口中;bSize指定读取字节数,值可以为1、2或4。

2  AT89S5X系列单片机

2.1  AT89S51简介

  AT89S51是一个低功耗、高性能CMOS 8位单片机,片内含4 KB ISP(InSystem Programming)的可反复擦写1 000次的Flash只读程序存储器。该器件采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。功能强大的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.2  AT89S51串行编程时序及指令

2.2.1  串行编程模式下的时序分析

2.2.2  串行编程指令

  串行编程使用4字节协议,指令如表1所列。

表1  串行编程指令


 

3  并行口与AT89S5X单片机的硬件设计

  通过对并行口和编程时序的分析,我们制作了AT89S5X单片机的ISP下载线。下面对并行口与单片机的连线作一简单介绍: 并行口P2引脚连接单片机的P1.5引脚(MOSI);并行口P10引脚连接单片机的P1.6引脚(MISO);并行口P1引脚连接单片机的P1.7引脚(SCK);并行口P17引脚连接单片机的RST引脚,如图2所示。


图2  AT89S52下载线电路图

4  ISP下载线的软件设计在

  硬件设计的基础上,通过对ISP时序和串行编程指令的分析,采用Visual C++6.0编写了下载线程序。其主要关键编程函数略——编者注。

结语

  以下是作者在调试中获取的一些参数,希望对大家有所帮助。

  参考资料:

  晶体振荡器的频率为33 MHz(MAX),所以周期T=1/F=1/33 MHz=30 ns(MIN);SCK正脉冲宽度为8×30 ns=240 ns(MIN);SCK负脉冲宽度为8×30 ns=240 ns(MIN);MOSI建立到SCK变高时间为30 ns(MIN);SCK变高后MOSI保持时间为2×30 ns(MIN);SCK变低到MISO有效时间为10 ns(MIN)~32 ns(MAX)(一般取16 ns);芯片檫除指令周期为500 ms;串行字节写周期为64×30 ns+400 ns。

  实验数据:

  晶体震荡器的频率为33 MHz(MAX),所以周期T=1/F=1/33 MHz=30 ns(MIN);芯片擦除指令周期为200 ms;SCK变高后MOSI保持时间为1 ms(MIN)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭