资源描述
目录
第1章引言4
1.1 RS-485通信技术的开展4
1.2设计任务与方案5
1.2. 1设计任务5
1.2.2系统总体设计方案5
第2章系统硬件设计6
2.1硬件系统的构造6
2.2系统部件功能描述6
2.2.1 AT89C51 单片机 6
2.2.2单片机最小应用系统8
2.2.3红外接收10
2.2.4 MA*485 接电路 11
2.3 RS-485 串标准 13
第3章系统的软件设计15
3.1 MCS-51 汇编语言简介15
3.2串行通信原理16
3.2.1数据通信的根本概念16
3.2.2串行通信的过程16
3.2.3串行通信协议17
3.3串行通信程序设计18
3.3.1串行的构造和功能18
.总结资料
3.3.2选择串行工作方式19
3.3.3串行波特率的设置20
3.3.4初始化串 21
3.3.5程序的编制21
3.4红外通信原理22
3.4. 1红外发送原理22
3.4.2红外解码原理23
3.5红外解码程序设计23
3.5.1延时子程序23
3.5.2解码子程序24
3.6 RS-485程序设计流程图26
3.6.1数据接收局部26
3.6.2命令执行局部26
3.6.3数据发送局部27
第4章系统的调试27
4.1 WAVE60软件简介 27
4.2程序调试27
4.3系统硬件的调试28
总结28
致29
参考文献29
附录一 30附录二30
1.1 RS-485通信技术的开展
单片机技术和PC机技术在现实生活中都起着不可取代的作用,而结合这两种技术的应用有着极大的开展前景。单片机和PC机串行通信技术有着其特有的魅力,现已经在工业、农业、科研等各个领域广泛地应用。它凭着本钱低、实现简单等特点,在单片机与PC机的通信中占着一席之地。如今形成了 RS-232总线标准、RS-485总线标准、总线、CAN总线、无线通信、USB总线等并行开展的趋势。可以预测单片机和PC机串行通信技术的应用将更为广泛,并随着其他新技术的开展而开展。
单片机与微机之间以RS-232通信最为常见,微机对外的两个串 1、2都是专门为RS-232通信而设置的。虽然RS-232的通信方式方便,但它也有一些缺点。例如,RS-232只能实现短距离通信,通常只有十余米,要实现长距离通信还得依赖于调制解调器。另外,RS-232对地而言是共模传输方式,而各种电气干扰大多也是对地共模方式,它的抗干扰能力不理想。
RS-485通信方式与RS-232相比有很多优点,首先它的通信距离比RS-232要远得多,通常可以做到数百米甚至千米以上,而且还可以实现多点通信方式,从而可以建立一个小围的局域网,因而更有实用价值°RS-485采用差分信号传输方式,它的抗干扰能力比RS-232强的多,即便在信号电压比拟小的情况下也能获得稳定的传输。所以RS-485通信方式比RS-232应用要广泛。
近年来,红外遥控技术在工业生产、家用电器、平安保卫以及人们的日常生活中的使用越来越广泛,特别是在家庭生活中,如电视、空调的遥控器,智能开关,电梯等。利用红外遥控技术具有的控制简单、实施方便、传输可靠性高的特点,将红外遥控技术和RS-485通
.总结资料信技术结合起来,实现基于红外控制的RS-485通信系统。这个通信系统将更加实用,也更容易实现。研究这个课题对于了解RS-485通信系统、红外遥控技术都会有帮助。
1.2设计任务与方案
设计任务
采用51单片机作为微处理器,设计出红外控制的RS-485通信系统。要能过实现基于红外控制的,可靠的RS-485串行通信。
系统总体设计方案
本次设计采用AT89C51单片机作为微处理器,51系列单片机以其优良的性价比,得到了广泛的应用。其特点主要有以下几点:
1. 可靠性高
因为芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。系统软件如:程序指令,常数,表格)固化在ROM 中,不易受病毒破坏。许多信号的通道均在一个芯片,所以运作时系统稳定可靠。
2. 便于扩展
片具有计算机正常运行所必需的部件,片外有很多供扩展用的总线、并行和串行的输入/输出)管脚,很容易组成一定规模的计算机应用系统。
3. 控制功能强
具有丰富的控制指令。如:条件分支转移指令,I/O 的逻辑操作指令,位处理指令。
4. 实用性好
体积小,功耗低,价格廉价,易于产品化。
整个系统分为两大局部,第一局部是红外发射〔红外遥控器〕,第二局部是红外接收电路。本次设计所采用的红外遥控器是现成的,里面的发射芯片是LC7461 。红外接收电路包括红外接收和MA*485 接两局部。
当红外遥控器有键按下时,红外接收器接收到来自遥控发射器的红外信号,将收到的红外遥控信号转为电信号,经放大、调解、滤波后,经红外接收器将原编码输入到AT89C51的外部中断0的引脚,然后由AT89C51对接收到的原编码信号进展判断、识别,然后做出相应判断。PC机通过MA*485芯片实现和单片机的通信,红外信号经过解码以后,按遥控器不同的键,在串调试助手窗会有不同的数字显示。
第2章系统硬件设计
2.1硬件系统的构造
整个硬件系统是由红外接收模块和MA*485接电路两大局部组成,红外接收模块的作用是将接收的红外信号转换为电信号,经放大、调解、滤波后,输入到AT89C51 ,然后由AT89C51 对所接收的原编码信号进展判断、识别、然后做出相应的处理°MA*485接电路负责传送数据。
2.2系统部件功能描述
2.2.1 AT89C51 单片机
AT89C51 是一种带4K字节闪烁可编程可擦除只读存储器〔FPEROM —FalshProgrammable and Erasable Read Only Memory 〕的低电压,高性能 CMOS8 位微处理器。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2.1所示为AT89C51的引脚图,它的主要功能引脚有:
1)电源引脚Vcc和Vss
Vcc〔40脚〕:电源端,为+5V。
Vss〔20脚〕:接地端。
2)外接晶体引脚*TAL1和*TAL2
*TAL2 〔18脚〕:接外部晶体和微调电容的一端。在89C51片它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体的固有频率。假设须采用外部时钟电路,则该引脚悬空。要检查89C51的振荡电路是否正常工作,可用示波器查看*TAL2端是否有脉冲信号输出。
*TAL1 〔19脚〕:接外部晶体和微调电容的另一端。在片,它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚输入外部时钟脉冲。
3)控制信号引脚RST
RST〔9脚〕:RST是复位信号输入端,高电平有效。当此输入端保持两个机器周期〔24个时钟振荡周期〕的高电平时,该引脚输入外部时钟脉冲。
4)输入/输出端 P0、P1、P2和P3
P0端(P0.0~P0.7,39 —32脚):P0 是一个漏极开路的8位准双向【/。端。作为漏极开路的八路输出端,每次能驱动8个LS型TTL负载。当P0 作为输入使用时,应先向锁存器地址80H)写入全1,此时?0 的全部引脚悬空,可作为高阻抗输入。
P1端(P1.0~P1.7,1—8脚):P1 是一个带有部上拉电阻的8位双向【/。端。P1的输出缓冲器可驱动吸收或输出电流方式)4个TTL输入。对端写1时,通过部的上拉电阻把端拉到高电位,这时可用作输入。P1作输入使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I )。
IL
P2端(P2.0~P2.7,21—28脚):P2 是一个带有部上拉电阻的8位双向【/。端。P2的输出缓冲器可驱动〔吸收或输出电流方式〕4个TTL输入。对端写1时,通过部的上拉电阻把端拉到高电位,这时可用作输入。P2作输入使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流〔I〕。
IL
P3端(21 — 28脚):P3 是一个带有部上拉电阻的8位双向1/0端。P3 的输出缓冲器可驱动〔吸收或输出电流方式〕4个TTL输入。P3 与其它的I/O 有很大区别,它除作为一般准双向I/O 外,每个引脚还具有专门的功能,见表2.1。
图2.1 AT89C51引脚图
表2.1端引脚功能
端引脚第二功能
P3.0RXD (串行输入)
P3.1TXD 串行输出)
P3.2INT0 外中断0)
P3.3INT1〔外中断1〕
P3. 4T0〔定时/计数器0〕
P3. 5T1〔定时/计数器1〕
P3.6W〔外部数据存储器写选通〕
P3. 7RT〔外部数据存储器读选通〕
单片机最小应用系统
单片机最小应用系统是指仅使用单片机部资源辅以必需的外围电路所构建的简单的应用系统。它包括:单片机的选择和单片机最小应用系统的设计。通过单片机的选择,最大限度满足应用系统对硬件资源的要求,本次课程设计选用AT89C51单片机。最小应用系统设计则是指单片机最根本的、最常用的外围电路设计。时钟电路和复位电路就可以构成一个最小系统。
1)时钟电路
时钟电路是单片机的心脏,它控制着单片机的工作节奏。单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进展着,这个脉冲是由时序电路发出的。时钟信号可以由两种方式
产生:一种是部方式,利用芯片部的振荡电路产生时钟信号;另一种为外部方式,时钟信号由外部引入。
AT89C51单片机有一个用于构成部振荡器的反相放大器,引脚*TAL1和*TAL2分别是
放大器的输入、输出端。外接石英晶体和瓷晶体构成自激振荡器。这种方式称为部时钟方式,如图2.2所示。如果振荡器已启振,则在*TAL2引脚上输出3V左右的正弦波。振荡器的频率取决于晶振的频率。电容C1和C2主要作用是帮助启振〔谐振〕,其值的大小对振荡频率也有影响。因此常用调节C1或C2的容量大小对频率进展微调,电容容量通常在20pF~1pF之间选择,当时钟频率为2MHz时其典型值为30pF。本次设计就是采用部时钟方式。
图2.2部振荡电路
如果从外部时钟频率驱动器件,*TAL2可以不接,而从*TAL1接入,如图2.3所示。对外部振荡器的信号没有特殊的要求,一般为0.5~12MHz的方波,方波的波形应尽量规。
图2.3外部振荡电路
2) 复位电路
复位是单片机的初始化操作。其主要功能是把PC初始化为H,使单片机从H单元开场执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为了摆脱困境,也须按复位键重新启动。除PC之外,复位操作还对其他一些存放器有影响。复位是由外部复位电路来实现的,可分为上电自动复位和按键手动复位两种方式。
a) 上电自动复位
上电自动复位电路只需在RST端接一个电容至Vcc和一个电阻至Vss即可,如图2.4所示。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。电路中,时间常数RC越大,上电时保持高电平的时间越长,当震荡频率为12MHz 时,典型值C=10 uF , R=8.2 k ,当时钟频率选用6MHz 时,C=22 uF ,R=1 k 。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
上电时,只要电源Vcc的上升时间不超过1ms ,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。在图2.4的上电复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端引脚处于随机状态,复位后,系统将端置为全“1态。本次设计就是采用上电自动复位电路。
假设上电复位失效,用户上电后CPU从一个随机状态开场工作,系统则不能正常工作。上电复位后,RAM单元数据是随机的。
图2.4上电复位电路
b)手动复位
除了上电复位外,有时还需要手动复位。所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态。其电路图如图2.5所示。
按一下开关就会在RST端出现一段时间的高电平,使单片机复位。
图2.5手动复位电路
红外接收
接收电路可以使用红外接收器,一般不需要任何外接元件就能完成从红外接收到输出TTL电平兼容信号的所有工作,注意选择接收器件时要保证接收器件的中心频率与发射信号的中心频率相匹配。
本次设计红外接收芯片采用LT38。LT38是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。
接收器对外只有3个引脚:Vcc、GND和1个脉冲信号输出OUT,与单片机接非常方便。脉冲信号输出接AT89C51芯片的外部中断0引脚,数据由红外接收头接收后,经过单片机AT89C51 进展解码,数据由P1 输出,因为P1 通常做通用的I/O 使用,所以在构造上有其自身的特点;另外电路的部有上拉电阻,这些电阻与场效应管共同组成输出驱动。为此,P1 作为输出使用时,已能向外提供推拉电流负载,而无需再接上拉电阻。P1出来的数据经电阻分压后直接接到发光二极管上,8个发光二极管对应8位的数据码,当数据码为“1时亮,为“0时暗,图2.6所示是一个红外遥控器的接收电路。采用这种连接方法,软件解码既可以工作于查询方式,也可以工作于中断方式。在实际应用中,还可以进一步增加抑制干扰电路和提高驱动能力电路,增强系统稳定性。
例如将遥控器的数字“ 1按下时,则图2.6中的红外接收器接收来自遥控发射器的红外信号,将接收的红外信号转换为电信号,经放大、调解、滤波后,经红外接收器的第2脚(OUT)将原编码输入到AT89C51 的12脚外部中断0),然后由AT89C51 对所接收的原编码信号进展判断、识别、然后做出相应的处理。
图2.6红外接收电路
MA*485 接电路
MA*485芯片是用于RS-485通信的低功率收发器,芯片中包含有一个驱动器和一个收发器,
它的电气特性如表2.2所示。
表 2.2 MA*485
芯片的电气特性
通信方
数据率
转换率
低功耗
接收器
静态电
总线上
管脚数
式
/Mbps
限制
关机
/驱动
流/mA
收发器
器使能
数目
半双工
2.5
NO
NO
YES
3
32
8
z
MA*485芯片由八个引脚组成,图2.7为其引脚图,芯片各个引脚功能如下所示。
1) R 0脚接收器输出端):假设A比B大2 mV,R0为高;假设A比B小2 mV ,R0为低。
2) RE脚接收器输出使能端:RE为低时,R0有效;RE为高时,R0成高阻状态。
3) DE脚驱动器输出使能端):假设DE为高,驱动输出A和B有效;假设DE为低,它们成高阻状态,假设驱动器输出有效,器件作为线驱动器用;假设为高阻状态时,RE为低,它们作线接收器用。
4) DI脚 驱动器输入):DI为低,将迫使输出Y为低,Z为高;假设DI为高,将迫使输出Y为高,Z为低。
5) GND脚:接地。
6) B脚:反相接收器输入和反相驱动器输出。
7) A脚:同相接收器输入和同相驱动器输出。
8) Vcc :电源正极 4.75 〜5.25V。
图2.7 MA*485芯片引脚图
MA*485芯片的引脚的逻辑关系如表2.3、表2.4所示。
表2.3 MA*485发送逻辑关系
输入端
输出端
RE
DE
DI
B
A
*
1
1
0
1
*
1
0
1
0
0
0
*
高阻抗
高阻抗
1
0
*
关闭
关闭
表2.4 MA*485接收逻辑关系
输入端
输出端
RE
DE
A B
RO
0
0
0.2/
1
0
0
0.2/
0
0
0
输入端开路
1
1
0
X
高阻抗
由于PC机的接采用的是RS-232串行通信标准接,所以MA*485芯片不可以直接与PC机串相连,需要一个RS232-485 转换器,把RS-232信号电平转换成RS-485的信号电平,然后再将RS-485电平转换成TTL电平,并在适宜的通信协议和合理的通信程序支持下,完成PC机与单片机的长距离、抗干扰能力强的串行数据通信任务。MA*485芯片与PC机和AT89C51 的接电路如图2.8所示。
图2.8 PC机与单片机接电路
2.3 RS-485 串标准
单片机串行的输入输出为TTL电平,抗干扰性较差,只能在几米的围之传输数据。为了提高串行通信的可靠性,增强抗干扰性,增加传输距离,必须采用标准串行总线接将串行的输入输出电平进展转换。目前流行的标准串行总线接有RS-232C, RS-422A、RS-485等,它们各有优缺点。
RS-232C 是最早的串行接标准,在短距离(<15m),较低波特率串行通信当中得到了广泛应用。RS-422A接是对RS-232C接的改良,它采用平衡传输电气标准,输入/输出均采用差分驱动,因此具有更强的抗干扰能力,传送速率也大大提高,它向外部的连接器采用9针“D 型插头。
RS-232C 和RS-422A虽然应用广泛,但有明显的缺乏,主要表达为:接的信号电平值较高,易损坏接的电路芯片;必须经过电平转换电路方能与TTL电路相连;传输速率较低;对噪声的抗干扰性弱;传输距离有限。
RS-485以良好的抗干扰性、长距离传输特性和多站能力等优点成为用户首选的串行接。
1) 性能特点
a) RS-485的电气特性:逻辑“1”以两线间的电压差为+〔2—6〕V表示;逻辑“0”以两线间的电压差为-〔2—6〕V表示。接信号电平比RS-232C 降低了,就不易损坏接电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
b) RS-485的数据最高传输速率为10Mbps 。
c) RS-485接是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
d) RS-485接的最大传输距离标准值为40英尺,实际上可到达30米,另外RS-232C 接在总线上只允许连接1个收发器,即单站能力。而RS-485接在总线上是允许连接多达128个收发器,即具有多站能力。RS-485接所组成的半双工网络一般只需要两根连线,RS-485接均采用屏蔽双绞线传输。RS-485接连接器采用DB9插头座。
2) 与其他标准接的对照
表2. 5是RS-485与其他标准接的对照表。
表2.5标准串行接的对照表
RS-232CRS-422ARS-485
单端
工作方式
逻辑“0 电平 3~15V
逻辑“1 电平 -15~-3V
节点数 1发1收
最大传输距离 50英尺
最大传输速率 20Kb/s
驱动器加载输出电压 5- 15V
接收器输入电阻 3 k ~7 k
抗干扰能力 弱
2~6V
-(2—6)V
-6~-2V
+ (2 — 6)V
1发10收
1发32收
4 英尺
4 英尺
10Mb/s
10Mb/s
2V
1.5V
4 k 〔最小〕
12 k
强
强
差分
差分
所以时至今日,虽然工业以太网、CAN等现场总线,ZIGBEE 等传感器网络,USB等接,IEEE802等无线网络等都提供全面的配置,但是由于RS-485串行通信兼容性好,简单易用,本钱低,在工业通信上使用最广泛的仍然是RS-485串行通信。
第3章系统的软件设计
3.1 MCS-51 汇编语言简介
汇编语言是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM , TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比方构造化、抽象等。在这样的环境中编写的汇编程序,有很大一局部是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件准确控制的程序。
3.2串行通信原理
数据通信的根本概念
在实际工作中,计算机的CPU与外部设备之间常常要进展信息交换,一些计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。根本的通信方法有并行通信和串行通信两种。一组信息〔通常是字节〕的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接实现。并行通信速度快,但传输线根数多,只适用于近距离〔相距数公尺〕的通信。一组信息的各位数据被逐位顺序传送的通信方式称为串行通信。串行通信可通过串行接来实现。它的突出优点是只需一对传输线,这样就大大降低了传送本钱,特别适合远距离通信,其缺点是传送速度较低。
串行通信的传送方式通常有3种:单向〔或单工〕配置,只允许数据向一个方向传送;半双工〔或半双工〕配置,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;全双向〔全双工〕配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接收能力。
串行通信的过程
两个通信设备在串行线路上成功地实现通信必须解决两个问题:一是串一并转换,即如何把要发送的并行数据串行化;二是设备同步,即同步发送设备和接收设备的工作节拍,以确保发送数据在接收端被正确读出。
1)串一并转换
串行通信是将计算机部的并行数据转换成串行数据,将其通过一根通信线传送,并将接收的串行数据再转换成并行数据送到计算机中。
在计算机串行发送数据之前,计算机部的并行数据被送入移位存放器,并一位一位地移出,将并行数据转换成串行数据。在接收数据时,来自通信线路的串行数据被送入移位存放器,满8位后并行送到计算机部。在串行通信控制电路中,串一并、并一串转换逻辑被集成在串行异步通信控制器芯片中°89C51单片机的串行和IBM-PC机中的8250芯片都可实现这一功能。
2)设备同步
进展串行通信的两台设备必须同步工作,才能有效的检测通信线路上的信号变化,从而采样传送数据脉冲。设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生一样的传送速率。
采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包括统一的逻辑电平规定,即电平信号上下与逻辑1和逻辑0的固定对应关系。
通信双方只有产生一样的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用一样频率的时钟。发送设备在统一的时钟脉冲上发送数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。
串行通信协议
通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种,在此只讨论异步串行通信协议和异步串行协议规定的字符数据的传送格式。
1)起始位
通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发送一个逻辑0信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开场准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。
2)数据位
当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或
8. IBM-PC中经常采用7位或8位数据传送,89C51串行采用8位或9位数据传送。这些数据位被接收到移位存放器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开场发送,依次顺序在接收设备中被转换为并行数据。
3)奇偶校验位
数据位发送完之后,可以发送奇偶校验位。奇偶校验用于有限过失检测,通信双方须约定一致的奇偶校验方式。如果选择偶校验,则组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,则逻辑1的个数必须是奇数。
4)停顿位
在奇偶校验位位或数据位当无奇偶校验时)之后发送的是停顿位。停顿位是一个字符数据的完毕标志,可以是1位、1.5位或2位的高电平。接收设备收到停顿位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。
5)波特率设置
通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。如果数据以每秒3个二进制位在通信线上传送,则传送速度为3波特,通常记为3b/s。3.3串行通信程序设计
串行的构造和功能
AT89C51单片机有一个全双工异步串行I/O ,占P3.0(串行数据接收端R*D)和
P3.1(串行数据发送端T*D)两个引脚,是P3 的第二个功能。该接不仅能同时进展数据的发送和接收,也可以作为一个同步移位存放器使用。
串行的工作过程可概括为如下。
1)用户通过串行的初始化操作规定串行的工作方式。
2)串行自动完成发送和接收。
a发送:将待发送的数据由A送入SBUF(以指令“MOV SBUF,A实现),在发送控制
器的控制下组成帧构造,并自动以串行方式发送到T*D端。在发送完毕后自动将TI置1,向CPU申请中断。
b接收:先用指令(SETB REN)置位接收允许才能开场串行接收操作。在接收控制器的控制下,通过移位存放器将串行数据送入SBUF中。在接收完毕后自动将RI置1,向CPU申请中断。
选择串行工作方式
AT89C51单片机串行有四种工作方式,用特殊功能存放器SCON 中的SM0、SM1
两位进展设定,如表3.1所示。
表3.1串行的工作方式
SM0
SM1
工作方式
说明
波特率
0
0
方式0
同步移位存放器
f /12
osc
0
1
方式1
10位异步收发
由定时器控制
1
0
方式2
11位异步收发
f /32 或 f /64
oscosc
1
1
方式3
11 位异步收发
由定时器控制
本次设计采用串行工作方式1。方式1真正用于串行发送或接收,为10位通用异步接 °T*D与R*D分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位〔低位在前〕、1位停顿位,共10位。在接收时,停顿位进入SCON 的RB8 ,此方式的波特率可调。
串行波特率的设置
波特率(Baud rate),即数据传送速率,表示每秒传送二进制代码的位数,它的单位是b/s。波特率对于CPU与外界的通信是很重要的。假设数据传送率是120字符/s,而每个字符格式包括包含10个代码位(1个起始位、1个终止位、8个数据位)。这时,传送的波特率为:
10b/ 字符 120 字符/s=12b/s
每一位代码的传送时间T为波特率的倒数。
d
T =1/12=0.833ms
d
国际上规定了一个标准波特率系列,标准波特率系列为110、3、6、12、18、24、48、96和192。标准波特率也是最常用的波特率,大多数CRT终端都能够按110~96b/s 围中的任何一种波特率工作。大多数接的接收波特率和发送波特率可以分别设置,而且可通过编写程序来指定。
由上表可以看出串行通信的波特率取决于串行的工作方式,其中方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。
本设计选择串行工作方式1,波特率由下式确定:
波特率=竺[〔T1溢出速率〕
32
定时器T1用作波特率发生器时,通常选用定时器模式2〔自动重装初值定时器〕比拟实用,此时,T1溢出速率为(*为四1和TL1定时计数初值):
T1溢出速率=&/恁X)
12
波特率=JOsc—-
3212 (256 X)
本次设计中波特率取48b/s。
初始化串
串行初始化应该包括对SCON 、PCON 和T1的初始化,也包括TMOD存放器初始化〔将T1设置为波特率发生器〕、根据波特率求解时间常数,并对TH1和TL1赋值、启动
T1等过程。
本次设计中,波特率为48b/s ,SMOD=0,
f =11.059MHz ,于是可得出定时器T1
osc
模式2的初始值*
该串行初始化x
格式如下:
256
11.059 106 0 1
384 48
250 FAH
ORG H
MOV SCON, *50H;设置串行工作于方执
MOV TMOD, *20H; 波特率发生器T1工作在模式2上
MOV PCON, *H;波特率不翻倍
MOV TH1, *0FAH;预置初值胺照波特率48 bps预置初值
MOV TL1,*0FAH;预置初值胺照波特率48 bps预置初值
SETB TR1;启动定时器T1
程序的编制
图3. 1所示为串通信流程图。
图3.1串通信流程图
以下为串通信局部程序:
WAIT1: P3.6,$;判断K1是否按下,如果没有按下就等待
ACALL DELAY10; 延时10毫秒消触点抖动
P3.6,WRIT1;去除干扰信号
JNB P3.6,$;等待按键松开
MOV A,*0A5H; 将16进制的字符A5发送到串去
MOV SBUF,A; 将A5通过串发送出去
WAIT2: CTI, WAIT1
AJMP WAIT2
;10毫秒延时子程序
DELAY10:MOV R4,*20
D2:MOV R5,*248
DJNZ R5,$
DJNZ R4,D2
3.4红外通信原理
红外遥控系统一般由发射系统和接收系统组成。发射系统由专用芯片产生指令代码,经载波调制后驱动红外发射器件,发射红外控制信号。红外信号的指令代码均为二进制码,编码调制由专用芯片完成,编码的方法有多种,不同芯片的编码方法和代码长度有所不同。指令信号常用的编码调制方法有脉冲宽度调制和脉冲位置调制两种。红外遥控信号被红外接收头接收后,经放大、检波、整形,得到TTL电平的代码信号,再送给编码电路,经译码并执行,实现遥控功能。
红外发送原理
红外遥控发射的整体过程如图3.2所示,当不同的指令键被按下时,指令信号电路产生不同的脉冲编码的指令信号,然后经调制电路调制,变成编码脉冲调制信号,再由驱动电路驱动红外发射器发射红外信号。
图3.2红外发射流程图
本次设计所用的红外遥控器是现成的,里面的发射芯片用的是LC7461 。当发射器按键按下后,即有遥控码发出,所按的键不同,遥控编码也不同。这种遥控码采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0 ;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1 。上述“0和“1组成的42位二进制码经38KHz的载频进展二次调制后可提高发射效率,从而到达降低电源功耗的目的。
LC7461产生的遥控编码是连续的42位二进制码组。其中前26位为客户识别码,也可以称为客户码和客户反码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰,后16位为8位的数据码和8位的数据反码用于核对数据是否接收准确。当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头以后可以开场接收数据。
红外解码原理
脉冲波形进入一体化接收头〔这里红外接收器采用芯片LT38〕以后,因为接收头要进展解调、信号放大和整形,所以要注意在没有红外信号时,其输出端为高电平,有信号时为低电平,故其输出信号正好和发射端相反。
解码的关键是如何识别“0和“1 ,“0 、“1均以0.56ms的低电平开场,不同的是高电平的宽度不同,“0为0.56ms, “1为1.68ms,所以必须根据高电平的宽度来区别“0和“1 。如果从0.56ms低电平过后,开场延时,0.56ms以后,假设读到的电平为低,说明该位为“0 ,反之则为“1 ,为了准确起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0,读到的已是下一位的高电平,因此取
〔1.12ms+0.56ms〕/2=0.84ms 最为可靠,一般取 0.84ms 左右即可。
3.5红外解码程序设计
延时子程序
以下为红外解码的延时子程序。
YS1:MOV R4,*20 ;延时子程序1,准确延时882微秒
D1:MOV R5,*20
DJNZ R5,$
DJNZ R4,D1
RET
YS2:MOV R4,*10 ;延时子程序2,准确延时4740微秒
D2:MOV R5,*235
DJNZ R5,$
DJNZ R4,D2
RET
YS3:MOV R4,*2;延时程序3,准确延时10微秒
D3:MOV R5,*248
DJNZ R5,$
DJNZ R4,D3
RET
解码子程序
图3.3为红外遥控解码流程图,以下程序为红外解码的子程序。
图3.3红外遥控流程图
INT:CLR EA;暂时关闭CPU的所有中断请求
MOV R6,*10
SB:ACALL YS1;
P3.2,E*IT;
DJNZ R6, SB;
JNB P3.2, $ ;
ACALL YS2;延时4.74毫秒避开4.5毫秒的结果码
MOV R7,*26 ;忽略前26位系统识别码
JJJJA:
JNB P3.2,$ ;等待地址码第一位的高电平信号
LCALL YS1 ;高电平开场后用882微秒的时间尺去判断信号此时的上下电平
状态
MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中
JNC UUUA;如果为0就跳转到UUUA
LCALL YS3 ;检测到高电平1的话延时1毫秒等待脉冲高电平完毕
UUUA:
DJNZ R7,JJJJA
MOV R1,*1AH ; 设定1AH为起始RAM 区
MOV R2,*2;接收从1AH到1BH的2个存,用于存放操作码和操作反码
PP:
MOV R3,*8;每组数据为8位
JJJJ:
JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1;
MOV C,P3.2;
JNC UUU;如果为0就跳转到UUU
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平完毕
UUU:
MOV A,R1;将日1中地址的给A
RRC A;
MOV R1,A;
DJNZ R3,JJJJ;
INC R1
;对日1中的值加1,换下一个RAM
DJNZ R2,PP
MOV A,1AH
CPL A ;对1AH取反后和1BH比拟
CJNE A,1BH,E*IT;如果不等表示接收数据发生错误,放弃
MOV P1,1AH;
CLR P2.5;
LCALL YS2
LCALL YS2
SETB P2.5
SETB EA
RETI
;蜂鸣器停顿
展开阅读全文