基于STM32的简易数字电压表

基于STM32的简易数字电压表
基于STM32的简易数字电压表

《嵌入式系统》

课程设计报告

题目: 基于STM32的简易数字电压表

专业:

网络工程 班级:

网络工程12(1) 姓名:

卢东亚 指导教师:

冯 康 成绩:

计 算 机 学 院

2015年 5 月 22日

2014-2015学年 第二学期

目录

1. 设计内容及要求 (1)

1.1. 设计内容 (1)

1.2. 设计要求 (1)

2. 概要设计 (2)

2.1. 硬件电路 (2)

2.2. 实验板中的连线图 (2)

2.3. STM32介绍 (3)

2.4. 主要函数说明 (8)

3. 设计过程或程序代码 (10)

3.1. 设计过程 (10)

3.2. 程序代码 (12)

4. 设计结果与分析 (16)

参考文献 (17)

1.设计内容及要求

1.1.设计内容

本文以ARM系列的STM32芯片为核心设计了一个简易数字电压表。简易数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自定义测量电压,通过调节模数转换电位器使在一定范围内可任意改变。输出的电压格式和精度的改变通过软件控制,输出电压的大小的改变通过硬件实现。介绍了的生成原理、硬件电路和软件部分的设计原理。该简易数字电压表具有体积小、价格低、性能稳定、功能齐全的优点。

1、将一模拟电压信号输入到A/D转换器的任一通道。

2、A/D转换器将输入的模拟电压值转换成数字量。

3、根据学习开发板所用A/D转换器的类型,将转换成的数字量通过一定的算法转换成相应的电压值。

4、将转换成电压值通过学习开发板上的LCD显示屏进行显示,要求显示一位小数。

1.2.设计要求

利用STM32F103内部A/D及2.8寸TFT液晶屏,设计完成一个数字电压表。要求:数字电压表可测量0-5V输入电压,电压值通过液晶屏显示。

工作原理及设计思路:简易数字电压表的设计由A/D转换.数据处理及显示控制等组成。利用STM32F103内部A/D转换器将模拟电压转换成数字量,经STM32F103计算将数字量转换成对应的电压值,并通过液晶屏输出。

数字电压表的基本组成部分是A/D变换器+电子计数器。通常,被测直流电压经A/D转换器变为与之成正比的闸门时间,在此闸门时间内计数,用数字显示被测电压值。可见A/D变换器是DVM的核心部件。本课设上采用的是单片A/D 转换器(含模拟电路与数字电路)集成在一片芯片上,配以LCD或LED数字器件后能显示A/D转换结果的集成电路。它们均属于大规模的集成电路,能以最简的方式构成DVM。在此采用ICL7106A/D转换器。但由于STM32F103内部集成了A/D转换器,所以不需要外围的A/D转换器,这就体现了STM32得集成特性。

2.概要设计

2.1.硬件电路

设计的核心STM32嵌入式处理器的硬件电路如图1所示

图1 STM32嵌入式处理器的硬件电路2.2.实验板中的连线图

连线图如图2所示。

图2 硬件连接图。

2.3.STM32介绍

STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。STM32F103xx增强型系列工作于-40°C至+105°C的温度范围,供电电压2.0V 至3.6V,一系列的省电模式保证低功耗应用的要求。

完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:

●电机驱动和应用控制

●医疗和手持设备

●PC外设和GPS平台

●工业应用:可编程控制器、变频器、打印机和扫描仪

●警报系统,视频对讲,和暖气通风空调系统

ARM?的Cortex?-M3核心并内嵌闪存和SRAM ARM的Cortex-M3处理器是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平台、缩减的管脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上得到了ARM核心的高性能。STM32F103xx 增强型系列拥有内置的ARM核心,因此它与所有的ARM工具和软件兼容。图一是该系列产品的功能框图。

内置闪存存储器

●高达128K字节的内置闪存存储器,用于存放程序和数据。

内置SRAM 多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。嵌套的向量式中断控制器(NVIC) STM32F103xx增强型内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道(不包括16个Cortex-M3的中断线)和16个优先级。

●紧耦合的NVIC能够达到低延迟的中断响应处理

●中断向量入口地址直接进入核心

●紧耦合的NVIC接口

●允许中断的早期处理

●处理晚到的较高优先级中断

●支持中断尾部链接功能

●自动保存处理器状态

●中断返回时自动恢复,无需额外指令开销该模块以最小的中断延迟提供灵活的中断管理功能。

外部中断/事件控制器(EXTI) 外部中断/事件控制器包含19个边沿检测器,用于产生中断/事件请求。每个中断线都可以独立地配置它的触发事件(上升沿或下降沿或双边沿),能够单独地被屏蔽;有一个挂起寄存器维持所有中断请求的状态。EXTI可以检测到脉冲宽度小于内部APB2的时钟周期。多达80个通用I/O口连接到16个外部中断线。

时钟和启动系统时钟的选择是在启动时进行,复位时内部8MHz的RC振荡器被选为默认的CPU时钟,随后可以选择外部的、具失效监控的4~16MHz时钟;当外部时钟失效时,它将被隔离,同时会产生相应的中断。同样,在需要时可以采取对PLL时钟完全的中断管理(如当一个外接的振荡器失效时)。具有多个预分频器用于配置AHB的频率、高速APB(APB2)和低速APB(APB1)区域。AHB和高速APB 的最高频率是72MHz,低速APB的最高频率为36MHz。

自举模式

在启动时,自举管脚被用于选择三种自举模式中的一种:

●从用户闪存自举

●从系统存储器自举

●从SRAM自举

自举加载器存放于系统存储器中,可以通过USART对闪存重新编程。

供电方案

●VDD = 2.0至3.6V:VDD管脚提供I/O管脚和内部调压器的供电。

●VSSA,VDDA = 2.0至3.6V:为ADC、复位模块、RC振荡器和PLL的模拟

部分提供供电。使用ADC时,VDD不得小于2.4V。

●VBAT = 1.8至3.6V:当(通过电源开关)关闭VDD时,为RTC、外部32kHz 振荡器和后备寄存器供电。

供电监控器

本产品内部集成了上电复位(POR)/掉电复位(PDR)电路,该电路始终处于工作状态,保证系统在供电超过2V时工作;当VDD低于设定的阀值(VPOR/PDR)时,置器件于复位状态,而不必使用外部复位电路。器件中还有一个可编程电压监测器(PVD),它监视VDD供电并与阀值VPVD比较,当VDD低于或高于阀值VPVD时将产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。需要通过程序开启PVD。

