1、单片机各种通信方式的特点和主要应用场合串口用的比较多:RS232,用于与标准的 RS232 设备通讯网卡,用于互联网或采用网卡端口的设备通讯I2C,用于单片机自己外设或多个单片机之间通讯CAN,工业标准,汽车中常用并口:并口就是直接将数据输入或输出,多少位数据就要用多少根线,此外还要加上控制线 2 根以上。例如 8 位的数据通讯,至少用 10 根线。由于单片机的引脚数目有限,这种方法很不实用。并行口现在计算机都几乎不用了。如果感兴趣,你就找以前的计算技术方面的书上还有介绍。并口线路复杂,可靠性低,速度低,除了早期的打印机还用,也几乎没有这样的外设了。大家好, 通过前一期的学习, 我们已经对 I
2、CD2 仿真烧写器和增强型 PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管等资源,体会到了学习板的易用性与易学性,看了前几期实例,大部分都是基于单片机端口操作原理呢?大家是否觉得这样一个单片机系统似乎缺少点什么呢?不错,本期我们将介绍单片机与电脑通讯,使单片机与 PC 机能够联机工作。单片机除了需要控制外围器件完成特定的功能外,在很多应用中还要完成单片机和单片机之间、单片机和外围器件之间,以及单片机和微机之间的数据交换和指令的传输,这就是单片机的通信。单片机的通信方式可以分为并行通信和串行通信。并行方式传送一个字节的数据至少需要
3、8 条数据线。一般来讲单片机与打印机等外围设备连接时,除 8 条数据线外,还要状态、应答等控制线,当传送距离过远时电线要求过多,成本会增加很多。单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行 RS232 方式的通信。串行通信是以一位数据线传送数据的位信号,即使加上几条通信联络控制线,也比并行通信用的线少。因此,串行通信适合远距离数据传送,如大型主机与其远程终端之间,处于两地的计算机之间,采用串行通信就非常经济。串行通信又分为异步传送和同步传送两种基本方式。异步通讯:异步通信传输的数据格式一般由 1 个起始位、7 个或 8 个数据位、1 到 2 个停止位和一个校验位
4、组成。它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如图 1 所示。在一帧格式中,先是一个起始位 0,然后是 8 个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位 1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,通信双方采用独立的时钟,起始位触发双方同步时钟。在异步通信中 CPU 与外设之间必须有几项约定,即每一帧位数,字符格式和波特率。字符格式的规定是双方能够在对同一种 0 和 1 的数据串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII 标准。同
5、步通讯:在同步通讯中所传输的数据格式是由多个数据组成,每帧有一个或两个同步字符作为起始位以触发同步时钟开始发送或接收。同步通讯数据帧格式如图 2 所示。在异步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间,所以在数据块传递时。波特率指每秒送多少个 0 或 1,由于包含起始位,停止位等,实际传送数据每秒多少字节总比波特率的 1/8 少。为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协
6、调收发器的工作,所以它的设备也较复杂。现在我们将用一个实例来剖析一下它到底是如何控制数据收发的,单片机串口将接收 PC 机发送的数据,同时点亮相应的发光管做指示。首先,我们来看一下这个实例所涉及到的理论基础知识。PIC 单片机有全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是 RS232 电平(逻辑摆幅大,逻辑 1 为-3 -15V,逻辑 0 为+3 +15V),而单片机的串口是 TTL 电平(逻辑摆幅小逻辑 1 为2.4V, 逻辑 0 为/ 包含单片机内部资源预定义unsigned char recdata;void delay
7、() / 延时子程序unsigned int k;for(k=0;k 语句用来加载 PIC 库文件,头部 recdata 变量的定义是用来存放我们接收到的串口数据,void delay () 是延时函数, TRISC、TRISA 相关的语句用来设置 RC、RA 口的输入、输出状态,在此我们设置为输出。SPBRG=0X19 至PEIE=0X1 这些语句,分别是对串口通信参数的配置与开启中断使能, while(1) 是死循环语句,即周而复始地执行 内的语句体,如我们现在的程序中的作用即是不停地判断recdata 这个变量,也就是不停地判断串口接收到的数据是否为 0x01、0x02?0x06 这些数
8、据,通过判断不同的数值,再点亮板上 LED 发光管,即 PORTC 端口的赋值。在程序尾部有个 interrupt usart() 函数,它是我们的中断处理函数,当有串口中断产生时,就会进入这个函数体,函数体中语句的主要作用是把接收到的串口数据放到变量 recdata 中,同时将接收到的数据再返回给上位机,即回传给 PC 机,这样就进行了一次完整的双向通信。RS232 串口通信的原理与使用我们讲到这里,接下来几期,我们将继续一起学习增强型 PIC 实验板的其它各部分资源的原理与使用,使你对单片机应用的各方面知识都有所入门与提高。增强型 PIC 实验板系统资源丰富,可做实验有:6 位 LED 数码管、8 路 LED、直控键盘、蜂鸣器喇叭、继电器试验、I2C 总线接口、SPI 总线接口、160X 液晶、128X64 液晶、红外接收头接口、步进电机驱动接口、 AD 模/ 数转换接口、串行时钟芯片 DS1302、温度传感器 DS18B20 接口、RS232 串口通讯、外扩展接口以便外接更多的实验资源。