论文部分内容阅读
【摘 要】为了扩展单片机的存储资源及串口,采用基于单片机 (AT89S52-24PI)外部存储器的扩展及基于单片机控制的多通道串口扩展电路设计及具体实现方法。并以双端口存储器 IDT70V261S25PFI和串行通讯控制器TL16C754BPN及以C51系列单片机软件开发环境Keil μVision4为例实现单片机的外部电路控制。实验结果表明,该方案接口简单、使用方便、稳定可靠。
【关键词】单片机;存储器;串行通讯;Keil μVision4
【中图分类号】 TN45【文献标识码】 A【文章编号】1672-5158(2013)07-0055-02
Expansion of the circuit control based on MCU external
XU Jie-jing,YAO Bo,LI Bin-yu
(Shanxi Huanghe Group Ltd.,Xiˇ?an 710043,China)
【Abstract】In order to storage resources and serial port expansion chip,based on MCU (AT89S52-24PI) external memory expansion and based on multichannel serial MCU control circuit design and realization method of expansion.And with the dual port memory IDT70V261S25PFI and serial communication controller TL16C754BPN and C51 series single-chip microcomputer software development environment Keil μ Vision4 for example the realization of the external circuit of the single chip control.The experimental results show that, this scheme has simple interface, easy to use,stable and reliable。
【Key words】MCU;Memory;Serial communication; Keil μVision4
引言
目前,应用单片机的产品已经渗透到我们生活的各个领域,因此单片机的学习、开发与应用是社会发展的必然需求。但单片机的资源及接口又非常的有限,所以更加突出了单片机外部扩展技术的重要性。在需要大量数据缓冲的单片机应用系统中,需要在外部扩展数据存储器;单片机通常提供一个串行通道,当单片机系统需要更多的串行通讯通道时,需通过外部串行通讯控制器进行扩展。本文主要介绍基于单片机 (AT89S52-24PI)外部存储器的扩展及基于单片机控制的多通道串口扩展电路设计及控制方法的具体实现。
1 概述
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
AT89S52为ATMEL所生产的一种低功耗、高性能CMOS8位微控制器,具有8K的系统可编程Flash存储器。主要功能列举如下:拥有灵巧的8位CPU和系统可编程Flash;晶片内部具有时钟振荡器(传统最高工作频率可至12MHZ);内部程序存储器(ROM)为8KB;内部数据存储器(RAM)为256字节;32个可编程I/0口线;8个中断向量源;三个16位定时器/计数器;三级加密程序存储器;全双工UART串行通道。
2 硬件实现方法
2.1 总体设计思路
单片机的P0口作为数据线接到双端口存储器 IDT70V261S25PFI和串行通讯控制器TL16C754BPN的数据口,同时接到FPGA与单片机的ALE译出双端口低8位地址;P2口作为高8位地址线输出到双端口存储器IDT70V261S25PFI高8位地址口和串行通讯控制器TL16C754BPN的3位地址口;FPGA通过地址译码译出双端口存储器的片选和串行通讯控制器的4路片选信号;单片机的读写信号接到双端口存储器和串行通讯控制器的读写。原理框图如下图所示: AT89S52来组成外存储器扩展电路,除了本文介绍的外存储芯片外,其它的外存储芯片(EEPROM、RAM等)的使用方法类似。单片机系统扩展首先要构建系统总线,然后再往系统总线上“挂”存储芯片或I/O接口芯片。如下图所示:
通过地址空间分配和外部地址锁存器。常用的存储器地址分配有两种方法,线选法和译码法。线选法直接利用系统的高位地址线作为存储器芯片的片选信号;译码法是对高位地址进行译码,译码输出作为存储器芯片的片选信号。常用的外部地址锁存器芯片有74LS373和74LS573。外部地址锁存器应用如下图所示:
3 系统软件设计
本文采用的软件开发平台,旨在提高开发人员的生产力,实现更快,更有效的程序开发。μVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,支持多显示器窗口,增加了很多大众化的功能。
51单片机软件开发平台,keil C51μVision集成开发环境是德国Keil公司针对51系列单片机推出的基于32位windows环境,以51系列单片为开发目标,以高效率的C语言为基础的集成开发平台。Keil c51从最初的5. 20版本一直发展到最新的v7.20版本。主要包括:C51交叉编译器,A51宏汇编器,BL51连接定位器等工具和windows集成编译环境μVision,以及单片机软件仿真器Dscope51.是一个非常优秀的51单片机开发平台,对C高级语言的编译支持几乎达到了完美的程度,当然它也同时支持A51宏汇编。同时它内嵌的仿真调试软件可以让用户采用模拟仿真和实时在线仿真两种方式对目标系统进行开发。软件仿真时,除了可以模拟单片机的I/O口、定时器、中断外,甚至可以仿真单片机的串行通信。 软件设计上对于外部存储器的扩展没有什么特别的设置,只需对片选选中地址空间进行读写操作即可;对于多串口扩展需要对片选选中地址空间进行操作, 在工作软件初始化部分,应调用初始化通讯控制器函数对串行通讯控制器中的四路串行通讯口全部进行初始化。程序代码以下为例说明:
void COMMInitA(void) //软件初始化函数
{XBYTE[CSA+LCR]=0x80;/*置波特率分频系数设置允许位*/
/*设置波特率分频系数为1,外部晶振24MHz,波特率为1.5MBPS;
外部晶振22.1184MHz,波特率为1.3824MBPS*/
XBYTE[CSA+DLL]=0x01;
XBYTE[CSA+DLM]=0x00;
/*清除波特率分频设置允许位,设置串口数据格式设置为1位起始位、8位数据位、1位停止位、奇偶校验为奇校验*/
XBYTE[CSA+LCR]=0x1b; //奇校验
/*允许接收数据完成中断*/
XBYTE[CSA+IER]=0x05;
/*中断总允许*/
XBYTE[CSA+MCR]=0x00;
/*允许使用并清空FIFO,设置接收FIFO门限为60字节*/
XBYTE[CSA+FCR]=0x61; }
在发送数据时应首先形成发送数据并存储在发送数据缓冲区中,然后调用数据发送函数完成数据发送功能,程序代码以下为例说明:
void ZD_SEND(void)
{ tmp=0; for(j=2;j<6;j++) //计算校验和,从第2个字节开始{ tmp=tmp+zd_txd[j]; } tmp=tmp+zd_txd[0]; zd_txd[1]=tmp; for(j=0;j<6;j++)
{ XBYTE[CSA]=zd_txd[j];//发送6个字节} }
在数据接收完成中断服务程序中调用数据接收函数,根据数据接收状态将已接收到的数据存储在接收缓冲区中,程序代码以下为例说明:
void ZD_REC(void)
{ for(j=0;j<15;j++)//串口接收数据,15个字节
{ tmp=XBYTE[CSA+LSR]; if((tmp & 0x01)==0x01) buf_rxd[j]=XBYTE[CSA]; }
j=0; while(((XBYTE[CSA+LSR] & 0x01)==0x01) && (j<64))
{ j++; tmp=XBYTE[CSA]; } COMMInitA(); //接收结束
tmp=0; for(j=2;j<15;j++) //计算校验和,从第2个字节开始{ tmp=tmp+buf_rxd[j]; } tmp=tmp+buf_rxd[0];
if((buf_rxd[1]==tmp)&&(buf_rxd[0]==0x0f)) //校验正确,接收缓冲区数据转到工作数据区 { for(j=0;j<15;j++) { zd_rxd[j]=buf_rxd[j]; } bit_gzgzled=0x0; } else bit_gzgzled=0x1; }
为了保持数据通讯过程的持续稳定,同时避免不可预见冲突对数据通讯过程的干扰引起的工作异常,在必要的时刻需要对数据通讯控制器的FIFO 进行定期复位并清空数据区。
4 结束语
本文介绍了基于51系列单片机进行外围扩展电路的具体实现方法,既解决了单片机的存储器容量过小及串行通讯通道不足的限制,又提供了一种具有良好的通用性、规范性的单片机外围扩展存储器及多通道串行通讯的实施方案,为51系列单片机提供了更多更广的应用空间。
参考文献
[1] 张文德,等.单片机微机原理应用与实验[M].上海 复旦大学出版社,1996
[2] 江志红.51单片机技术与应用开发案例精选[M].清华大学出版社.2008.20-70
[3] 李学军.如何用MCS-51单片机扩展串口进行通讯[J].宁夏机械, 2003,(2)
[4] Keil公司的帮助文件
【关键词】单片机;存储器;串行通讯;Keil μVision4
【中图分类号】 TN45【文献标识码】 A【文章编号】1672-5158(2013)07-0055-02
Expansion of the circuit control based on MCU external
XU Jie-jing,YAO Bo,LI Bin-yu
(Shanxi Huanghe Group Ltd.,Xiˇ?an 710043,China)
【Abstract】In order to storage resources and serial port expansion chip,based on MCU (AT89S52-24PI) external memory expansion and based on multichannel serial MCU control circuit design and realization method of expansion.And with the dual port memory IDT70V261S25PFI and serial communication controller TL16C754BPN and C51 series single-chip microcomputer software development environment Keil μ Vision4 for example the realization of the external circuit of the single chip control.The experimental results show that, this scheme has simple interface, easy to use,stable and reliable。
【Key words】MCU;Memory;Serial communication; Keil μVision4
引言
目前,应用单片机的产品已经渗透到我们生活的各个领域,因此单片机的学习、开发与应用是社会发展的必然需求。但单片机的资源及接口又非常的有限,所以更加突出了单片机外部扩展技术的重要性。在需要大量数据缓冲的单片机应用系统中,需要在外部扩展数据存储器;单片机通常提供一个串行通道,当单片机系统需要更多的串行通讯通道时,需通过外部串行通讯控制器进行扩展。本文主要介绍基于单片机 (AT89S52-24PI)外部存储器的扩展及基于单片机控制的多通道串口扩展电路设计及控制方法的具体实现。
1 概述
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
AT89S52为ATMEL所生产的一种低功耗、高性能CMOS8位微控制器,具有8K的系统可编程Flash存储器。主要功能列举如下:拥有灵巧的8位CPU和系统可编程Flash;晶片内部具有时钟振荡器(传统最高工作频率可至12MHZ);内部程序存储器(ROM)为8KB;内部数据存储器(RAM)为256字节;32个可编程I/0口线;8个中断向量源;三个16位定时器/计数器;三级加密程序存储器;全双工UART串行通道。
2 硬件实现方法
2.1 总体设计思路
单片机的P0口作为数据线接到双端口存储器 IDT70V261S25PFI和串行通讯控制器TL16C754BPN的数据口,同时接到FPGA与单片机的ALE译出双端口低8位地址;P2口作为高8位地址线输出到双端口存储器IDT70V261S25PFI高8位地址口和串行通讯控制器TL16C754BPN的3位地址口;FPGA通过地址译码译出双端口存储器的片选和串行通讯控制器的4路片选信号;单片机的读写信号接到双端口存储器和串行通讯控制器的读写。原理框图如下图所示: AT89S52来组成外存储器扩展电路,除了本文介绍的外存储芯片外,其它的外存储芯片(EEPROM、RAM等)的使用方法类似。单片机系统扩展首先要构建系统总线,然后再往系统总线上“挂”存储芯片或I/O接口芯片。如下图所示:
通过地址空间分配和外部地址锁存器。常用的存储器地址分配有两种方法,线选法和译码法。线选法直接利用系统的高位地址线作为存储器芯片的片选信号;译码法是对高位地址进行译码,译码输出作为存储器芯片的片选信号。常用的外部地址锁存器芯片有74LS373和74LS573。外部地址锁存器应用如下图所示:
3 系统软件设计
本文采用的软件开发平台,旨在提高开发人员的生产力,实现更快,更有效的程序开发。μVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,支持多显示器窗口,增加了很多大众化的功能。
51单片机软件开发平台,keil C51μVision集成开发环境是德国Keil公司针对51系列单片机推出的基于32位windows环境,以51系列单片为开发目标,以高效率的C语言为基础的集成开发平台。Keil c51从最初的5. 20版本一直发展到最新的v7.20版本。主要包括:C51交叉编译器,A51宏汇编器,BL51连接定位器等工具和windows集成编译环境μVision,以及单片机软件仿真器Dscope51.是一个非常优秀的51单片机开发平台,对C高级语言的编译支持几乎达到了完美的程度,当然它也同时支持A51宏汇编。同时它内嵌的仿真调试软件可以让用户采用模拟仿真和实时在线仿真两种方式对目标系统进行开发。软件仿真时,除了可以模拟单片机的I/O口、定时器、中断外,甚至可以仿真单片机的串行通信。 软件设计上对于外部存储器的扩展没有什么特别的设置,只需对片选选中地址空间进行读写操作即可;对于多串口扩展需要对片选选中地址空间进行操作, 在工作软件初始化部分,应调用初始化通讯控制器函数对串行通讯控制器中的四路串行通讯口全部进行初始化。程序代码以下为例说明:
void COMMInitA(void) //软件初始化函数
{XBYTE[CSA+LCR]=0x80;/*置波特率分频系数设置允许位*/
/*设置波特率分频系数为1,外部晶振24MHz,波特率为1.5MBPS;
外部晶振22.1184MHz,波特率为1.3824MBPS*/
XBYTE[CSA+DLL]=0x01;
XBYTE[CSA+DLM]=0x00;
/*清除波特率分频设置允许位,设置串口数据格式设置为1位起始位、8位数据位、1位停止位、奇偶校验为奇校验*/
XBYTE[CSA+LCR]=0x1b; //奇校验
/*允许接收数据完成中断*/
XBYTE[CSA+IER]=0x05;
/*中断总允许*/
XBYTE[CSA+MCR]=0x00;
/*允许使用并清空FIFO,设置接收FIFO门限为60字节*/
XBYTE[CSA+FCR]=0x61; }
在发送数据时应首先形成发送数据并存储在发送数据缓冲区中,然后调用数据发送函数完成数据发送功能,程序代码以下为例说明:
void ZD_SEND(void)
{ tmp=0; for(j=2;j<6;j++) //计算校验和,从第2个字节开始{ tmp=tmp+zd_txd[j]; } tmp=tmp+zd_txd[0]; zd_txd[1]=tmp; for(j=0;j<6;j++)
{ XBYTE[CSA]=zd_txd[j];//发送6个字节} }
在数据接收完成中断服务程序中调用数据接收函数,根据数据接收状态将已接收到的数据存储在接收缓冲区中,程序代码以下为例说明:
void ZD_REC(void)
{ for(j=0;j<15;j++)//串口接收数据,15个字节
{ tmp=XBYTE[CSA+LSR]; if((tmp & 0x01)==0x01) buf_rxd[j]=XBYTE[CSA]; }
j=0; while(((XBYTE[CSA+LSR] & 0x01)==0x01) && (j<64))
{ j++; tmp=XBYTE[CSA]; } COMMInitA(); //接收结束
tmp=0; for(j=2;j<15;j++) //计算校验和,从第2个字节开始{ tmp=tmp+buf_rxd[j]; } tmp=tmp+buf_rxd[0];
if((buf_rxd[1]==tmp)&&(buf_rxd[0]==0x0f)) //校验正确,接收缓冲区数据转到工作数据区 { for(j=0;j<15;j++) { zd_rxd[j]=buf_rxd[j]; } bit_gzgzled=0x0; } else bit_gzgzled=0x1; }
为了保持数据通讯过程的持续稳定,同时避免不可预见冲突对数据通讯过程的干扰引起的工作异常,在必要的时刻需要对数据通讯控制器的FIFO 进行定期复位并清空数据区。
4 结束语
本文介绍了基于51系列单片机进行外围扩展电路的具体实现方法,既解决了单片机的存储器容量过小及串行通讯通道不足的限制,又提供了一种具有良好的通用性、规范性的单片机外围扩展存储器及多通道串行通讯的实施方案,为51系列单片机提供了更多更广的应用空间。
参考文献
[1] 张文德,等.单片机微机原理应用与实验[M].上海 复旦大学出版社,1996
[2] 江志红.51单片机技术与应用开发案例精选[M].清华大学出版社.2008.20-70
[3] 李学军.如何用MCS-51单片机扩展串口进行通讯[J].宁夏机械, 2003,(2)
[4] Keil公司的帮助文件