您的当前位置:首页正文

基于简易直流数字电压表的硬件仿真

2021-03-12 来源:易榕旅网
龙源期刊网 http://www.qikan.com.cn

基于简易直流数字电压表的硬件仿真

作者:王刚

来源:《价值工程》2018年第01期

摘要: 本文设计了一个简易直流数字电压表,通过Keil软件的程序编译、调试和Proteus的硬件仿真,利用单片机、A/D转换芯片以及数码管对0~5V的模拟直流电压进行测量、显示。本设计具有电路结构简单、成本低廉、精度较高等特点。通过简易数字电压表的硬件仿真,对虚拟设备的教学展示及应用系统的设计具有较大作用。

Abstract: This paper designed a simple DC digital voltmeter, through the Keil software program compilation, debugging and Proteus hardware simulation, single-chip, A / D conversion chip and digital tube 0 ~ 5V analog DC voltage are used for measurement and display. The design has a simple circuit structure, low cost, high precision. Through the simple digital voltmeter hardware simulation, it is important for the virtual equipment teaching display and application system design.

关键词: Proteus;Keil;单片机;A/D转换;硬件仿真

Key words: Proteus;Keil;single chip microcomputer;A/D conversion;hardware simulation

中图分类号:TM933.22 文献标识码:A 文章编号:1006-4311(2018)01-0223-02 0 引言

电压表可分为模拟式和数字式两大类。随着半导体技术、集成电路和微处理技术的发展,数字电路和数字化测量技术有了巨大进步,促使了数字电压表的快速发展。相对于指针式电压表,数字电压表一般具有准确度高、数字显示、读数迅速准确、精度高、操作简便等优点,使其获得越来越广泛的应用。

本设计选用Proteus和Keil的开发平台。Proteus是英国著名的EDA工具,将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其支持的处理器模型种类繁多。在编译方面,支持多种编译器。Keil 是美国Keil Software公司出品的51系列兼容单片机软件开发系统。Keil提供C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起,使程序设计事半功倍。 1 系统总体设计

龙源期刊网 http://www.qikan.com.cn

考虑系统功能及要求,本次设计的简易直流数字电压表主要由三个模块组成:A/D转换模块、数据处理模块及显示模块。A/D转换模块采用芯片ADC0831,数据处理模块选用单片机STC89C52,显示模块采用四位一体的共阳数码管。系统组成框图如图1所示。 2 硬件仿真设计

系统仿真电路主要由A/D转换、数据处理、显示等部分组成,仿真电路如图2所示。

①A/D转换:常用的A/D转换方式可分为并行A/D和串行A/D。并行方式转换效率较高,但芯片引脚较多;串行方式所用芯片引脚少,封装小,但需要软件处理才能得到所需数据。使用串行器件可节省单片机的I/O资源,电路简单。本次设计选用串行A/D转换芯片ADC0831。该芯片是8引脚双列直插式A/D转换器, 8位的分辨率(最高分辨可达256级),可以适应一般的模拟量转换要求。芯片的模拟电压输入在0~5V之间。转换速度快且稳定性能强。由于它体积小,兼容性强,转换速度较高(转换时间32uS),单电源供电,功耗低

龙源期刊网 http://www.qikan.com.cn

(15mW),性价比高并适用于各种便携式智能仪表而深受单片机设计爱好者及企业欢迎。在本电路中ADC0831的输入口VIN+接收0~5V的模拟量直流电压,经过模数转换后,产生的数字量经过其输出通道DO传送给单片机的P1.2口。ADC0831的片选信号由单片机P1.0口控制,时钟信号由单片机P1.1口为其提供。

②数据处理:选用单片机STC89C52。在实时检测和自动控制的应用系统中,单片机往往作为一个核心部件来使用。STC89C52是低功耗、高性能的8位单片机。它因体积小、成本低、功能强而得到了广泛的应用。在本电路中构成的单片机最小系统负责把模数转换后的数字量经过数据处理,产生正确的显示段码,经过P2.0~P2.7通过数码管显示出来。同时单片机还通过其I/O口的P0.1~P0.4作为显示部分的位选信号,送给数码管的位选端,控制对应数码管的亮灭。

