l 引 言
通常进行单片机的实验或开发时,传统的并行编程方法中,编程器是必不可少的。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。在开发过程中,程序每改动一次就要拔下电路板上的芯片,编程后再插上。随着计算机技术的发展,许多公司推出了带有片内FLASH存储器的MCU,FLASH存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。在线编程目前有两种实现方法:在线系统编程(ISP)和在线应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的FLASH存储器进行编程,例如AT-MEL公司的单片机AT89S52就提供了一个SPI串行接口对内部程序存储器编程(ISP)。
在线编程(ISP)允许单片机内部运行的程序去改写FLASH存储器的内容,可以在运行过程中修改某些运行参数,已经编程的器件也可以用ISP方式擦除或再编程。单片机在ISP模式下上电时,可以进行ISP操作,在ISP模式下,单片机通过串行端口与外部主机(如PC机或终端)通信,从主机接收命令和数据,用于擦除和再编程代码存储区。ISP的实现一般只需要很少的外部电路辅助实现,使用ISP技术,连接一根下载线即可对芯片编程,不再需要编程器就可进行单片机的实验和开发,单片机芯片可以直接焊接在电路板上,调试结束即成成品,甚至可以远程在线升级或改变单片机中的程序。
2 AT89S52 ISP原理
AT89S52具有ISP功能。在RESET引脚处于高电平时,利用P1.5(MOSI),P1.6(MISO),P1.7(SCK)三引脚的数据设置或传送达到程序下载的目的,P1.5(MOSI)引脚作为串行指令的输入端口,P1.6(MISO)引脚作为串行数据的输出端口,P1.7(SCK)引脚作为串行移位脉冲的输入端口。
AT89S系列中的FLASH地址编址是以字节为单位的,在使用过程中应注意高低字节的区别,上位机和目标板通信时,一般都是4字节的指令,第1字节为操作码,第2、第3字节一般为地址码,第4字节为数据。
根据串行下载波形图和串行下载编程指令集即可完成有关在线下载的操作。
3 在线编程控制系统的设计
3.1 系统结构
AT89S52负责人机界面的信息交互,主要由显示部分,键盘部分和数据通路组成。
显示部分由AT89S52的P1,P2口组成。P2是八位的显示数据通路,P1.1~P1.4是4个LED的使能线,达到动态显示4位数据的效果。
键盘部分由INT0,INT1,CT0,CT1组成。利用中断的优先级嵌套实现命令与数据的输入,减少了键盘的体积。硬件分配如下:
数据通路部分主要是PSP的控制。PSP是PIC16FX系列微处理器专门针对8位机的通用数据端口,由CS,WR,RD,8位数据线组成,可供AT89S52直接控制。
PIC收到PSP的数据后会产生一个中断响应,由软件设计者决定该中断如何处理。因此,可以设定0XC0~0XFF为命令字节,供控制使用,0X00~0X09为功能号,组合起来就可以实现各种控制的命令。
PIC16FX具有4路A/D通道,精度为10 b,转换时间为56μs。内置硬件看门狗电路,提高了可靠性,节省了软件开支。利用其4路中断功能实现系统复位及检修测试功能。PGM接口(在线编程接口)可采用ICD2适配器进行在线编程和调试。系统结构如图1所示。
3.2 系统功能
(1) AT89S52频率4 MHz,具有在线编程,无需编程器直接烧写的功能,用AT89S52[INT0],[INT1],[CT0],[CT1]四个引脚单独引出,方便作为键盘接口。
(2) AT89S52 P1.1~P1.4分别作为LED1~4的使能线,高电平有效,P2口作为LED1~4的八位显示数据口。
(3) AT89S52串口与16F877A的串口可直接进行串口通讯。
(4) AT89S52 P0口及[ALE十P1.0],[WR],[RD]作为8位并行端口与16F877A通讯。
(5) PIC16F877A:频率20 MHz:
① PA-AN[0]-板载A/D通道:VREF+/-可调
AN[1],[5]一外接A/D通道,AN[2-3]-VREF+/-可调,AN[4]-T0CKI-WDT监控。
② PB-PB0-外接INT中断信号,低电平/下降沿有效,PB1,2,4,5作为INPUT1234,低电平/下降沿有效。
3.3 电路原理图
AT89S52部分电路原理如图2所示。
PIC16F877A部分电路原理如图3所示。
4 软件设计
4.1 AT89S52部分
首先执行系统初始化,初始时钟,全局变量,定时器,IO端口,键盘中断服务子程序。
然后进入MAINLOOP循环程序,等待接受键盘中断。如果键盘有输入动作,系统产生键盘中断,进入键盘中断服务子程序。
键盘中断服务子程序的主要功能是生成命令数据包,并根据用户指令处理该命令数据包。
命令数据包的格式如下:
若用户确认,则发送到PIC16F877A执行;
若用户取消,则退出键盘中断服务子程序,重新进入等待状态。系统运行流程图如图4所示。
4.2 PIC软件结构
PIC系统初始化后首先按默认参数启动PWM输出,在启动过程中不断地进行A/D转换,将采集到的数据根据PID策略调节PWM的占空比,从而达到调节电机转速的目的,同时不问断的监听PSP通道,若收到AT89S52的命令数据包,马上更新默认启动参数,让电机以新参数模式运行在新转速状态。
PIC16F877A执行软件运行流程图如图5所示。
5 结 语
利用AT89S52作为主处理器,PIC16F87X作为从处理器,使控制精度大为提高,可达10位PWM精度。AT89S52与PIC16F87X具有在线编程功能,功能齐全,片上资源丰富,可以满足系统升级要求。随着带有系统在线编程功能的单片机得到广泛应用与发展,ISP技术成了未来发展方向,基于在线编程技术的控制系统应用也将越来越广泛。