双机之间的串行通信设计.docx
《双机之间的串行通信设计.docx》由会员分享,可在线阅读,更多相关《双机之间的串行通信设计.docx(19页珍藏版)》请在冰点文库上搜索。
双机之间的串行通信设计
单片机原理与接口技术课程设计任务书
学生姓名
专业班级
学号
题目
双机之间的串行通信设计
课题性质
工程设计
课题来源
自拟
指导教师
主要内容
(参数)
基于89C51的双机通信设计实现以下功能
1.用自发自收的方式,实现串行口的自检,当串口正常时,发光二极管亮,否则,灯不亮。
2.发送端将0~f循环发送到接收端,并在接收端显示。
3.通信的结果实用数码管进行显示,数码管采用查表方式显示。
4.两个单片机之间采用RS232进行双机通信
5.在通信过程中,使用通信协议进行通信。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社。
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
1设计任务
1.1设计任务
利用单片机来完成双机之间的串行通信,两个单片机之间采用TTL来进行连接.
1.2设计要求
1.两片单片机利用串行口进行串行通信:
串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。
串行口工作方式为方式1的全双工串行通信。
2.两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。
故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。
3、要求发送方读入按键值,发送到接收方,接收方接受数据并显示在数码管上。
2设计方案
2.1方案设计
本次设计,基于两片89C51,采用RS232进行双机通信。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。
接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。
接受方接收后,在数码管上显示接收的信息。
为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。
主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送和检验。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
2.2所需元件
序号
名称
数量
15
40Pzip座
1
7
串口接口
1
13
MAX232芯片
1
12
USB接口
1
C1、C2
晶振电容22p
2
51、AVR
复位按钮
2
Y1
晶振座
3孔
J16
复位跳线插针
3针
RP1
4.7k排阻
1
D1―D8
LED白发红
8
J10
LED电源跳线
2针
R9
10k复位电阻
1
S17-S20
单独按键
4
输出口
双排针
2×18针
C9-C12
Max232外围电容1μF
4
POWER
自锁按钮
1
C13
复位电容10μF
1
R16
电源指示灯电阻1K
1
R1-R8
LED限流电阻1K
8
POWER指示灯
绿发绿LED
1
C8
电源滤波电容1000μ
1
2.3AT89C51
如图2.3AT89C51,AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图.2.3AT89C51
管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取值期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.4MAX232
如图2.4MAX232,MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
图2.4MAX232
管脚设计
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
2.5整体电路
图2.5整体电路图
3.软件设计
3.1串行通信软件实现
通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。
主机收到BBH后就把数码表TAB[16]中的16个数据送给从机,并发送和检验。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
(1)串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。
(2)功能:
将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。
(3)通信协议:
主机首先发送联络信号(AAH),从机接收到之后返回一个联络信号(BBH)表示从机已准备好接收。
(4)通信过程使用第九位发送奇偶校验位。
(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。
(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。
3.2程序流程图
(1)发送端程序流程图,如图3.2发送端程序流程图所示:
图3.2发送端程序流程图
(2)接收端程序流程图,如图3.2接收端程序流程图所示:
图3.2接收端程序流程图
4.系统调试
在Protues上进行仿真实验。
首先使用KeiuVsion2将编写完成的程序编译生成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,结果如图4仿真实验图所示(由于电脑没有Protues,图片由Visio模拟),可以看到,接收端已将接收到的数据完整的显示出来。
图4仿真实验图
5.总结
经过这段时间的学习,我对单片机有了更深的理解,也基本算是顺利的完成了设计任务,学到一些课程之外的东西。
万事开头难,在最初接触的时候总是有很多东西调试不好,但经过老师的细心指导之后,我开始慢慢明白什么时候该用什么原件什么模块。
在绘制电路图的时候,因为电脑原因选择使用Visio来制作电路图,所以在调试的时候就遇到了更多的问题,但最终都一一解决了,通过这次设计,我学到了很多。
参考文献
【1】:
郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.
【2】:
张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
【3】:
伟福LAB6000系列单片机仿真实验系统使用说明书
【4】:
阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
【5】:
XX文库.AT86C51,MAX232篇目
附录
1主机发送程序
ORG0000H
AJMPSTART
ORG0030H
START:
MOV30H,#0C0H;传送的16个数据(0~F)
MOV31H,#0F9H
MOV32H,#0A4H
MOV33H,#0B0H
MOV34H,#99H
MOV35H,#92H
MOV36H,#82H
MOV37H,#0F8H
MOV38H,#80H
MOV39H,#90H
MOV3AH,#88H
MOV3BH,#83H
MOV3CH,#0C6H
MOV3DH,#0A1H
MOV3EH,#086H
MOV3FH,#08EH
MOVTMOD,#20H;定时器1置为方式2
MOVTH1,#0F4H;装载定时器初值,波特率2400
MOVTL1,#0F4H
CLREA
SETBTR1;启动定时器
MOVPCON,#00H
MOVSCON,#50H;设定串口方式1,且准备接收应答信号
LOOP1:
MOVSBUF,#0E1H;发联络信号
JNBTI,$;等待一帧发送完毕
CLRTI;允许再发送
JNBRI,$;等待2号机的应答信号
CLRRI;允许再接收
MOVA,SBUF;2号机应答后,读至A
XRLA,#0E2H;判断2号机是否准备完毕
JNZLOOP1;2号机未准备好,继续联络
LOOP2:
MOVR0,#30H;2号机准备好,设数据块指针初值
MOVR7,#10H;设定数据块长度初值
MOVR6,#00H;清校验和单元
LOOP3:
MOVSBUF,@R0;发送一个数据字节
MOVA,R6
ADDA,@R0;求校验和
MOVR6,A;保存校验和
INCR0
JNBTI,$
CLRTI
DJNZR7,LOOP3;整个数据块是否发送完毕
MOVSBUF,R6;发送校验和
JNBTI,$
CLRTI
JNBRI,$;等待2号机的应答信号
CLRRI
MOVA,SBUF;2号机应答,读至A
JNZLOOP2;2号机应答“错误”,转重新发送
RET;2号机应答“正确”,返回
2从机接收程序
ORG0000H
AJMPSTART
ORG0030H
START:
MOVTMOD,#20H;定时器1置为方式2
MOVTH1,#0F4H;装载定时器初值,波特率2400
MOVTL1,#0F4H
CLREA
SETBTR1;启动定时器
MOVPCON,#00H
MOVSCON,#50H;设定串口方式1,且准备接收
LOOP1:
JNBRI,$;等待1号机的联络信号
CLRRI
MOVA,SBUF;收到1号机信号
XRLA,#0E1H;判是否为1号机联络信号
JNZLOOP1;不是一号机联络信号,再等待
MOVSBUF,#0E2H;是1号机联络信号,发应答信号
JNBTI,$
CLRTI
MOVR0,#30H;设定数据快地址指针初值
MOVR7,#10H;设定数据块长度初值
MOVR6,#00H;清校验和单元
LOOP2:
JNBRI,$
CLRRI
MOVA,SBUF
MOV@R0,A;接收数据转储
INCR0
ADDA,R6;求校验和
MOVR6,A
DJNZR7,LOOP2;判断数据块是否接收完毕
JNBRI,$;完毕,接收1号机发来的校验和
CLRRI
MOVA,SBUF
XRLA,R6;比较校验和
JZEND1;校验和相等,跳至发正确标志
MOVSBUF,#0FFH;校验和不相等,发错误标志
JNBTI,$;转重新接收
CLRTI
SJMPLOOP2
END1:
MOVSBUF,#00H
JS1:
MOVR0,#30H;显示接到的数据
JS3:
MOVA,@R0
MOVP0,A
ACALLDELAY
INCR0
MOVA,R0
CJNEA,#40H,JS2
AJMPJS1
JS2:
AJMPJS3
DELAY:
MOVR4,#04H
D1:
MOVR7,#0FFH
D2:
MOVR6,#0FFH
DJNZR6,$
DJNZR7,D2
DJNZR4,D1
RET
END
3系统电路图
图5系统电路图
图5Protues补图
THANKS
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考