AVR单片机串口USART与PC通讯实例,讲解原理和程序

2019-10-12来源: eefocus关键字:AVR  单片机  串口  USART  通讯实例

“并行”通讯:是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。


“串行”通讯:形容一下就是 一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不是并口快,由于8位通道之间的互相干扰。传输时速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输重发一位就可以了。所以要比并口快。


串行通讯协议较多,单片机常用的有USART,SPI,TWI,1-Wire 等。

串行通讯有分为同步和异步通讯:通俗讲 同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉


你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。


同步通讯:收信发信双方在使用同步时钟,在同一时刻传输线上的数据就是要传输的信息。


异步通讯:以字符为传输单位,字符与字符之间是异步的,而字符的位是同步的

USART:异步串行通讯,常用与单片机和单片机,单片机和PC电脑间的数据传输。


波特率:表征通讯速度的参数,单位是位/秒(b/s),即每秒钟传输的二进制位数,如 波特率9600,表示每秒钟传输9600个二进制位数据。收发双方必须采用同样的波特率。波特率不同将无法正常通讯。


全双工通讯:指是的是可以同时发送和接收数据。

半双工通讯:指的是在同一时刻只能发送或只能接收数据。


单片机与PC通讯的电平转换:单片机的电压一般是TTL电平,电压0v-5v,PC机串口采用的是RS-232协议,它的的电压范围是-15-+15v, 电平不同,无法通讯。要实现通讯,必须进行电平和逻辑关系的转换,一般用MAX232集成芯片进行电平的转换。


ATmega16 串口结构:有一个全双工的串行口,有两条通讯线,TXD:数据发送线,RXD:数据接收线,对应的单片机外部引脚为PD1,PD0


相关寄存器:

UDR  串口数据寄存器,

UCSRA   串口控制与状态寄存器A

UCSRB   串口控制与状态寄存器B

UCSRC  串口控制与状态寄存器C

UBRRH,UBRRL  波特率寄存器 


发生器对波特率发生器的输出时钟进行2、8或16 的分频,具体情况取决于工作模式,如下图:



如:系统时钟频率f=8MHZ,异步正常模式(16分频),波特率9600


则: UBRR=8000000/16*9600-1=52-1=51;   波特率寄存器赋值:UBRRH=0;  UBRRL=51;


操作步骤:


