基于STM的简易数字电压表.docx
《基于STM的简易数字电压表.docx》由会员分享,可在线阅读,更多相关《基于STM的简易数字电压表.docx(15页珍藏版)》请在冰豆网上搜索。
基于STM的简易数字电压表
课程设计报告
学院(系):
机械电子工程学院
专业:
测控技术与仪器
学生姓名:
学号:
课程设计题目:
简易数字电压表
起迄日期:
课程设计地点:
指导教师:
第1章简易数字电压表设计方案论证1
简易数字电压表的应用意义1
本次课程设计的目的1
简易数字电压表设计的要求及技术指标1
设计方案论证2
总体设计方案框图及分析2
第2章简易数字电压表各单元电路设计2
A/D转换及数据处理2
串口通信7
LCD显示电路设计7
第3章电路原理图和PCB板的设计8
第4章系统软件程序设计9
第5章设计总结16
参考文献17
摘要
本文以ARM系列的STM32芯片为核心设计了一个简易数字电压表。
简易数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自定义测量电压,通过调节模数转换电位器使在一定范围内可任意改变。
输出的电压格式和精度的改变通过软件控制,输出电压的大小的改变通过硬件实现。
介绍了的生成原理、硬件电路和软件部分的设计原理。
该简易数字电压表具有体积小、价格低、性能稳定、功能齐全的优点。
关键词:
简易数字电压表;STM32F103;AD转换;
第一章简易数字电压表设计方案论证
简易数字电压表的应用意义
数字电压表简称DMV,它是采用数字化测量技术设计的电压表。
数字电压表的优良特性深受人们的青睐。
具体有以下的应用特点:
a)显示清晰直观,读数准确。
b)准确度高。
c)分辨率高。
d)测量范围宽。
e)扩展能力强。
f)测量速度快。
g)输入阻抗高。
h)集成度高、微功耗。
h)抗干扰能力强
本次课程设计的目的
1)了解STM32f103内部A/D转换性能及编程方法。
2)学会使用A/D转换器进行电压信号采集。
3)了解uCosII系统工作原理。
简易数字电压表设计的要求及技术指标
设计要求:
利用STM32F103内部A/D及寸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得集成特性。
总体设计方案框图及分析
第二章简易数字电压表各单元电路设计
简易数字电压表的设计由A/D转换.数据处理及显示控制等组成。
由于STM32F103集成了A/D转换.数据处理部分,所以可以集中在一起研究,所以分成了两部分。
A/D转换及数据处理
1)基本型号介绍
首先我们先研究STM32系列芯片的基本知识。
由图1可知STM32F103ZET6有144个引脚,所以我们来了解他的基本型号与代码之间的关系。
图1
STM32系列产品命名规则示例:
STM32F103C8T6Axxx
产品系列STM32=基于ARM?
s22的32位微控制器产品类型
F=通用类型产品子系列
101=基本型
102=USB基本型,USB全速设备
103=增强型
105或107=互联型引脚数目
T=36脚C=48脚R=64脚V=100脚Z=144脚
闪存存储器容量4=16K字节的闪存存储器6=32K字节的闪存存储器8=64K字节的闪存存储器B=128K字节的闪存存储器C=256K字节的闪存存储器D=384K字节的闪存存储器E=512K字节的闪存存储器
封装H=BGAT=LQFPU=VFQFPNY=WLCSP
温度范围6=工业级温度范围,-40°C~85°C7=工业级温度范围,-40°C~105°C内部代码A或者空(详见产品数据手册)
选项xxx=已编程的器件代号(3个数字)TR=卷带式包装
2)STM32系列的最小系统设计和独立的A/D转换器供电和参考电压
最小系统主要包括调试接口.震荡电路.引导设置.复位电路和供电系统。
电路由稳定的电源VDD供电。
值得注意的是,如果使用ADC,VDD的范围必须在;如果没有使用ADC,VDD的范围为。
启动模式选项:
由开关SW(BOOT0)和SW(BOOT1)配置。
如图2所示
图2
复位电路:
复位信号是低有效,复位源包括复位按钮JP3和连在连接器上的调试工具。
如图3
图3
时钟源:
两个时钟源被用于这个微控制器。
LSEX1用于嵌入式RTC的晶振;
HSEX2用于STM32F103微控制器的8MHz晶振。
如图4所示
图4
去耦电容:
去耦电容就是起到一个电池的作用,满足驱动电路电流的变化,避免相互间的耦合干扰。
由11个100nf的陶瓷电容和一个钽电容组成。
如图5所示
图5
独立的A/D转换器供电和参考电压:
为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。
●ADC的电源引脚为VDDA
●独立的电源地VSSA如果有VREF-引脚(根据封装而定),它必须连接到VSSA。
100脚和144脚封装:
为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和VREF-脚上。
在VREF+的电压范围为~VDDA。
如图6所示
图6
3)STM32系列的内ADC转换逻辑
12位ADC是一种逐次逼近型模拟数字转换器。
它有多达18个通道,可测量16个外部和2个内部信号源。
各通道的A/D转换可以单次、连续、扫描或间断模式执行。
ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。
ADC主要特征●12位分辨率●转换结束、注入转换结束和发生模拟看门狗事件时产生中断●单次和连续转换模式●从通道0到通道n的自动扫描模式●自校准●带内嵌数据一致性的数据对齐●采样间隔可以按通道分别编程●规则转换和注入转换均有外部触发选项●间断模式●双重模式(带2个或以上ADC的器件)●ADC转换时间:
─STM32F103xx增强型产品:
时钟为56MHz时为1μs(时钟为72MHz为μs)─STM32F101xx基本型产品:
时钟为28MHz时为1μs(时钟为36MHz为μs)─STM32F102xxUSB型产品:
时钟为48MHz时为μs─STM32F105xx和STM32F107xx产品:
时钟为56MHz时为1μs(时钟为72MHz为μs)●ADC供电要求:
到●ADC输入范围:
VREF-≤VIN≤VREF+●规则通道转换期间有DMA请求产生。
我们需要打开一个ADC输入端口,使外部的模拟量被采集,这样才能通过内部的ADC转换器和驱动电路来实现转换成数字量。
采集模拟量的电路如图7所示
图7
控制逻辑有三个作用:
第一,识别积分器的工作状态,适时发出控制信号,使A/D转换正常进行;第二,判定输入电压极性并控制LCD的负极性显示。
串口通信
由于微控制器的控制是通过编程语言来控制的,所以需要外设的串口来实现编程语言的读写。
通用异步收发器(UART)是一种串行接口,一般微处理器中都包含这种外设接口。
异步串行接口提供了一种简单的途径,使两个器件无需共享同一个时钟信号就能进行通信。
如果再加入一个合适的电平转换器MAX232,串口就能能用在RS232和RS485等网络中实现通信,或者与计算机的COM端口连接。
串口只需两根信号线(RX和TX)即可实现,而且只要两端器件都采用同样的位格式和波特率,那么它们无需其它任何对方的信息就可以成功传输数据。
电路图如图8所示
图8
LCD显示电路设计
由于STM32是一种高集成芯片,所以在显示液晶屏电路上就少了很多附带的驱动电路,我们选用采用自带驱动模块的液晶屏,这样就少了外围驱动电路。
LCD的显示电路如图9所示
图9
第三章电路原理图与PCB板设计
我们用电路板绘图软件protel,绘制电路原理图并生成PCB板,在绘制完原理图生成PCB板的布线与原件的排列方面有很多值得注意的问题,如地线与电源线必须加粗,尽量避免出现绕线的现象,因为这样就增加了信号传输的时间,尽量减少线的使用,相同器件尽量布在一起,这样方便以后电路板的焊接等等规则。
根据要求和以上的分析得到的原理图与PCB板图如图10所示
第四章系统软件程序设计
我们采用的是Kilc-4编写与烧入软件,在Kilc-4中建立项目并建立c语言文件,在文件中编写c语言程序,编写完毕后在软件中的选项flash中的configureflashtools中设置参数,设置成适合Cortex-M3嵌入式处理器STM32合适的参数。
最后编译检查程序的正确与否,如果可以创建目标文件则可以烧入微控制器中,否则检查是否有错误或是警告,排除错误或是警告,最终实现创建目标,最后烧入火牛开发板,检验程序是否符合设计要求,看液晶显示屏上的检测电压是否随着模拟输入电位器的旋转改变而改变。
简易数字电压表的控制程序为:
显示程序.c:
#include<>
#include""
#include""
#include""
#include""
#include""
#include""
intmain(void)
{
u16adcx;
floattemp;
floattemperate;
Stm32_Clock_Init(9);:
#include""
#include""
Iftheonlyfileyouareusingis*/
/*standardoutputusingprintf()fordebugging,nofilehandling*/
/*isrequired.*/
};
/*FILEistypedef’din.*/
FILE__stdout;
#ifdefEN_USART1_RX:
#include<>
#include""
#include""
:
#include<>
#include""
voiddelay_us(u32nus)
{
u32temp;
SysTick->LOAD=nus*fac_us;通过课设,加强了对电子技术电路的理解,学会查寻资料﹑方案比较,以及设计计算等环节,进一步提高分析解决实际问题的能力。
让我拥有了一定的独立分析解决问题的能力,开阔了视野,知道了电子在社会实践当中应用的广泛性。
也因此让我察觉到我对电子知识的了解很贫乏。
它督促我今后一定要学好电子技术基础。
2.了解与课程有关的电子电路以及元器件工程技术规范,能按课程设计任务书的技术要求,编写设计说明,能正确反映设计和实验成果,能正确绘制电路图。
。
3.在课设过程当中熟悉了电路板绘图软件protel的运用,为我课设时画电路图节省了不少的时间。
4.在课设的过程当中有不少的我不懂的问题,得到了老师和同学的细心帮助,让我有不少长进,感谢老师的辛苦指导,相信在今后的学习中我会更加努力,弥补自己的不足之处。
参考文献
[1]Cortex-M3嵌入式处理器原理与应用
[2]32位基于ARM微控制器STM32F10xx固件函数库
[3]Cortex-M3技术参考手册
[4]STM32F10x参考手册_cn
[5]STM32F10x微控制器参考手册(2009年12月第10版)