目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。
1.串行接口的基本通信方式
串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(低电平)。
异步通信采用用异步传送格式
用来表示字符开始。其后为7 或8 位的数据编码,第8 位通常做为奇偶校验位。最后为停止位(高电平)用来表示字符传送结束。上述字符格式通常作为一个串行帧,如无奇偶校验位,即为常见的N.8.1帧格式。串行通信中,每秒传送的数据位称为波特率。如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。
根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O 口来模拟实现串行通信的时序。
2.硬件电路
89C51 单片机通过普通I/O 口与PC 机RS232 串口实现通信的硬件接口电路如图2 所示。由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采用TTL 电平的89C51 单片机在接口规范上不一致,因此TTL电平到RS232 接口电平的转换采用MAXIM 公司的MAX232 标准RS232接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~215V)和逻辑“0”(+3V~15V)的电平转换。图中89C51 的P1.0 模拟发送端,P1.1 模拟接收端。
89C51 单片机通过普通I/O 口与PC 机RS232 串口实现通信的硬件接口电路[page]
3.接口程序设计
软件设计中,89C51 单片机的P1.0 和P1.1 口分别模拟串行通信的发送和接收,其接口程序主要由INPUT 发送子程序和OUTPUT接收子程序组成。通信速率1200 bit /s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8 位数据,最后发送停止位。接收时,先判断P1.1 接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8 位数,最后判断P1.1 口是否有停止高电平出现,如有则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通信的时序进行,每bit 位传送时间间隔按通信速率1200 bit /s计算为833μs。
其模拟串行通信程序清单见下,系统要求单片机晶振为6M。程序清单如下:
程序
程序
本文介绍的用 89C51 单片机I/O 口模拟实现串行通信的方法,已成功地应用在某电压数据采集系统中,实践证明能可靠地传送和接收数据。
关键字:89C51 模拟串行通信 异步串行
引用地址:
关于89C51单片机I/O口模拟串行通信实现方法
推荐阅读最新更新时间:2024-03-16 13:18
一款用汇编写的计算器
;;;;;;;;;;;;;;;;;;;;;;;;;;;端口定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CSA EQU p2.4 CSB EQU p2.3 rs EQU P2.2 rw EQU P2.1 E EQU P2.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;单元定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COM EQU 21H DAT EQU 22H column EQU 23H pagef
[单片机]
RS232异步串行通信USART电路设计
AVR系列单片机都带有异步串行接口,而我们现在学习的ATmega64更是有两个串口。我们知道单片机的电平一般都是TTL电平(关于TTL电平与 CMOS电平等其他电平的区别,我们以后单独详解),而计算机的串口是RS-232电平,这两种电平不能互相匹配,所以如果将这两种电平互联,需要一个电平转换电路,本实例中使用常用的MAX232芯片,它实现RS-232电平和TTL电平的互换。 在MAX232的数据手册中,有这个芯片的典型连接电路,我们直接采用这种电路即可。关于MAX232的连接电路,其实非常简单,我们只要记住4电容(或 5电容)就可以了。这里的4电容指的是电路中只需要连接4个电容就可以;至于5电容,多出来的那个电容是连接VCC
[嵌入式]
基于VHDL的异步串行通信电路设计
1 引 言 随着电子技术的发展,现场可编程门阵列 FPGA和复杂可编程逻辑器件CPLD的出现,使得电子系统的设计者利用与器件相应的电子CAD软件,在实验室里就可以设计自己的专用集成电路ASIC器件。这种可编程ASIC不仅使设计的产品达到小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述﹑综合﹑优化﹑仿真与验证,直到生成器件,实现电子设计自动化。其中电子设计自动化(EDA)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。 VHDL是用来描述从抽象到具体级别硬件的工业标准语
[单片机]
IC卡自动加油机的设计
引言 众所周知 ,“金卡”工程(即电子货币工程)是我国国民经济信息化建设的重点工程之一。相对于磁卡而言,IC卡因具有防磁、防潮、安全、保密、不易磨损等特点,而作为“金卡”工程的首选产品,广泛应用于金融、电讯、交通、服务等多个部门。我们为安徽省某集团公司的加油中心设计了一种新型的IC卡自动加油机,司机凭公司发放的“油量储值IC卡”加油,管理人员通过“油量统计IC卡”对油料的使用情况进行结算管理,取代了传统的人工登记、结算的管理方式,实现了加油与管理的自动化。 1 IC卡简介 IC 卡 是将 一块集成电路芯片镶嵌在塑料基片中,封装为卡片形式,其芯片具有写人数据和存储数据的能力。我们使用的是美国ATMEL公司
[单片机]
20天89C51单片机总结
看了怎么久的单片机做个总结。其实就芯片来说单片机没想象的那么复杂!89C51就40个引脚。其中P0~P3口占了32个。一个接地一个接电源,两个振荡引脚。一个EA引脚ROM的起始地址选择端。一个ALE/Vpp片外地址锁存器充许引脚/线编程电源输入端。PSEN片外ROM充许使能端。当然还有个复位REST引脚。其中P3口全部都有第2功能复用:定时 中断 串行口中断。当P0~P3端口写#FFH时片内锁存器置1这是单口为双向输入 输出口。这是从芯片外围看。 从芯片的内部看的话主要的就两个独立的存储器 ROM,RAM 一个为程序指示,一个为数据处理和存放。编程时通过寻址方式区别ROM,RAM。他们都为64KB的容量。ROM的片内为4KB存储
[单片机]
89C51单片机数码管显示
数码管显示分为静态数码管显示和动态数码管显示 学习掌握数码管相关的内容,可以从以下三方面入手: 1.数码管电路图 2.译码器 3.进制转化 直接上图 数码管电路图 数码管电路的接法有共阴和共阳两种,这里采用共阴接法 从其中取出一个数码管进行分析 单个数码管 此处为一个8位的数码管,想要数码管显示出想要的数字,则需要对数码管进行高低电平的设置 1为高电平,0为低电平 分别对 a,b,c,d,e,f,g,dp进行1和0的编写,此处可以理解为二进制进行十六进制的转化 如图中所示,数字2的 八位二进制就可以表示为 0101 1011,读数为从dp依次读到a,转化为十六进制则是0x5b 数码管中各个数值对应的字节 0:
[单片机]
89C51编程器,89C51 programmer
89c51芯片的编程器,图片有些小,凑合看吧,附带程序 程序: #include at89x52.h #include stdio.h #include intrins.h #include ctype.h sbit rdy=P3^2; sbit vpp=P3^3; sbit p26=P3^4; sbit p27=P3^5; sbit p36=P3^6; sbit p37=P3^7; sbit prog=P2^7; void init_serial() { SCON=0x50; /*mode 1*/ TMOD=0x20; TH1=0xfd; PCON=0x80; /*38400bps*/ TR1=1; /*load tmr1*/
[单片机]
基于89C51单片机的节拍器设计
1 硬件电路原理 节拍器以AT89C51 单片机为控制中心,由LED 显示模块、调节键盘模块、声音输出模块组成。图1 是节拍器的电路原理图。ATMEL 公司生产的AT89C51 单片机与MCS51指令系统兼容,40 脚结构,是系统的控制中心。显示模块由四位一体的共阳极蓝色LED 显示器构成,采用动态扫描显示方式, Q11~ Q14是LED 的位选择开关三极管, R6~ R13是数码管段发光二极管的限流电阻。四位一体的LED 数码管完成显示节拍数、各功能代码及参数值的功能。键盘调节模块由4 只按键构成,分别是功能选择键A、设置参数选择键B、参数增加键C和参数减少键D ,4 只按键可以完成各种功能的选择和各参数的设置。声音输
[单片机]