张天圆.docx
《张天圆.docx》由会员分享,可在线阅读,更多相关《张天圆.docx(18页珍藏版)》请在冰豆网上搜索。
张天圆
概述-1-
第一章设计目的及要求-2-
1.2设计要求-2-
第二章设计原理及方案-3-
2.1电源提供方案-3-
2.2复位方案-3-
2.3输入输出方案-3-
第三章硬件设计-4-
3.1系统原理及基本框图-4-
3.2系统各模块原理图-4-
3.2.1电源区原理框图如图3.2所示-4-
3.2.2下载区原理框图-5-
3.2.3音频输入部分-6-
图3.4-7-
3.2.4音频输出部分-7-
3.2.5按键部分-8-
第四章软件设计-9-
4.1软件流程图-9-
4.2程序内容-10-
4.2.1主程序-11-
4.2.2顶头文件-13-
第五章系统调试-14-
第六章结论分析及体会-15-
6.2结论分析-15-
参考文献-17-
附录-18-
华科学院课程设计报告
0-3.3V电压表
设计人:
张旭
专业:
电子信息工程
班级:
电子092202H
学号:
200922070228
指导教师:
赵熹
二零一二年
概述
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便。
目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本章重点介绍单片A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。
第一章设计目的及要求
1.1设计目的
本装置将实现0-3.3V的电压测量,IOA6接要测量的电压,经AD转换后,计算出当前电压值,在数码管上显示当前电压。
具体要求如下:
1.通过IOA6接入要测量的电压,单片机自动检测。
2.在数码管上实时显示当前电压值。
1.2设计要求
1.熟悉凌阳十六位单片机系统板-61板的基本构成。
2.掌握LED数码管原理及使用方法。
3.掌握61板的使用方法。
4.初步掌握SPCE061A单片机汇编语言一般编程技巧。
5.初步掌握61板系统调试的一般步骤及方法。
6.掌握ADC的使用。
第二章设计原理及方案
2.1电源提供方案
为使模块稳定工作,须有可靠电源,采用单片机控制模块提供5v电源。
此方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2.2复位方案
复位方式有两种:
按键复位与软件复位。
由考虑到程序的简洁,避免冗长,本设计采用按键复位,使用芯片的复位键,通过按键对单片机输入一个高电平脉冲,达到复位的目的。
2.3输入输出方案
方案一:
采用SPCEO61A扩展I/O口及键盘,显示等。
该方案的优点是:
使用灵活可编程,并且有RAM。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在IO口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多。
由于该系统对于数码管的控制,只用单片机本身的I/O口就可实现,且本身的RAM已经够用,故选择方案二
第三章硬件设计
3.1系统原理及基本框图
模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。
处理后的数据送到LED中显示,同时通过串行通讯与上位机通信。
61板作为单片机控制处理部分,利用4位LED数码管作为显示部分。
如图3.1所示。
图3.1
3.2系统各模块原理图
3.2.1电源区原理框图如图3.2所示
图3.2
3.2.2下载区原理框图
ICE基本运作方式是通过控制clock及通过ICE喂入指令方式,来控制CPU的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存器值的设定来控制目前CPU的动作.每个相连接的不同ICE模块都拥有自己独特的3-bitID,当PC在传送control信号时都会先传送该3-bitID,只有ICE本身的ID和control信号的ID相同时才会执行该命令或回传资料。
61板上的74HC244主要在我们选用下载线的时候起作用,主要奇缓存的作用和完成SDA是作为数据回送还是数据下传的选择。
原理图如图3.3所示。
图3.3
3.2.3音频输入部分
如下图所示电路,MICP和MICN将随着MIC产生的波形变化,并在两个端口处形成两路反相的波形,再经过两级运放放大,把放大的语音信号交给ADC转换为数字量,这个时候我们就可以通过单片机编程对这些数据进行处理,比如说语音数据压缩、语音识别样本处理。
音频输入外围电路如图3.4所示。
图3.4
3.2.4音频输出部分
SPY0030是凌阳公司开发的专门用于语音信号放大的芯片,它的增益如图3.5所示:
Gain=2*5000/(5000+R1)
图3.5
3.2.5按键部分
按键是通过通断控制来实现它的功能,61板上的按键在没按下时,它的1、3脚是断开的,当按下时这两个脚是连通的。
若此时我们在1脚接一个高电平,把第三脚连到一个I/O口上,这就形成了一个人机操作界面,通过编程对I/O扫描,单片机就能识别到我们的按键命令。
第四章软件设计
4.1软件流程图
在主程序中,首先初始化AD和数码管驱动程序,然后不断执行AD采集,将采到的数字量换算成0~3.3V区间的电压值,在数码管上显示出来。
其流程如下:
开始初始化AD及数码管驱动程序获压值在数码管上显示显示器片选1*8Key显示器段选IOA8-15IOA0-7IOB0-7IOB8-15。
流程图如图4.1所示。
图4.1
AD转换程序连续采集8个数字量,取其平均值,返回给主程序。
YN开始ADC_Sum=0AD转换完成?
将AD转换值累加至ADC_Sum已执行8次转换?
ADC_Sum=ADC_Sum/8返回ADC_SumYN。
如图4.2所示。
图4.2
4.2程序内容
程序名称为VoltageTest。
工程名称:
VoltageTest
功能描述:
0~3.3V电压表参考程序
实现0-3.3V的电压测量,IOA6接要测量的电压,经AD转换后,计算出当前电压值,在数码管上显示当前电压。
具体要求如下:
1.通过IOA6接入要测量的电压,单片机自动检测。
2.在数码管上实时显示当前电压值。
涉及的库:
CMacro.lib
组成文件:
main.c,AD.c
Dig.asm
AD.h,Dig.h
硬件连接:
LED键盘模组的2*4KEY接IOA低8位,DIG接IOB高8位,SEG接IOB低8位,61板的电压选择跳线J5跳至"3V"位
4.2.1主程序
文件名称:
main.c
功能描述:
0~3.3V电压的程序
#include"AD.h"//AD采集程序头文件
#include"DIG.h"//包含数码管驱动头文件
#defineCLR_WDT()*(unsigned*)0x7012=1//清看门狗
语法格式:
voidDispFloat(floatfNum)
实现功能:
显示10以内浮点数,保留2位小数
参数:
fNum-要显示的数值,范围0.00~9.99
返回值:
无
constunsignedDigNum[]={//0~9十个数字对应的数码管显示编码
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x27,0x7f,0x6f
};
voidDispFloat(floatfNum)
{
unsignedintTempNum,i;
if(fNum>10)return;
TempNum=(unsignedint)fNum;//获得整数部分
DIG_Set(1,DigNum[TempNum]|0x80);//在第1位上显示整数部分(以及小数点)
for(i=2;i<=3;i++)
{
fNum=(fNum-TempNum)*10;
TempNum=(unsignedint)fNum;
DIG_Set(i,DigNum[TempNum]);//在第i位上显示第i-1位小数
}
}
语法格式:
intmain(void)
实现功能:
主函数
参数:
无
返回值:
无
intmain()
{
unsignedintAD_Data;
floatAD_Result;
ADC_Init();
DIG_Init();
while
(1)
{
CLR_WDT();
AD_Data=ADC_Get();
AD_Result=((float)AD_Data/0xffc0)*4.0;
DispFloat(AD_Result);
}
}
#defineP_INT_Ctrl(unsignedint*)0x7010//硬件端口定义
#defineP_INT_Clear(unsignedint*)0x7011//硬件端口定义
#defineC_IRQ4_4KHz0x0040//常数助记符定义
voidIRQ4(void)__attribute__((ISR));//将IRQ4函数声明为中断服务函数/语法格式:
voidIRQ4(void)
实现功能:
IRQ4中断服务函数,用于LED数码管驱动
参数:
无
返回值:
无
voidIRQ4(void)//IRQ4函数体
{
if((*P_INT_Ctrl&C_IRQ4_4KHz)!
=0x0000)//如果是4KHz中断
{
*P_INT_Clear=C_IRQ4_4KHz;//清中断标志位
DIG_Drive();
}
}
4.2.2顶头文件
voidADC_Init(void);
unsignedintADC_Get(void);
#endif;
第五章系统调试
采用凌阳大学计划的LED键盘模组和61板搭配可以很容易的完成这个课程设计的题目。
它的连结图如图4.38所示,IOB的低八位控制数码管显示段位,IOB高八位控制点亮哪一个数码管,IOA6连接模拟电压输入端AV(图中并没有画出具体连线)。
LED键盘模组的左上角有一个可变电阻,调整它的阻值即可在IOA6获得不同电压。
具体如图5.1所示。
图5.1
发光二极管数码管1数码管2数码管3数码管4数码管5数码管6KEY1KEY2KEY3KEY4KEY5KEY6KEY7KEY8按键状态跳线2*4Key
第六章结论分析及体会
6.1实验显示结果:
6.2结论分析
电压测量通过不同的接口电路可实现温度、湿度、压力等测量,广泛应用于工业领域。
本电路设计别具一格,是一种高精度、低功耗、宽量程、智能化的电压表。
可扩展键盘、报警电路,实现电压异常记录、报警。
但在实验过程中由于没有LCD显示器,没有实现带播报电压语音和在LCD液晶屏显示电压数据的结果,用LED显示缺一个插口,不能同时实现语音播报和数字显示。
1功能描述:
(1)、改进为两路电压数据采集;
(2)、用61板的KEY1与KEY2切换采集通道;
(3)、按下KEY3键语音播报当前电压值。
2方案论证:
(1)、多路AD采集;
(2)、61板播放语音;
(3)、按键扫描.
6.3心得体会
经过半个月的单片机课程设计我认识到61板的作用以及它能实现的功能,但是我觉得自己所学的基础知识不太扎实,在实践方面还存在很大的问题。
感觉到理论和实践结合起来还是有难度的。
我的动手操作能力有点差,在焊电路板的时候出现了很多问题,由于自己急于求成,所以结果不令人满意。
有些问题自己还解决不了,需要老师和同学们的帮助,课程设计实践过程中需要我把原理搞清楚,这一点是很重要的。
而要搞清楚原理,需要查找很多资料,然后自己认真琢磨、深入思考。
再把理论搞清楚的前提下,然后在电路板上进行操作试验。
在这个过程中会遇到很多挫折,但是我们要永不放弃,坚持到最后,就一定能成功!
参考文献
【1】孔祥红凌阳十六位单片机实训教程2009年
【2】李晓林牛昱光阎高伟单片机原理与接口技术2012年
附录
附图1
附图2