电压调压器调压器有三个操作模式:主模式(MR)、低功耗模式(LPR)和关断模式

●主模式(MR)用于正常的运行操作

●低功耗模式(LPR)用于CPU的停机模式

●关断模式用于CPU的待机模式:调压器的输出为高阻状态,内核电路的供电切断,调压器处于零消耗状态(但寄存器和SRAM的内容将丢失) 该调压器在复位后始终处于工作状态,在待机模式下关闭处于高阻输出。

低功耗模式STM32F103xx增强型支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。

●睡眠模式在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。

●停机模式在保持SRAM和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式下,停止所有内部1.8V部分的供电,PLL、HSI 和HSE的RC振荡器被关闭,调压器可以被置于普通模式或低功耗模式。可以通过任一配置成EXTI的信号把微控制器从停机模式中唤醒,EXTI信号可以是16个外部I/O 口之一、PVD的输出、RTC闹钟或USB的唤醒信号。

●待机模式在待机模式下可以达到最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.8V部分的供电被切断;PLL、HSI和HSE的RC振荡器也被关闭;进入待机模式后,SRAM和寄存器的内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。

从待机模式退出的条件是:NRST上的外部复位信号、IWDG复位、WKUP管脚上的一个上升边沿或RTC的闹钟到时。注:在进入停机或待机模式时,RTC 、IWDG 和对应的时钟不会被停止。

DMA 灵活的7路通用DMA可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;DMA控制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地址和目标地址都可以通过软件单独设置。DMA可以用于主要的外设:SPI、I2C、USART、通用和高级定时器TIMx和ADC。

RTC(实时时钟)和后备寄存器RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT管脚供电。后备寄存器(10个16位

的寄存器)可以用于在VDD消失时保存数据。

实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC 振荡器或高速的外部时钟经128分频。内部低功耗RC振荡器的典型频率为32kHz。为补偿天然晶体的偏差,RTC的校准是通过输出一个512Hz的信号进行。RTC具有一个32位的可编程计数器,使用比较寄存器可以产生闹钟信号。有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz 时它将产生一个1秒长的时间基准。

独立的看门狗

独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个独立的32kHz的内部RC振荡器提供时钟,应为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选择字节可以配置成是软件看门狗或硬件看门狗。在调试模式,计数器可以被冻结。

窗口看门狗

窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式,计数器可以被冻结。

系统时基定时器

这个定时器是专用于操作系统,也可当成一个标准的递减计数器。它具有下述特性:

●24位的递减计数器

●重加载功能

●可屏蔽的计数器为0中断

●可编程时钟源

通用定时器(TIMx)

产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。

高级控制定时器(TIM1)

高级控制定时器(TIM1)可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。四个独立的通道可以用于:

●输入捕获

●输出比较

●产生PWM(边缘或中心对齐模式)

●单脉冲输出

●反相PWM输出,具程序可控的死区插入功能配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。在调试模式下,计数器可以被冻结。很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。

I 2C总线

多达2个I2C总线接口,能够工作于多主和从模式,支持标准和快速模式。

它们支持双从地址寻址(只有7位)和主模式下的7/10位寻址。内置了硬件CRC 发生器/校验器。它们可以使用DMA操作并支持SM总线2.0版/PM总线

通用同步/异步接受发送器(USART)

其中一个USART接口通信速率可达4.5兆位/秒,其他USART接口通信速率可达2.25兆位/秒。接口具有硬件的CTS和RTS信号管理、支持IrDA的SIR ENDEC、与ISO7816兼容并具有LIN主/从功能。USART接口可以使用DMA 操作。

串行外设接口(SPI)

多达2个SPI接口,在从或主模式下,全双工和半双工的通信速率可达18兆位/秒。3位的预分频器可产生8种主模式频率,可配置成每帧8位或16位。硬件的CRC产生/校验支持基本的SD卡和MMC模式。2个SPI接口都可以使用DMA操作。

控制器区域网络(CAN)

CAN接口兼容规范2.0A和2.0B (主动),位速率达1兆位/秒。它可以接收和发送11位标识符的标准帧,也接收和发送29位标识符的扩展帧。具有2个接收FIFOs,3级14个可调节的滤波器。内部SRAM 缓冲最多可处理32个报文对象。通用串行总线(USB)

STM32F103xx增强型系列产品内嵌一个USB设备,遵循USB全速标准;USB 接口实现全速(12兆位/ 秒)的设备功能;具有可软件配置的端点和待机/恢复功能。专用的48MHz时钟由内部主PLL直接产生。

通用输入输出接口(GPIO)

每个GPIO管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功能;多数GPIO管脚都与数字或模拟的外设功能管脚共用。所有的GPIO管脚都有大电流通过能力。在需要的情况下,I/O管脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。在APB2上的I/O脚可达18MHz的翻转速度。

ADC(模拟/数字转换器)

STM32F103xx增强型产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC 有多达16个外部通道,可以执行单次或扫描转换模式;在扫描模式下,转换在一组选定的模拟输入上自动进行。

ADC接口上额外的逻辑功能允许:

●同时采样和保持

●交叉采样和保持

●单次采样ADC可以使用DMA操作。

模拟看门狗功能允许非常精准地监视一路、多路或所有选中的被转换电压,当被监视的信号超出预置的阀值时,将产生中断。由标准定时器(TIMx)和高级控制定时器(TIM1)产生的事件,可以分别内部级联到ADC的开始触发、外部触发和DMA触发,允许应用程序同步AD转换和时钟的操作。

温度传感器

温度传感器产生一个随温度线性变化的电压,转换范围在2V < VDDA < 3.6V之间。温度传感器在内部被连接到ADC12_IN16的输入通道上,用于将传感器的输出转换到数字数值。

串行线JTAG调试口(SWJ-DP)

内嵌ARM的SWJ-DP接口和JTAG接口,JTAG的TMS和TCK信号分别与SWDIO和SWCLK共用管脚,TMS脚上的一个特殊的信号序列用于在JTAG-DP 和SWJ-DP间切换。

2.4.主要函数说明

ADC_InitTypeDef structure

ADC_InitTypeDef 定义于文件“stm32f10x_adc.h”:typedef struct { u32 ADC_Mode;

FunctionalState ADC_ScanConvMode;

FunctionalState ADC_ContinuousConvMode;

u32 ADC_ExternalTrigConv;

u32 ADC_DataAlign;

u8 ADC_NbrOfChannel;

} ADC_InitTypeDef

/* Return the ADC1 injected channel1 converted data value */ u16 InjectedDataValue;

InjectedDataValue=ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1);

3.设计过程或程序代码

3.1.设计过程

1、A/D变换原理

◆采样:

间隔一定时间对信号进行采样,用信号序列来代替原来时间上连续的信号。

均匀采样:

可完整地恢复原始信号,其中,T为采样时间间隔,fs表示采样频率,fm 表示原始信号最大频率。

◆量化:

把采集到的数值送到量化器编码成数字形式,每个样值代表一次采样所获得的信号的瞬时幅度。

A/D转换器一般为标量均匀量化。(量化还可分为:标量量化、矢量量化)量化误差(与舍入方式相关):1LSB或1/2LSB

◆编码:

A/D模拟/数字转换器一般采用二进制编码,A/D变换后的结果到此可以表示为一个以0、1二进制形式表示的比特流,单位时间内可以传输的二进制比特速率就是A/D之后的码速率,数值上等于采样频率与量化比特数值之乘积。

二进制编码:量化与字长的关系。

3、ADC的A/D转换方式

D0

D1

D2

D3

数据输出

D4

D5

D6

D7

开始转换 SOC

结束转换 EOC

输出使能

在查询方式下,软件可通过读取ADC模块转换完毕引脚EOC的状态或状态寄存器中的转换完成标志位判断本次A/D是否结束;

若结束则从数据总线或数据寄存器中读取A/D结果数据。

2、ADC模拟/数字转换器:

STM32的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

3、转换特点:

STM32的ADC最大的转换速率为1Mhz,也就是转换时间为1us(ADCCLK=14M,采样周期为1.5个ADC时钟下得到),不能让ADC的时钟超过14M,否则将导致结果准确度下降。

4、STM32将ADC的转换分为2个通道组:

规则通道组和注入通道组。规则通道相当于运行的程序,而注入通道就相当于中断。在程序正常执行的时候,中断是可以打断程序正常执行的。同这个类似,注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才得以继续转换。规则组设置后,可以按照设置的通道顺序对各通道进行依次采集。方便于对多路ADC通道的自动采集。注入组最多设置4个通道,简单来讲就是需要触发才能采集设置的通道ADC值。

本设计选择了采用规则组,设置了一个通道进行自动采集。

5、此设计显示电压的特点:

本设计测量电压值范围为0-3.3V的电压,显示误差为±0.001V。

LCD实时显示电压值,MicroSD卡对数据进行同步存储。

6、DMA请求:

在这次设计中用到了ADC转换结果采用DMA传递方式。直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。

7、LCD控制电路

(1)本设计所使用的LCD为3寸,400X240分辨率。LCD模块使用STM32的FSMC 接口控制。3TFT显示屏焊接在奋斗显示转接板上,在屏上贴有触摸屏,通过40芯的接口与V3或者MINI连接。

3.2.程序代码

1、主程序:

int main(void)

{ u16 len, c2len,c3len,c4len;

u8 c[] = " Voltage ";

u8 c2[] = " ";

u8 c3[] = " ";

u8 c4[] = " . V ";

u16 bkColor;

len = sizeof(c)-1; //计算字节数长度sizeof()

c2len = sizeof(c2)-1;

c3len = sizeof(c3)-1;

c4len = sizeof(c2)-1;

bkColor = White;

RCC_Configuration(); //系统时钟配置为72MHz

Usart1_Init(); //串口1初始化

ADC_Configuration(); //ADC初始化

FSMC_LCD_Init(); //FSMC总线配置

lcd_Init(); //液晶初始化

// lcd_PutChar(10,10,'g',0x0000,0xffff);

// LCD_test();

USART_OUT(USART1,"\r\n USART1 print AD_value -------------------------- \r\n");

while (1)

{

if (ticks++ >= 900000) { //间隔时间显示转换结果

ticks = 0;

Clock1s = 1;

}

if (Clock1s) {

Clock1s = 0;

USART_OUT(USART1,"The current AD value = %d \r\n", ADC_ConvertedValue); //串口显示字符段

//Delay(0xAFFFFf);

Precent = (ADC_ConvertedValue*100/4096);// 算出百分比,2的12次幂为0xfff

Voltage = Precent*33; // Voltage为实际电压值的1000倍.

c4[3]=(Voltage/1000+'0') ; // 取千位数的整数部分

c4[5]=((Voltage%1000)/100+'0') ; //对千位数取余数后再取其百位的

整数部分

c4[6]=(((Voltage%100)/10)+'0') ; //对百位数取余数后再取其十位的整数部分

c4[7]=((Voltage%10)+'0') ; //对百位数取余数后再取其个位的整数部分

lcd_PutStr_16x24_Center(0, c3, c4len,Black, bkColor);

lcd_PutStr_16x24_Center(Line1, c, len,Black, bkColor);

lcd_PutStr_16x24_Center(Line2, c3, c3len,Black, bkColor);

lcd_PutStr_16x24_Center(Line3, c4, c4len,Black, bkColor);

lcd_PutStr_16x24_Center(Line4, c2, c2len,Black,bkColor);

USART_OUT(USART1,"The v value = %d.%d%d%d V\r\n", c4[3]=(Voltage/1000),c4[5]=((Voltage%1000)/100),c4[6]=(Voltage%100)/10,c4[7]=( Voltage%10)); //显示实际电压值

LCD_test();

}

}

}

2、ADC配置:

ADC_Configuration函数用于配置ADC1的通道11,因为只用了ADC1所以采用了ADC独立模式,设置通道11进入规则组,规则组里的通道只有1个,就是通道1,转换用了扫描方式,软件触发,转换结果采用DMA方式传递到2字节长度的缓存区里(ADC_ConvertedValue),默认的ADCCLK为36MHz,采样周期是55.5+12.5时钟周期,相当于采样时间是间隔(68/36)us。

void ADC_Configuration(void)

{

ADC_InitTypeDef ADC_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

DMA_InitTypeDef DMA_InitStructure;

//设置AD模拟输入端口为输入1路AD 规则通道

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOC, &GPIO_InitStructure);

/* Enable DMA clock */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

