单片机的异步串行通信功能和基本使用方法

发布者:Qinghua2022最新更新时间:2012-10-09 来源: 21ic 关键字:ATmega8  异步串行通信  单片机 手机看文章 扫描二维码
随时随地手机看文章

  单片机的数据通信有两种方式:并行通信和串行通信。并行通信指数据字节的各位同时发送或接收;而串行通信是数据字长距离传输数据节一位一位按顺序发送或接收。并行通信传输线多,适用于短距离、快速度的通信;面串行通信仅需单线传输信息,适用于长距离传输数据,由于每次传送一位,所以传输速度比较慢。串行通信又分异步和同步两种方式,其中异步串行通信是最常用的方式。本文主要通过两个实例介绍单片机的异步串行通信功能和基本使用方法。

  一、串行通信基本知识

  ATmega8单片机带有一个全双工的同步/异步串行收发模块USART,模块由时钟发生器、数据发送器和接收器、控制寄存器等部分组成。异步串行通信的接线方式见下图,其中RXD为接收端,TXD为发送端。数据通信以帧为传输单位,每一帧包含1位起始位0、8位或9位数据、1位奇偶校验位和1位停止位1。

传输格式见下图。

  下面介绍与USART相关的几个寄存器,为了节省篇幅,只对编程中要用到的相关内容进行介绍。

  1.数据寄存器UDR  数据寄存器UDR用来存放要发射或者接收的数据,UDR可读可写,初始值为0x00。

  2.控制和状态寄存器UCSRA.UCSRB、UCSRC

  UCSRA的定义见下表。

  UCSRA的初始值为0x20。

  RXC位为USART接收完成标志位,数据哲器中有未读出的数据时RXC置位,否则清零。接收器禁止时,数据寄存器被刷新,导致RXC清零。RXC标志可用来产生接收结束中断。

  TXC位为USART发送完成标志位,发送移位缓冲器中的数据被送出,且当发送缓冲器(UDR)为空时TXC置位。执行发送结束中断时TXC标志自动清零,也可以通过写1进行清除操作。TXC标志可用来产生发送结束中断。

  UDRE位数据寄存器空标志位,标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断。复位后UDRE置位,表明发送器已经就绪。

  UCSRB的定义见下表。

    UCSRB的初始值为0x00。

  RENC位为数据接收允许标志位,置位后将启动USART接收器。RXD引脚的通用端口功能被USART功能所取代。

  TXNC位为发送数据允许标志位,置位后将启动USART发送器。TXD引脚的通用端口功能被USART功能所取代。TXEN清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。

     CSRC的定义如下表。

     UCSRC的初始值为0x86。

  UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。

  URSEL位为寄存器选择标志位,通过该位选择访问UCSRC寄存器或UBRRH寄存器。当读UCSRC时,该位为1;当写UCSRC时,该位必须写入1。

  UMSEL位为模式选择标志位,通过这一位来选择同步或异步工作模式。UMSEL=O为异步模式,UMSEL=1为同步模式。

  UPM1~O位为奇偶校验模式,这两位设置奇偶校验的模式并使能奇偶校验。如果使能了奇偶校验,那么在发送数据时,发送器都会自动产生并发送奇偶校验位。对每一个接收到的数据,接收器都会产生一奇偶值,并与UPM0所设置的值进行比较。如果不匹配,那么就将UCSRA中的PE置位。校验方式见下表。

  USBS位为停止位选择标志位,通过这一位可以设置发射帧中停止位的位数。接收器忽略这一位的设置。USBS=0为1位停止位,USBS=1为2位停止位。

  UCSZ1~0位为字符长度标志位,UCSZ1~0与UCSRB寄存器的UCSZ2位结合在一起可以设置数据帧包含的数据位数(字符长度)具体设置见下表。

 UCSZ2 UCSZ1    UCSZ0    字符长度
