基于Proteus和PLD的数字电压表的设计

2010-06-12 08:32刘杨俊
电气电子教学学报 2010年4期
关键词:电压表原理图波形

刘杨俊

(武汉大学珞珈学院电子信息系,湖北武汉430064)

0 引言

Proteus是由英国Labcenter公司推出的嵌入式系统仿真开发软件,它具有原理图布图、混合模式仿真、VSM嵌入式仿真以及PCB制板等功能[1,2]。该软件有如下优点:①能够对单片机系统、数字电路和模拟电路构成的混合电路进行设计和仿真;②支持汇编语言的编码、调试或与第三方软件Keil进行联机编码、调试;③软件自带的Ares设计系统可以进行PCB印刷电路板的设计。

基于Proteus和Keil的混合电路系统的设计与仿真过程可分为以下几步:①在Proteus的平台上进行电路原理图的设计;②在Keil平台上进行C51单片机系统源程序的编辑、编译和调试,最后生成HEX类型的目标代码文件[3];③在Proteus平台上将目标代码文件加载到单片机系统中进行实时仿真,并运用该软件提供的虚拟仪表进行分析[4]。此外,Proteus还支持PCB板的设计。

1 数字电压表电路原理图的设计

原理图是在Proteus ISIS环境中进行编辑绘制的,其使用方法与人们熟悉的Protel和EWB等软件具有相似之处,很容易掌握。其中A/D转换器采用了ADC0804。由于该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上,无须附加逻辑接口电路。显示采用了LCD1602液晶显示屏,可显示16×2个字符。数字电压表电路图如图1所示。

图1 基于Proteus的数字电压表电路图

控制器U3采用了AT89C52单片机,数据总线P00~P07连接到U2 ADC0804的DB0~DB7以及LCD1602的D0~D7,和端分别接到ADC0804的、读写端,连接到,A12和A13分别连接到R/W读写端和RS数据指令端。接口电路采用可编程逻辑器件U1 GAL16V8A,对LCD1602和ADC0804进行编址。

我们使用ATMEL公司编译工具WinCupl编写代码。当进入主界面后,新建一个项目文件,在弹出的对话框中,输入源文件的名称Gate Addr;将Device默认的virtual改为g16v8a;输入引脚数10,单击OK,输出引脚数2,单击OK,系统要求输入中间节点数(这里不需要),填0,单击OK。这样系统自动新建了一个Gate Addr.PLD文件,并且显示该文件。我们在INPUT PINS分割线下定义好地址总线和读写输入端口,在OUTPUT PINS分割线下定义好地址逻辑和输出端口。然后我们用Win-Sim对该逻辑关系进行波形仿真,仿真的波形如图2所示。

图2 可编程逻辑器件的波形仿真图

如图可见,当 A10、A9、A8=000 时,不论 WR和RD的值为多少,ADC0804的片选信号AD-CS为低,这时启动 A/D转换。当A10、A9、A8=001,并且WR和RD=0时,LCD1602片选信号LCD E为高,这时可以对液晶显示屏进行操作。通过波形仿真,我们知道了该系统外设的地址逻辑是正确的。然后我们选中原理图上的GAL16V8A,单击弹出的对话框JEDEC Fuse Map File栏中的浏览图标,装入Gate Addr.JED文件,最后我们就可以拨动开关进行系统仿真了。

2 系统软件的设计

原理图设计好之后,就可以针对原理图进行程序设计。程序流程图如图3所示。

图3 系统程序流程图

我们采用Keil作为程序的编辑和编译工具。主程序中首先设置好中断0,并初始化LCD1602,然后显示标题文字“DC Voltage is:”,接着启动A/D转换。结束以后,ADC0804给单片机发中断信号,运行中断服务程序,将采样数取整存入vol z,将flag置1,返回到主程序中执行条件语句,flag清零。然后调用LCD显示子程序,将电压值显示出来。最后再启动A/D转换,重复上述循环。

3 Proteus和Keil的联合仿真

在Proteus平台上将目标代码文件加载之后,即可进入动态仿真。为了观察实际的测试效果,我们加入了一个由电源VCC与电位器RV1组成的激励源,并用虚拟电压表测出其大小,如图1中的虚线框部分所示。虚拟电压表测量的激励源提供的电压值可用来作为标准值,以便与设计的数字电压表的测试结果进行对比。首先,应对数字电压表的准确度进行调整,即先调节RV1使虚拟电压表读数为2V,然后调节RV2,使数字电压表的读数也为2V,调整完毕后,即可对数字电压表的非线性误差进行测试。

4 结语

针对学生在单片机课程中难以参与设计的细节,本文提出了一种基于Proteus与PLD的数字电压表的设计实例。这种先采用仿真,再移植到硬件电路的方法可以极大地提高设计与开发的效率,并为开放性、综合性和创新性实验提供了灵活,方便的实验环境。在单片机系统应用的教学演示和实用设计方面具有较好的辅助作用。

[1] 张宏伟,王新环,王新.基于Proteus和Keil的单片机实验教学改革[J].南京:电气电子教学学报,2008.12(6)64-65,74

[2] 田社平,蔡萍,薛宇飏等.Proteus软件在“检测技术”课程教学中的应用[J].南京:电气电子教学学报,2009.12(6):30-31,75

[3] 乔建华,李临生,田启川.Proteus在单片机教学中的应用分析[J].南京:电气电子教学学报,2008.6(3):70-73

[4] 唐勇波,徐东辉.基于Proteus的单片机课程教学与试验改革初探[J].宜春:宜春学院学报,2009.31(4):147-149

猜你喜欢
电压表原理图波形
如何判断电压表的测量对象
判断电压表测量对象有妙招
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
基于LFM波形的灵巧干扰效能分析
电压表的妙用
再探电压表内阻的测量方法
基于ARM的任意波形电源设计
双丝双正弦电流脉冲波形控制