异步串行通信文档.docx

上传人:叶*** 文档编号:35574583 上传时间:2022-08-22 格式:DOCX 页数:31 大小:503.29KB
返回 下载 相关 举报
异步串行通信文档.docx_第1页
第1页 / 共31页
异步串行通信文档.docx_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《异步串行通信文档.docx》由会员分享,可在线阅读,更多相关《异步串行通信文档.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实践教学 兰州理工大学计算机与通信学院年秋季学期 通信系统综合训练 题 目: 数字基带信号异步串行通信系统设计 专业班级: 通信级班 姓 名: 黄 亮 学 号: 指导教师: 彭清斌 成 绩: 摘 要本次课程设计是对利用机与单片机串口实现异步通信的仿真实现,单片机端采用 编写芯片程序,端则使用组建应用程序,两端均能通过串口发送和接收上位机或下位机传输的数据。端运行串口应用程序发送数据后,单片机端会接收并回传已经接收到的数据,以此验证通信成功;单片机端发送数据后,端会直接在串口应用程序的接收窗口显示出来。关键词:异步通信;串口;程序目 录前 言.基本原理单片机简介定时器计数器单片机中断串口通信.系

2、统设计单片机端串口通信设计计算机端串口通信设计.仿真与实现单片机端程序仿真计算机端程序仿真虚拟串口工具的使用参考文献总 结附 录前 言使用串口通信是各式各样的设备和计算联机的最简单的通信方式。在工程应用中,常常由一台机和一台单片机构成主从式计算机测控系统。在这样的系统中,以单片机为核心的智能测控仪表(从机)作为现场测控设备,完成数据采集,处理和控制各种任务,同时将信息传送给机(主机),机将这些资料加工处理后,进行显示,打印,报表等,也可以各种控制命令传送给单片机,干预单片机系统的运行,从而充分发挥机的优势。由于单片机与联机系统的广泛应用,从而衍生出一系列由单片机端和端串口通信产生的难题,工业上

3、对此领域的技术突破很快,学术上也有相当高层次的理论,不过对于高校学生而言,立足于实际应用并深入理解原理与过程才是收获知识最好的途径。对于单片机端来说,烧写至单片机中的程序很大程度上决定了单片机在一个完整系统中所扮演的角色,除了一些硬件上的初始设定与其自动清零的一些端口,大多数端口与引脚都可交由软件即写入的控制代码来管理, 是一个很方便且应用极广的单片机仿真软件,此软件可以在硬件连接之前就看到整个单片机运行后的状态,对于调试非常有用;对于端来说,编写一个可以打开串口并利用串口进行通信的应用程序就是全部的工作,同样用语言,可以用工具很快地完成。现代的台式计算机一般会自带串口,而笔记本大多已经摒弃,

4、在计算机串口与单片机串口之间,也需要加上电平转换电路才能正常工作,因为两者的工作电压并不一样。对于没有串口的计算机而言,虚拟串口就变得非常有必要,此类工具操作简单,且十分实用,在此系统中也扮演着相当重要的角色。.基本原理单片机简介单片机(,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器、数据存储器、程序存储器、定时器计数器和各种接口电路。系列单片机的基本结构见图。时钟电路定时器计数器并行接口串行接口中断系统图单片机基本结构图是系列单片机中的一个产品。系列单片机是公司推出的通用型单片机。它的基本型产品是、和。这个产品只是片内程序存储器的制造工艺不同。的片内程序存储

5、器为掩膜型的,在制造芯片时已将应用程序固化进去,使它具有了某种专用的功能;片内无,使用时需要外接;的片内是的,固化的应用程序可以方便地改写。以上个器件是工艺的。此外低功耗基本型的工艺器件,和等,分别与上述器件兼容。具有低功耗的特点,如功耗约为,而的功耗只有。除片外 类型不同外,、 和 的其他性能完全相同。其结构特点如下:u 位 u 片内振荡器与时钟电路u 根 线u 外部存储器 和 寻址范围 u 个 位的定时器计数器u 个中断源, 个中断优先级u 全双工串行口u 布尔处理器定时器计数器定时器计数器简介定时器计数器(,以下简称)是单片机中最基本的接口之一,它的用途非常广泛,常用于计数、延时、测量周

6、期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速、位移、速度、流量等物理量的测量,通常也是由传感器转换成脉冲电信号,使用来测量其周期或频率,再经过计算处理获得。系列单片机至少有两个位内部定时器计数器(,),提供了个定时器,其中两个基本定时器计数器分别是定时器计数器()和定时器计数器(),另外一个是定时器计数器()。它们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数输入引脚的脉冲信号,则它是计数器。定时器计数器寄存器1) 定时器的定义与配置n 计数寄存器和是位的,计数寄存器由高位和低位构成。在特殊功能寄存器()中,对应为和;对应为和。定