0 0  0 5位
0 0 1 6位
O 1 0 7位
0 1 1 8位
1 1 1 9位

  3.波特率寄存器UBRRL和UBRRH

  UBRRL和UBRRH的初始值均为Ox00。

  UBRRH的最高位URSEL为寄存器选择标志位,用于选择确定UCSRC寄存器和UBRRH寄存器的操作。如果读UBRRH寄存器,该位为0。当写UBRRH寄存器时,该位必须写入0。

  寄存器UBRRH的低4位和寄存器UBRRL的8位构成一个12位的UBRR寄存器,用于USART传送或接收波特率(BAUD)的设置。

  波特率是信号传递的速率,在二进制信号中其值等于每秒钟传送多少位二进数。在异步通信正常模式下波特率的计算公式为BAUD=fosc/16(UBRRH),式中fosc为单片机系统时钟频率。

  二、串口的应用实验

  本文通过两个实验来介绍串口的应用,两个实验都是计算机和ATmega8单片机串口通信的实例。

  实验一PC控制电源开关

  1.实验电路

  实验板上与本实验相关的电路见下图,这个实验是通过计算机对实验板上继电器K1、K2进行控制,即通过计算机用串行通信控制.ATmega8的(PD6、PD7)脚的输出状态。

  2.程序设计

  本实验的程序由上位机(计算机)程序和下位机(单片机)程序两部分组成。串口通信采用8位数据位,1位停止位,无校验位。波特率为9600。

  上位机程序是安装在计算机上的串口应用程序,主要作用是向RS-232C端口发送控制信号、接收和处理返回信号。上位机程序由笔者用VB语言编写,在编写和使用时均要使用MSComm通信控件。软件的界面如下图所示,当用鼠标单击某一开关按钮时,其上面的圆形指示灯状态就会发生变化,红色表示电源打开,黑色表示电源关闭,对应单片机控制的继电器也会发生相应的变化。程序界面上的串口指示灯作串口工作状态指示,串口通信正常时状态为绿色,反之为黑色。软件还可以对使用的串口进行选择。

    下位机程序如下:

  #include
  unsigned char temp:
  void mein(void)
  {
  DDRD=0xff;//设置D口为推
  挽1输出
  PORTD=0x00;
  OSCCAL=0xaa://校正内部RC
  振荡器频率,不同的芯片参数有差异
  UCSRB=0x18;//RXD、TXD4使能
  UBRR=51;//9600bit/s,8.0M
  UCSRC=0x86;//8位数据,1
  位停止位.无校验
  while(1)
  {
  while(!(UCSRA&0x80));
  等待接受完整
  temp=UDR;//接收数据
  PORTD=temp;//将数据输
  出至D口
  while(!(UCSRA&0x20));
  //等待移位寄存器空
  UDR=temp;//发送数据,
  让上位机检验串口是否工作
  }
  }[page]

于只有两路输出,因此实际上只要控制PD6、PD7就可以了。点击“开关1”按钮可以改变PD6的输出状态,点击“开关2”按钮可以改变PD7的输出状态。点击“全部开启”按钮PD6、PD7均输出高电平1;点击“全部关闭”按钮PD6、PD7均输出低电平0。PD6、PD7的输出电平决定继电器K1、K2的工作状态。

3.控制实验

  先将程序目标文件写入单片机,再接好串口通信线,通信线的接线方法见上图。打开实验板的电源,运行上位机程序文件夹中的电源开关控制器.exe可执行文件,如果出现缺少控件的提示,只先执行一下install.bat即可。点击上位机软件上的命令按钮,我们发现实验板上的发光二极管VD5、VD6发光状态会随之发生相应的变化,与之对应的继电器的工作状态也会发生相应的变化。

  如果我们把继电器的触点串联在电源插座上,再将家用电器的插头插在这个电源插座上就可以用计算机对家用电器的开关进行控制了。

  实验二串口通信

  1.实验电路

  实验板上与本实验相关的电路见上图,这个实验主要用来演示计算机与单片机收发字符串的实验。计算机通过软件“串口调试助手”将字符串发送给单片机,单片机将收到的字符串在LCD显示屏上显示,并自动将字符串回发给计算机。

  2.程序设计

  计算机上的程序使用“串口调试助手”,用来通过串口发送和接收字符串。这个实验中串口传递的是字符的ASC码,一个字符的ASC码正好是8位二进制数,所以一帧信号即可传递一个字符。        单片机程序中的主程序如下:

  void main(void)
  {
  uchar i;
  DelayMs(500);//启动等
  待,等LCD进入工作状态
  Init();//初始化
  while(1)
  {
  Display(O,O,RS_Data)
  ;//显示接收数据
  for(i=O;i<6;i++)
  {
  while(!(UCSRA&0x80))
  ;//等待接收完成
  .    RS_Data[i]=UDR;//接
  收数据
  }
  for(i=O;i<6;i++)
  {
  while(!(UCSRA&0x20));
  //等待移位寄存器空
  UDR=RS_Data[i];//发
  送数据
  }
  }
  }
