《通信原理》课程设计.docx
《《通信原理》课程设计.docx》由会员分享,可在线阅读,更多相关《《通信原理》课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
《通信原理》课程设计
应用科技学院
《通信原理课程设计报告》
设计题目:
双机串行通信的应用
专业班级:
姓名:
学号:
指导老师:
时间:
2014年6月25日~2014年7月14日
地点:
四教613实验室
双机串行通信的应用
摘要
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高,在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。
串行通信作为单片机之间常用的通信方法之一,由于其通信编程灵活、硬件简洁并遵循统一的标准,因此其在工业控制领域得到了广泛的应用。
串行通信时单片机的一个重要运用,本次课程设计就是要利用单片机来完成一个系统摘要,实现双片单片机串行通信。
通信的结果使用数码管进行显示,数码管采用查表方式显示。
两个单片机之间采用RS232进行双机通信。
在通信过程中使用通信协议进行通信。
两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在收端显示。
本次设计,对于两片STC89C52RC,采用RS232进行双机通信。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。
接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。
接收方接收后,在数码管上显示接受的信息。
为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现两个单片机之间的通信,通信的结果使用数码管进行显示。
关键字STC89C52RC单片机串行通信接口
目录
一、基本原理3
1.1串行通信3
1.2STC89C52RC单片机的主要工作特性和参数4
1.3STC89C52RC引脚功能说明5
1.4双机通信9
二、总体设计10
2.1设计目的10
2.2设计要求10
2.3设计方案10
三、硬件设计11
3.1STC89C52RC单片机串行接口的结构11
3.2整体电路设计12
四、软件设计13
4.1串行通信软件实现13
4.2主要程序15
五、联合调试21
六、测试结果22
七、课设中的心得体会22
参考文献23
附录24
一、基本原理
1.1串行通信
计算机与外界的信息交换称为通信。
在通信领域内,有两种数据通信方式:
并行通信和串行通信。
随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。
通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。
串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。
故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。
示例程序中将0xaa从主机传输到从机,并显示在从机的数码管上实现串口通讯的验证。
如串口通讯线路过长,可考虑采用MAX232进行电平转换,以延长传输距离。
值得注意的是,为了减少计算载入初值时的误差,本项目最好采取11.0592MHz的晶振。
我们设计以AT89C51单片机为核心,利用其内部的串行口,通过硬件与软件相结合的方式,实现双机的全双工的串行通信。
硬件电路包括键盘电路,显示电路,单片机主控电路,串行通信线和电源电路。
软件包括键盘扫描程序,显示程序,发送程序和接受程序。
发送和接收都采用中断方式。
由于两个单片机应用系统相距很近,近程通信时,可以不使用调制解调器,将它们的串行口直接相连就可以实现全双工的串行通信。
电路设计如图1所示。
图1双机异步通信接口电路
1.2STC89C52RC单片机的主要工作特性和参数
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.
2.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为8K字节
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8.具有EEPROM功能
9.具有看门狗功能
10.共3个16位定时器/计数器。
即定时器T0、T1、T2
11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
12.通用异步串行口(UART),还可用定时器软件实现多个UART
13.工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
14.PDIP封装
1.3STC89C52RC引脚功能说明
1.VCC(40引脚):
电源电压
2.VSS(20引脚):
接地
3.P0端口(P0.0~P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。
此时,P0口内部上拉电阻有效。
在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。
验证时,要求外接上拉电阻。
4.P1端口(P1.0~P1.7,1~8引脚):
P1口是一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。
P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(
)。
5.此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见表1:
6.在对FlashROM编程和程序校验时,P1接收低8位地址。
表1P1.0和P1.1引脚复用功能
引脚号
功能特性
P1.0
T2(定时器/计数器2外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器2捕获/重装触发和方向控制)
7.P2端口(P2.0~P2.7,21~28引脚):
P2口是一个带内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(
)。
8.在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。
在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
9.在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。
10.P3端口(P3.0~P3.7,10~17引脚):
P3是一个带内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(
)。
11.在对FlashROM编程或程序校验时,P3还接收一些控制信号。
12.P3口除作为一般I/O口外,还有其他一些复用功能,如表2所示:
13.表2P3口引脚复用功能
引脚号
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
14.RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。
看门狗计时完成后,RST引脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
15.ALE/
(30引脚):
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(
)也用作编程输入脉冲。
16.在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
17.如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
18.
(29引脚):
外部程序存储器选通信号(
)是外部程序存储器选通信号。
当AT89C51RC从外部程序存储器执行外部代码时,
在每个机器周期被激活两次,而访问外部数据存储器时,
将不被激活。
19.
/VPP(31引脚):
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,
必须接GND。
注意加密方式1时,
将内部锁定位RESET。
为了执行内部程序指令,
应该接VCC。
在Flash编程期间,
也接收12伏VPP电压。
20.XTAL1(19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
21.XTAL2(18引脚):
振荡器反相放大器的输入端。
22.在STC89C52RC片内存储器中,80H~FFH共128个单元位特殊功能寄存器(SFR)。
23.并非所有的地址都被定义,从80H~FFH共128个字节只有一部分被定义。
还有相当一部分没有定义。
对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。
24.不应将“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
25.STC89C52RC除了有定时器/计数器0和定时器/计数器1之外,还增加了一个一个定时器/计数器2.定时器/计数器2的控制和状态位位于T2CON和T2MOD。
26.定时器2是一个16位定时/计数器。
通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器。
定时器2有3种操作模式:
捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON中的位进行选择
29.波特率发生器模式
寄存器T2CON的位TCLK和(或)RCLK允许从定时器1或定时器2获得串行口发送和接收的波特率。
当TCLK=0时,定时器1作为串行口发送波特率发生器;当TCLK=1时,定时器2作为串行口发送波特率发生器。
RCLK对串行口接收波特率有同样的作用。
通过这2位,串行口能得到不同的接收和发送波特率,一个通过定时器1产生,另一个通过定时器2产生。
定时器可配置成“定时”或“计数”方式,在许多应用上,定时器被设置为“定时”方式(C/
=0)。
当定时器2作为定时器时,它的操作不同于波特率发生器。
通常定时器2作为定时器,它会在每个机器周期递增(1/6或1/12振荡频率)。
当定时器2作为波特率发生器时,它在6时钟模式下,以振荡器频率递增(12时钟模式时为1/12振荡频率)。
由定时器2产生的常用波特率
1.4双机通信
两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:
单工通信:
是指消息只能单方向传输的工作方式。
单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。
通信双方采用“按——讲”(PushToTalk,PTT)单工通信属于点到点的通信。
根据收发频率的异同,单工通信可分为同频通信和异频通信。
半双工通信:
这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。
也就是说,通信信道的每一段都可以是发送端,也可以是接端。
但同一时刻里,信息只能有一个传输方向。
如日常生活中的例子有步话机通信等。
双工通信:
双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。
这种发射机和接收机分别在两个不同的频率上能同时进行工作的双工机也称为异频双工机。
双工机的特点是使用方便,但线路设计较复杂,价格也较高。
二、总体设计
2.1设计目的
1、通过设计相关模块充分熟悉STC89C52RC单片机的最小系统的组成和原理;
2、通过软件仿真熟悉protel和proteus的配合使用;
3、通过软件编程熟悉STC89C52RC单片机用户手册编程规范;
4、巩固和加对通信原理、单片机原理与应用技术等课程基本知识的理解,综合运用课程中所学到的理论知识去独立完成本设计课题。
5、掌握两片STC89C52RC单片机之间串行通信的设计方法。
6、熟悉常用电子元、器件的类型和特性,并掌握合理选型的原则。
7、掌握常用电子仪器、仪表的使用方法,学会电路整机指标的测试方法。
2.2设计要求
两片单片机之间进行串行通信,A机将数据发送给B机,在B机的数码管上静态显示。
2.3设计方案
软件通过通信协议进行发送接收,主机接10,21,32,43,54,65,76,87,98,09后给从机(从机静态显示),当从机接收到后,向从机发送代表0-f的数码管编码数组,相应显示10,21,32,43,54,65,76,87,98,09。
三、硬件设计
3.1STC89C52RC单片机串行接口的结构
(1)数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存。
有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。
(2)串行控制寄存器(PCON)
SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0,SM1:
串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。
串行接口工作方式特点见下表
SM0
SM1
工作方式
功能
波特率
0
0
0
8位同步移位寄存器(用于I/O扩展)
fORC/12
0
1
1
10位异步串行通信(UART)
可变(T1溢出率*2SMOD/32)
1
0
2
11位异步串行通信(UART)
fORC/64或fORC/32
1
1
3
11位异步串行通信(UART)
可变(T1溢出率*2SMOD/32)
SM2:
多机通信控制位。
REN:
接收允许控制位。
软件置1允许接收;软件置0禁止接收。
TB8:
方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB9:
在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:
发送中断标志。
发送完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续发送。
RI:
接收中断标志。
接收完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续接收。
(3)输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。
(4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。
波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
(5)电源控制寄存器PCON
其最高位为SMOD。
3.2整体电路设计
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用,本系统共用两块单片机,每块单片机均选用AT89S51,最小系统也都一样。
由于两块单片机的主要任务是通信,为了得到准确的波特率,采用振荡频率为11.0592MHz的晶振,最终设计电路如下图3所示,发送方的数据由串行口TXD段输出,经过传输线将信号传送到接收端。
信号到达接收方串行口的接收端。
接受方接收后,通过P1口在数码管上显示接收的信息。
电路原理图
四、软件设计
通过通信协议进行发送接收,主机先送CDH给从机,当从机接收到CDH后,向主机回答DCH。
主机收到DCH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
4.1串行通信软件实现
(1)串行口工作于方式3;用定时器1产生4800bit/s的波特率,晶振频率为11.0592MHZ。
(2)功能:
将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。
(3)通信协议:
主机首先发送连络信号(CDH),从机接收到之后返回一个连络信号(DCH)表示从机已准备好接收。
(4)通信过程使用第九位发送奇偶校验位。
(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。
(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。
1、程序流程图
2、接收方程序流程图
4.2主要程序
(1)主机程序:
ORG0000H
AJMPSTART
ORG0030H
START:
MOVTMOD,#20H
MOVSCON,#40H
CLRES
MOVPCON,#00H
MOVB,#0FAH
CLRET1
CLRTI
SETBTR1
AGAIN1:
MOVA,B
MOVTH1,A
MOVTL1,A
AGAIN2:
LCALLJIAN
MOVA,33H
MOVSBUF,A
JNBTI,$
CLRTI
AJMPHE
HE:
CJNEA,,#0F3H,LP1
MOVB,#0F3H
AJMPAGAIN1
LP1:
CJNEA,#0FAH,LP2
MOVB,#0FAH,
AJMPAGAIN1
LP2:
CJNEA,#0FDH,LP3
MOVB,#0FDH
AJMPAGAIN1
LP3:
CJNEA,#0FEH,AGAIN2
MOVB,#0FEH
AJMPAGAIN1
JIAN:
PUSHACC
PUSHPSW
PUSHB
CLRC
MOV20H,#00H
SMJP:
SETBC
MOVA,#11011111B
MOVR4,A
MOVR5,#00H
MOVR7,#4H
MAIN1:
MOVDPTR,#8002H
MOVA,R4
MOVX@DPTR,A
MOVDPTR,#8001H
MOVXA,@DPTR
ORLA,#0F0H
CPLA
JNZZJH
DJNZR7,JZZ
AJMPSMJP
JZZ:
MOVA,R4
RRCA
MOVR4,A
INCR5
AJMPMAIN1
ZJH:
CJNEA,#01H,AAA
CLRC
AJMPHHW0
AAA:
CJNEA,#02H,BBB
CLRC
AJMPHHW1
BBB:
CJNEA,#04H,STEP2
CLRC
AJMPHHW2
STEP2:
CJNEA,#08H,OVER
AJMPHHW3
HHW0:
MOVA,R5
AJMPXS
HHW1:
MOVA,#4H
ADDA,R5
AJMPXS
HHW2:
MOVA,#08H
ADDA,R5
AJMPXS
HHW3:
MOVA,#0CH
ADDA,R5
AJMPXS
XS:
RLA
MOVDPTR,#TABLEB
JMP@A+DPTR
OVER:
AJMPSMJP
JPCL:
JB00H,XGSX
AJMPSMJP
XGSX:
JB02H,XGSXSW
MOV34H,A
JNB02H,SMJP
XGSXSW:
JB04H,ZHDJS
MOV35H,A
MOVA,34H
SWAPA
ORLA,35H
MOV33H,A
JNB04H,SMJP
ZHDJS:
POPB
POPPSW
POPACC
JS:
RET
TABLEB:
AJMPKEY0
AJMPKEY1
AJMPKEY2
AJMPKEY3
AJMPKEY4
AJMPKEY5
AJMPKEY6
AJMPKEY7
AJMPKEY8
AJMPKEY9
AJMPKEYA
AJMPKEYB
AJMPKEYC
AJMPKEYD
AJMPKEYE
AJMPKEYF
KEY0:
SETB00H
AJMPJPCL
KEY1:
MOVA,#01H
AJMPJPCL
KEY2:
SETB02H
AJMPJPCL
KEY3:
MOVA,#03H
AJMPJPCL
KEY4:
SETB04H
AJMPJPCL
KEY5:
MOVA,#05H
AJMPJPCL
KEY6:
MOVA,#06H
AJMPJPCL
KEY7:
MOVA,#07H
AJMPJPCL
KEY8:
MOVA,#08H
AJMPJPCL
KEY9:
MOVA,#09H
AJMPJPCL
KEYA:
MOVA,#0AH
AJMPJPCL
KEYB:
MOVA