单片机程序设计模拟仿真的研究与实践
2020-07-20李志强眭仁武
李志强,向 卓,眭仁武
(衡阳师范学院 物理与电子工程学院,湖南 衡阳 421002)
“单片机应用技术”是一门逻辑性较强的实践课程,核心内容是单片机应用程序的设计[1]。学生在初学程序设计的过程中常受到语法错误和逻辑错误的困扰,语法错误可根据编译器的编译提示进行修改,而逻辑错误需由程序设计者通过编程调试来纠正[2-3]。因此,积极探索“单片机应用程序设计”的模拟仿真,可以加深学生对单片机程序运行过程和运行效果的理解,充分利用仿真技术的优势,强化过程学习,提高“单片机应用技术”课程的教学质量和教学效果。本研究将从模拟仿真内容、模拟仿真实践和仿真结果3个方面进行阐述。
1 研究模拟仿真内容
近年来,单片机应用程序设计大多采用德国Keil 51单片机集成开发环境。初次运用Keil进行程序设计时,设计者并不太清楚程序在单片机内部的运行原理,很可能达不到预期目标,需通过仿真过程对设计程序的逻辑错误进行分析、调试和纠正。该仿真过程可通过硬件仿真器的“实时”在线仿真和软件的模拟仿真实现。采用硬件“实时”在线仿真可以真实地呈现单片机应用程序的实时运行状况,方便观察运行结果,并及时解决相关问题,但实验设备价格较高。采用软件模拟仿真,仅需在PC机的仿真软件上设置相应的条件,来模拟单片机实际运行的条件,进而观察程序的运行状况,方便简易的软件模拟仿真,更适合学生入门阶段的程序学习。
初学单片机时,编写的第一个单片机应用程序常为点亮发光二极管,若通过模拟仿真让初学者观察单片机输入/输出(Input/Output,I/O)端口上的高低电平变化情况,可以帮助学生更好地理解单片机程序的运行过程。当单片机程序运行时,若需获取外部状态,在Keil集成开发环境下读取I/O端口外部输入电平,读入的电平值均为高电平,显然读入结果不准确[4]。为了让单片机程序运行时获取真实的外部状态条件,可通过模拟设置外部条件来实现。Keil 51集成开发环境的模拟器能模拟51单片机内部特性和外部设备(I/O口、中断、串行、定时等)的运行情况。采用Keil 51集成开发环境模拟器调试单片机程序既方便又能排除硬件错误,在单片机程序模拟仿真时,可以设置断点、单步、全速、进入某个程序的内部运行来查看变量的变化过程、I/O端口电平状态变化、代码执行时间等信息。
2 模拟仿真实践
单片机应用程序模拟仿真实践主要从单片机I/O端口输出和输入、代码执行时间、中断响应、串口通信等方面开展。
2.1 I/O端口输出
点亮发光二极管是通过程序来控制单片机I/O端口,打开I/O端口,查看I/O端口运行情况,图1(a)为P1口的第0位,为高电平;程序运行后为低电平,如图1(b)所示。
2.2 代码执行时间
单片机程序从启动到图2(a)光标处用时为194.50 μs,当程序执行完两个for循环到图2(b)光标处时,总用时为639.00 μs,也就是说,单片机在执行完两个for循环时,相应的程序代码执行时间为444.50(639.00-194.50)μs。
2.3 I/O端口输入
当单片机程序运行需要读取单片机外部数据时,例如按键输入程序,Keil软件的调试工具没有与硬件相连,就无法准确获取单片机I/O端口引脚电平,但可通过模拟仿真设置来实现。打开按键输入P3端口调试,当未设置相应端口引脚电平状态时,程序无法执行有键按下的语句,其运行界面如图3(a)所示;当设置了相应端口引脚电平为低电平时,程序即可执行有键按下的语句,如图3(b)所示。
图1 I/O端口输出模拟仿真效果
图2 代码执行时间模拟仿真效果
图3 I/O端口输入模拟仿真效果
2.4 中断响应
在keil集成环境下的中断请求,在采用定时中断实现定时需求时,其定时中断服务程序的调试可通过设置断点或将程序执行到光标处来进行调试,先看能否进入其中断服务程序,还未执行中断服务程序如图4(a)所示;若能进入,再查看进入中断服务程序时的时间,如图4(b)所示。
图4 中断响应模拟仿真效果
2.5 串口通信
串口通信程序包括串口发送程序和串口接收程序。串口发送程序的模拟仿真可以通过观察串行通信调试窗口,如在执行“while(!TI);”将会一直等待,直到TI变为1时才可继续执行,在串行窗口中的SBUF中看到发送的字符为0xAA,其仿真运行效果如图5(a)所示;串口接收程序模拟仿真可在串行窗口中输入相应的字符0X55,该字符可传递到中央处理器(Central Processing Unit,CPU)中,但不会显示,其仿真运行效果如图5(b)所示。
图5 串口通信模拟仿真效果
3 结语
基于keil集成开发环境模拟仿真单片机运行情况开展的教学实践活动,能帮助学生更好地理解单片机程序的运行过程。衡阳师范学院2015—2018级电子信息工程专业的教学实践表明,该教学实践活动不仅帮助学生克服了程序设计过程的畏难情绪,还提高了学生程序设计的查错纠错能力,较好地完成了单片机相关课程的教学目标。