7、时器计数器的初始值通过和设置。n 定时器计数器控制寄存器表 控制位、:、启动控制位、:启动计数、:停止计数n 的方式控制寄存器表 控制位:计数器或定时器选择位:设置为计数器:设置为定时器:门控信号:的启动受到双重控制,即要求和同时为高:的启动仅受或者控制 和 :工作方式选择位表 工作方式选择位功能 位定时器计数器, 存低 位, 存高 位 位定时器计数器常数自动装入的 位定时器计数器仅适用于 ,两个 位定时器计数器2) 定时器计数器的初始化在使用系列单片机的前,首先要对和寄存器进行初始化,同时还必须计算定时的时间(重点)。()确定的工作方式:配置寄存器。()计算的计数初值,并赋值给和。()若以中

8、断方式工作时,必须配置寄存器内与的值。()启动。定时器计数器工作方式定时器计数器和定时器计数器都可以在方式、方式、方式工作,而方式只有前者才能工作。1) 方式 当中、都为时,工作在方式。方式为位的,由提供高位,提供低位,注意的高位是无效的,计数溢出值为的次方,启动该计数器需要设置好计数初值。当该位为时,为定时器,振荡源分频的信号作为计数脉冲;当该位为时,为计数器,对外部脉冲输入端的或引脚进行脉冲计数。计数脉冲能否加到计数器上,受启动信号的控制。当时,只要,则启动;当时,启动信号受到与的双重控制。启动后立即加计数,当位计数满时,向高位进位。此进位将中断溢出标志置位即,产生中断请求,表示定时时间或

9、计数次数到达。若开中断()且开中断(),则当自动转向中断服务函数时,自动清零,不需要人工软件清零。2) 方式 当中、为、时,工作在方式。方式与方式基本相同,唯一不同的是方式是位计数方式,方式是位计数方式,和都同时提供位(方式时只提供低位,高位无效),计数溢出值为的次方。3) 方式 当中、为、时,工作在方式。方式是位的可自动重装载的,满计数值为的次方。在方式和方式中,当计数满后,若要进行下一次定时计数,必须通过软件向和重新装载预置计数值。方式中和被当作两个位计数器。技术过程中,寄存位初值并保持不变,由进行位计数。计数溢出时,除产生溢出中断请求外,还自动将中初值重装到,即重装载。除此之外,方式也同

10、方式。4) 方式 方式只适合于。当工作在方式时,和成为两个独立的计数器。这时,可作定时器计数器,占用在和寄存器中的控制位和标志位;而只能作定时器使用,占用的资源和。在这种情况下,仍可用于方式,但不能够使用中断方式。只有将用作串行口的波特率方式器时,才工作在方式,以便增加一个定时器。单片机中断中断源系列单片机支持的个中断源分别为外部中断、定时器计数器中断、外部中断、定时器计数器中断和串口中断,单片机,比系列单片机增加了定时器计数器中断,基于标准 的单片机同样支持定时器计数器中断,更增加了外部中断和外部中断的支持,如下表,虽然单片机增加了个外部中断源,但是对于封装单片机没有引出引脚,如果条件允许的

11、话当然最好使用、封装的多出了口,其中两个引脚含有第二功能即提供外部中断、外部中断的支持。表 中断源与中断号中断源中断号外部中断 定时器计数器 中断外部中断 定时器计数器 中断串口中断定时器计数器 中断(仅 )外部中断 ( 单片机)外部中断 ( 单片机)平时写中断服务函数的中断源与中断号一定要一一对应起来,否则不能正确地进入中断服务函数,例如:在系列单片机的中断系统有多个中断请求触发器,并实现显示当前中断请求,显示的方式是用标志位来显示,并锁存在特殊功能寄存器和。当某一个中断被触发时,同时为了了解哪一个中断源产生了中断请求,我们可以通过查询特殊功能寄存器和的相应的位锁存。1) 定时器控制寄存器

12、从定时器控制寄存器可以知道,关于外部中断相关的内容也放到定时器控制寄存器当中,有点像“大杂烩”,不过从资源控制的角度来讲,这是没有办法的事情。的位是与定时器计数器相关联的,总共占用率了个(位),那么剩余个(位)不加以利用就会做成浪费,那么用来摆放外部中断相关的内容也是合情合理的。u 、:定时器计数器、溢出中断标志位。当定时器计数器、计数溢出时,有硬件置位,即;当相应中断时,由硬件清除,即;。u 、:外部中断、请求标志位。当外部中断、依据触发方式满足条件产生中断请求时,由硬件置位,即;当响应中断时,由硬件清除;u :外部中断触发方式选择位,由软件设置。:下降沿的触发方式;:低电平的触发方式;2)

13、 串行口控制寄存器 表 控制位u :串行口接收中断请求标志位当串行口接收完一个字节的数据后请求中断,由硬件置位,即 注意: 必须软件清除,即 u :串行口发送中断请求标志位当串行口发送完一个字节的数据后请求中断,由硬件置位,即 。注意: 必须软件清除,即 。中断控制中断的控制主要实现中断的开关管理和中断优先级的管理。这个管理主要通过对特殊功能寄存器和的编程实现。1) 中断允许控制寄存器( )表 控制位u 开关全局中断控制位: 开全局中断: 关全局中断u 、:定时器计数器中断允许位 :、 中断允许 :、 中断禁止u :串行口中断允许位 :串行口中断允许 :串行口中断禁止u 、:外部中断 、 的中

14、断允许位 、:外部中断 、 中断允许 、:外部中断 、 中断禁止中断服务函数中断服务函数:当有中断请求时,程序运行转移到标记有“”关键字的函数内进行相关中断的处理。开发环境中,中断请求的处理过程是以函数的方式来实现的,即中断服务函数,它的格式如下: 函数名() 中断号 工作组中断服务函数内容;例如: () 中断服务函数(); 计数寄存器高位重新载入();计数寄存器低 位重新载入 ; 进入位移操作,熄灭相对应位的 ; 自加 注意: 工作组可以忽略不写,而寄存器工作组有 组( )。默认使用寄存器工作组 。即 () 串口通信串口基本概念是目前最常用的一种串行通讯接口。它是在年由美国电子工业协会()联

15、合贝尔系统、调制解调器厂家与计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备()”和“数据通讯设备()之间串行二进制数据交换接口技术标准”。传统的接口标准有根线,采用标准芯型插头座。后来的上使用简化了的芯型插座,芯插头座已很少采用。现在的台式电脑一般有一个串行口:,从设备管理器的端口列表中就可以看到。硬件表现为计算机后面的针形接口,由于其形状和针脚数量的原因,其接头又被称为接头。现在有很多手机数据线或者物流接收器都采用口与计算机相连,很多投影机,液晶电视等设备都具有了此接口,厂家也常常会提供控制协议,便于在控制方面实现编程受控,现在越来越多的智能会议室和家居建设都采用了

16、中央控制设备对多种受控设备的串口控制方式。 图 实际串口图电路图中的串口目前较为常用的串口有针串口()和针串口(),通信距离较近时(?接收完毕?发送完毕?等待中断结束图单片机端程序流程计算机端串口通信设计1) 计算机端程序是由编写的带一个简单图形界面的软件,实现的功能也很单一,只有发送与接收功能,并不能直接通过界面来设置串口的一系列参数。相对单片机端程序的收发均实时而言,此程序的接收是实时监测的,发送则是要点击按钮才能触发。2) 计算机端程序流程图如下。开始初始化串口检测缓冲区内容是否大于一字符?读取缓冲区按钮响应?发送至串口添加至接收窗口返回等待结束是否否是图 计算机端程序流程.仿真与实现单