③数据显示:选用一个四位一体的共阳7段数码管,用于显示简易直流数字电压表测量到的电压值。数码管显示分为动态显示和静态显示。如果采用静态显示控制4个LED,需要对单片机的I/O口进行扩展,这将大大增加硬件电路的复杂性及成本,因此本设计选用动态显示。动态显示是利用人的视觉暂留效应,按位轮流点亮各位LED,如果每位LED闪动的频率足够高,就可以给人一种稳定显示的视觉效果。本电路中每位数码管的各个段码分别与单片机P2口连接,单片机段选信号的输出信号经过电阻来控制数码管某一段点亮,电阻起到限流作用,以防止电流过大烧坏数码管。数码管的位选端用于接收单片机P0口产生的位选码。 3 软件设计

简易直流数字电压表的程序编写采用C语言进行设计,C语言因执行效率高、可移植性好,可直接对硬件进行操作等多种优势而被广泛使用。程序设计采用查询方式,能够对外部电压的变化实时查询、数据处理,使数码显示随之发生相应的变化。程序的主函数包括三部分:读取A/D转换数据函数READ_ADC0831( )、数据处理函数data_process(voltage)、动态显示函数seg_display( )。以下为主函数。 void main ( ) { unsigned int voltage; while(1)

龙源期刊网 http://www.qikan.com.cn

{ unsigned char READ_ADC0831( ); voltage=READ_ADC0831( ); data_process(voltage);

seg_display( );delay_ms(1);}}

①读取A/D转换数据函数:A/D转换子函数用来将输入的模拟直流电压信号转换为对应的数值并存入单片机相应的内存单元。通过查阅ADC0831的相关资料,按其工作时序图,进行读取转换程序进行设计,并在主函数中调用A/D转换数据函数。

②动态显示函数:采用动态扫描法实现四位数码管的数值显示。动态扫描显示过程:在某一时段只让其中1位的LED位选口有效,并在段选口上送出相应的字形显示编码。这时在选中的LED上显示指定字符,其他位的LED处于熄灭状态;延时一段时间,下一时段按顺序选通另外1位LED,并送出相应的字形显示编码,依此规律循环下去,直到最后1位LED被选通,显示指定字符。反复进行以上LED动态扫描过程,就能实现各位LED稳定显示字符的效果。动态显示函数设计如下: void seg_display(void) {#define segdata P2 #define segselt P0

unsigned char code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};

unsigned char i,scan;scan=1; for(i=0;i

delay_ms(1); scan

③数据处理函数:将A/D转换程序的8位二进制数(00H-FFH)转换成0.000~5.000的字符形式,4位LED数码管上需要显示其中的高四位,数据处理函数采用拆字法实现,设计如下:

void data_process(unsigned char value) {unsigned int temp;temp=value*196;

龙源期刊网 http://www.qikan.com.cn

disp[0]=temp/10000; disp[1]=(temp/1000)%10; disp[2]=(temp/100)%10; disp[3]=(temp/10)%10;} 4 测量结果

硬件仿真电路调试运行后,通过数码管显示的数字与仿真电路中电压表所测得的电压值进行比较,成功的取得了一组测量数据。测量结果如表1所示。 5 结语

通过系统的总体设计、搭建硬件仿真电路、软件设计、软硬联调,成功设计了简易直流数字电压表,该表具备功能可靠、精度较高、结构简单等优点。此次设计的硬件仿真适合应用于虚拟仪器的教学演示和实际应用系统设计等方面。 参考文献:

[1]王静霞.单片机基础与应用[M].北京:高等教育出版社,2016.

[2]朱晓冷.直流数字电压表设计与Proteus应用[J].通信电源技术,2012(2). [3]李超.基于A8T95C1单片机的信号监控系统设计[J].工业控制计算机,2015(1). [4]彭伟.单片机C语言程序设计实训100例[M].北京:北京理工大学出版社,2011.

因篇幅问题不能全部显示,请点此查看更多更全内容