凌阳SPCE061A单片机智能万用表设计.doc_第1页
凌阳SPCE061A单片机智能万用表设计.doc_第2页
凌阳SPCE061A单片机智能万用表设计.doc_第3页
凌阳SPCE061A单片机智能万用表设计.doc_第4页
凌阳SPCE061A单片机智能万用表设计.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

智能数字万用表的设计摘要:本智能数字万用表由凌阳SPCE061A单片机、MC144333位A/D转换电路、自动量程转换电路、交直流转换电路和大、小电阻测量电路组成,能够对交流电压、直流电压、大电阻和小电阻进行精确测量。使用凌阳SPCE061A单片机作为控制模块,实现量程自动转化;使用MC14433实现A/D转换;使用简易软键盘、凌阳SPLC501液晶显示模组实现输入和显示;使用单片机读取MC14433的数字信号来控制模拟开关,从而改变反馈电阻的大小实现档位的不同选择;本设计能够准确对被测量进行测量,所有性能指标符合要求。关键词:数字万用表单片机MC14433交直流电压测量电阻测量 1、 方案论证 1.交流电压的测量:由于交流电压不能直接测量,必须转换为直流电压。转换方案有3种:方案一、热电偶测量法:根据交流有效值的物理定义来实现测量的,利用热电偶电路平衡原理通过两端的电势比较得到有效值。但热电偶转换线性度差,且热电偶具有配对较难、响应速度慢、负载能力差等缺点。 方案二、模拟运算法:根据有效值的数学定义,用集成器件乘法器、开放器等依次对被测信号进行平方、平均、开方等计算直接得到交流输入信号的有效值。这种方案测量的动态范围小、精度不高且输入信号的幅度变小时,平均器输出电压的平均值下降值很快、输出幅度很小。方案三、交流整形电路:使用AD637等集成有效值转换芯片,把交流电压信号转换为幅值等于交流有效值的直流电压信号,在对直流电压进行测量,这种方案电路简单、响应速度快、失真度小、工作稳定可靠。综上,采用方案三进行交流电压的测量。2.小电阻的测量:由于小电阻在通入电压后发热,测量出的电阻值会产生较大的误差,对于小电路有3种方案测量:方案一、直流电桥测量法。直流电桥又分直流单电桥和直流双电桥。采用这两种方法测量时很多操作需要手动,并且对元件精度要求高,通过数字电位器来改变需要的电阻参数,索然可以实现数控,但数字电位器的每一级步进电阻值不确定,调节困难,用单片机处理计算复杂并且测量时操作不便。方案二、电阻比例法。电阻比例法采用如图1所示的双积分式A/D转换器电路,可实现电阻数字的转换。由于在电阻上Rx、Rs中流过相同的电流,因此不需要精密的基准电流,但需要计数器和精密时钟发生器且电路复杂处理难度大。方案三、采用恒流外加小信号放大法。当测量02小电阻时,采用恒流源产生10mA的电流流经电阻产生020mV压降再放大10倍即0200mV测量,这样解决了大电流流经小电阻发热大的问题。此种方案误差主要取决于恒流源的精度,只要恒流源恒定,测量可以达到很高的精度。综上,采用方案三进行小电阻的测量。3A/D转换模块方案一、采用CC7106。CC7106是CMOS大规模集成电路芯片,它将模拟电路与数字电路集成在一个有40个功能端的电路内,所以只需外接少量元件就可组成一个3位数字电压表。但是CC7106是以静态方式驱动LCD转换器,无BCD码输出端,因此不能直接获得降量程信号。方案二、采用MC14433。MC14433是一个低功耗3位双积分式A/D转换器,与CC7106相比,MC14433采用动态扫描显示,有多路调制的BCD码输出端和超量程信号输出端,便于实现自动控制。综上,采用方案二进行A/D转换。4自动量程转换模块方案一、采用软件来实现。通过单片机读取MC14433的数字信号来控制模拟开关,从而改变反馈电阻的大小实现档位的不同选择,能够很容易满足测量范围的要求。此方案是电路比较简单,实现也较容易。方案二、采用硬件实现。电路的核心是一块双向移位寄存器CC40194,移位方向由MC14433过量程信号控制,并且还要外接一些数字电路才能实现换档,电路比较复杂,不方便。综上,采用方案一进行自动量程转换。二、系统实现1.硬件设计根据题目要求和本系统的设计思想,系统主要包括图一所示。测交流电压被测量输入键盘与显示单片机系统电阻测量电路交/直流转换电路自动量程转换电路A/D转换电路测电阻测直流电压通过拨动开关选择图一设计原理图SPCE061A单片机是本系统的核心器件,负责控制整个系用的正常工作,包括读取MC14433转换后的结果及10mV、100mV、1V和10V档位的控制;按键输入动作响应;键盘与显示模块的驱动;量程自动控制等。输入的电压信号经过自动量程转换电路进行转换,变成可供ADC模拟输入端能正常进行采样的电压。交流电压测量电路的功能是将被测的交流电压经过AD637转换成直流电压进行测量。电阻测量电路中使用2个三极管构成能产生10mA电流的恒流的电路,通过NE5532后得到被测电阻上的电压,运算得到被测电阻值。A/D转换电路的功能是实现模拟量到数字量的转换,其转换后的数字量由单片机读取并送到键盘与显示模块中显示。2.不同功能的单元电路(1)整体电路图本系统由电源管理电路、A/D转换电路、自动量程转换电路、交直流转换电路和电阻测量电路组成。通过拨动开关和单片机选择所需功能进行测量,被测量通过与之相应的单元电路转化为电压,然后送入A/D转换电路转换成数字信号。单片机将数字信号读入并进行相应操作,然后在液晶显示屏上显示出来。(整体电路图见附录) (2)交直流转换电路交流电压测量真有效值的转换电路是测量交流电压的关键部分,其设计的好坏直接影响到交流电压信号的测量精度,在本次设计中我们通过比较采用AD637来实现交流信号到直流量的转变,将交流电压转换为直流,测量其有效值,电路如图三所示。 Vi是交流电压输入端,Vo端输出的是电压信号,输出直流电压的值是输入交流电压的真有效值。我们在面包板上测试时,第一次输出值偏小,在多次检测后,我们认为是AD637芯片产生的误差。在更换AD637芯片后,结果正确。(3)电阻测量电路电阻测量采用在待测电阻上流过恒定电流产生压降,通过测量相应的电压再经MC14433的A/D转换后得到电阻值。大电阻测量:大电阻测量由TL431芯片、C1、电位器R产生2V恒定电压,被测电阻与10、100、1K、10K、100K和1M的标准电阻相串联到地。通过测量Rx两端电压再经过相应的软件处理计算,可得到被测电阻的大小。电路如图四所示。小电阻测量:小电阻在通过小电流时难以测量,再通过大电流时又有电阻发热的问题。本数字万用表设计采用恒流源产生10mA的小电流流经电阻产生压降,通过测量Rx两端电压再经过相应的软件处理计算,可得到被测电阻的大小。当测量02小电阻时产生020mV电压再放大10倍即0200mV测量,这样解决了大电流流经小电阻发热大的问题又提高了精度。电路图如图五所示。恒流源电路:设计一个很简单的电路,使用元器件少,精度高。由2个三极管组成电路,输出为10mA电流,加在Rx两端进行测量压降。(电路图见附录)(4)模数与量程转换电路A/D转换原理:MC1403提供输出可调基准电压,当输入一个直流电压时,将进行A/D转换,用单片机来处理MC14433的控制信号。当A/D转换结束时,MC14433的EOC引脚输出一个高电平脉冲给单片机,单片机进入中断处理程序。单片机对MC14433的DS1DS4进行动态扫描,然后将Q0Q3进行转换之后由LCD显示。相关理论推导:双积分过程可以由下面的式子表示:因为,故有,式中=4000,是定时时间,是变时间,由确定斜率,若用时钟脉冲数N来表示时间,则被测电压就转换成了相应的脉冲数,实现了A/D转换。的参数计算: (式1)式中为积分电容上充电电压幅度,=,且=0.5V, =4000。自动量程转换电路的作用是按输入条件信号(过量程、欠量程信号)和时钟信号(EOC、DS1DS4)发生相应的量程信号控制。通过单片机读取MC14433的数字信号,通过数字信号的大小来控制模拟开关,从而改变反馈电阻的大小来实现档位的不同选择。模拟开关的导通由Q3和Q0决定,当被测电压过量程时(Q3=0且Q0=1),向高量程变化;欠量程时(Q3=1且Q0=1),向低量程变化;在量程适合时,保持原来状态不变。相关参数计算:,如果要实现4个档位,可以将设为1k、10k、100k和1M,然后通过控制开关来接通电阻,从而实现换档。(电路图见附录)(5)电源管理电路电源管理电路主要是将9V叠层电池转换成单片机工作电压、+5V和-5V的恒定电压,给后续电路提供工作电压。电池的正极分成两路,第一路是直接接入到LM317的输入端,LM317是三端集成稳压芯片,其输出恒定的4.3V,做单片机的电源。另一路是经过三极管9012可以开关控制,本设计中万用表处于正常工作状态时,单片机控制口输出高电平,9011处于饱和状态,9012的基极电压与低电压相近,9012饱和,即处于导通状态。9V叠层电池的正极电压到达78L05三端集成稳压芯片的输入端,其输出端输出的+5V电压。-5V有负压电荷泵7660S产生。当万用表处于“睡眠”状态时,单片机控制口输出为低电平。9011处于截止状态,9012的基极电压为9V,也处于截止状态,模拟部分电源电压为零。(电路图见附录)三、软件设计以下是通过软件编程实现功能的流程图,源代码见附录所示。开始进入电阻测量F键E键N进入电压测量系统初始化按键输入标称值读取数据计算误差值标称值显示量程选择判断量程YN键键键按键默认档位显示标称值的输入档位减一档位加一标称显示读数据计算误差值标准值显示量程的显示分钟无键按下产生中断执行睡眠中断程序中断返回触键唤醒产生中断执行唤醒中断程序中断返回四、系统测试1测试使用的仪器(1)数字万用表UT2003;(2)EE1640C型函数信号发生器;(3)RIGOL DM3051型的数字万用表。2指标测试和测试结果(一)直流电压的测试测试方案:通过拨动开关和单片机选择直流档,由直流电源提供电压进行测量,然后由单片机显示输出。档位输入电压实际电压误差(%)200mV2 V20 V200V结果分析:测量误差大部分在-0.2%+0.2%范围内,在200V档测量时,由于直流电源的输出电压不能超过30V,所以取两个值进行测量。在200mV量程进行测量时,由于输入信号的不稳定导致部分测量误差较大,基本满足题目要求。(二)电阻的测试测试方案:通过拨动开关和单片机选择电阻档,由电平转换电路提供2V的基准电压,将待测电阻接入测量端,然后选择合适的档位进行测量。档位理想电阻值测得的电阻值误差(%)22002 M结果分析:测量误差在-0.2%+0.2%范围内,满足题目要求。(三)交流电压的测试测试方案:通过拨动开关和单片机选择交流档,由函数信号发生器提供一个正弦交流电压,输入到交流端进行测量。设定频率档位输入电压值实际测得的电压值误差50Hz200mV2V20V结果分析:测量误差大部分在-0.5+0.5范围内,由于函数发生器的输出电压的不稳定,导致部分测量数据的误差较大,基本满足题目要求。五、结论本数字万用表系统完成了基本要求和发挥部分的所有内容,如下:1.直流电压的测量;2.交流电压的测量;3.大、小电阻的测量;4.自动量程转换;5.睡眠、唤醒功能;6.相对误差的测量。附录一:1. 整机电路图2.交直流转换电路3.大电阻测量电路4.小电阻测量电路5.模数与量程转换电路6.电源管理电路附录二:源代码:#include spce061a.h#include splc501user.h#include wybzimo2.hvoid IRQ3(void)_attribute_(ISR);void FIQ(void)_attribute_(ISR);unsigned int check_key();unsigned int key_scan();unsigned int bczsr();unsigned int rdata();void dycl();void dzcl();void onlyclz();int keyval;int sleep;int hx;unsigned int distable10=encoding_18,encoding_19,encoding_1a,encoding_1b,encoding_1c,encoding_1d, encoding_1e,encoding_1f,encoding_20,encoding_21; unsigned int srshuzi7;unsigned mc144335;unsigned mcdata;float wcz1;int eoc;int dangwei;double bcz;int owe;int over;int wcz5;int intctrl;unsigned int table=encoding_00,encoding_01,encoding_02,encoding_03,encoding_04,encoding_05, encoding_06,encoding_07,encoding_08,encoding_09,encoding_0a,encoding_0b, encoding_0c,encoding_0d,encoding_0e,encoding_0f,encoding_10,encoding_11, encoding_12,encoding_13,encoding_14,encoding_15,encoding_16,encoding_17;main()#if 1*P_TimerA_Data=65416;*P_TimerA_Ctrl=0x002d; _asm(INT FIQ,IRQ);*P_INT_Ctrl=0x2100;intctrl=0x2100;#endif*P_IOB_Dir&=0x00ff; /B口(8-15位)作为mc14433的数据读取端口*P_IOB_Attrib&=0x00ff; /B口(8-15位)作为mc14433的数据读取端口*P_IOB_Data&=0x00ff;*P_IOB_Dir|=0x0003; /B口(0-1位)作为量程控制信号输出*P_IOB_Attrib|=0x0003; /B口(0-1位)作为量程控制信号输出*P_IOB_Data|=0x0003; *P_IOB_Dir&=0xfffb; /设置IOB2带上拉电阻的输入端口*P_IOB_Attrib&=0xfffb; /设置IOB2带上拉电阻的输入端口*P_IOB_Data|=0x0004; /设置IOB2带上拉电阻的输入端口*P_IOB_Dir|=0x0003; /B口(0-1位)作为量程控制信号输出*P_IOB_Attrib|=0x0003; /B口(0-1位)作为量程控制信号输出*P_IOB_Data|=0x0003; /B口(0-1位)作为量程控制信号输出while(1)keyval=key_scan();if(keyval!=16)*P_TimerA_Data=65416;*P_TimerA_Ctrl=0x002d;switch(keyval)case 14:LCD501_Init(0x00);LCD501_Bitmap(0,32,(unsigned int *)table12);/进LCD501_Bitmap(12,32,(unsigned int *)table13);/入LCD501_Bitmap(24,32,(unsigned int *)table9);/电LCD501_Bitmap(36,32,(unsigned int *)table10);/压LCD501_Bitmap(48,32,(unsigned int *)table3);/测LCD501_Bitmap(60,32,(unsigned int *)table4);/量dycl(); break;case 15:LCD501_Init(0x00);LCD501_Bitmap(0,32,(unsigned int *)table12);/进LCD501_Bitmap(12,32,(unsigned int *)table13);/入LCD501_Bitmap(24,32,(unsigned int *)table9);/电LCD501_Bitmap(36,32,(unsigned int *)table11);/阻LCD501_Bitmap(48,32,(unsigned int *)table3);/测LCD501_Bitmap(60,32,(unsigned int *)table4);/量dzcl(); break; default: break; void dzcl() dangwei=5; LCD501_Init(0x00); while(1)*P_Watchdog_Clear=1;LCD501_Bitmap(0,12,(unsigned int *)table0);/标LCD501_Bitmap(12,12,(unsigned int *)table1);/称LCD501_Bitmap(24,12,(unsigned int *)table2);/值LCD501_Bitmap(0,24,(unsigned int *)table3);/测LCD501_Bitmap(12,24,(unsigned int *)table4);/量LCD501_Bitmap(24,24,(unsigned int *)table2);/值LCD501_Bitmap(1,36,(unsigned int *)table6);/误LCD501_Bitmap(12,36,(unsigned int *)table7);/差LCD501_Bitmap(24,36,(unsigned int *)table2);/值LCD501_PutChar(108,33,%);LCD501_Bitmap(1,48,(unsigned int *)table16);/档LCD501_Bitmap(12,48,(unsigned int *)table17);/位LCD501_Bitmap(24,48,(unsigned int *)table2);/值LCD501_Bitmap(96,24,(unsigned int *)table8);/欧LCD501_Bitmap(112,48,(unsigned int *)table8);/欧*P_Watchdog_Clear=1;keyval=check_key();if(keyval!=16)*P_TimerA_Data=65496;*P_TimerA_Ctrl=0x002d;switch(keyval)case 11:LCD501_PutChar(36,9, ); LCD501_PutChar(44,9, ); LCD501_PutChar(52,9, ); LCD501_PutChar(60,9, ); LCD501_PutChar(68,9, ); LCD501_PutChar(74,9, ); LCD501_PutChar(82,9, ); LCD501_PutChar(90,9, ); LCD501_PutChar(98,9, ); LCD501_PutChar(106,9, );bczsr();break;case 13:if(dangwei0)dangwei=dangwei-1;break;case 12:if(dangweibcz) LCD501_PutChar(36,33,+); wcz1=(mcdata*1000-bcz)*100/bcz; if(mcdata*1000bcz) LCD501_PutChar(36,33,+); wcz1=(mcdata*10-bcz)*100/bcz; if(mcdata*10bcz) LCD501_PutChar(36,33,+); wcz1=(mcdata*100-bcz)*100/bcz; if(mcdata*100bcz) LCD501_PutChar(36,33,+); wcz1=(mcdata*1000-bcz)*100/bcz; if(mcdata*1000bcz) LCD501_Bitmap(36,33,+); wcz1=(mcdata*10-bcz)*100/bcz; if(mcdata*10=bcz) LCD501_Bitmap(36,33,-); wcz1=(bcz-mcdata*10)*100/bcz; *P_Watchdog_Clear=1; wcz0=(int)wcz1/100%10; wcz1=(int)wcz1/10%10; wcz2=(int)wcz1%10; wcz3=(int)wcz1*10%10; wcz4=(int)wcz1*100%10; LCD501_Bitmap(48,36,(unsig

温馨提示

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

评论

0/150

提交评论