avr单片机异步串行通信(usart)实验_第1页
avr单片机异步串行通信(usart)实验_第2页
avr单片机异步串行通信(usart)实验_第3页
avr单片机异步串行通信(usart)实验_第4页
avr单片机异步串行通信(usart)实验_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AVR单片机异步串行通信(USART)实验基于LT_MINI_M16513、电路本实例的电路包含RS323的串口电平转换芯片MAX3232,电路图如下图所示。1、电路原理在本实例中利用MAX3232芯片使单片机输出的TTL电平转换为标准的RS232电平,从而使计算机能够识别。同时将计算机输出的RS232电平转换为单片机可以识别的TTL电平。2、电路连接电路中MAX3232芯片的9、10引脚分别连接单片机的PD0、PD1端口,MAX3232的13、14引脚分别连接计算机串口线的3、2脚。3、特别说明本学习板采用的是串口插座是公头的,所以与计算机相连的串口连接线应该是交叉串口线,而不是串口延长线。514、程序设计1、程序功能程序的功能是使用单片机的串行接口PD0、PD1设计串口通信程序,通过单片机向计算机发送一个字节的数据。程序调试的时候需要在计算机上安装串口助手,以观察接收的串口数据。2、单片机与计算机串行通信结果的观察在本例中,只是简单的发送一个字节到计算机,由于单片机运行速度比较快,所以当程序烧写到单片机后再打开串口助手观察接收到的数据的时候,可能会看不到接收的数据,我们可以提前打开串口助手以便观察。也可以按一下学习板上的复位按键,这时候程序会重新运行,这样就可以在串口助手上观察到接收的数据了3、数据通信格式的设定要实现单片机和计算机的串行通信,首先要使双方的通信波特率和数据格式一致,这样才能观察到正确的结果。在本例中,单片机发送串口数据采用的波特率是9600BPS,数据格式是8位数据位,1位停止位,无奇偶校验。在计算机上的串口助手里面,我们也要将波特率和数据格式设置成一样的。4、关于串行数据发送函数的编写由于我们在这个实例中只是实现了从单片机发送一个字节的数据到计算机,所以编写起来相对比较简单。首先我们要设置好串口寄存器的内容,然后查询数据缓冲器是否为空,如果数据缓冲器为空,则表示可以发送数据,这时候我们就可以将要发送的那个字节写入数据发送寄存器中。5、程序的简单模块化从这个程序开始,我们试着将程序模块化。程序模块化有两个好处程序结构清晰,容易读懂。程序便于移植程序的模块化是一个系统的工程,在本实例中,我们先简单的把程序的不同功能封装成不同的函数,然后再主程序里面调用这些函数;这样编写出来的程序,主程序比较简洁,并且易读。而每一个函数都具有各自不同的功能,以后我们用到这些功能的时候,就可以直接调用这些函数了。本实例用到了3个函数,分别是端口初始化函数,串口初始化函数,字节发送函数。6、使用WINAVR开发环境,从这个例子开始,我们要使用外部晶振了,所以MAKEFILE文件中的时钟频率要修改一下,我们使用的是外部12M的晶振,所以需要将MAKEFILE文件中的时钟频率修改为12M。另外在程序烧录到单片机的时候,熔丝位也要选择为外部12M晶振(注意是晶振,不是外部振荡器,一定不要选择错了,否则会导致单片机不能再烧写程序。我今天就犯了这样的错误,最后只好用外部振荡器恢复了一下才把单片机弄正常了)。7、程序代码INCLUDEINCLUDEINCLUDE/中断函数头文件/常量声明DEFINEBAUD9600/波特率定义/全局变量声明UNSIGNEDCHARTRANSMIT/函数声明VOIDPORT_INITVOID/端口初始化配置VOIDUSART_INITVOID/USART寄存器设置VOIDUSART_PUTCHARUNSIGNEDCHARCTXDATA/字节发送函数INTMAINVOIDPORT_INITUSART_INITTRANSMIT0X31USART_PUTCHARTRANSMITSEI/使能全局中断WHILE1/端口状态初始化设置函数VOIDPORT_INITPORTD0X00/USART的发送接收端口分别为PD0和PD1DDRD|1INCLUDEINCLUDE/中断函数头文件/常量声明DEFINEBAUD9600/全局变量声明UNSIGNEDCHARTRANSMIT/函数声明VOIDPORT_INITVOID/端口初始化配置VOIDUSART_INITVOID/USART寄存器设置VOIDUSART_PUTCHARUNSIGNEDCHARCTXDATA/字节发送函数INTMAINVOIDPORT_INITUSART_INITTRANSMIT0X31USART_PUTCHARTRANSMITSEI/使能全局中断WHILE1/端口状态初始化设置函数VOIDPORT_INITPORTD0X00/USART的发送接收端口分别为PD0和PD1DDRD|1INCLUDEINCLUDE/中断函数头文件/常量声明DEFINEBAUD9600/全局变量声明UNSIGNEDCHARTRANSMIT/函数声明VOIDPORT_INITVOID/端口初始化配置VOIDUSART_INITVOID/USART寄存器设置VOIDUSART_PUTCHARUNSIGNEDCHARCTXDATA/字节发送函数VOIDUSART_PUTSTRINGUNSIGNEDCHARPCSTRINGINTMAINVOIDPORT_INITUSART_INITUSART_PUTSTRING“恭喜你马伟力“USART_PUTSTRING“你的串口程序调试成功了“SEI/使能全局中断WHILE1/端口状态初始化设置函数VOIDPORT_INITPORTD0X00/USART的发送接收端口分别为PD0和PD1DDRD|1PD1/PD0为接收端口,置为输入口;PD1为发送端口,置为输出口/USART寄存器配置函数VOIDUSART_INITUCSRA0X00UCSRC|1URSEL|1UCSZ1|1UCSZ0/异步,数据格式8,N,1/写UCSRC时,URSEL应设置为1。UBRRLF_CPU/BAUD/161256/波特率设置UBRRHF_CPU/BAUD/161/256UCSRB|1RXCIE|1RXEN|1TXEN/发送使能/字节发送函数VOIDUSART_PUTCHARUNSIGNEDCHARCTXDATAWHILEUCSRA/只有数据寄存器为空时才能发送数据UDRCTXDATA/发送数据送USARTI/O数据寄存器UDR/接收中断函数ISRUSART_RXC_VECTUNSIGNEDCHARREVREVUDR/从USARTI/O数据寄存器UDR中读出数据USART_PUTCHARREV/将接收到的数据发送VOIDUSART_PUTSTRINGUNSIGNEDCHARPCSTRINGWHILEPCSTRINGUSART_PUTCHARPCSTRINGUSART_PUTCHAR0X0DUSART_PUTCHAR0X0A/结尾发送回车换行附录异步通信异步通信就是采用异步传输方式实现数据交换的一种通信方式。那么什么是异步传输呢异步传输是一种面向字符的传输技术,它利用字符的再同步方式实现数据的发送和接收。主要特点是1、异步通信的发送端和接收端通常是由双方各自的时钟来控制数据的发送以及数据的检测和接收,发送、接收双方的时钟彼此独立、互不同步(这就是所谓的异步,而同步是指发送接收双方需要在同一个时钟控制下实现数据的收发)。2、发送端发送数据时,必须严格按照所规定的异步传输数据帧的格式,一帧一帧地发送,通过传输通道由接收设备逐帧的接收。那么在异步通信中,怎样实现数据同步呢也就是说,在发送端和接收端是依靠什么来协调数据的发送和接收呢关键在于,接收方如何才能正确的检测到发送端所发送的数据帧,并能够正确的接收数据。这除了要靠通信双方都要使用协议好的数据帧格式外,还需要另外一个重要的指标波特率。在异步通信中,发送和接收双方要实现正常的通信,必须采用相同的约定。首先必须约定最低层的、也是最基本的两个重要指标采用相同的传输波特率和相同格式的数据帧。首先,发送和接受方都必须采用相同的,约定好的串行通信波特率。确定波特率,其实就是确定数据帧中一个数据位的宽度。通信双方必须在约定好的相同波特率下工作。波特率的作用相当于是一个检测数据帧的“标尺”。波特率的定义每秒钟传送的二进制数据的位数,单位是B/S。通常情况下,异步通信所采用的波特率为1200的倍数,如4800,9600等,经常使用的波特率是9600当异步通信的波特率和数据帧格式确定后,发送方就按照规定的数据帧格式、规定的波特率发送数据帧。接收方则以传输线的空闲状态(逻辑“1”)作为起点,不停的检测和扫描传输线,当检测到第一个逻辑“0”出现时(起始位到达),知道一个数据帧开始了(此时就实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论