/* Enable ADC1 and GPIOC clock */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);

/* DMA channel1 configuration ----------------------------------------------*/

//使能DMA

DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;

//DMA通道1的地址

DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;

//DMA传送地址

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

//传送方向

DMA_InitStructure.DMA_BufferSize = 1;

//传送内存大小,100个16位

DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

//传送内存地址递增

DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //ADC1转换的数据是16位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //传送的目的地址是16位宽度DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;

//循环

DMA_InitStructure.DMA_Priority = DMA_Priority_High;

DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

DMA_Init(DMA1_Channel1, &DMA_InitStructure);

/* 允许DMA1通道1传输结束中断*/

//DMA_ITConfig(DMA1_Channel1,DMA_IT_TC, ENABLE);

//使能DMA通道1

DMA_Cmd(DMA1_Channel1, ENABLE);

//ADC配置

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1工作在独立模式

ADC_InitStructure.ADC_ScanConvMode = ENABLE; //模数转换工作在扫描模式(多通道)还是单次(单通道)模式

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //模数转换工作在扫描模式(多通道)还是单次(单通道)模式

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ADC数据右对齐

ADC_InitStructure.ADC_NbrOfChannel = 1; //规定了顺序进行规则转换的ADC通道的数目。这个数目的取值范围是1到16 ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channels configuration [规则模式通道配置]*/

//ADC1 规则通道配置

ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5); //通道11采样时间55.5周期

//使能ADC1 DMA

ADC_DMACmd(ADC1, ENABLE);

//使能ADC1

ADC_Cmd(ADC1, ENABLE);

// 初始化ADC1校准寄存器

ADC_ResetCalibration(ADC1);

//检测ADC1校准寄存器初始化是否完成

while(ADC_GetResetCalibrationStatus(ADC1));

//开始校准ADC1

ADC_StartCalibration(ADC1);

//检测是否完成校准

while(ADC_GetCalibrationStatus(ADC1));

//ADC1转换启动

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

}

4.设计结果与分析

设计发现:数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自定义测量电压,通过调节模数转换电位器使在一定范围内可任意改变。输出的电压格式和精度的改变通过软件控制,输出电压的大小的改变可以通过硬件实现。

参考文献

[1]张旭,亓学广,李世光等.基于STM32电力数据采集系统的设计[J].电子测量技

术,2010,33(11):90-93.DOI:10.3969/j.issn.1002-7300.2010.11.024.

[2]孙启富,孙运强,姚爱琴等.基于STM32的通用智能仪表设计与应用[J].仪表技术

与传感器,2010,(10):34-36.DOI:10.3969/j.issn.1002-1841.2010.10.012.

[3]董书成,张鸿飞,林胜钊等.基于STM32帧转移科学级CCD 的时钟驱动电路

设计和实现[J].核电子学与探测技术,2014,(8):1011-1015.

[4]王铁流,李宗方,陈东升等.基于STM32的USB数据采集模块的设计与实现[J].

测控技术,2009,28(8):37-40.

[5]卢军,李振璧,曹明明等.基于STM32的掘进机控制系统设计[J].煤矿机

械,2013,34(1):265-267.

[6]刘明贵,于謇,梁昊等.基于STM32的岩土工程无线采集系统[J].仪表技术与传感

器,2010,(5):95-97.

[7]王爱林,刘荣华,严顶等.基于STM32的CAN-USB转换模块[J].仪表技术与传感

器,2012,(6):69-70,73.

[8]吴磊,翟云飞.基于STM32的NAND flash的块分配框架设计[J].计算机测量与

控制,2015,23(1):201-204.

[9]肖林京,于鹏杰,于志豪等.基于STM32和emWin图形库的液晶显示系统设计[J].

电视技术,2015,39(1):39-42,50.

[10]董宝玉,薛严冰,马驰等.基于AD9854与STM32的频率特性测试仪设计[J].化

工自动化及仪表,2014,(6):655-659.

[11]贺洪江,程琳.基于STM32和Modbus的电参数采集系统[J].自动化与仪

表,2014,29(6):26-29.

[12]王丹丹,宗振海,陈慧珊等.基于STM32的智能温室远程控制系统的设计[J].浙

江农业学报,2014,(3):791-796.

[13]索猛,罗益民.基于STM32的循环水在线监测系统设计[J].仪表技术与传感

器,2014,(12):78-79,83.

[14]徐卓农,任嘉.一种多功能单片机综合实验装置的研究与实现[J].中南林学院学

报,2005,25(6):149-151.

[15]张德荣,裘君,童有成等.嵌入式系统课程实践教学模式探索与研究[J].安徽电

子信息职业技术学院学报,2010,09(6):68-69.

基于51单片机的简易数字电压表的设计

课题交流毫伏表设计 系别 专业 年级 姓名 学号 指导教师

目录 第一章引言 (2) 1.1摘要 (2) 1.2 设计目的 (2) 1.3设计任务及要求 (2) 1.4 课程设计过程 (2) 第二章系统方案选择和论证 (3) 2.1基本方案论证 (3) 2.2输出部分中各模块的方案选择 (3) 2.3总体方案设计 (4) 第三章AT89C51的结构 (5) 3.1AT89C51的概述 (5) 3.2 AT89C51部结构 (5) 3.3存储器和特殊功能寄存器的介绍 (5) 3.4时钟电路和复位电路 (7) 第4章元器件的选择 (7) 4..1显示 (7) 4.2 模数(A/D)芯片 (11) 4.3 数模AC/DC736芯片 (13) 4.4 OP07 (13) 第五章电路的设计 (14) 5.1时钟电路 (15) 5.2A/D转换程序 (17) 第6章系统的调试 (18) 6.1 硬件的调试 (18) 6.2软件调试 (19) 参考文献 (20) 附录 (20) 程序清单 (20) 元件清单 (25)

容摘要 本次设计主要解决AC/DC转换、A/D转换、数据处理及显示控制等几个模块。控制系统采用AT89C51单片机,A/D转换采用ADC0809。要求交流毫伏表检测信号的电压围:1mv—2v ,输入信号的频率围:10Hz-2000KHz,并在LCD1602液晶上显示测量电压信号。 关键词AT89C51单片机;电压测量;A/D转换;LCD1602液晶显示;AC/DC 转换;放大;衰减。 1.2 设计目的 本课程的任务是通过“交流毫伏表的设计”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和分析,解决问题的能力;积累经验,培养按部就班,一丝不苟的工作个对所学知识的综合应用能力。 1.3设计任务及要求 1、设计一个交流毫伏表,检测信号的电压围:1mv—2v。 2、输入信号的频率围:10Hz-2000KHz 3、查阅相关资料,了解交流毫伏表的各种现实发法极其特点,并着重掌 握交流毫伏表的设计及显示等。 4、熟悉并掌握个芯片的功能极其管脚分。 5、检测设计电路中所需要的各种电子元器件。 6、对设计的交流毫伏表进行装接与调试,要时设计的电路达标。 7、完成设计交实物图极其设计报告。 1.4课程设计过程 1、各组组成员讨论并进行软硬件系统设计,经指导老师同意进行具体方 案实施。 2、将可行方案硬件电路焊接在万能板上,并检查。 3、软硬件仿真。

简易数字电压表

单片机课程设计报告 简易数字电压表 一、设计任务与要求 1.电压表的测量范围为0-5V; 2.测量精度约为20mV。 二、方案设计与论证 方案一: 选择MC14433A/D转换器、CD4511等元器件设计电路: 方案二: 用单片机设计电路:

设计采用STC89C52单片机、A/D转换器ADC0809和共阴数码管为主要硬件,分析了数字电压表Proteus软件仿真电路设计及编程方法。将单片机应用于测量技术中,采用ADC0809将模拟信号转化为数字信号,用STC89C52实现数据的处理。通过数码管以扫描的方式完成显示。 方案比较: 方案1:3为半双积分式A/D转换器MC14433转换精度为读数的±0.05%±1字,并能很方便地判断出是否超欠量程,以便于量程的自动切换功能的实现,其中集成了双积分式A/D转换器所有的CMOS模拟电路和数字电路。具有输入阻抗高,功耗低,电源电压范围宽,精度高等特点,并且具有自动校零和自动极性转换功能。缺点是工作速度低,且外围电路需配基准电源,短译码驱动器和位驱动器,电路较复杂。 方案2:设计电路简单。易于控制,且性能稳定;单调试过程需要一定的编程基础,可利用Proteus软件仿真电路设计和调试。Proteus软件是一种电路分析和实物模拟仿真软件。它运行于Windows操作系统上,可以进行仿真、分析(SPICE)各种模拟器件和集成电路,是集单片机和SPICE分析于一身的仿真软件,功能强大,具有系统资源丰富、硬件投入少、形象直观等优点,因此可用此软件方便调试电路。 经过以上两种方案的特点比较,方案二中的电路设计采用比较常见的元器件,对这种方案有一定的专业基础,故采用第二种方案。 三、单元电路设计与参数计算 1 A/D转换模块

基于单片机的数字电压表设计

引言 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本论文重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。

1 实训要求 (1)基本要求: ①实现8路直流电压检测 ②测量电压范围0-5V ③显示指定电压通道和电压值 ④用按键切换显示通道 (2)发挥要求 ①测量电压范围为0-25V ②循环显示8路电压 2 实训目的 (1)进一步熟悉和掌握单片机的结构和工作原理; (2)掌握单片机的借口技术及,ADC0809芯片的特性,控制方法; (3)通过这次实训设计,掌握以单片机为核心的电路设计的基本方法和技术;(4)通过实际程序设计和调试,逐步掌握模块化程序设计的方法和调试技术。 3 实训意义 通过完成一个包括电路设计和程序开发的完整过程,使自身了解开发单片机应用系统的全过程,强化巩固所学知识,为以后的学习和工作打下基础。 4 总体实训方案 测量一个0——5V的直流电压,通过输入电路把信号送给AD0809,转换为数字信号再送至89s52单片机,通过其P1口经数码管显示出测量值。 4.1 结构框图 如图1—1所示 图1—1

#简易数字电压表的设计

一、简易数字电压表的设计 l .功能要求 简易数字电压表可以测量0~5V 的8路输入电压值,并在四位LED 数码管上轮流显示或单路选择显示。测量最小分辨率为0.019 V ,测量误差约为土0.02V 。 2.方案论证 按系统功能实现要求,决定控制系统采用A T89C52单片机,A /D 转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便地进行8路其它A /D 转换量的测量、远程测量结果传送等扩展功能。数字电压表系统设计方案框图如图1-1。 3.系统硬件电路的设 计 简易数字电压测量电 路由A /D 转换、数据处 理及显示控制等组成,电 路原理图如图1-2所示。A /D 转换由集成电路0809完 成。0809具有8路模拟输人 端口,地址线(23~25脚)可决定对哪一路模拟输入作A /D 转换,22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存,6脚为测试控制,当输入一个2us 宽高电平脉冲时,就开始A /D 转换,7脚为A /D 转换结束标志,当A /D 转换结束时,7脚输出高电平,9脚为A /D 转换数据输出允许控制,当OE 脚为高电平时,A /D 转换数据从该端口输出,10脚为0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1 MHz 时钟。单片机的P1、P3.0~P3.3端口作为四位LED 数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作A /D 转换数据读入用,P2端口用作0809的A /D 转换控制。 4.系统程序的设计 (1)初始化程序 系统上电时,初始化程序将70H ~77H 内存单元清0,P2口置0。 (2)主程序 在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将 图1-1 数字电压表系统设计方案

基于51单片机的数字电压表设计

目录 摘要........................................................................ I 1 绪论. (1) 1.1数字电压表介绍 (1) 1.2仿真软件介绍 (1) 1.3 本次设计要求 (2) 2 单片机和AD相关知识 (3) 2.1 51单片机相关知识 (3) 2.2 AD转换器相关知识 (4) 3 数字电压表系统设计 (5) 3.1系统设计框图 (5) 3.2 单片机电路 (5) 3.3 ADC采样电路 (6) 3.4显示电路 (6) 3.5供电电路和参考电压 (7) 3.6 数字电压表系统电路原理图 (7) 4 软件设计 (8) 4.1 系统总流程图 (8) 4.2 程序代码 (8) 5 数字电压表电路仿真 (15) 5.1 仿真总图 (15) 5.2 仿真结果显示 (15) 6 系统优缺点分析 (16) 7 心得体会 (17) 参考文献 (18)

1 绪论 1.1数字电压表介绍 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。因此AD转换是此次设计的核心元件。输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。 本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。其实也为建立节约成本的意识有些帮助。本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。 1.2仿真软件介绍 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: (1)现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、 A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 (3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。 (4)具有强大的原理图绘制功能。 可以仿真51系列、A VR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的

简易数字电压表(单片机课程设计)

课程设计说明书 简易数字电压表的设计 院(系) 专业机械电子工程 班级二班 学生姓名 指导老师 2015 年 3月 13 日 课程设计任务书 兹发给机械电子工程(2)班学生课程设计任务书,内容如下:

1.设计题目:简易数字电压表的设计 2.应完成的项目: (1)可测0~5V的8路电压输入值; (2)在LED数码管上轮流显示; (3)单路选择显示; (4)利用功能键可以实现滚动显示,显示启动/停止等; 3.参考资料以及说明: [1]刘瑞新.单片机原理及应用教程[M].北京:机械工业出版社, 2003.7 [2]张俊,钟知原,王日根.简易数字电压表的设计[J].科协论坛:下半月,2012(8)34-35 [3]赵静,刘少聪,丁浩.王莉莎.基于单片机的数字电压表的设计[J].数字技术与应用,2011(6):121-125 [4]魏立峰.单片机原理及应用技术[M].北京大学出版社,2005年 [5]谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,2005.12 4.本设计任务书于2015年3月2日发出,应于2015年3月13日前完成,然后进行答辩。 专业教研室、研究所负责人审核年月日 指导教师签发年月日 课程设计评语:

课程设计总评成绩: 课程设计答辩负责人签字: 年月日

摘要 在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。 本实验设计主要讲述了数字电压表的设计过程,主要包括硬件设计和程序设计,硬件主要包括以STC89C51单片机为主要控制电路、数据采样电路、显示电路等,是基于51单片机开发平台实现的一种数字电压表系统。该设计采用STC89C51单片机作为控制核心,驱动控制四块数码管显示被测电压,以ADC0809为模数转换数据采样,实现被测电压的数据采样,使得该数字电压表能够测量0-5V之间的直流电压值。 关键词:STC89C51、ADC0809、显示电路、数据采样

简易数字电压表设计内容

简易数字电压表设计 一、设计要求 1、利用ADC0809设计一简易数字电压表,要求可以测量0—5V之间8路输入电压值、电压值由四位LED数码管显示,并在数码管上轮流显示或单路选择显示; 2、测量最小分辨率为0.019V,测量误差为±0.02V。 二、设计作用与目的 利用AT89S51与ADC0809设计制作一个数字表,能够测量直流电压值。 三、所用设备及软件 单片机AT89S51、ADC0809芯片、PC设计台 四、系统设计方案 本设计采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理框图如图1所示。该电路通过ADC0809芯片采样输入口IN0输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S51芯片的P0口。AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经三极管驱动,再传送给数码管。同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位选信号,控制数码管的亮灭。另外,AT89S51还控制着ADC0809的工作。其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。

图1 系统原理框图 本设计与其它方法实现主要区别在于元器件上例如:AT89C51与AT89C51、AT89S51在AT89C51的基础上,又增加了许多功能,性能有了较大提升。 1.ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。 2.工作频率为33MHz,大家都知道89C51的极限工作频率只有24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。 3.具有双工UART串行通道。 4.内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。 5.双数据指示器。 6.电源关闭标识。 7.全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。 8.兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。在89C51上一样可以照常运行,这就是所谓的向下兼容。 五、系统硬件设计 5.1 模数转换芯片ADC0809 ADC0809是典型的8位8通道逐次逼近式A/D转换器。它可以和微型计算机直接接口。ADC0809转换器的系列芯片是ADC0808,可以相互替换。

虚拟数字电压表的设计

摘要 LabVIEw 8.5版本的工程技术比以往任何一个版本都丰富.它采用了中文界面,各个控件的功能一目了然。利用它全新的用户界面对象和功能,能开发出专业化、可完全自定义的前面板。LabVIEw 8.5对数学、信号处理和分析也进行了重大的补充和完善,信号处理分析和数学具有更为全面和强大的库,其中包括500多个函数。所以在LabVIEw 8.5版本下能够更方便地实现虚拟电压表的设计。 虚拟电压表是基于计算机和标准总线技术的模块化系统,通常它由控制模块、仪器模块和软件组成,由软件编程来实现仪器的功能。在虚拟仪器中,计算机显示器是惟一的交互界面,物理的开关、按键、旋钮以及数码管等显示器件均由与实物外观相似的图形控件来代替,操作人员只要通过鼠标或键盘操作虚拟仪器面板上的旋钮、开关、按键等设置各种参数,就能根据自己的需要定义仪器的功能。在虚拟电压表的设计中,考虑到仪器主要用于教学和实验,使用对象是学生,因此将引言中提到的三种检波方式的仪器合为一体,既简化了面板操作,又便于直接对比。 该电压表主要用于电路分析和模拟电子技术等实验课的教学和测量仪器,能够使学习者了解和掌握电压的测量和电压表对各种波形的不同响应。因此,虚拟电压表应具备电源开关控制、波形选择,以及显示峰值、有效值和平均值三种结果,且输入信号的大小可调节等功能。虚拟电压表由硬件设备与接口、设备驱动软件和虚拟仪器面板组成。其中,硬件设备与接口包括仪器接口设备和计算机,设备驱动软件是直接控制各种硬件接口的驱动程序,虚拟仪器通过底层设备驱动软件与真实的仪器系统进行通信,并以虚拟仪器面板的形式在计算机屏幕上显示与真实仪器面板操作相对应的各种控件。在此,用软件虚拟了一个信号发生器。该信号发生器可产生正弦波、方波和三角波,还可以输入公式,产生任意波形。根据需要,可调节面板上的控件来改变信号的频率和幅度等可调参数,然后检测电压表的运行情况。因此,在LabVIEW图形语言环境下设计的虚拟电压表主要分为两个部分:第一部分是虚拟电压表前面板的设计;第二部分是虚拟电压表流程图的设汁。

简易数字电压表的设计

一、设计题目:简易数字电压表的设计 二、设计目的 自动化专业的专业实践课程。本课程的任务是使学生通过“简易数字电压表的设计”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和分析,解决问题的能力;积累经验,培养按部就班,一丝不苟的工作个对所学知识的综合应用能力。 三、设计任务及要求 设计电压表并实现简单测量。具有以下基本功能: ⑴可以测量0~5V的8路输入电压值; ⑵可在四位LED数码管上轮流显示或单路选择显示; ⑶测量最小分辨率为0.019V; ⑷.测量误差约为±0.02V; ⑸带有一定的扩展功能; 目录 第一章摘要 (4) 第二章智能仪表目前的发展状况 (4) 第三章设计目的 (6) 第四章设计要求 (6) 第五章设计方案与比较论证 (6) 5.1 单片机电路设计 (6) 5.2 电源方案 (8) 5.3 显示方案 (9) 5.4 A/D采样方案 (10) 5.5串口通讯方案 (12) 5.7 高压,短路报警 (14) 5.8 键盘 (14) 第六章方案设计 (15) 6.1 硬件设计 (15)

6.2 软件设计 (16) 第七章性能测试 (18) 电压测试 (18) 第八章结果分析 (19) 第九章设计体会 (19) 参考文献 (20) 附录 (20) 元器件清单 (20) 程序清单 (20) 第一章摘要 本报告介绍了基于AT89S52单片机为核心的、以AD0809数模转换芯片采样、以1602液晶屏显示的具有电压测量功能的具有一定精度的数字电压表。在实现基础功能要求之上扩展了串口通讯、时钟功能、高压报警、短路测试、电阻测量、交流电压峰峰值和周期测试等功能,使系统达到了良好的设计效果和要求。 关键词:AT89S52单片机模数转换液晶显示扩展功能 ABSTRACT:The report describes the AT89S52 based on the microcontroller as the core, AD0809 digital-to-analog converter chip sampling, to 1602 LCD display with voltage measurement function with a certain precision of digital voltage meter. In achieving functional requirements based upon the expansion of serial communications, high-pressure alarm, short circuit, electrical resistivity measurement, AC voltage and the peak of cycle testing and other functions, allowing the system to achieve good results and the design requirements. Keywords : AT89S52 SCM analog-to-digital conversion functions LCD expansion 第二章智能仪表目前发展状况 在自动化控制系统中,仪器仪表作为其构成元素,它的技术进展是跟随控制系统技术的发展的。常规的自动化仪器仪表适应常规控制系统的要求,它们以经典控制理论和现代控制理论为基础,以控制对象的数学模型为依据。当今,控制理论已发展到智能控制的新阶段,自动化仪器仪表的智能化就成为必然和必须。本文将就自动化仪器仪表的智能化的状况与进展,以及当今对智能仪器仪表研究、开发热点做概要的分析与表述。作者建议人们关注自动化仪器仪表智能化技术的进展,关注仪器仪表装置

简易数字直流电压表的设计

电子制作课程考核报告 课程名称简易数字直流电压表的设计 学生姓名贾晋学号1313014041 所在院(系)物理与电信工程 专业班级电子信息工程1302 指导教师秦伟 完成地点 PC PROTEUS 2015年 6 月 13 日

简易数字直流电压表的设计 简易数字直流电压表的设计 摘要本文介绍一种基于AT89C51单片机的简易数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换芯片为ADC0808,它主要负责把采集到的模拟量转换为数字量再传送到数据处理模块。数据处理则是由芯片AT89C51来完成,主要负责把ADC0808传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;并且,它还控制着ADC0808芯片工作。 该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-200V的模拟直流输入电压值,并通过数码管显示。 关键词单片机;数字电压表;AT89C51;ADC0808

目录 1 引言............................................................................................... 2 总体设计方案............................................................................... 2.1设计要求 ............................................................................... 2.2 设计思路 .............................................................................. 2.3 设计方案 .............................................................................. 3 详细设计....................................................................................... 3.1 A/D转换模块 .................................................................... 3.2 单片机系统 ........................................................................ 3.3 时钟电路 ............................................................................ 3.4 LED显示系统设计 ........................................................... 3.5 总体电路设计 .................................................................... 4 程序设计....................................................................................... 4.1 程序设计总方案 ................................................................ 4.2 系统子程序设计 ................................................................ 5 仿真............................................................................................. 5.1 软件调试 (11) 5.2 显示结果及误差分析 ........................................................ 结论................................................................................................. 参考文献........................................................................................... 附录...................................................................................................

简易数字电压表的设计

一、简易数字电压表的设计 l.功能要求 简易数字电压表可以测量0~5V的8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示。测量最小分辨率为0.019 V,测量误差约为土0.02V。 2.方案论证 按系统功能实现要求,决定控制系统采用AT89C52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便地进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。数字电压表系统设计方案框图如图1-1。 图1-1 数字电压表系统设计方案 3.系统硬件电路的设计 简易数字电压测量电路由A/D转换、数据处理及显示控制等组成,电路原理图如图1-2所示。A/D转换由集成电路0809完成。0809具有8路模拟输人端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换,22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存,6脚为测试控制,当输入一个2us宽高电平脉冲时,就开始A/D 转换,7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平,9脚为A/D 转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出,10脚为0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1 MHz时钟。单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。 4.系统程序的设计 (1)初始化程序 系统上电时,初始化程序将70H~77H内存单元清0,P2口置0。 (2)主程序

51单片机数字电压表设计

基于51单片机的数字电压表设计 二级学院铜陵学院 专业自动化 班级 组号 组员 指导教师

简易的数字电压表的设计 目录 一课程设计任务书·····························································································································错误!未定义书签。 1.1 设计题目、目的····················································································································错误!未定义书签。 1.2 题目的基本要求和拓展功能··························································································错误!未定义书签。 1.3 设计时间及进度安排··········································································································错误!未定义书签。 二设计内容············································································································································错误!未定义书签。 2.1 元器件选型······························································································································错误!未定义书签。 2.2 系统方案确定·························································································································错误!未定义书签。 2.3 51单片机相关知识··············································································································错误!未定义书签。 2.4 AD转换器相关知识··············································································································错误!未定义书签。 三数字电压表系统设计 (7) 3.1系统设计框图 (8) 3.2 单片机电路 (9) 3.3 ADC采样电路 (10) 3.4显示电路 (11) 3.5供电电路和参考电压·························································································································································· 3.6 数字电压表系统电路原理图·········································································································································四软件部分 4.1 主程序 4.2 显示子程序 五数字电压表电路仿真 5.1 仿真总图 5.2 仿真结果显示 六系统性能分析 七心得体会 - 2 -

数字电压表设计

《单片机课程设计》设计报告 设计题目: 姓名: 设计时间:2010-12-28 备注:

目录 1.引言 (2) 2.概述··2 2.1实验要求 (2) 2.2实验目的 (2) 2.3 实验器材 (2) 3.总体设计方案 (3) 3.1系统的总体结构 (3) 3.2芯片的选择 (4) 3.3 ADC0809 的主要性能指标 (4) 4.硬件电路设计 (6) 4.1 AT89S52 单片机最小系统 (6) 4.2 ADC0809 与AT89S52 单片机接口电路设计 (6) 4.3显示电路与AT89S52 单片机接口电路设计 (6) 5.软件设计 (7) 5.1 主程序图 (7) 5.2 ADC0809 电压采集程序框图 (8) 5.3显示程序框图 (9) 6.调试与测量结果分析 (10) 6.1实验系统连线图 (11) 6.2程序调试 (12) 6.3 仿真结果 (13) 6.4 实验结果分析 (14) 7.程序清单和系统原理图 (15) 7.1程序清单 (15) 7.2 系统原理图 (16) 8.实验总结和实验收获 (17)

1.引言 本次课程设计要求完成是数字电压表的设计,随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量 最为普遍。本次课程设计我们小组xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx该电路设计新颖、功能强大、可 扩展性强。 实验报告首先简要介绍了设计数字电压表的实验要求和目的;根据要求和目的设计出直流数字电压表的系统结构流程,以及硬件系统和软件系统的设计,并给出了硬件电路的设计细节,以及调试和仿真结果。最后进行了实验和心得体会的总结。 通过完成一个包括电路设计和程序开发的完整过程,使自身了解开发单片机应用系统的全过程,强化巩固所学知识,为以后的学习和工作打下基础。 2.概述 2.1实验要求 采用ADC0809 和AT89S52 单片机及显示电路完成0~5V 直流电压的检测 2.2实验目的 (1)进一步熟悉和掌握单片机的结构和工作原理; (2)掌握单片机的借口技术及,ADC0809芯片的特性,控制方法;(3)通过这次实训设计,掌握以单片机为核心的电路设计的基本

简易数字电压表设计报告

摘要--------------------------------------------------------2 1.数字电压表的简介------------------------------------------3 1.1数字电压表的发展--------------------------------------3 1.2数字电压表的分类--------------------------------------4 2.设计的目的------------------------------------------------5 3.设计的内容及要求------------------------------------------5 4.数字电压表的基本原理--------------------------------------5 4.1数字电压表各模块的工作原理----------------------------5 4.2数字电压表各模块的功能--------------------------------5 4.3数字电压表的工作过程----------------------------------6 5.实验器材--------------------------------------------------7 6.电路设计实施方案------------------------------------------7 6.1.实验步骤---------------------------------------------7 6.2各个模块设计------------------------------------------8 6.2.1 基准电压模块-----------------------------------8 6.2.2 3 1/2位A/D电路模块---------------------------10 6.2.3 字形译码驱动电路模块--------------------------12 6.2.4 显示电路模块----------------------------------13 6.2.5 字位驱动电路模块------------------------------16 7.总结-----------------------------------------------------17 参考文件---------------------------------------------------18 附录-------------------------------------------------------19

基于AT89C51和ADC0809简易数字电压表的设计

基于AT89S51的简易数字电压表的设计 摘要: 本课题是利用单片机设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。此外,本文还讨论了设计过程中的所用的软件硬件环境,调试所出现的问题等。关键词:单片机; AT89S51;数字电压表; ADC0809,四位数码管 任务书 1.设计题目 基于AT89S51的简易数字电压表的设计。 2.设计内容与要求 用AT89S51单片机和ADC0809组成一个数字电压表,要求能够测量0~5V的直流电压值,并用四位数码管显示,并要求所用元器件最少。 3,。设计目的意义 (1).通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。 (2).通过数字电压表的设计系统掌握51单片机的应用。掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入EPROM并进行调试等。 目录 一、系统原理框图 二、AT89S51的结构 三、器件的比较与选择 四、系统硬件及仿真图

五、相关软件简介 六、程序流程图与源程序 七、数字电压表发展及未来 八、设计体会 九、参考文献 基于AT89S51的简易数字电压表的设计

第一章系统原理框图 选择AT89S51作为单片机芯片,选用四位8段共阴极LED数码管实现电压显示,利用ADC0809作为数模转换芯片。将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示。P2口接数码管位选,P1接数码管,实现数据的动态显示,如图4.1所示。 图4.1 系统原理框图 第二章: AT89S51的结构 在本次课题设计中我们选择了AT89S51芯片。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51

单片机数字电压表

数字电压表 姓名潘刚 所在学院电子信息工程学院 专业班级通信1105班 学号 11214048 指导教师付文秀 日期2013 年 12月 15日

一、实验目的: 通过利用单片机设计简易数字电压表,使学生学会使用A/D转换器进行电压信号采集,了解A/D芯片TLC0832转换性能及基本原理,掌握A/D转换器与单片机的接口电路及编程技术。思考如何利用单片机和A/D实现多路电压监测系统,各路电压值通过数码管轮流显示问题 二、实验内容和要求: 利用实验平台上的串行模/数转换芯片及4位数码管,设计完成一个数字电压表。要求:数字电压表可测量0~5V输入电压,电压值通过数码管显示。 三、方案设计: 使用ADC0832模拟/数字转换器芯片设计数字电压表电路。该设计方案以单片机AT89S52为主控芯片,以ADC0832模拟/数字转换器芯片为核心转换模拟/数字量的芯片,组成数字电压表电路。该电路能准确地测出所被测有效电压值、附加四位显示功能,可精确到有效电压值为0.01V。 四、设计流程图 4.1总体设计流程图

4.2 AD转换关系设计流程图 五、软硬件设计 5.1 硬件电路设 该设计的硬件电路由主控部分(单片机AT89S51)、采集模拟量部分(A/D转换一路ADC0832)、显示部分(四位八段数码管)、电源部分由电脑USB(5V)供电4个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现数字电压表的功能。各部分的硬件电路设计如下。设计总电路图见附录一。 5.2单片机AT89S52外围电路设计 5.2.1复位电路设计 MCS-51的复位输入引脚RST为MCS-51提供了初始化的手段,可以使程序从指定处开始执行,在MCS-51的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则MCS-51循环复位,只有单RET由高电平变成低电平以后,MCS-51才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路。

相关文档
最新文档