单片机课程设计数字电压表_第1页
单片机课程设计数字电压表_第2页
单片机课程设计数字电压表_第3页
单片机课程设计数字电压表_第4页
单片机课程设计数字电压表_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录第一章 前言- 3 -1.1概述- 3 -1.2系统原理及基本框图- 3 -第二章 硬件设计- 4 -2.1 背景介绍- 4 -2.1.1、预备知识- 4 -2.1.2、单片机测量电压原理- 4 -2.2 设计目的- 4 -2.3 设计题目- 4 -2.4 设计说明- 5 -2.4.1、系统设计- 5 -2.4.2、硬件原理- 5 -2.4.3、系统连接- 6 -2.5 软件流程图- 7 -2.6 系统各模块原理图- 9 -第三章 程序设计- 15 -第四章总结- 19 -第一章 前言1.1概述数字电压表(digital voltmeter)简称dvm,它是采用数字化测量技术,把连续的模

2、拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便。目前,由各种单片a/d 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由dvm扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片a/d 转换器以及由它们构成的基于单片机的数字电压表的工作原理。1.2系统原理及基本框图如图1.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经

3、隔离干扰送到a/d转换器进行a/d转换,然后送到单片机中进行数据处理。处理后的数据送到led中显示,同时通过串行通讯与上位机通信.输入电路a/d转换spce061a芯片led显示第二章 硬件设计2.1 背景介绍2.1.1、预备知识 1. 熟悉凌阳单片机工作原理。 1)凌阳单片机的i/o口的使用原理和设置; 2)凌阳单片机的中断功能; 3)凌阳单片机的adc的了解。 2. 熟悉凌阳汇编语言及c语言。 2.1.2、单片机测量电压原理 单片机实现电压测量,首先要把输入的电信号转换为数字量,这一转换过程称为a/d转换,又称为量化过程,需要用到a/d转换器。 2.2 设计目的本课程设计的基本要求是: 1

4、. 熟悉凌阳十六位单片机系统板61板的基本构成。 2. 掌握led数码管原理及使用方法。 3. 掌握61板的使用方法。 4. 初步掌握spce061a单片机汇编语言一般编程技巧。 5. 初步掌握61板系统调试的一般步骤及方法。 6. 掌握adc的使用。 2.3 设计题目本装置将实现0-3.3v的电压测量,ioa6接要测量的电压,经ad转换后,计算出当前电压值,在数码管上显示当前电压。具体要求如下: 1. 通过ioa6接入要测量的电压,单片机自动检测。 2. 在数码管上实时显示当前电压值。 2.4 设计说明2.4.1、系统设计 根据设计题目的要求分析,并考虑到题目的可扩展性,系统分成两大部分:

5、1. 模拟电压输入。 2. 数码管显示。 根据系统的功能现选择61板作为单片机控制处理部分,利用4位led数码管作为显示部分,如图 4.36所示。 03.3v电压输入spce061a精简开发板ioa815led数码管iob89ioa6 2.1 系统框图2.4.2、硬件原理 61板电路原理图请参考附录。 关于led数码管可参考第一章内容。 03.3v可调的电压可以通过在vdd与gnd之间接一电位器获得,其电路如下图所示。 vdd(3.3v)gndr(10k)ioa6 2.2 显示部分原理图2.4.3、系统连接 采用凌阳大学计划的led键盘模组和61板搭配可以很容易的完成这个课程设计的题目。它的连

6、结图如图 4.38所示,iob的低八位控制数码管显示段位,iob高八位控制点亮哪一个数码管,ioa6连接模拟电压输入端av(图中并没有画出具体连线)。led键盘模组的左上角有一个可变电阻,调整它的阻值即可在ioa6获得不同电压。 2.3 led键盘膜组和61板连接图发光二极管数码管1数码管2数码管3数码管4数码管5数码管6key1key2key3key4key5key6key7key8按键状态跳线2*4key2.5 软件流程图在主程序中,首先初始化ad和数码管驱动程序,然后不断执行ad采集,将采到的数字量换算成03.3v区间的电压值,在数码管上显示出来。其流程如下: 开始初始化ad及数码管驱动

7、程序获压值在数码管上显示 显示器片选 1*8key 显示器段选 ioa8-15 ioa0-7 iob0-7 iob8-15 2.4 主程序流程图ad转换程序连续采集8个数字量,取其平均值,返回给主程序。 yn开始adc_sum = 0ad转换完成?将ad转换值累加至adc_sum已执行8次转换?adc_sum=adc_sum/8返回adc_sumyn 2.5 ad转换程序流程2.6 系统各模块原理图原理与框图:(1)电源区原理框图 (2)下载区原理框图ice 基本运作方式是通过控制 clock 及通过 ice 喂入指令方式,来控制cpu 的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存

