当前位置:首页 > 单片机多机通信实现
盐城工学院本科生毕业设计说明书 (2010)
方式3:9位UART,帧信息为11位,其中一位起始位“0”、八位数据位(先低位后高位),一位控制位(第九位)和一个停止位“1”。波特率可变,根据定时器1的溢出率计算。
附加的第9位数据为SCON中的TB8的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。
单片机的串行通信传输方式有三种:单工制式、半双工制式和全双工制式。 2.2 单片机多机通信方案选择
根据需要,各片单片机有相等的权限,每块单片机都可设置为主机或从机,因此单片机的串口应具有双向可选择性。采用两个同相三态门加上一个反相器即可构成这样的接口,并由单片机的一根引脚控制单片机串口的连接方式。
发送数据区可存放1B~48B的数据,以空字符'\\0'作为发送数据结束标志。接收数据时以空字符作为接收有效数据结束标志。通信结束时,从机发回收发长度作为校验。 2.3 微处理器的选择
本系统对微处理器要求不是太高,速度不要求太高,但代码较长,因此要求微处理器应有较大的程序存储空间,最好用Flash ROM。通信的发送缓冲区与接收缓冲区均从RAM中分配,为了能传送更多的数据,要求要有较大的RAM。此外,处理器还应有一个全双工的串行口。
综合考虑以上各种因素,选用MCS-51系列的单片机AT89S52。
AT89S52是一种低功耗高性能的CMOS 8位微处理器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适用于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
其引脚结构如下图:
5
单片机多机通信实现
图2-1 AT89S52的引脚结构
单片机AT89S52的引脚说明: VCC:电源 GND:地
P0口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。
在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,
6
盐城工学院本科生毕业设计说明书 (2010)
将输出电流(IIL)。
此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2的触发输入(P1.1/T2EX),具体如下表所示。在Flash编程和校验时,P1口接收低8位地址字节。
P1口的第二功能如下表:
表2-2 P1口的第二功能 引脚号 P1.0 P1.1 P1.5 P1.6 P1.7 第二功能 T2(定时器/计数器T2的外部计数输入),时钟输出 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) MOSI(在系统编程用) MISO(在系统编程用) SCK(在系统编程用) P2口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器
能驱动 4 个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行 MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如 MOVX @RI)访问外部数据存储器时,P2 口输出P2锁存器的内容。
在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号。
P3口:P3口是一个具有内部上拉电阻的 8 位双向 I/O口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(I)。P3口亦作为 AT89S52特殊功能(第二功能)使用,如下表所示。
在Flash编程和校验时,P3口也接收一些控制信号。 P3口具有第二功能,具体如下表。
IL
表2-3 P3口的第二功能 引脚号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入) TXD(串行输出) INT0(外部中断0) INT1(外部中断1) T0(定时器0的外部输入) T1(定时器0的外部输入) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 7
单片机多机通信实现
RST:复位输入。晶振工作时,RST脚连续两个机器周期高电平使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。
:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位
地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟
使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为 8EH 的 SFR 的第 0 位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行 MOVX 或 MOVC 指令时有效。否则,ALE将被微弱拉高。这个 ALE 使能标志位(地址为 8EH 的SFR的第0位)的设置对微控制器处于
外部执行模式下无效。
:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。
:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的
外部程序存储器读取指令,EA 必须接 GND。 为了执行内部程序指令,EA 应该接 VCC。
在 flash 编程期间,EA 也接收 12 伏 VPP电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。
表2-4 AT89S52 特殊寄存器映象及复位值
8
共分享92篇相关文档