一、设置异步模式: UCSRC|=(1<


二、设置数据帧格式: 8位数据位,一位停止位,UCSRC|=(1<


三、设置波特率寄存器: UBRRL=51;UBRRH=0;


四、使能发送接收:         UCSRB|=(1<


五、 中断总使能: SREG=0X80;


//函数功能:通过PC 串口向单片发送数据,单片机接收数据后,送到PA口显示,再送回到PC机


单片机源程序如下:

  1. #include

  2. #include

  3. #define fosc 8000000  //晶振8MHZ

  4. #define baud 9600     //波特率定义

  5. /*端口初始化函数*/

  6. void  init(void)

  7. {

  8. PORTA = 0xFF;   //PA口输出高电平

  9. DDRA  = 0xFF;  //PA口 设置为输出 

  10. PORTD = 0X00;       //USART的发送接收端口分别为PD0和PD1

  11. DDRD|=(1<

  12. }

  13. /*串口初始化函数*/

  14. void uart_init(void) 

  15. {

  16. UCSRB = 0x00;

  17. UCSRA = 0x00;

  18. UCSRC |= (1<

  19. //UCSRC寄存器与UBRRH寄存器共用相同的I/O地址,写 UCSRC时,URSEL应设置为1。

  20. UBRRL=51;      //设置波特率寄存器

  21. UBRRH=0;

  22. UCSRB |= (1 << TXEN)|(1 << RXEN);    //发送接收使能 

  23. }

  24. /*发送数据函数*/

  25. void send(unsigned char i)

  26. {

  27. while(!(UCSRA&(1<

  28. UDR=i;

  29. }

  30. /*以下是接收数据函数*/

  31. unsigned char  receive(void) 

  32. {

  33. while(!(UCSRA&(1<

  34. return UDR;

  35. }

  36. /*主函数*/

  37. void main(void) 

  38. {

  39. unsigned char temp;

  40. init();

  41. uart_init();

  42. while(1) 

  43. {

  44.   temp=receive();    //接收数据

  45.   PORTA=~temp;      //将接收的数据取反后送PA口显示   

  46.   send(temp);     //向PC机发送数据

  47. }

  48. }


关键字:AVR  单片机  串口  USART  通讯实例 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476951.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVRWARE++开发笔记1:综述
下一篇:分享:LCD1602温度检测显示程序(ATmega16)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

​Ritu Favre​就任NI半导体​业务​高级​副总裁​和总经理
美国国家仪器(National Instruments,NI)宣布任命Ritu Favre为高级副总裁兼半导体业务总经理。她将负责制定NI在半导体行业的战略方向,推动业务增长并定义满足客户所需的产品、服务及功能。 NI总裁兼首席运营官Eric Starkloff说道:“Ritu在半导体行业拥有超过25年的经验,对我们的目标市场和客户有深刻的理解。她是一位经验丰富的领导者,善于帮助团队取得成功。半导体行业正处在强劲的上升期,我们期待Ritu丰富的工作经历和经验将给我们的半导体业务带来重大影响。” Favre此前在RF和半导体行业具有丰富管理和领导经验。曾经担任过指纹传感器供应商NEXT Biometr
发表于 2019-08-21
​Ritu Favre​就任NI半导体​业务​高级​副总裁​和总经理
共商物联网发展,AVR-IoT 在线研讨会即将开幕
专注于引入新品推动行业创新的电子元器件分销商贸泽电子(Mouser Electronics)宣布将联手Microchip Technology(美国微芯科技公司)于7月16日举办“AVR-IoT开发板-简化物联网云连接设计的起点”在线研讨会。本次研讨会邀请了微芯科技MCU8产品应用工程经理,通过介绍AVR-IoT WG开发板和演示如何快速构建连接阿里云的动手操作,帮助工程师们了解如何通过该开发方案解决物联网应用中所面临的问题。  物联网的应用领域涉及到方方面面,在工业、农业、环境、交通、物流、安保等基础设施领域都有应用,有效地推动了各领域的智能化发展,而云平台连接的加入可以使用户随时随地获取所需信息,使得安
发表于 2019-07-15
共商物联网发展,AVR-IoT 在线研讨会即将开幕
AVRWARE++开发笔记1:综述
    从今天开始撰写AVRWARE++开发笔记,用以使用AVRWARE++程序架构,对Atmel公司的AVR系列单片机进行快速开发。对于开发笔记的任何问题,大家都可以进行留言探讨。    1、简介    AVRWARE++是一套开源的基于层次化软件设计思想的,用于Atmel公司AVR系列单片机开发的软件架构。相比较其它的软件架构,其具有的特点在于:    a、采用层次化软件设计思想进行单片机程序设计;    b、完备的单片机内部外设驱动程序库;    c、可扩展的单片机外部芯片(模块)驱动程序库; 
发表于 2019-07-13
AVRWARE++开发笔记1:综述
AVRWARE++开发笔记2:开发环境的建立
        本文详述AVRWARE++开发环境的建立方法,其主要开发软件有两个:Atmel Stdio和PROGISP。    1、Atmel Studio 6的系统需求    安装集成开发环境Atmel Studio 6,必须满足最小的硬件和软件要求,才能确保编译器以及其它程序功能的正常,应该具有:    a、Pentium-IV或兼容处理器的微型计算机,主频2.0GHz,内存512MB;    b、Windows XP/Win7操作系统;    c、1G硬盘空间; 
发表于 2019-07-13
AVRWARE++开发笔记2:开发环境的建立
AVRWARE++开发笔记3:III型测试板硬件原理
        本文只针对于初学者,高手请绕过!        AVRWARE++现有三种测试板供用户对软件架构进行评测,分别为I型、II型和III型,本文针对III型测试板,进行硬件原理介绍。    III型测试板相对于I型和II型来说,是一个简化版本,采用USB直接供电,具有以下模块:    a、蜂鸣器(长音);    b、8路直接I/O控制LED;    c、24路74HC595串行控制LED;    d、8路直接I/O键盘输入
发表于 2019-07-13
AVRWARE++开发笔记3:III型测试板硬件原理
AVRWARE++开发笔记4:调试III型测试板
电压档测量电容C2和C4两端电压,应为4.8V-5.2V之间,如果不在这个范围内,应立即断电。高于5.2V,考虑USB手机充电器问题,可以更换一个;低于5.2V,在排除USB手机充电器问题后,还应考虑是否存在短路问题,按“1”中所述的方法,再排除。     3、熔丝位烧写    a、启动PROGISP软件,正确连接下载器和目标板,选择Atmega168PA,点击“RD”按钮,一切正常的话,应在提示栏中看到正确提示。      b、点击“...”按钮,打开“Fuse&Lock”对话框,选择“向导方式”。   
发表于 2019-07-13
AVRWARE++开发笔记4:调试III型测试板
小广播
何立民专栏 单片机及嵌入式宝典

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

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