程序中的数组Rs_Data[]用来存储接收和发送的字符串。RS_Data[]的初始值为RS_Data[]=“:Hello!”,接收和发送均使用循环语句,因为接收和发送的字符数为6个,所以循环次数为6次。
  3.通信实验
  用串口通信线连接好计算机和实验板后,接通实验板的电源,这时实验板LCD显示屏显示的是:“Hello!”。在计算机上打开串口调试助手软件,对串口按波特率9600、8位数据位、1位停止位、无校验设置。在发送区随便填写6个字符,比如abc123,点击“手动发送”按钮,我们会发现LCD显示屏显示:abc123(见题图),同时串口调试助手接收区也收到单片机回发的字符串,如下图所示。
关键字:ATmega8  异步串行通信  单片机 引用地址:单片机的异步串行通信功能和基本使用方法

上一篇:基于单片机利用无字库12864液晶模块自制日历
下一篇:ATMega16内部EEPROM存储器的应用

推荐阅读最新更新时间:2024-03-16 13:09

半导体推出新一代内置闪存的汽车微控制器
       多核微控制器让汽车系统拥有卓越的加密功能和安全性能,中国,横跨多重电子应用领域、全球领先的半导体供应商及汽车半导体领导供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)推出新款多核微控制器,旨在大幅提升汽车的安全性。新产品是首批采用意法半导体独有的40nm嵌入式闪存制造工艺的车用微控制器。        新款车用微控制器内置数据安全加密技术,符合最严格的汽车安全标准 ,为保存重要的程序和数据,还进一步提高了片上闪存容量。新产品的问市大幅强化了意法半导体的车用容错(Fault-tolerant)微控制器产品阵容。安全性至关重要的汽车微控制器应用系统包括发动机管理、变速器控制、防
[嵌入式]
51单片机串口收发设计的思考
  最近项目里面要用到51单片机做一些控制,主要功能是通过串口接收上位机的指令并进行分析解码,等待一个外部触发信号到来后执行之前接收的指令动作。正好手边有一片STC89C52,赶紧搭了个最小系统。STC89C52单片机可以通过串口下载程序,可是试了好几次都没有下载成功,仔细检查发现原来是9针串口线忘了接GND(地线)。顺便总结下STC单片机下载不成功的主要原因:   1、最小系统出问题(晶振对不对、复位电路对不对、引脚连线对不对);   2、电平匹配问题(一般是要加MAX232电平转换芯片的);   3、串口线(串口线质量也是很重要的)连得对不对(至少连3根线TXD、RXD、GND),包括发送接收的方向对不对;   4、下载操作步
[单片机]
51<font color='red'>单片机</font>串口收发设计的思考
ARM Cortex M3/M4微控制器最大效率设计三秘诀
  大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能技术也是处理器应用设计的有力工具,可提供:   ●更符合成本效益的解决方案   ●更大的升级和采用新特性的设计冗余   ●有助于产品在激烈竞争市场上脱颖而出的性能和特性   小知识:Cortex-M3对比Cortex-M4   Cortex-M3架构背后的指导思路是设计一种既要满足应用的成本效益又要提供高性能计算和控制1的处理器。类似的应用包括汽车车身系统、工业控制系统和无线网络/传感器产品等。M3系列为32位的ARM处理器架构引进了多项重要特
