张安东,林开司,张 露
(铜陵职业技术学院,安徽 铜陵244000)
“单片机应用技术”课程是应用电子技术、电子信息工程技术等相关专业的核心课程,几乎所有高校电子信息类专业都开设了该课程。因为“单片机”广泛应用于各生产、生活领域,如工业生产、家用电气、消费电子等等。正由于“单片机”在应用电子技术、电子信息工程技术等专业中的核心地位以及它的实践性,很多学校在开设“单片机应用技术”课程后又开设了一门后续课程,叫“单片机课程设计”。这是一门集单片机、电子技术、电子测量等综合性的课程,作者所在的学校就开设了该课程。
作者所在的学校“单片机课程设计”这门课程采用项目教学法。系统设计中的硬件部分可以通过在万能板上焊接或者制作印制电路板(PCB板)等获得真实硬件,在万能板上焊接电路所耗费的课时较多,受课时数的限制不能所有的项目都采取此种方法。制作PCB板的设备一般高校都不具备,如果代工生产一般要批量化,很难针对每个同学都能定制他们自己设计的PCB,因为受教学成本的限制。所以采用Proteus软件进行硬件仿真即可达到了教学效果,又能克服上述困难。
串口通信是单片机的重要内容,教学内容一般包括单片机间的通信,单片机与上位机的通信。单片机与上位机通信的教学中,上位机一般采用串口调试助手,该软件是通用的上位机串口通信软件。在实际的工程应用中,针对不同应用场景,上位机与单片机间的通信信息,串口调试助手不能全部反映,此时必须定制上位机通信软件。在某些情况下,要求上位机对单片机采集的各种信息进行远程实时监控,此时也需要上位机通信软件。VB6.0是基于对象的程序设计语言,主要开发基于Windows的应用程序,应用十分广泛,是一个成熟稳定的开发工具,使用VB6.0作为上位机软件开发工具是个很好的选择。
对于一些理论知识较扎实、实践能力较强的学生设计的教学项目要体现一定的难度,针对串口通信,设计的项目包括单片机的软硬件设计,还包括上位机通信软件的设计。设计的项目更贴近工程实践,使得学生对单片机于上位机通信的理解更深刻,且进一步理解单片机工程开发的步骤与提高解决实际问题的能力。下面以具体任务阐述Proteus和VB6.0联合仿真在单片机课程设计教学中的应用。
设计一个对水塔水位进行检测与控制的系统,如图1所示,在水塔不同高度安装3根金属棒,感知水位变化。其中,B棒处于下限水位,C棒处于水位上限水位,A棒接地,B、C通过电阻接5V电源。同时该系统通过串口与上位机通信,上位机软件能实时显示水位高度。
图1 水位控制示意图
教师根据任务要求分析如何进行系统设计,首先系统包括单片机控制部分和上位机软件部分,这里的系统设计主要是单片机硬件系统设计。系统采用51单片机为主控芯片,系统包括传感器水位检测电路,由于是采用仿真,所以使用拨码开关模拟液位传感器检测水位高度,模拟检查值通过LED数码管显示,所以系统还包括数码管显示电路;系统有启动和停止电机加水及单片机与上位机通信的功能,所以系统还包括继电器驱动和电机控制电路及串口通信电路。为了对上下水位和电机启停有指示还包括LED指示电路。系统框图如图2所示。
图2 系统框图
教学过程中,教师提供设计方案,具体实现电路由学生自己根据自身的知识与经验自行设计。
系统硬件包括单片机最小系统,最小系统包括时钟和复位电路构成。数码管显示模拟水位值,使用3位共阳极数码管构成显示电路,对应数码管的驱动使用OC门驱动芯片74HC07,对继电器的驱动也采用74HC07。实际单片机与上位机通信要进行电平转换,如果上位机使用RS232串口,由于单片机是TTL电平,所以要使用电平转换芯片,将TTL电平转成RS232串口电平。为了更接近工程实践,电路中设计电平转换电路,转换芯片为MAX232。使用Proteus中的虚拟元件COMPIM实现单片机与上位机通信,COMPIM是把仿真电路中的数字量映射到计算机的物理端口。单片机的TXD和RXD与COMPIM相连接,就可以直接操作映射到物理端口。需要注意的是,TXD和RXD两根信号线是直通方式连接,而非交叉。学生根据教师讲解后自行设Proteus仿真电路图,整体电路如图3所示。
图3 数码管显示电路
图4 继电器控制电机电路
图5 单片机最小系统及驱动和水位模拟电路
图6 单片机与上位机通信电路
系统软件设计包括单片机驱动程序设计和基于VB6.0的上位机通信软件设计。单片机驱动程序主要包括数码管显示程序、拨码开关水位模拟程序、电机驱动程序、水位报警程序及单片机与上位机通信程序等。上位机通信软件主要包括软件界面设计及对数据的接收与处理。
单片机驱动程序这里主要给出主程序流程图,流程图如图5所示。教学过程中,教师和学生共同设计程序流程图,包括主程序流程图和各功能函数的流程图,学生在给出流程图的基础上自行设计程序。当然这里的流程图只是参考,学生自己也可自行设计程序,能达到功能要求即可,不做限制。
图7 主程序流程图
利用VB6.0中的MSComm控件实现上位机与单片机之间的通信。波特率设置为19200,数据位8位,没有奇偶校验位,1位停止位。初始化代码如下所示:
MSComm1.CommPort=3’通信端口位
‘COM3
MSComm1.Settings="9600,n,8,1"’设置通信格式
MSComm1.InputMode=
comInputModeText
'接收文本型数据,如果设置为1则以二进制的形式取回传入的数据.
MSComm1.PortOpen=True’打开端口
MSComm1.InputLen=1
MSComm1.SThreshold=1
利用定时器控件的时间间隔属性(Interval属性),每隔一定时间执行一次Timer事件中的相应代码,接收一次单片机发来是数据,实现对水位的实时监测,这里设置位每500ms接收一次串口数据。
波特率是在单片机时钟频率为11.0592MHz时计算得到的,所以设置单片机和COMPIM的时钟频率为11.0592MHz。使用虚拟串口软件创建一对虚拟串口,这里为COM3和COM4口,波特率设为19200。使用开关模拟液位传感器检测到的水位,最低水位设为3,最高水位设为100,模拟的实时水位为拨码开关的值乘以100/255。模拟的水位值在数码管上显示,同时通过串口发送给上位机,上位机能检测到水位控制的情况,仿真结果如图所示。
图8 上位机运行结果
在实际的教学过程中,使用Proteus可以使每个学生都能独立设计基于单片机的硬件电路,且对于同一问题不同的学生可能采用不同的方法,因此可以提高学生的硬件电路设计能力和创新能力。设计完硬件电路之后每个学生设计针对该硬件的驱动程序,使学生对单片机软硬件的结合理解更深。为了某些情况下实现远程监测,可以使用串口将采集的信息发送给上位机,因此要编写上位机程序。由于VB6.0上手容易,所以在实施任务之前要求学生利用课余时间自学VB6.0编程软件,教师指导学生学习与本系统开发有关的VB知识,在学生自学的过程中,提高学生的自学能力,实践证明在这过程中学生的自学能力和学习自觉性都得到很大的提高。并且当学生通过自己的努力完成教学任务后,有了很大的成就感,最后使得一部分学生,在仿真的基础上自己设计PCB然后在网上找商家打样,最后做成实际的硬件系统。所以通过Proteus和VB6.0联合仿真在提高一定难度的基础上