毕业答辩-监控系统中异步串行通信接口程序设计刘忠建.ppt

毕业答辩-监控系统中异步串行通信接口程序设计刘忠建.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
题目:监控系统中异步串行通信接口程序设计 学 院:电气与电子工程学院 专业班级:电气工程及其自动化 07级铁道电气化1班 学生姓名:刘忠建 同组成员:甘小圆 指导教师:申 惠 监控系统中异步串行通信接口程序设计 摘要 通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。 现代生产生活中,为了保证对系统可靠性越来越高的要求,采用了大量自动化设备来进行日常生产、管理和设备维修保养,既可以监控系统运转性能和进行故障预测,又可以为维修保养提供原始资料。随着自动化技术的发展和逐渐普及的自动化生产,越来越多的生产设备配备了与计算机进行数据交换的接口,利用计算机的强大处理能力对检测到的数据进行处理。串行通信因为其诞生时间早,使用简单方便,成本低廉,可以适应大规模长距离传输等多种特点,一直得到各个领域的广泛应用,尤其在工业自动化领域,大量的设备和系统采用串行通信方式进行信息交换。在应用中,异步串行通信应用较多,而通用异步收发器(UART)在其中起着至关重要的作用。 本课题就是就是针对UART的特点,利用C语言设计异步串行通信接口程序,在硬件调试中达到双方通信的目的。 关键词:异步串行通信;异步通信收发器;RS232标准;C语言 程序设计 作为系统的外设,异步通信适配器和中断控制器都有其对应的I/O 口地址,所以本文采用 C 语言函数库中的寻址函数 outportb ()和函数 inportb()对上述芯片进行直接读写操作。 参数说明: ComPortAddr 串口端口地址(COM1口是03F8,COM2口是02F8H) IntVectNum 中断处理号 Baud 波特率 Data 数据位位数 Stop 停止位位数 Parity 奇偶校验位(0无校验、1奇校验、2偶校验) 程序设计 初始化程序设计 中断服务程序 收发字符程序 主函数 初始化程序设计 初始化串行通信口编程的内容是:确定数据传输帧格式(包括数据位长度、停止位长度及有无奇偶校验和校验的类型)、确定传输波特率以及确定INS8250的操作方式。操作方式是指自发自收的循环反馈方式(用于诊断)还是通常的两点之间的通信方式,是程序查询方式传送还是中断方式传送(课题要求采用中断方式传送)。 初始化程序设计 首先定义串口初始化函数InitCOM()。 确定数据传输帧格式要用到通信线路控制寄存器 确定传输波特率要用到通信线路控制器和除数锁存器 确定INS8250的操作方式要用到调制解调控制寄存器和中断允许寄存器。采用中断方式,还必须对8259A芯片的中断屏蔽寄存器进行操作,开放IQR4的中断,即允许COM1口提出中断请求。 要进行初始化程序设计就必须利用寻址函数对所需寄存器进行读写操作 中断服务程序 中断服务程序,即从COM1口接收数据,可以首先定义interrupt far asyncint()函数,一个Buffer[]数组,读取字符到缓冲区,待缓冲区满后,再指针复位。在通过寻址函数对8259A的寄存器进行写操作,使中断结束 收发字符程序 接收字符程序 首先定义一个read_char()函数,用来读取缓存区里的数据,我们可定义两个变量buffin和buffout,buffin代表存储在缓存区中的数据个数,buffout代表已经从缓存区中读取的数据个数。通过这两变量的比较,确定缓存区是否还有未被读取的数据。当buffin不等于buffout时表示缓存区有未读数据,此时我们要读出缓存区数据并返回此值;当buffin与buffout相等,表示缓存区中无可读数据。 收发字符程序 发送字符程序 首先定义send_char()函数。通过对8250芯片的通信线路状态寄存器进行读操作来判断发送移位寄存器是否为空,如果为空,则把待发送的数据输出到发送移位寄存器;如果不为空,则等待。 主函数 首先调用初始化串口函数InitCOM(),设置一个屏幕提示信息,再判断键盘是否有动作。如果是,则读取键盘值存于Unchar参数中,再判断Unchar是否为Ox1B(ESC键键值),如果是则调用read_char()函数,如果不是,则屏幕输出键盘输入字符。如果键盘没动作,则调用read_char()函数,然后再判断是否有字符可读,有则读取,退出。没有则循环。 异步串行通信接口程序调试 单机测试方式 首先我们用Turbo C编

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档