[嵌入式]
ARM Cortex M3/M4<font color='red'>微控制器</font>最大效率设计三秘诀
基于MSP430单片机的电桥平衡自调节设计
描述 本文设计的MSP430F2002单片机和MAX5402数字电位器所构成的电桥平衡自调节电路,具有结构简单、占用空间小、功耗低、可靠性高等特性,完全符合火炮膛压测试仪的要求。 1 电桥平衡自调节原理 在火炮膛压测试仪中,考虑到测试仪壳体结构的限制以及低功耗的要求,采用的电桥为1/4直流源电桥。电桥平衡自调节电路如图1所示。 图1 电桥平衡自调节电路图 左图为电桥平衡自调节电路工作原理。其中,R1为电阻应变计温度补偿片,R2为电阻应变计工作片,R1=R2=R3=R4=120 Ω,Uo为电桥输出电压,Io为恒流源。由电路理论计算可知: 若R2·R3-R1·R4=0,则电桥保持平衡。测量中电桥初始输出值一般不为零,这
[单片机]
基于MSP430<font color='red'>单片机</font>的电桥平衡自调节设计
怎样学会单片机?先学什么,怎么入门?
怎么学习单片机?我给大家分享一下我的单片机学习之路。 我的单片机可以说是自学的,过程有点曲折。 刚开始是啃理论,学习单片机的设计框架,内存、寄存器,GPIO口功能,定时器,单片机汇编语句等。 每天背概念,记理论,过了大概一个月,结果肯定就是一个懵逼的状态。 正在这个懵逼的时候,实验室的一个同学建议我先学C语言,再学习单片机程序开发,说汇编没有啥用。 我又花了2-3个月的时间学习了C语言,买了一本谭浩强的C语言教程,从头到尾抄笔记,抄完了几个笔记本,但这次更加迷茫。 因为大学里的学习,都要靠自己,老师没有太多的时间专门辅导你,而且自己又不是那种特别优质的学生,是得不到老师的特别眷顾,同学之间有存在一些比较幼稚的比较和竞争。可以帮助你
[单片机]
STM32F0单片机快速入门十: 用 SPI HAL 库读写W25Q128
1.W25Q128 介绍 当我们有比较多的数据需要掉电存储时,上一篇文章所介绍的 24C02 (256个字节EEPROM)就不够了。此时我们会用到另外一种类型的存储器,即 Flash。比如具有 SPI 接口的 W25Q128。这颗小芯片虽然也只有简单的 8 个引脚,但存储容量却达到了128M-bit,也就是 16M 字节,同时它的读写速度可以达到 66MB/S。但是由于 STM32F030 不支持 Quad/Dual SPI,只能以标准 SPI 方式读写,所以速度会低一些。以下是 W25Q128 的主要特点: 133MHz SPI Clock。 10万次擦写寿命,20年数据保持时间。 每颗具有64-Bit唯一序列号 Uni
[单片机]
STM32F0<font color='red'>单片机</font>快速入门十: 用 SPI HAL 库读写W25Q128
51单片机——串行通信
1 概述 通信的概念比较广泛,在单片机技术中,单片机与单片机或单片机与其他设备之间的数据传输称为通信。 1.1 并行通信和串行通信 根据数据传输方式的不同,可将通信分并行通信和串行通信两种。同时传输多位数据的方式称为并行通信。同时传输一位数据的方式称为串行通信。 如图1(a)所示,在并行通信方式下,单片机中的8位数据10011101通过8条数据线同时送到外部设备中。并行通信的特点是数据传输速度快,但由于需要的传输线多,故成本高,只适合近距离的数据通信。逐位传输数据的方式称为串行通信。 如图1(b)所示,在串行通信方式下,单片机中的8位数据10011101通过一条数据线逐位传送到外部设备中
[单片机]
51<font color='red'>单片机</font>——<font color='red'>串行通信</font>
基于51单片机的超声波发生器设计方案
  本设计的超声波发生器是利用单片机生成初始信号,然后经过一系列处理电路的作用后生成用来杀灭水蚤的超声波,成本低、效果好,可以在农业上加以采用。在此对3个模块进行设计:   (1)信号发生模块。12 MHz的8051单片机硬件连接及其程序设计。   (2)信号处理模块。驱动电路设计(CD4069非门集成芯片);倍频电路设计(S9014或ECGl08三极管、104普通电容、11 257.9 nH自制电感、1 kΩ电阻);整波电路设计(CD4069非门集成芯片);和频电路设计(CD4081与门集成芯片);选频电路设计(S9014或ECGl08三极管、104普通电容、112.58 nH自制电感、1 kΩ电阻)。   (3)信号检测
[单片机]
基于51<font color='red'>单片机</font>的超声波发生器设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved