1.2 可视化设计基本操作
可视化设计在于将集成好的库(包括所有常用的显示器、按钮、开关、传感器、电机,以及更强大的器件如TFT显示屏、SD卡和音频播放等外围设备)封装成各种模块。设计者通过添加外围设备的方式来设计原理图,通过拖放模块的方式即可调用相应的设备和程序,从而完成嵌入式设计,大大简化了编程和控制外设的方式。因此,读者仅需要掌握微控制器的基本架构,就可以进行可视化设计,大大降低了编写控制代码的难度。Proteus的可视化设计仿真功能也非常强大,Arduino/Grove工程可在没有硬件设备的情况下进行仿真功能的设计和开发,以节省硬件验证的时间。用户也可以继续在Proteus VSM工作环境下用C++或汇编语言对同一个硬件进行编程。
1.2.1 基本方法介绍
以前面的工程为例,可视化原理图搭建完成后,将界面切换至可视化设计界面,从左边的工程树中的Peripherals选项中,我们可以看到cpu和timer1两个关于Arduino开发平台的方法库,如图1-2-1所示。
单击cpu左边的三角,弹出cpu相关的方法:pinMode(配置引脚模块,指定引脚和方向)、analogReference(配置模拟引脚参考电压模块)、analogWrite(写入模拟量模块)、analogRead(读取模拟量模块)、digitalWrite(写入数字量模块,指定输出引脚和高低电平)、digitalRead(读取数字量模块)、pulseIn(读取脉冲时间模块)、millis(延时模块)、enableInterrupt(启用中断模块)、disableInterrupt(禁用中断模块)、debug(调试模块),如图1-2-2所示。
单击timer1左边的三角,弹出timer1相关的方法:initialize(初始化模块)、setPeriod(设置频率模块)、start(启动模块)、stop(停止模块)、restart(重启模块)、resume(继续模块)、read(读取模块)、pwm(启用PWM模块)、disablePwm(禁用PWM模块)、setPwmDuty(设置PWM占空比模块),如图1-2-3所示。
图1-2-1 Arduino开发平台模块
图1-2-2 cpu模块
图1-2-3 timer1模块
从工程树的右边可以看到基本逻辑框图,如图1-2-4所示。
事件块与结束块一起使用以定义子程序(如写入显示器)和事件处理程序(如处理定时器中断)的开始和结束。创建一个子程序,需要在“Edit Event Block”对话框中的“Name”栏设置子函数名称,如图1-2-5所示。在放置子程序调用块时可以选择此子程序。如果需要创建一个程序来处理可触发事件(如中断处理程序),则需要指定触发器,单击“Edit Event Block”对话框中的按钮,弹出“Select Trigger”对话框,如图1-2-6所示。
图1-2-4 流程图中的基本逻辑框图
图1-2-5 “Edit Event Block”对话框
图1-2-6 “Select Trigger”对话框
事件结束模块用于终止程序或子程序,通常放置在事件模块中。
赋值/分配模块是变量赋值的工具,如图1-2-7所示,可以在赋值/分配模块中完成创建新变量、编辑变量和删除变量等操作。单击“Edit Assignment Block”对话框中的按钮,弹出“New Variable”对话框,可以选择所创建变量的数据类型,如图1-2-8所示。
在“Edit Subroutine Call”对话框中用子程序调用模块可以调用流程图中任何已经定义的函数,如图1-2-9所示。提示:必须首先使用事件开始模块和结束模块来创建和命名子程序,子程序调用模块才可以调用子程序。
图1-2-7 “Edit Assignment Block”对话框
图1-2-8 “New Variable”对话框
图1-2-9 “Edit Subroutine Call”对话框
数据存储模块常用于表示存储对象(SD卡)上的操作方法,与文本或其他文件一起使用,如图1-2-10所示。
外设操作模块原则上允许在硬件上执行一个操作,硬件仅由处理器和可用操作组成,如图1-2-11所示。在实际工程中,可以向工程添加外围设备扩展板。
图1-2-10 “Edit I/O Block”对话框(1)
图1-2-11 “Edit I/O Block”对话框(2)
如图1-2-12所示,在“Edit Delay Block”对话框中,时间延迟模块用于在程序中引入特定的延迟。在执行延时函数期间,在Arduino单片机中读取传感器、数学计算和引脚操作等均停止,但是中断可以继续工作。
决策判断模块的作用是基于条件对程序流进行分流,从而执行不同的处理方式。如图1-2-13所示,在“Edit Decision Block”对话框中需要填入一个布尔表达式作为判断条件,与代码相比更加直观。当在流程图上放置了决策/判断模块时,将YES分支和NO分支置于默认位置,如图1-2-14所示。如果其位置不符合流程图,则右键单击判断模块,弹出快捷菜单,单击选项,可将YES分支和NO分支进行交换,如图1-2-15所示。
图1-2-12 “Edit Delay Block”对话框
图1-2-13 “Edit Decision Block”对话框
图1-2-14 放置决策/判断模块
图1-2-15 交换分支
循环结构模块包含了计数循环(Count Loop)、For-Next循环(For-Next Loop)、While-Wend循环(While-Wend Loop)和Repeat-Until循环(Repeat-Until Loop)。计数循环的具体参数设置如图1-2-16所示;For-Next循环的具体参数设置如图1-2-17所示;While-Wend循环的具体参数设置如图1-2-18所示;Repeat-Until循环的具体参数设置如图1-2-19所示。
互联模块基本上是“虚拟连接”,并且需要成对。如果有两个互联模块具有相同的数字,可以想象是一个看不见的线将其连接在一起。互联模块的目的是将流程图逻辑拆分为多个列。可以拖放两个互联模块,将它们链接到流程图,然后重新编号即可。或者可以简单地右键单击并Split(分离)向导线,如图1-2-20所示。
图1-2-16 计数循环
图1-2-17 For-Next循环
图1-2-18 While-Wend循环
图1-2-19 Repeat-Until循环
图1-2-20 用互联模块分离成两个独立的线
注释模块可以自由输入描述性文本(见图1-2-21)以及设置文本的属性(见图1-2-22)。
图1-2-21 输入描述性文本
图1-2-22 设置文本的属性
1.2.2 系统仿真
【开始仿真】:若要开始仿真,可以单击动画控制面板上的“播放”按钮。程序将进行编译并且仿真进度将在状态栏上显示,如图1-2-23所示。
图1-2-23 状态栏显示仿真进度
【停止仿真】:若要停止仿真,可以单击动画控制面板上的“停止”按钮,如图1-2-24所示,整个工程将停止仿真。
图1-2-24 通过控制面板停止仿真
【暂停仿真】:暂停Proteus仿真是一个重要的概念。当仿真暂停时,程序和元器件处于当前静止状态,例如,电容器不会放电,电机将保持其角位置和动量,这样便可以使用户检查程序和虚拟硬件。若要暂停运行的仿真,可以单击动画控制面板上的“暂停”按钮,如图1-2-25所示。
图1-2-25 暂停仿真
当单击动画控制面板上的“暂停”按钮后,Proteus软件的Visual Designer界面如图1-2-26所示。
图1-2-26 暂停仿真后Proteus软件的Visual Designer界面
[1]“ARDUINO”常见于Proteus软件界面中。为了使图文一致,在描述某些界面时使用了“ARDUINO”,实际表达意思与“Arduino”一致。