8、器值的设定来控制目前 cpu 的动作. 每个相连接的不同ice模块都拥有自己独特的3-bit id,当pc在传送control信号时都会先传送该 3-bit id,只有ice本身的id和control信号的id 相同时才会执行该命令或回传资料。61板上的74hc244主要在我们选用下载线的时候起作用,主要奇缓存的作用和完成sda是作为数据回送还是数据下传的选择。 (3)音频输入部分如下图所示电路, micp和micn将随着mic产生的波形变化,并在两个端口处形成两路反相的波形,再经过两级运放放大,把放大的语音信号交给adc转换为数字量,这个时候我们就可以通过单片机编程对这些数据进行处理,比如说

9、语音数据压缩、语音识别样本处理。音频输入外围电路如下:2.3.5音频输出部分spy0030是凌阳公司开发的专门用于语音信号放大的芯片,它的增益如下所示: gain=2*5000/(5000+r1) spy0030工作原理图2.3.6按键部分按键是通过通断控制来实现它的功能,61板上的按键在没按下时,它的1、3脚是断开的,当按下时这两个脚是连通的。若此时我们在1脚接一个高电平,把第三脚连到一个i/o口上,这就形成了一个人机操作界面,通过编程对i/o扫描,单片机就能识别到我们的按键命令。第三章 程序设计3.1 程序名称为voltagetest。 工程名称:voltagetest 功能描述:03.3

10、v电压表参考程序 实现0-3.3v的电压测量,ioa6接要测量的电压,经ad转换后,计算出当前电压值,在数码管上显示当前电压。具体要求如下:1. 通过ioa6接入要测量的电压,单片机自动检测。2. 在数码管上实时显示当前电压值。 涉及的库:cmacro.lib组成文件:main.c, ad.cdig.asmad.h, dig.h硬件连接:led键盘模组的2*4key接ioa低8位,dig接iob高8位,seg接iob低8位,61板的电压选择跳线j5跳至3v位(1)主程序文件名称:main.c 功能描述:03.3v电压的程序#include ad.h/ ad采集程序头文件#include dig

11、.h/ 包含数码管驱动头文件#define clr_wdt()*(unsigned *)0x7012=1/ 清看门狗 语法格式:void dispfloat(float fnum) 实现功能:显示10以内浮点数,保留2位小数 参数:fnum - 要显示的数值,范围0.009.99 返回值:无const unsigned dignum=/ 09十个数字对应的数码管显示编码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f;void dispfloat(float fnum)unsigned int tempnum, i;if(fnum10)retu

12、rn;tempnum = (unsigned int)fnum;/ 获得整数部分dig_set(1, dignumtempnum | 0x80);/ 在第1位上显示整数部分(以及小数点)for(i=2; i=3; i+)fnum = (fnum - tempnum) * 10;tempnum = (unsigned int)fnum;dig_set(i, dignumtempnum);/ 在第i位上显示第i-1位小数 语法格式:int main(void) 实现功能:主函数 参数:无 返回值:无int main()unsigned int ad_data;float ad_result;adc

13、_init();dig_init();while(1)clr_wdt();ad_data = adc_get();ad_result = (float)ad_data/0xffc0)*4.0;dispfloat(ad_result);#define p_int_ctrl(unsigned int*)0x7010/ 硬件端口定义#define p_int_clear(unsigned int*)0x7011/ 硬件端口定义#define c_irq4_4khz0x0040/ 常数助记符定义void irq4(void)_attribute_(isr);/ 将irq4函数声明为中断服务函数/ 语法

14、格式:void irq4(void) 实现功能:irq4中断服务函数,用于led数码管驱动 参数:无 返回值:无void irq4(void)/ irq4函数体if(*p_int_ctrl&c_irq4_4khz)!=0x0000)/ 如果是4khz中断*p_int_clear = c_irq4_4khz;/ 清中断标志位dig_drive();(2)顶头文件void adc_init(void);unsigned int adc_get(void);#endif;实验显示结果:3.2 可扩展题目3.2.1、功能描述: 1)、改进为两路电压数据采集; 2)、用61板的key1与key2切换采集通道; 3)、按下key3键语音播报当前电压值。 3.2.2、方案论证: 1)、多路ad采集; 2)、61板播放语音; 3)、按键扫描. 第四章总结1.电压测量通过不同的接口电路可实现温度、湿度、压力等测量,广泛应用于工业领域。本电路设计别具一格,是一种高精度、低功耗、宽量程、智能化的电压表。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论