好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机串口扩展.ppt

26页
  • 卖家[上传人]:mg****85
  • 文档编号:49595056
  • 上传时间:2018-07-31
  • 文档格式:PPT
  • 文档大小:625KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 电平转换 单片机电平是TTL电平,它与RS-232C电平不兼容 ,必须进行电平转换电平转换的电路很多,MAX232 是一种新型的专用集成电路,类似的集成电路还很多C1+C1-C2+C2-VCCV+V-电压倍增器 +5V~+10V电压反向器 +10V~-10V1111+5VT1OUTT2OUTR1OUTR2OUTT1INT2INR1INR2INC1C2C3C4TTL/CMOS 输入TTL/CMOS 输出RS-232C 输出RS-232C 输入MAX 232C2- V-C1+ V+ C1- C2+T2OUTR2INR2OUTT2INT1INR1OUTR1INT1OUTVCC GN D1 2 3 4 5 6 7 891016 15 14 13 12 11RS232电平转换芯片PC机COM口接8051机 11p(TXD)10p(RXD ) PC机和单片机串口通讯的硬件电路 ⒉ RS-422A通信接口接口信号:9针D型头电气特性 电平转换3.RS-485通信接口:将RS-422A的发送数据信号正端与 接收数据信号正端连起来,发送数据信号负端与接收 数据信号负端连起来就成为RS-485通信接口 1569发送数据负TX-发送数据正TX+接收数据正RX+接收数据负RX-信号地GND请求发送负RTS-清除发送正CTS+请求发送负RTS+清除发送负CTS–MCS-51系列单片机串行通信接口接 口 性 能RS-232CRS-422ARS-485功能双向,全双工双向,全双工双向,半双工传输方式单端差分差分逻辑“0”电平3V~15V2V~6V1.5V~6V逻辑“1”电平-3V~-15V-2V~-6V-1.5V~-6V最大速率20kb/s10Mb/s10Mb/s最大距离30m1200m1200m 驱动器加载输出电 压±5V~±15V±2V±1.5V接受器输入敏感度±3V±0.2V±0.2V接收器输入阻抗3~7KΩ>4KΩ>7KΩ组态方式点对点1台驱动器:10台接 收器32台驱动器:32台 接收器 抗干扰能力弱强强传输介质扁平或多芯电缆二对双绞线一对双绞线RS232、RS422、RS485对比3 PC机与单片机通信PC机是国内目前使用应用最广泛的微机,在与 单片机串行接口后,可以方便地构成主从分布式 多机系统。

      从机(单片机)作数据采集或实时控 制,主机作数据处理或中央管理等这种多机系统在过程控制、仪表生产、生产自 动化和企业管理等方面都有广泛的应用此外微 机和单片机串行接口后,可以大大方便单片机的 开发过程一、PC机串口资源及编程使用方法 PC机一般有COM1和COM2两个串口寄存器名称端口地址复位后初始值COM1COM2发送器保持寄存器(TBR)3F8H2F8HXXXXXXXXB接收器数据寄存器(RBR)3F8H2F8HXXXXXXXXB波特绿因子低位寄存器(DLL)3F8H2F8H00000000B波特绿因子高位寄存器(DLH)3F9H2F9H00000001B中断允许寄存器(IER)3F9H2F9H00000000B中断标识寄存器(IIR)3FAH2FAH00000000B线路控制寄存器(LCR)3FBH2FBH01100000B调制解调器控制寄存器(MCR)3FCH2FCHXXXX0000B线路状态寄存器(LSR)3FDH2FDHXXXXXXXXB调制解调器状态寄存器(MSR)3FEH2FEHXXXXXXXXB使用串口必须先初始化,有以下4个步骤DL HDL L波 特 率DL HDL L波特 率DL HD LL波特 率09 H00 H5000 HC0 H60000 H18 H480006 H00 H7500 H60 H120000 H10 H720004 H17 H11000 H40 H180000 H0C H960003 H59 H134. 500 H3A H200000 H06 H1920 0 03 H00 H15000 H30 H240000 H03 H3840 0 01 H80 H30000 H20 H360000 H01 H1152 00例:设COM1的波特率为9600,则outportb(0x3fb,0x80);/*写线路控制寄存器,访问波特率因子寄存器*/ outportb(0x3f8,0x0c);/*写入波特率因子低字节*/ outportb(0x3f9,0x00);/*写入波特率因子高字节*/ ⒈ 设置波特率PC机串口初始化⒉ 设置数据格式 例:设数据为7位,1位起始位,1位停止位,偶校验,则 设置如下: outportb(0x3fb,0x1a); ⒊ 设置操作方式 不允许中断: outportb(0x3fc,0x03); 允许中断: outportb(0x3fc,0x0b); 自测试工作方式,且不允许中断: outportb(0x3fc,0x13); ⒋ 设置中断允许寄存器 开放中断语句: outportb(0x3f9,0x0f); PC机串口初始化例1 将PC机的COM1初始化为9600波特率、7位数据、偶 校验、1位停止位、不中断,则初始程序如下: initcom1() { outportb(0x3fb,0x80); /*写线路控制寄存器,访问 波特率因子寄存器*/ outportb(0x3f8,0x0c); /*写入波特率因子低字节*/ outportb(0x3f9,0x00); /*写入波特率因子高字节*/ outportb(0x3fb,0x1a); /*设数据为7位,1位起始 位 ,1位停止位,偶校验*/outportb(0x3fc,0x03); /*不允许中断*/ }PC机的发送、接收程序例2 PC机从COM1发送一个字符,程序如下: send(char sendchar) { int coms; do{/*查询发送缓冲器是否空*/ coms=inportb(0x3fd)&0x20; }while(coms!=0x20); outportb(0x3f8,sendchar); }例3 PC机从COM1接收一个字符,程序如下: char receive() {char coms,receivechar; waitok:/*查询接收数据是否有效*/ coms=inportb(0x3fd); if((coms&0x01)==0) goto waitok; receivechar= inportb(0x3f8); return receivechar; }二、PC机与单片机双机通信 PC机与单片机构成主从式上下位计算机系统。

      例:从PC机键盘上输入一个字符,然后将这个字符发送给单片机,单 片机接收到这个字符后,不做任何处理,又将它发回给PC机,PC机 将这个字符显示在屏幕上连接电路如下: PC机RXDTXDMAX232T1OUTR1INT1IN(R1OUTRXDTXDMCS-51约定: u波特率:2400b/s u信息格式:8位数据,1位停止位 u传送方式:PC机采用查询式收发数据,单片机采用中断式收 发数据 由于PC机是RS- 232C电平,单片机 是TTL电平,用 MAX232进行电平 转换PC机与单片机通信设计⒈ PC机的通信软件 #include “stdio.h” main() {char c1,c2;int coms; outportb(0x3fb,0x80);/*初始化8250*/ outportb(0x3f8,0x30); outportb(0x3f9,0x00); outportb(0x3fb,0x03);/*8位数据,1位停 止位*/ outportb(0x3fc,0x03); c1=getchar();开 始初始化8250有键输入吗?取键盘字符发送寄存器空否 ?向单片机发送字 符接收单片机发回的字 符接收的数据有效码 ?显示发回的字 符NNNYYY结 束PC机发送程序do{/*查询发送缓冲器是否空*/ coms=inportb(0x3fd)&0x20; }while(coms!=0x20);outportb(0x3f8,c1); waitok:/*查询接收数据是否有效*/ coms=inportb(0x3fd); if((coms&0x01)==0) goto waitok; c2=inportb(0x3f8); printf(“The return char is:”); putchar(c2); }开 始初始化定时器 T1初始化串行口启动定时器T1开放中断主程序踏 步中断服务程 序关中断清接收中断标志 RI保护现场接收PC机发来的字 符将字符发送回PC 机开中断,恢复现 场中断返 回MCS-51单片机通信软件主程序中断服务程序主程序: ORG0000H LJMPMAIN ORG0023H LJMPSERVE MAIN: MOVTMOD,#20H ;初始化T1 MOVTH1,#0F3H MOVTL1,#0F3H MOVSCON,#50H;串行口为方式1,REN=1 MOVPCON,#80H;SMOD=1 SETBTR1 SETBEA SETBES HERE:SJMPHERE单片机接收程序中断服务程序: SERVE:CLREA;中断服务程序 CLRRI PUSHPSW;保护现场 SETBRS0 CLRRS1 PUSHACC MOVA,SBUF;接收PC机发来的字符 MOVSBUF,A;将字符回送给PC机 WAIT:JNBTI,WAIT;等待发送完毕 CLRTI POPACC;恢复现场 POPPSW SETBEA RETI END三、PC机与单片机通讯多机通信 多机通信的关键问题:识别单片机!给单片机编号。

      怎样识别单片机?起始 位D0D1D2D3D4D5D6D7奇偶 位停止 位起始 位D0D1D2D3D4D5D6D7TB8停止 位从PC机和单片机帧格式可知:通过软件编程,使得PC机在 发送地址(单片机编号)时,奇偶位为1,发送数据时为0;单片 机接收时,TB8为1表示收到的地址,为0表示收到的数据 PC机与单片机通讯多机通信例:从PC机的键盘上输入单片机的编号,要求PC机与该单 片机进行通信测试,从键盘上输入一个字符,发送给某 单片机,单片机受到该字符后,又发回给PC机,在屏幕 上显示出来由于RS-232C不能实现多机通信,故采用RS-422标准 电路如下: PC机TXDRXD……232/422 转换器RXDTXDMCS-5175175751741号RXDTXDMCS-5175175751742号RXDTXDMCS-517517575174n号PC机与单片机的多级通信⒈ PC机软件设计 开 始初始化 8250输入单片机 编号发送单片机 编号接收单片机送回 的编号取键盘字 符编号一致吗 ?向单片机发送 字符接收单片机发回 的字符显示发回的 字符NY结 束多机通讯程序设计程序清单: #include “stdio.h” main() {char c1,c2,n1,n2;int coms;outportb(0x3fb,0x80);/*初始化8250*/outportb(0x3f8,0x30); outportb(0x3f9,0x00);outportb(0x3fb,0x2b);/*8位数据,1位停止,奇偶校验位为1*/outportb(0x3fc,0x03);/*PC机处于发送地址状态*/outportb(0x3f9,0x00);/*禁止8250中断*/printf(“Please input the number of MCS:\n”);scanf(“%c”,&n1);do{/*查询发送移位寄存器是否空*/coms=inportb(0x3fd)&0x40;}while(coms!=0x40);outportb(0x3f8,n1);/*PC机发送单片机地址编号*/outportb(0x3fc,0x01);/*PC机处于接收状态*/waitok1:/*查询单片机返回的编号是否有效*/coms=inportb(0x3fd);if((c。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.