17、片机端程序仿真1) 安装好 后,运行软件。选择菜单栏中的“工程()”并点击其子菜单中的“新建工程( )”,建立工程。注意:工程文件须与工程所在目录同名;图 新建工程文件图 工程文件命名2) 工程创建后,选择系列芯片中的芯片。因为芯片的兼容性,也可以选择其他系列的芯片,或者芯片也可,唯一的区别就是在写核心代码文件时所引入的头文件可能有所不同;图 选择工程所用的芯片3) 工程创建完毕后,选择菜单栏中的“新建文件()”创建程序代码文件,并保存为。注意:代码或者配置文件保存时须加后缀名,否则软件无法识别;图 保存程序代码文件4) 代码文件创建后,右键点击工程的资源文件,并选择“添加已经存在的文件至工程

18、( )”,将编写的代码文件添加至工程。注意:如没有特殊需要,一个工程文件只能有一个核心代码文件,多个文件并存将导致无法编译的后果;图 添加代码至工程文件5) 代码文件添加后,工程的大致架构已经成型,此时可以编译文件,如果代码没有语法错误,组建窗口会提示无错误,代表程序已经通过编译,可以运行;图 编译程序代码6) 程序代码编译成功后,可在菜单栏中点击“”或者点击快捷键进入调试状态,此时可以选择“视图()”将所需要的视图窗口调出来,此处所需要的视图主要是“串口窗口( )”;图 调出串口视图7) 右键点击工程文件,选择“ ”,将晶振频率修改或。提示:设置时,单片机时钟周期刚好是,易计算,设置时,可以

19、获得精确的波特率;图 调整晶振频率8) 将设置对话框切换至“调试()”选项卡,将初始化文件( )设置为调试文件(自行编写)。此调试文件的意义在于运行此程序时,可将计算机的串口绑定至软件仿真的单片机,以便软件之间的调试;图 载入调试文件9) 将设置对话框点击确定()保存配置,并进入调试状态,可以看到初始化文件得到执行,设置了波特率并绑定到计算机的串口()。注意:如果没有调试文件或者没有在调试时输入初始化命令,那么软件之间的调试将不能进行,因为不绑定串口意味着不能在串口之间发挥此程序的功能;图 进入调试状态10) 点击菜单栏中的“调试()”并点击其子菜单中的“运行()”,此时可以运行计算机端的串口

20、通信程序,输入将发送的信息,点击“发送”,可以看到软件仿真的串口视图中已经接收到计算机端传来的数据,并回传给计算机端的应用程序;图 单片机端接收数据11) 前面已经实现接收数据,现可在串口视图中输入将要从单片机端发送的数据,可以看到计算机端的串口通信程序实时显示了单片机端发送过来的数据;图 单片机端发送数据计算机端程序仿真1) 安装好后,运行软件。选择菜单栏中的“文件”并选择其子菜单中的“新建”,点击工程选项卡,新建一个名为“”的 工程,步骤选择基本对话框,之后的步骤皆可默认下一步;图 创建工程 图 选择基本对话框 图 默认选择标准图 默认选择控件 图默认选择 图 选择确定2) 工程创建完成后

21、,会出现如图的对话框,接下来设置对话框的属性,修改其值与标题名。其为,标题为,也可修改对话框的字体,使字体稍大一些;图 主对话框界面图 设置对话框属性图 设置对话字体大小3) 开始添加组件,包括两个静态文本,两个编辑窗口,一个按钮。注意:其中编辑窗口分别为:,必须准确,以便代码中识别绑定;图 添加组件示例图 添加组件示例图 对话框最终效果4) 点击菜单栏中的“工程”并选择“增加到工程”子菜单,点击 ,开始添加控件,本程序只用一个控件,即串口通信控件,即选择 ,然后选择 添加;图 添选控件图 选择控件5) 通信控件添加后可以发现工具栏末端多了一个类似电话的图标,即控件,将此控件添至对话框,完成对

22、话框所有的组控件配置;图 添加控件后的对话框6) 右键点击对话框,在弹出的快捷栏中选取“建立类向导”选项,切换选项卡至“ ”即添加成员变量,双击组控件名称,为其添加变量,如图所示效果。注意:成员变量尽量遵循编程命名规则,即用意义明显的标识符来命名变量;图 为对话框添加成员变量7) 点击工作区底部的视图选项卡,切换至“文件视图()”,双击,在()子函数的“:”下添加初始化串口的代码;图 找到代码中的初始化函数图 添加初始化串口的函数8) 回到工作区,切换至“资源视图()”,右键点击对话框,打开类向导,在 选项卡中在 中双击,弹出一个子对话框,点击确定后可进入控件事件响应函数的编写,用同样的方法在

23、此子函数中添加代码;图 建立通信控件事件响应函数图 添加通信控件事件响应代码9) 同上在类向导中建立“发送”按钮的事件响应函数,即双击 中的,并添加相应代码;图 添加按钮事件响应函数10) 组控件与代码都完成后,可点击菜单栏中的“组建”依次选择其子菜单中的“编译”“组建”“执行”,完成本程序的创建;图 编译并执行程序11) 程序创建完成后会在工作区文件夹下的“”文件夹下生成相应的应用程序,修改()子函数中的()中的数值,可以配置此程序打开的串口号,由此生成绑定两个串口的应用程序,两者可互通,效果见图,也可与单片机仿真软件 进行联调,效果可见图;图 两程序可利用串口互相收发数据虚拟串口工具的使用

24、1) 由于计算机一般只有一个串口,或者类似笔记本直接没有串口,串口通信就成了空话,故而本次课程设计需要在计算机端虚拟两个串口以便仿真;2) 安装软件,即 ,运行软件并添加一对串口与,此时添加的两个串口已经相互连接,相当于一条串口已经连接上了,在计算机的设备管理器中可以看到效果;图 虚拟一对串口图 设备管理器中出现的串口3) 在单片机端程序与端程序编写完成的情况下,可以利用虚拟的串口来实现串口通信。效果可以见两者仿真的截图。参考文献 胡伟. 单片机程序设计与应用实例. 北京:人民邮电出版社 韩毅刚.计算机通信技术. 北京市:北京航空航天大学出版社, 李朝青. 单片机与机网络通信技术.北京:北京航

25、空航天大学出版社, 总 结这次针对单片机端与端串口通信的课程设计,工作主要分为两部分,一部分在于硬件,一部分在于软件。就硬件而言,由于实际准备得不足,在电路上缺少了电平转换芯片,导致计算机串口与单片机串口并不能连接通信,因而只能在软件将其电路图仿真出来,并没有连接实际电路,这是缺陷;但就软件而言,就比较成功,软件设计也分为两部分,单片机端程序与计算机端程序,利用软件和编写的两段程序之间能够完美互通数据。此次课程设计主要的难题其实也就集中软件方面,两端程序的编写是否成功决定了在理论上是否能够用串口通信。单片机端程序中难点在于各种串口相关的标志,例如发送中断标志,接收中断标志,定时器工作方式等,只

26、有在程序初始化中将单片机的状态调试好,才能实现收发数据功能;计算机端程序中难点在于对于的不熟悉,虽然有不少可以参考的程序代码,但其中出现的错误会让门外汉束手无策,只有修正之后才能真正运行。通过这次课程设计,我学到了很多关于单片机编程的知识,更是深入了解了单片机端与端串口通信的原理。在有了理论基础的情况下,动手实践就成了一件并不困难却势在必行的事情,而动手实践本身又会加强对理论的理解。两者相辅相成,就会形成一股推动实践者前进的力量,也正是这股力量,才使得我们能够在未来的路上越走越远。附 录.在需要插入的代码:初始化串口();选择();以二进制读取数据();多于一个字符触发事件();接收缓冲区全部

27、内容()事件值为,表示缓冲区有字符();读取缓冲区;变量转换为变量();得到有效数据长度();转换为数组()将数组转换为 *(*)();转换为字符;加入接收窗口的字符串();更新编辑框内容();发送数据2. 单片机端的核心程序: ; 设置定时器 ; 设置波特率 ; 设置工作方式,波特率可变,由定时器决定 ; 允许接收 ; 中断开关开 ; 启动定时器 ; 允许串行接口中断 (); 初始化串口的子函数 () 等待中断 () 中断函数,串口中断号 () 串口接收数据完毕后会申请中断,由硬件置,处于不能接收的状态,故须软件清方可接收 ; 接收中断标志置,等待接收 ; 自行判断,若有输出,则判定为接收,将缓冲区的信息存入自定义变量 ; 若有输入,则判定为发送,将发送的信息送入缓冲区 (); 串口发送数据完毕后会由硬件置,处于不能发送的状态,故须软件清方可发送 ; 发送中断标志置,等待发送 3. 单片机端的调试配置文件:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