电脑串口控制单片机驱动继电器的例子.docx
《电脑串口控制单片机驱动继电器的例子.docx》由会员分享,可在线阅读,更多相关《电脑串口控制单片机驱动继电器的例子.docx(10页珍藏版)》请在冰豆网上搜索。
![电脑串口控制单片机驱动继电器的例子.docx](https://file1.bdocx.com/fileroot1/2023-6/14/27316f11-1144-4ca8-a28c-5a768a573e2d/27316f11-1144-4ca8-a28c-5a768a573e2d1.gif)
电脑串口控制单片机驱动继电器的例子
电路图说明:
这个电路非常典型,串行口(也称RS232)接口集成电路MAX232与单片机AT89S51引脚P3.0(RXD)\P3.1(TXD)连接,构成与主机的通讯接口电路。
AT89S51引脚P0、P2口连接达林顿管阵列驱动IC uln2803,通过它控制继电器动作。
相关基础知识简要说明:
1、串行口(也称RS232接口)是用途最广的一种通讯接口,一般电脑主机上都有这个接口,缺点是传输距离短,市场上也有很多USB-RS232转换接口卖。
**常用的通讯接口还有RS485、RS422、LPT打印接口、CAN总线接口、网卡接口等等,与RS232比较接近的通讯接口是RS485,它的通讯距离较远,广泛用于工业控制。
2、串行口(也称RS232)接口集成电路MAX232,接口芯片种类繁多,MAX232只是其中的一种,可以说是串行接口集成电路的代表型号,图纸上一般都标MAX232,但实际使用时,可以选用更多兼容的芯片,其中一个理由,兼容芯片更便宜。
3、达林顿管阵列驱动IC uln2803,TTL输入(0-5v),可以同时驱动8个继电器,内部不仅封装了达林顿管阵列,并且含有钳位二极管,连接继电器时,不需要再连接保护二极管,使用非常方便,因而用途广泛。
相同功能的芯片有ULN2003,只是它只有7个输出口。
内部电路如图所示:
发送图片到手机,此主题相关图片如下:
接口IC ULN2083内部有反相缓冲器(参见技术手册),简单来说,输入高电平,输出为低电平;输入低电平,则输出高电平。
如图所示:
发送图片到手机,此主题相关图片如下:
ULN2803数据手册下载:
注:
一般单片机输入、输出电流有限,无法驱动继电器等大电流外围部件,因此需要有驱动电路,常用的是三极管驱动(如2SD8050)和IC驱动(如ULN2803)。
上拉电阻的问题:
1、51单片机的P0口内部没有上拉电阻,其他P1、P2、P3口内部也只是弱上拉,为了在高电平输出时得到较高的输出电流,提高驱动能力,有必要在P0口与+5v间连接上拉电阻(通常取值在1k-4.7k左右)。
见AT89C51数据手册第4页。
此主题相关图片如下:
AT89C51数据手册下载:
点击浏览该文件
51源程序详解:
源程序主要分三个部分:
初始化程序、串口中断程序、协议解析或叫解码程序。
初始化程序:
初始化是单片机通电后首先执行的一部分程序,主要是对单片机中的寄存器做一些必要的设置(即写入值):
1、设置串口 波特率为9600 串行口设置MODE1,SM1=0,REN=1,SMOD=1
2、由于电路上晶振采用11.0592M(最常用),定时器1设置初值为0FDH
;常用串口波特率对应初值(11.0592M晶振)
;FD 9600
;FA 4800
;F4 2400
;E8 1200
3、启动定时器1、允许串口中断、允许总中断
相关代码:
MOVSCON,#50H
MOVTMOD,#00100001B ;TIM1在模式2 TIM0在模式1
MOVTH1,#0F4H;设置定时时间
SETBTR1;启动定时器1
SETBES ;允许串口中断
SETBEA ;允许总中断
需要注意:
1、波特率越高,通讯速度越快,但也更容易出错,一般来说,通讯距离短时,可以用较高的波特率,通讯距离长时,选用较低的波特率可使通讯更为可靠。
2、硬件电路采用不同的晶振,波特率设置时初值是不同的,初值可由公式()取得,通过计算你会发现有些晶振(如10M、12M)计算结果有余数,实质上就是波特率有误差,最终结果就是用了这个晶振的电路,在通讯时会出现无法通讯、时好时坏、误动作等等情况(很多朋友都是这个问题)。
因此,一般我们在用到串口的单片机电路中,如无特殊需要,晶振都选用最常用的,如11.0592M。
3、提高波特率的方法有二种:
将SM1设为1;或是换一个频率更高的晶振。
由于接口IC ULN2083输入输出的反相特性,即输入为高电平,输出为低电平;输入为低电平,则输出为高电平。
同时51单片机上电复位后,其引脚为高电平,这样会引起连接在P0、P2口的继电器全部得电吸合的情况,应此,初始化程序中应对端口作如下设置:
相关代码:
MOVP0,#0;P0、P2输出低电平
MOVP2,#0
由于本例中单片机在初始化后没有其它事情做,我们就让它没事歇着。
相关代码:
JMP$ ;自循环(等待状态)的
串口中断程序:
串口接收数据流程图
发送图片到手机,此主题相关图片如下:
串口接收定长或不定长数据的原理:
如何定义通讯协议:
待续。
。
。
。
发送图片到手机,此主题相关图片如下:
发送图片到手机,此主题相关图片如下:
发送图片到手机,此主题相关图片如下:
发送图片到手机,此主题相关图片如下:
发送图片到手机,此主题相关图片如下: