首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
RS-232多串口扩展器件SP2538及其应用 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 22:50:41 点击数:[] ![]() |
|||||
。子串口波特率为:K2=480 fosc—in 。 母串口和所有子串口都是TTL电平接口,可直接与单片机或TTL数字电路接口,若需连接PC机,则必须增加电平转换芯片,如MAX202,ICL232等。 SP2538具有内置的上电复位电路和可关闭的看门狗监控电路,用于监控上位机程序是否正常运行,同时也可以简化上位机复位电路的设计。上位机写命令字“0x10”可实现喂狗,而写命令字“0x15”则可关闭看门狗(初次上电后,看门狗处于激活状态),写命令字“0x20”可激活看门狗监控功能。 上位机可通过芯片复位指令(命令字为“0x35”)在任何时候对芯片进行指令复位(复位时间Treset小于50μs)。 未使用的输入端口(如:RX0、RX1、RX2…等)必须连接到VCC,未使用的输出端口(如:TX0、TX1、TX2…、ADRO0、ADRO1…等)必须悬空。 4 应用实例 SP2538的应用领域包括数据采集、工业控制、仪器仪表、智能家电、医疗设备、税控加油机、商业POS机、家庭安防控制、车辆监控和调度、GPS卫星定位与导航、有线及无线数据传输、基于PC机的多串口卡、水、电、气表抄表系统、室外多媒体电子广告以及其它对通信稳定性、成本和开发周期要求比较严格的各种应用和工业MODEM阵列等方面。 4.1 应用电路 利用SP2538可将仅有一个UART串口的单片机扩展为具有5个UART串口的单片机。图4以常用的AT89C52单片机为例给出了相应的串口扩展电路。图中,AT89C52的全双工串口与SP2538的母串口5相连。该串口5同时也作为命令/数据口。SP2538的ADRI0、ADRI1、ADRI2分别与AT89C52的P2.3、P2.4、P2.5口相连,可用于选择发送数据时的相应串口0~4,ADRO0、ADRO1、ADRO2与AT89C52的P2.0、P2.1、P2.2口线相连,可用于判别接收的数据来自串口0~4的哪一个。SP2538的时钟频率可选为20MHz,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。 4.2 应用程序 下面是与上述硬件电路相关的接口程序,该程序用C51语言编制,程序分为上位机发送、接收中断服务程序和主程序两部分。 uchar idata uart0_t_but[8]; uchar idata send_buf[8]; uchar idata uart0_r_but uchar idata uart0_send_num uchar idata uart_port_num,send_byte_num,uart_point-er bit bdata write success,uart_busy; bit bdata uart0_receive sbit ADRI_0=P2^0; sbit ADRI_1=P2^1; sbit ADRI_2=P2^2; sbit ADRO_0=P2^3; sbit ADRO_1=P2^4; sbit ADRO_2=P2^5; serial()interrupt4 using3{ //上位机RS232接收、发送中断入口 if(RI){ RI=0; Switch(P2&0x07){ case uart0_r_buf=SBUF uart0_receive=1 break; } else { TI=0; switch(uart_pointer){ case uart_pointer++; if(uart0_send_num){ ADRO_0=0; ADRO_1=0; ADRO_2=0; Uart0_send_num--; SBUF=uart0_t_buf[uart0_send_num] uart_busy=1 break; } elseif(uart1_send_num|uart2_send_num|uart3_send_num|uart4_send_num) { ADRO_0=0 ADRO_1=0 ADRO_2=0 SBUF=0x00 uart_busy=1 break; } else {uart_busy=0;break;} } 注: case1:… case2:… case3:… case4:… 除地址不同外其余同case0。 Void uart_send(unchar uart_port_num,uchar send_byte num){ uchar i switch(uart_port_num)“ case for(i=0;i<send_byte_num;i++){ uart0_t_buff[i]=send_buf[i]; } uart0_send_num=send_byte_num; write_success=1; if(uart_busy==0){ T1=1; uart_pointer=0; break; } else{break;} } 注: case1:… case2:… case3:… case4:… 除地址不同外其余同case0。 main(){ TMOD=0x20; THI=0xff; TCON=0x40; SCON=0x50; PCON=0x80; //波特率加倍 IE=0x90; PI=0; while(1)“ send_buf[0]=0x31; write_success=0; if(!uart0_send_num){ uart_send(0,4) } } } 5 结束语 近年来,以单片机为核心构成的具有UART接口的智能仪器仪表及智能模块不断涌现,此类产品可方便地与单片机构成分布式系统。另一方面,系统中的单片机也要与上位计算机之间进行通信,从而构成二级分布式系统。SP2538的出现为此类多串口应用领域提供了一个良好的解决方案。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |