基于虚拟仿真软件的单片机串行通信系统设计
2015-08-26唐敏
唐敏
(大连职业技术学院 辽宁 大连 116037)
目前,高职院校的单片机课程教学多是采取“理实一体化”的形式,在理论教学环节中,要求学生掌握相应的单片机理论知识,在实践教学环节中,要求学生能够应用所掌握的理论知识完成设计要求。 两个环节相辅相成,互为支撑。 但是,在实际教学过程中,2 个环节都存在一些问题[1]。理论教学中存在 “硬件内部结构不好讲”、“软件控制过程不好讲”和“扩展应用连接控制不好讲”3 个问题。实践教学中存在“实验台局限”、“实践场地局限”和“单片机种类局限”3 个问题。 由于上述存在的问题,很大程度上限制了学生的设计能力。
为了解决上述理论和实训教学中的问题,在教学过程中引入仿真软件,一方面为单片机课程教学提供便捷的实训环境,并能更好地展开教学,使教学中的难点和重点直观的讲解,便于同学们理解单片机的理论知识;另一方面,为学生自学提供了便捷的实训环境,不仅使学生掌握目前企业主要使用的软件,自己构建企业实际单片开发环境,还可以通过软件的使用理解单片机的知识,并进一步提高自己应用单片机的能力,这样也能更好系统的掌握开发方法,增强自己的实践能力,培养科学研究的兴趣,并通过对系统的调试,增加学生分析问题、解决问题的能力。
以设计开发一个基于单片机的双向串行通信控制教学系统为例。 学生可以通过该系统了解串行通信协议的相关原理和应用。在该控制系统中,通过PROTEUS 仿真软件搭建系统的硬件平台[2],再通过KEIL 软件编辑和编译系统的软件代码[3],从而实现两个单片机之间双向数据串行通信[4]系统的设计。 为了使系统功能更加完善,系统中还能显示发送和接受的数据, 也可以通过PROTEUS 仿真软件示波器观察测试通信过程。 通过示波器测试数据波形,能够很好理解通信协议中有关数据格式的规定,通过示波器测试的管脚电压波形变化, 能够很好理解通信协议中有关发送接收动作的规定,从而更好地理解串行通信协议[5]。 并能够以此进行多机通信的扩展,也可以进行其他通信协议的扩展。
1 串行通信教学系统的总体设计方案
根据单片机串行通信控制教学系统的要求,将整个系统按照功能划分为控制模块、通信模块、显示模块和测试模块4个部分。 如图1 所示。
图1 串行通信教学系统的设计框图Fig. 1 Structure diagram of the serial communication teaching system
其中控制模块主要是2 个单片机, 作为系统的核心部件,完成电源控制、时钟控制和复位控制;通信模块是2 个单片机之间的连接部分, 主要构成数据发送通道和接收通道,负责数据的双向传送;显示模块是LED 显示器件,每个单片机侧都有发送数据显示部分和接收数据显示部分,主要用于显示将要发送的数据和接收到的数据; 测试模块是PROTEUS 软件自带的仿真示波器, 主要负责测试通信数据格式和通信动作时序。
2 基于Proteus 仿真软件搭建硬件平台
使用Proteus 仿真软件, 根据不同功能模块的要求搭建仿真的硬件平台。 具体如图2 所示。
图2 串行通信教学系统的硬件电路图Fig. 2 Hardware of the serial communication teaching system
首先,进行控制模块的硬件设计。 主要选择器件,根据该教学系统中存储空间和通信引脚的要求, 选择AT89C51,内部ROM 有4 k 字节,内部RAM 有128 字节,有一个全双工的UART 端口。 电源采用+5 V,时钟电路外接12 MHz 晶振,在RST 引脚上引起2 个机器周期之上的高电平可以复位单片机。
第二步,进行通信模块的硬件设计。 全双工双向通信是不能共用数据通道的, 因此需要搭建专门的双向数据通道。发送数据的单片机将数据通过TXD 引脚发送, 经过数据通道,传送到接收数据的单片机的RXD 引脚。 发送数据的单片机作为主设备控制发送的数据和动作。 2 个单片机可以交替进行数据的发送,从而实现双向串行数据通信。
第三步,进行显示模块的的硬件设计。 由于该教学系统发送的数据都是简单的单个字符, 因此选择共阳极的7 段LED 数码管就足够显示数据。 在单片机将要发送数据之前,先送到显示模块中发送数据显示部分显示, 然后发送数据。接收到数据后也送到显示模块中接收数据显示部分显示。 这样,可以直观地观察到双向串行通信的运行结果。
最后,进行测试模块的设计。 此处,并不是采用实际的示波器,主要是考虑到学生自学过程中不具备这样的条件。 取而代之的是Proteus 软件自带的仿真示波器, 只要安装了Proteus 软件就可以使用仿真示波器。
3 基于KEIL 软件编辑编译软件系统
使用KEIL 软件,主要完成控制模块、通信模块和显示模块的软件代码的编辑编译[6]。
首先,进行控制模块的软件设计。 按照图3 的软件流程,控制模块主要完成系统初始化、 串行通信控制和显示控制3个部分。系统初始化完成存储器、引脚和中断的初始化。串行通信控制主要根据串行中断状态完成数据传输[7]。 显示控制主要根据通信状态完成数据显示。
第二,进行通信模块的软件设计。 主要分为发送数据部分和接收数据2 个部分。 发送数据时,将待发送数据送至发送缓存中,引起发送中断,然后通过TXD 引脚串行发送数据。接收数据时,数据通过RXD 引脚串行接收到接收缓存中,引起接收中断。
第三,进行显示模块的软件设计[8]。 在即将发送数据前和接收到数据后显示数据。
图3 串行通信教学系统的主程序流程图Fig. 3 Flow chart of the serial communication teaching system
4 基于Proteus 软件验证系统
系统的正确性包括数据正确性、通信数据格式正确性和通信动作正确性。
首先,设置仿真示波器的测试引脚和测试环境参数,调节完成后, 就可以通过仿真示波器观察到通信数据和引脚时序,保存观察结果便于进行分析[9]。 其中测试引脚包括TXD 和RXD 引脚。 测试环境参数包括数据通道、扫描时间系数等参数。
其次,分析数据正确性,可以通过显示模块直观分析。 将观察的测试结果记录如表1 所示。
根据表1 可以看出,甲机向乙机发送字符‘0’,乙机接收到后通过数码管显示结果也为‘0’,说明发送数据正确。 然后乙机再回送字符‘1’给甲机,甲机接收到后通过数码管显示结果也为‘1’,说明接收数据正确。 通过串行通信教学系统的显示模块直观观察结果,说明数据传送正确。
表1 串行通信教学系统的测试结果Tab. 1 Test result of the serial communication teaching system
最后,分析通信数据格式,观察起始位、停止位和数据位。 最后观察通信动作时序。
图4 串行通信教学系统的数据格式Fig. 4 Data format of the serial communication teaching system
根据图4 可以看出,甲机和乙机采用单片机串行通信工作方式1,为波特率可变的8 位异步通信口,数据为10 位,即1 个起始位、8 个数据位(低位在先,高位在前)和1 个停止位。 参照串行通信工作方式1 的时序图,可以看出,除了起始位和停止位,发送的字符‘2’的共阳极段选码为0xA4,发送的字符‘3’的共阳极段选码为0xB0。
5 结束语
通过使用Proteus 仿真软件设计硬件电路, 结合Keil 软件设计程序,最终形成单片机串行通信教学系统。 该教学系统不仅可以完成内容难度较大的串行通信的讲解,在教学过程中把教学内容直观地展示给学生,同时也教会学生学习通信协议的方法,使学生具有使用串行通信的能力;还可以完成多种通信协议的扩展,并且不局限于单片机种类,也不局限于硬件电路和使用场地,有利于学生进一步学习多种通信协议,使学生具有单片机通信接口扩展的能力。
[1] 赵虎. Proteus和Keil软件在单片机教学中的应用[J]. 西南农业大学学报:社会科学版,2011(2):169-171.
[2] 黎雪芬.KEIL及Proteus软件在单片机仿真教学中的应用[J].装备制造技术,2013(3):49-50.
[3] 赵月静,张永弟,翟卫贺. Proteus 和Keil C 在开发单片机控制系统中的应用[J]. 实验科学与技术,2013(4):31-34.
[4] 陈军. 基于Proteus的串口通信系统仿真设计[J]. 自动化与仪器仪表,2012(4):51-53.
[5] 雷建龙. 单片机C语言实践教程[M]. 北京:电子工业出版社,2012:216.
[6] 吕瑞云. 基于单片机的串行通信研究[J]. 电子世界,2012(3):76-77.
[7] 赵瑞国,马杰,何志勇,等. 液体火箭发动机高速采集数据工程数据库设计及应用[J]. 火箭推进,2011(3):60-64,72.
[8] 崔岩. 采用T型电路参数法对现场电流互感器测量的研究[J].陕西电力,2011(9):63-66.
[9] 徐拥军,谢书鸿,栗鸣,等. 基于OPPC的温度和应力光纤光栅传感技术[J]. 供用电,2013(2):40-45.