范文一:数字万用表课程设计
课程设计报告
题目名称 院(系) 课程名称 班级
学号
学生姓名 指导教师 起止日期 成绩
摘要
本文介绍的是数字万用表的发展背景和利用单片机,A/D转换芯片结合的方法设计一个数字万用表。它的具体功能是:测量直流电压5V挡和50V挡,测量电阻1k欧姆,10k欧姆,100k欧姆,1M欧姆,测量电流。单片机是一种集成电路芯片,采用超大规模技术集成了具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU)。随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。本课程设计的课题是“数字万用表的设计”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计单片机的能力,以及实际编程技能。
本课程设计主要解决电阻、交直流电流、交直流电压的测量,被测量最后都是以电压的形式送入AD进行测量的、A/D转换、数据处理及显示控制等六个模块。控制系统采用STC89C52单片机,A/D转换采用ADC0804,显示部分用1602液晶。
关键字:数字万用表 A/D转换与控制 ADC0804 单片机
第1页共2页
ABSTRACT
This article introduced a digital watch million in the development of the background and the use of a monolithic integrated circuits, the conversion of a way d chip design a number of schedule. its function is a dc voltage 5v , to measure the gear and 50v, measured in ohm. resistance 1k 10k the ohm, the ohm, 100k 1m ohms, the current monolithic integrated circuits. a computer chip, technical integration VLSI a data processing capability as (arithmetic, logic and data, network interrupt handling) microprocessor (cpu) monolithic integrated circuits. as technology evolved. monolithic integrated circuits to monolithic integrated circuits technology has become a modern country level of technology.
this course of the important issue of "digital design a million in the design of the" monolithic integrated circuits. the main examination in our ability in technical and programmatic.Programming ability to observe the situation. an independent analysis, designing monolithic integrated circuits, and practical skills in programming. this course is designed mainly to solve the current, voltage, stc89c52 monolithic integrated circuits, the use of ADC0804 that was liquid crystal.
keyword : Digital universal meter AD changs and controls ADC0804
第2页共3页
目录
摘要……………………………………………………1 ABSTRACT ……………………………………………………………………………2 第1章绪论…………………………………………………………………………4
1.1万用表的发展历史…………………………………………………………4 第2章万用表的介绍,方案选择……………………………………………5
2(1 万用表的功能介绍…………………………………………………………5
2.2万用表的方案选择…………………………………………………………6 第3章万用表的功能原理与设计…………………………………………………8
3.1 万用表的功能原理………………………………………………………8
3.2 万用表的软件设计………………………………………………………12 第4章万用表的安装与调试……………………………………………………13
4.1 安装调试………………………………………………………………13 结论…………………………………………………………………………………16 致谢………………………………………………………………………………17 参考文献…………………………………………………………………………18 附录
第3页共4页
第1章绪论
1.1 万用表的发展历史
数字万用表是经过历史慢慢发展来的。早期的万用表,使用磁石偏转指针的表盘,与经典的电流计相同;现代则采用LCD或VFD(真空萤光显示器,Vacuum fluorescent display)提供的数字显示。
模拟万用表在二手市场上不难找到,但它不太精确,这是因为调零和从仪表面板上准确的读数都容易产生偏差。
有的模拟万用表,使用真空管来放大输入的信号,这种设计的万用表也被称为真空管伏特计(VTVM,Vacuum Tube Volt Meters)或真空管万用表(VTMM,Vacuum Tube Multimeters)。
第4页共5页
第二章万用表的功能介绍
2.1 数字万用表简介
数字万用表采用的是数字化测量技术,把连续的模拟量转变为不连续的数字量,加以数字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的繁琐和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。
如今,数字万用表已绝大部分已取代了传统的模拟指针式万用表。因为传统的模拟指针式万用表功能单一,精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字万用表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化仪表,自动测试系统等智能化测量领域,显示出强大的生命力。
目前实现万用数字化测量的方法仍然模-数(A/D)转换的方法。而数字万用表种类繁多,型号新异,目前国际仍未有统一的分类方法。而常用的分类方法有如下几种:
按用途来分:有直流数字万用表,交、直流数字万用表,交直流万用表等。 按显示位数来分:有4位,5位,6位,7位,8位等。
按测量速度来分:有低准确度,中准确度,高准确度等。
按测量速度来分:有低速,中速,高速,超高速等。
在电量的测量中,电压、电流和频率是最基本的三个被测量。其中,电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字万用表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受用户
第5页共6页
青睐,数字式万用表就是基于这种需求而发展起来的,是一种必不可少的电子测量仪表。
2.2 数字万用表设计的两种方案介绍选择
设计数字万用表有多种的设计方法,方案是多种多样的,由于大规模集成电路数字芯片的高速发展,各种数字芯片品种多样,导致对模拟数据的采集部分的不一致性,进而又使对数据的处理及显示的方式的多样性。又由于在现实的工作生活中,万用表的测量范围是比较大的,所以必须对输入信号进行衰减,而各个数据处理芯片的处理电压范围不同,则各种方案的分段也不同。下面介绍两种数字万用表的设计方案。
2.2.1由数字电路及芯片构造
A/D这种设计方案是由模拟电路与数字电路两大部分组成,模拟部分包括输入放大器、A/D转换器和基准电压源;数字部分包括计数器、译码器、逻辑控制器、振荡器和显示器。其中,转换器是它的核心器件,它将输入的模拟量转换成数字量。模拟电路和数字电路是相互联系的,由逻辑控制电路产生控制信号,按规定的时序将A/D转换器中各组模拟开关接通或断开,保证A/D转换正常进行。A/D转换结果通过计数译码电路变换成段码,最后驱动显示器显示出相应的数值。此方案设计其优点是,设计成本低,能够满足一般的电压测量。但设计不灵活,都是采用纯硬件电路。很难将其在原有的基础上进行扩展。
2.2.1由单片机系统及AD转换芯片构造
这种方案是利用单片机系统与模数转换芯片、显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出来。此方案的原理是模数(A/D)转换芯片的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换芯片将被测量电压输入端所采集
第6页共7页
到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电量的值。最后单片机系统将计算好了的被测电量值按一定的时序送入显示电路模块加以显示。
此方案不仅能够继承上一种方案的各种优点,还能改进上一种设计方案设计不灵活,难与在原基础上进行功能扩展等不足。
根据上述,我选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:STC89C51单片机,TLC2543模数转换芯片,LM339电压比较器,CD4051模拟开关,1602液晶显示器,开关,按键,电容,电阻,晶振,标准电源等等。
第7页共8页
第三章万用表的功能原理
3.1 DT83B数字万用表原理
图
第8页共9页
第9页共10页
第10页共11页
第11页共12页
3.2系统的软件设计
第12页共13页
第四章万用表的安装与调试
4.1制作要求
了解数字万用表特点和发展趋势。
熟悉万用表装配技术的基本工艺过程。
认识液晶显示器件。
根据技术指标测试数字万用表的主要参数。
安装制作一台数字万用表。
4.1.1DT830B数字万用表的特点和工作原理
DT830B型便携式3位半数字万用表是常用的数字式检测仪表。
(1)主要特点
?技术成熟主电路采用典型数字表集成电路ICL7106,久经考验、性能稳定可靠。 ?性价比高由于技术成熟、应用广泛而产生的规模效益使产 图一 万用表 品价格低到需要者皆可拥有。且具有精度高、输入电阻大、读数直观、功能齐全、体积小巧等优点。
?结构合理采用单板结构,集成电路TCL7106采用COB封装。只要有一般电子装配技术即可成功组装。
(2)工作原理
集成电路ICL7106的技术资料可查阅有关资料。有关3位半数字万用表的工作原理,请参见童诗白教授所编《模拟电子技术基础》(第二版)(高等教育出版社,p716~737。)
第13页共14页
4.2 DT830B数字万用表的安装工艺
DT830B数字万用表由机壳塑料件(包括上下盖、旋纽)、印制板部件(包括插口)、液晶屏及表笔等组成,组装能否成功的关键是装配印制板部件。,整机安装过程如下:
(1) 印制板的装配
印制板是双面板,板的A面是焊接面,中间圆形印制铜导线是万用表的功能、量程转换开关电路,如果被划伤或有污迹,对整机的性能会影响很大,必须小心加以保护。
安装步骤:
a.安装电阻、电容、二极管等。安装电阻、电容、二极管时,如果安装孔距,8mm(例如R8/R9/R*/R21等,丝印图画“一”或电阻符号),可进行卧式安装,如果孔距,5mm、应进行立式安装(板上其它电阻、丝印图画“O”)。 b.一般额定功率在1/4w以下的电阻可贴板安装,立装电阻和电容元件与PCB板的距离一般为0~3mm。
c.安装电位器、三极管插座。三极管插座装在A面,而且应使定位凸点与外壳对准、在B面焊接。
、弹簧。焊接点时,注意焊接时间要足够但不能太长。 d.安装保险座、插座、R0
e.安装电池线。电池线由B面穿到A面再插入焊孔,在B面焊接。红线接+,黑线接—。
(2)液晶屏组件安装
液晶屏组件由液晶片、支架、导电胶条组成。
液晶片镜面为正面(显示字符),白色面为背面,透明条上可见条状引线为引出线,通过导电胶条与印制板上镀金印制导线实现电连接。由于这种连接靠表面接触导电,因此导电面被污染或接触不良都会引起电路故障,表现为显示缺笔划或显示乱字符。因此安装时务必要保持清洁并仔细对准引线位置。 支架是固定液晶片和导电胶条的支撑,通过支架上面的5个爪与印制板固定,并由四角及中间的3个凸点定位。
安装步骤:
a.将液晶片放入支架,支架爪向上,液晶片镜面向下。
第14页共15页
b.安放导电胶条。导电胶条的中间是导电体,安放时必须小心保护,用镊子轻轻夹持并准确放置。
c.将液晶屏组件安装到PCB板上。将液晶屏组件放到平整的台面上,注意保护液晶面,准备好印制板。印制板A面向上,将4个安装孔和1个槽对准液晶屏组件的相应安装爪。均匀施力将液晶屏组件插入印制板。
d.安装好液晶屏组件的印制板。
(3)、组装转换开关
转换开关由塑壳和簧片组成。用镊子将簧片装到塑壳内,注意两个簧片位置不对称。
(4)、总装
a.安装转换开关/前盖。
b.将弹簧/滚珠依次装入转换开关两侧的孔里。
c.将转换开关用左手托起。
d.右手拿前盖板对准孔位。
e.将转换开关贴放到前盖相应位置。
f.左手按住转换开关,双手翻转使面板向下,将装好的印制板组件对准前盖位置,装入机壳,注意对准螺孔和转换开关轴定位孔。
g.安装两个螺钉,固定转换开关,务必拧紧。
h.安装保险管(0.2A)。
i.安装电池。
j.贴屏蔽膜。将屏蔽膜上的保护纸揭去,露出不干胶面,贴到后盖内。
第15页共16页
结论
本系统预计完成任务书的所有内容,如下:
1.测量对象、范围及误差范围:电压 DC:0~20V 误差<?4%?2个字 AC:0.2~20V (正弦信号)误差<?5%?2个字
电流 DC:0~500mA 误差<?2%?2个字
电阻 0~200KΩ误差<?3%?2个字
2.采用LED数码显示,分辨率优于0.05%,具有符号辨别和过程量显示 3.直流电压档最小输入阻抗?1MΩ.
4.具有自动量程转换功能。
由于条件和时间有限,设计里并未将数字智能万用表做的很复杂。在学校环境下,库元件不够齐全,导致器件选型受到限制,如没有后背元件,直接影响设备的成功率和失败率,在实际设计中可以采用了简单德的半波整理电路,对交流信号的精确会有一定影响。总体来讲,整个设计正能算是一个简易万用表,如若作为应用,方案仍需改进
第16页共17页
致谢
本报告在写作中得到了xx老师,xx老师的大力指导,并为我指导谜津。帮助我开拓研究思路,精心点拨、热忱鼓励。xx老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道。对xx老师的感激之情是无法用言语表达的。
感谢xx老师等对我的教育培养。他们细心指导我的学习与研究,在此,我要向诸位老师深深地鞠上一躬。
第17页共18页
参考文献
[1] 吴金戌、沈庆阳、郭庭吉 《8051单片机实践与应用》[M].北京:清华大学出版社,2002 [2] 杨立、邓振杰、荆淑霞 《微型计算机原理与接口技术》[M].中国铁道出版社,2006 [3] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003; [4] 华成英、童诗白 主编,《模拟电子技术基础》(第四版)[M].高等教育出版社,2006 [5] 阎 石,《数字电子技术基础》[M].高等教育出版社,1983年
[6] 张永瑞 《电子测量技术》[M].西安电子科技大学出版社,2000年3月 [7] 黄海萍、陈用昌 编 《微机原理与接口技术实验指导》[M].北京:国防工业出版 [8] 赵继文.传感器与应用电路设计[M].北京:科学出版社,2002
[9] 郁有文.传感器原理及工程应用[M].西安:西安电子科技大学出版社,2001 [10] 周乐挺.传感器与检测技术[M].北京:机械工业出版社,2005
[11] 范晶彦.传感器与检测技术应用[M].北京:机械工业出版社,2005
附录
第18页共19页
第19页共20页
范文二:课程设计报告--数字万用表
-天津职业技术师范大学电子工程学院
《电 子 技 术》
课程设计报告
同组学生姓名(学号): 曹烨玲(31) 梁艳花(32) 周芹(25)
班 级: 应电0914
任务分工: 曹烨玲:方案选择与设计.电路焊接调试.方案讲解.答辩
梁艳花:资料查找.电路原理分析.答辩.方案讲解.课程设计报告
周芹: 资料查找.电路原理分析.答辩.方案讲解.课程设计报告 设计时间: 2011年12月12 日 —— 2011 年 12月30日
指导教师: 李莉 李照业
第一周题目:数字万用表
一、课程设计的目的
1(设计由运算放大器组成的万用表
2(组装焊接与仿真调试
二、课程设计的要求
1(直流电压表:满量程+6V
2(直流电流表:满量程10mA
3(交流电压表:满量程6V,50HZ—1KHZ
4(交流电流表:满量程10Ma
5(欧姆表:满量程分别为:1K,10K;100K
三、方案论证选择
1(初步选用7107,但因设计过程繁琐,电路构造与原理的分析复杂,调试与仿真不便,
量程范围及相关的电阻比例不好调电路采用的元器件较多,相比之下成本也高,所以,
最终决定放弃这个方案。
(选用运算放大器uA741与LM324,设计过程十分简单,电路构造模块清晰,原理简单 2
明了,调试过程简单,仿真效果很好,电路采用的元器件较少,成本低,相关的量程
要求容易实现,所以决定选用此方案。
四、基本原理
1(元件列表:
uA741 1个 电阻:12kΩ 2个 2、7kΩ 1个
LM324 1个 24kΩ 2个 87Ω 1个
1N4007 8个 10kΩ 5个 100kΩ 2个
1N4148 1个
1N4728A 1个
LM324集成运放电路图:
2(原理分析:
(1) 理想集成运放的虚短与续断特点
(2) 在测量中,电压表或者电流表的接入应不影响被测电路的原工作状态,这
就要求电压表应具有无穷大的输入电阻,电流表的内阻应为零。但实际上,
万用表表头的可动线圈总有一定的电阻,例如100μA的表头,其内阻约为
1KΩ,用它进行测量时将影响到被测量,从而引起误差。此外,交流表中
的整流二极管的压降和非线性特性也会产生误差。如果在万用表中使用运
算放大器,就能大大降低这些误差,提高测量精度。在欧姆表中采用运算
放大器,不仅能得到线性刻度,还能实现自动调零。
3(直流电压表基本原理
(1)原理图:
(2)仿真图:
(3)原理分析:为了减流经表头的电流与表头的参数无关小表头参数对测量精度的影响,
将表头置于运算放大器的反馈回路中,这时,,只要改变R1一个电阻,就可以进行量
程的切换。
(4)表头电流I与被测电压Ui的关系为:
UiI,
R1
4(直流电流表
(1) 原理图
(2)仿真图:
(3)原理分析:在电流测量中,伏地电流的测量是普遍存在的,例如:若被测电流无接地
点,就属于这种情况。为此,应把运算放大器的电源也对地浮动,按此种方式构成的
电流表就可以像常规电流表那样,串联在任何电流通路中测量电流。 (4)表头电流I与被测电流Ii间关系为:
R1?I,(1,)I ,IR,(I,I)R 1112 1R2
可见,改变电阻比(R,R),可调节流过电流表的电流,以提高灵敏度 12
如果被测电流较大时,应给电流表表头并联分流电阻。
5.交流电压表:
(1)原理图:
(2)仿真图:
UiI,(3)表头电流I与被测电压U的关系为 iR1
(4)原理分析:电流I全部流过桥路,其值仅与U,R有关, 与桥路和表头参i1
数(如二极管的死区等非线性参数)无关。表头中电流与被测电压u的全i
波整流平均值成正比,若u为正弦波,则表头可按有效值来刻度。被测电i
压的上限频率决定于运算放大器的频带和上升速率。 6.交流电流表:
(1)原理图
(2)仿真图
(3)原理分析: 表头读数由被测交流电流i的全波整流平均值I决定,即1AV
R1I,(1,)I 1AVR2
如果被测电流I为正弦电流,即I,Isinωt,则上式可写为211
R1I,0.9(1,)I 1R2
则表头可按有效值来刻度。
7.欧姆表:
(1)原理图:
(2)仿真图:
(3)原理分析:在此电路中,运算放大器改用单电源供电,被测电阻R跨X
接在运算放大器的反馈回路中,同相端加基准电压U。 REF
? UP,UN,UREF
I,I 1X
UU,UREF0REF,
RR1X
R1即 R,(U,U) XOREFUREF
U,UOREF流经表头的电流 I,R,R2m
URREFXI,由上两式消去(U,U) 可得 OREFR(R,R)1m2
可见,电流I与被测电阻成正比,而且表头具有线性刻度,改变R值,可改变1欧姆表的量程。这种欧姆表能自动调零,当R,0时,电路变成电压跟随器,UXO,U,故表头电流为零,从而实现了自动调零。 REF
二极管D起保护电表的作用,如果没有D,当R超量程时,特别是当R??,运XX算放大器的输出电压将接近电源电压,使表头过载。有了D 就可使输出钳位,防止表头过载。调整R,可实现满量程调节。 2
; 6.总电路图
7.DXP电路板
五(方案实现与调试
(一)调试过程:
1. 实验时“先接线,再加电;先断电,再拆线”,加电前确认接线无误,避免短路。
2. 即使加有保护电路,也不要用电流档或电阻档测量电压,以免造成不必要的损失。
3. 当数字表头最高位显示“1”(或“1”)而其余位都不亮时,表明输入信号过大,即超量程。此时应尽快换大量程档或减小(断开)输入信号,避免长时间超量程。
4. 在连接电源时,正,负电源连接点上各接大容量的滤波电容器和0.01uf~0.1uf的小电容器,以消除通过电源产生的干扰。
5. 万用电表的电性能测试要用标准电压,电流表校正,欧姆表用标准电阻校正。
(二)测试结果记录
直流电压表测试结果
U(待测)V 1 2 3 4 5 6 I(实际)uA 83.489 166.533 250.466 333.955 417.444 500.328 I(测量)uA 80.776 164.432 248.343 331.674 415.356 497.688 绝对误差2.713 2.101 2.123 2.281 2.088 2.64 uA
相对误差 0.014% 0.010% 0.024% 0.018% 0.021% 0.016%
直流电流表测试结果
I(待测)mA 2 4 6 8 10 I(实际) mA 1.884 3.804 5.712 6.142 6.824 I(测量)mA 1.863 3.725 5.709 6.014 6.719 绝对误差mA 0.021 0.079 0.003 0.128 0.105 相对误差 0.020% 0.024% 0.016% 0.013% 0.010%
交流电压表测试结果
U(待测)V 1 2 3 4 5 6 I(实际)uA 74.719 149.613 224.507 299.412 374.294 448.388 I (测量) uA 70.865 144.677 221.653 297.659 371.779 445.822 绝对误差 uA 3.854 4.936 2.854 1.753 2.515 2.566 相对误差 0.032% 0.009% 0.014% 0.022% 0.013% 0.015%
交流电流表测试结果
I(待测)mA 2 4 6 8 10
I(实际)mA 1.324 2.653 3.953 5.205 6.443
I(测量)mA 1.216 2.573 3.815 5.107 6.319
绝对误差mA 0.108 0.080 0.138 0.098 0.124
相对误差 8.68% 8.3 34% 7.453% 7.665% 8.839%
欧姆表测试结果
(一)量程1 kΩ
R(待测)kΩ 0.3 0.5 0.8 1 I(实际)uA 621.725 678.124 717.204 719.869 I(测量)uA 619.334 677.853 715.837 717.473 绝对误差uA 2.391 0.271 1.367 2.396 相对误差 0.23% 0.16% 0.33% 0.14% 量程 kΩ 1
(二)量程1 0kΩ
R(待测)kΩ 3 5 8 10 I(实际)uA 621.28 678.124 718.98 727.48 I(测量)uA 619.764 677.882 715.771 725.503 绝对误差uA 1.516 0.302 3.209 1.977 相对误差 0.33% 0.15% 0.25% 0.26% 量程 kΩ 10
(三)量程1 00kΩ
R(待测)kΩ 30 50 80 100 I(实际)uA 621.725 678.124 718.98 727.862 I(测量)uA 617.619 675.844 714.826 724.764 绝对误差uA 4.106 2.280 4.154 3.098 相对误差 0.12% 0.27% 0.32% 0.18% 量程 kΩ 100
七(课程设计总结
我们的方案主要由五个小的模块组成,每个小的模块的实现都比较简单,但是理论与实际有一定的差距,在调试的过程中指针显示不是很准确,因此我们把使用滑动变阻器来调试然后最终确定合适的阻值。我们组的小创新在于电路焊接部分,我们使用的是DXP的知识做的腐蚀板,算是学以致用吧~
第二周题目:数字电容测试仪
一(课程设计的目的
由555定时器为主,通过555定时器构成的单稳、多谐振荡电路把电容量转换为脉冲频率,通过闸门电路,用74LS161,74LS08,74LS47集成块来对闸门输出脉冲个数进行计数、锁存、驱动输出到LED(共阳)显示出所对应的数值来。 二(课程设计的要求
,、 测量范围:0.01uF—99uF
,、 数字显示被测电容的数值可以换档操作
,、 两个数码管作为显示元件
,、 响应时间不超过2秒
三(方案论证选择
方案一:通过利用电容充、放电特性,将待测电容量转换成直流电压值,然后
通过CH7106组成的数字电压表对该转换电压值进行测量,最终在LCD显
示屏上显示出所测的电容值。数字电容计主要
时钟电路分频电路电容-电压转换电路基准电路
显示屏数字电压表
由时钟电路、分频电路、量程选择电路、电容-电压转换电路、基准电路和数字 电压表构成。
方案二:(1)通过555多谐振荡器产生基准脉冲信号,555单稳态触发器产生
开启与门的控制信号,单稳态触发器的暂稳态持续时间tw,,.
,RCX与时钟信号的个数与周期的乘积相等,通过调整相关参
数,可使被测电容 CX几乎与时钟脉冲脉冲个数N相同。
(2)再通过计数,译码,显示电路便可统计出N,同时也测出了电容
的容值
基准脉冲闸门控制 译码器显视器计数器发生器器
Td待测电容时间转换器
四(基本原理
1(主要元件列表:
元件名使用
称 个数
数码显2个
示管
555 2个
74LS08 1个
74LS161 2个
74LS47 2个
基本元件:
电阻: 电容:
5.1k 3个 0.1uf 4个
100k 2 个 0.01uf 4 个
10k 4 个 0.33uf 3个
1k 4 个 2.2uf 3个
2(电路框图
3.原理图
基准脉冲闸门控制显视器 译码器计数器发生器器
Td
待测电容时
间转换器
各部分电路分析:
(1)、555组成多谐振荡电路:
接通电源后,电容C,被充电,当,;上升到,,;;,,时,使,,为低电平,同时放电三极管,导通,此时电容,,通过,,和,放电,,;下降到,;;,,时,,,反转为高电平,电容,,所需放电时间为,,,,,(,,,,。当放电结束时,,截止,,;;将通过,,,,,向电容器充电,,;由,;;,,上升到,,;;,,所需时间为,,,,,(,(,,,,,),。
当,;上升到,,;;,,时,电路又反转为低电平。如此周而复始,于是,在电路的输出端就得到一个周期性的矩形波。
(2)555组成单稳态电路
没有触发信号时,,处于高电平(,>Vcc/3),如果接通电源后Q=0,vo=0,T导通电容通过放电三极管放电,使Vc=0,Vo保持低电平不变。如果接通电源后Q=1,放电三极管T就会截止,电源通过电阻R向电容C充电,当Vc上升到2Vcc/3时,vo为低电平。此时放电三极管T导通电容C放电,vo保持低电平不变。因此电路通电后在没有触发信号时,电路只有一种稳定状态vo=0。
若触发输入端施加触发信号(V1
(3)计数电路:
161计数器的电路图:
因为电路要求用两位二极管显示,所以我们再次用了两个161十进制计数器,我们采用反馈置数法进行级联,当低位片的数字显示9时我们通过与非门接到第二片的脉冲端,实现低位向高位的传送。在测量过程中因为我们要不断的测量实验,所以我们给两个161加了清零电路。可以实现手动清零。
(4)译码电路:
GFAB公共端
数码管
端共公EDCDp
74ls47电路图:
真值表:
6.整体分析:
(1)通过555多谐振荡器产生基准脉冲信号,555单稳态触发器产生
开启与门的控制信号,单稳态触发器的暂稳态持续时间tw,,.
,RCX与时钟信号的个数与周期的乘积相等,通过调整相关参
数,可使被测电容CX几乎与时钟脉冲脉冲个数N相同。
(2)再通过计数,译码,显示电路便可统计出N,
同时也测出了电容的容值
7.DXP电路板
五(方案实现与调试
(1)调试过程:
一:电路调试过程较难校准,通过理论算出来的参数不一定能完全的满足要
,也存在一定的误差。 求
二:电路中最关建的两大部分是基准脉冲发生器和待测电容时间转换器,基
频采用了555多谐振荡电路。
三:在基频确定以后就不能再动了,由于理论值与实际值存在误差,把基频
电阻也换成了电位器。
四:在调试过程当中,利用纳法档把基频调准,再分别调节其它两档,在这
两档中是定基频电阻调节量程档上的电阻。这样分别把三个档的精确度
提高。
(2) 测试结果记录:
脉冲个数(实际值) 33 68 22 47 脉冲个数(测量值) 31 65 22 48 绝对误差 2 3 0 1 相对误差 0.06 0.04 0 0.02 七:调试出现的问题及解决方法
(1)问题:数码管显示的数值比实际测量容值大1
(2)方法:调节多谐振荡参数从而调节基准脉冲的频率,使得时钟脉冲的个
数正好等于待测容值
八:课程设计总结
我们的方案主要由六个小的模块组成,每个小的模块的实现都比较简单,原理分析及焊接也很容易,但调试的过程中出现了一个小问题,通过分析改进电路,最终解决了出现的问题。我们组的小创新在于电路焊接部分,我们使用的是DXP的知识做的腐蚀板,算是学以致用吧~
九(个人总结
曹烨玲的个人总结:
在这三周的课程设计实训我们组通过分工完成电路的设计、焊接和调试。经过三周的辛苦调节我们二个电路都成功调试出来。课本上学习的知识在一定程度上得到巩固和提高,但我们还是发现自身很多不足之处,我希望通过总结自己的不足来更好的提高自己,使自己更加体会课程设计的意义。
设计电路之初我们都会通过图书馆和上网来获取所需要的资料,在查资料过程中我们发现自己学习的知识有很大的欠缺,根本不足以完成整个电路的设计,所以我们大量的阅读相关资料。最后我们根据资料确定出满足题目要求和符合自身能力的电路。在设计出原理图之后,我们主要就是弄清各部分的功能、理清整个脉络。最后开始动手焊电路。
此次课程设计中我主要负责所有电路的设计和调试,还有板的制作和电路的焊接。在设计中我就按照优化电路的原则,元器件能少则少,这样可以避免很多焊接的问题。但是在电压表设计中没有考虑元件实际的误差,导致测量误差偏大,后来我们把电阻改成可调的,以此来确定一个基准值,最后得到比较理想的电压表。在这过程中我就体会到,要将理论和实践好好结合。电容表的测量,是画板时出现了问题,有一条线忘记连接。最后计数脉冲的输出时,总是多记一至两个脉冲,但在答辩时老师给我们指示,使我们顿时茅塞顿开,最后得到比较准的计数脉冲。遇到问题也是理论和实际是有些许差别的。
设计和调试有点繁琐,但其中锻炼了我们的思维能力、分析能力,我们通过分析出现问题逐步解决。后面一个电路用到了很多的555设计,在起初根本就不知道555的应用会有那么的广泛。所以只能现学现用,最后通过几天的共同学习,我们组就可以简单的应用了。
课程设计这三周中,我们学习了很多东西。特别是在最后的答辩环节,了解了其他组同学的课程设计和设计思路,也弥补了自己很多知识的缺陷。在调试电路时,我们开始不是很理想,但我们并不气馁,通过慢慢分析原因,解决了问题,最后电路功能全部实现。在解决问题同时我们加深也对书本的知识。动脑动手中感受很大的是一组三个人的合作是重要且可贵的。三人分工明确对整体效率的提高有很好的效果,是一种支持与信任,自己也感到目标在明确,在不停地细化而整体的方案变清晰了,有了支持和了解我们每个人都很认真努力地去完成相应的部分,得到的不是任务所要求知识的一块而是知识的总和。这种团队的体会或许为我们以后步入社会,进入工作开了一个好头。我们也认识到了,团结、细心、认真、不怕困难的精神才有可能获得成功。在以后的学习工作过程我更应该把这种精神贯彻其中。
最后感谢老师对我们的热情指导,和队友对我的大力帮助与支持。 梁艳花得个人总结:
由于我是第一次进行课程设计,很多东西都很感觉比较生疏,只能跟着她们一起去找材料,逐渐的摸索。刚开始的一周觉得自己根本不喜欢课程设计,感觉好多东西对自己来说都没多大意思,还不如复习功课~但是,当我看到了其他同学设计的方案后感觉自己超震撼,虽然好多方案并不是他们自己设计的,但他们很认真,也从中学到了好多知识,而我却没什么收获,所以感觉挺后悔的~然后就和她们一起努力,完成我们所选的方案。
在这次课程设计当中,我必须和她们一起尝试理论联系实际,用理论分析去解决实际中的问题,在实践当中解决理论和实际之间的误差。学会怎样解决问题。而且在查资料的过程中,我也学到了许多曾经没有接触过的东西与知识。我也了解了很多以前没有见过的集成块及其一些功能原理。
回顾这三周,感觉自己收获还是挺多的。这是我进入大学以来参加的第一次课程设计,也是培养我实际操作能力和理论联系实际能力难得的一次机会。三周下来我也真正明白了实际动手动脑的重要性以及实践与理论学习之间是有一定差距的。实际中,要求你的知识面一定要很广,而且能把所学的东西很好的融会贯通并很合理的运用到实际中,就算这些你都做到了,你还要有一定的动手能力,不然做出的东西也不会符合要求。还有一点,我懂得了在实际工作中有良好的团队协作精神也是非常重要的,因为三个人一起做,什么事都要群策群力,不然的话什么也干不好的。只有彼此配合,彼此信任,才能更好、更快的干出成绩来,这是以前不曾体会到的。
总之,三周下来我所学到的东西是很多很多的,要总结的东西也很多,我很高兴自己能得到这样的锻炼机会,这对我今后学习也是有很大帮助的。
我希望今后自己还能获得这样的机会,让我多多动手动脑,这样有利于我的提高。于此同时也很感谢老师的指导,让我们在这次实践中学到新知识。 周芹的个人总结:
通过这次课程设计,加强了我的动手动脑能力,平时只是学习课本知识,没有想过实际中做电路,平时看课本时,觉得电路很简单,看看就明白,但是这一次跟同学一起做电路时,我发现其实并不是那么简单,有很多东西是课本学不到的,有的确实理论上是那样分析,可是实际中要通过经验和实践来寻求正确答案,我们第一个做的是万用表设计,我们仿真时表头指示正常,可是实际中出现了很多问题,但是在我们组的努力下问题都一一解决了。
在课程设计的过程中,我学到了很多课外知识,也巩固了自己的数电和模电的知识。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我对各个元件印象更加深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这次课程设计对我的作用是非常大的。就拿我们设计的第二个题目来说:数字电容测试仪,其中用到了很多555定时器相关的知识,做完这次课程设计后我感觉对555定时器已经非常熟悉,为即将到来的数电考试也有很大的帮助。
另外,我们生活在一个讲究团队合作的社会里。通过团队的协作,也培养了我们团结互助,相互协调的团队合作能力。通过大家的努力,我们共同完成了小组的任务,大家集思广益,各抒己见,共同把一个个问题解决。而且我很享受这次课程设计中给我带来的乐趣,那就是自己亲自动手解决好实际问题,虽然我做的还不够,但是我也算是迈出了艰难的一步。我们学习理论知识的最终目的还是
要走向实际运用, 通过这次模拟式的学习,我深刻的认识到理论与实践的差异。通过这个课程设计,我认识到学习是一个系统工程。我们学习的每一个环节都是在为以后的实践环节做铺垫,每一个环节都是要有所掌握才可以顺利完成任务。通过这样的实践活动,我们还可以充分发挥自己的主观能动性,因人而异,合理分配任务,团结协作,一起朝着任务的方向不断地奋斗,大家都很辛苦,各自完成自己负责的那部分工作。而且我深刻感受到动手起来遇到的各种问题都要亲自去解决是一件很不容易的事情,同时在实践的过程中我也修复了以往学习的很多漏洞,得到了不同程度的完善和提升。总的来说,通过这次实训我受益匪浅,学到了很多课堂上学不到的东西。同时谢谢老师的指导。
参 考 文 献
[1]《集成电路速查大全》 作者:尹雪飞 陈克安 西安电子科技大学出版社 [2]《555集成电路实用电路集》 作者:郝鸿安 上海科学普及出版社 [3]《CMOS数字电路应用300例》 作者:肖景和 中国电力出版社 [4]《国产集成电路500例》 作者:周仲 电子工业出版社 [5]《数字集成电路应用与实验》 作者:徐建仁 国防科技大学出版社 [6]《电子元件的选用与检测》 作者:张庆双 机械工业出版社
范文三:数字万用表课程设计报告
湖北经济学院
电子工程系课程设计报告
课题名称: 智能数字万用表
指导教师: 王金庭、汪成义、刘光然
学生班级:
学生姓名: 洪菁、杨飞、赵婷婷
www.docin.com
学 号:
学生院系: 电子工程系
2011年7月
目录
一、设计背景------------------------------------------------------------------------------------------------3 二、系统设计------------------------------------------------------------------------------------------------3
1.系设计方框图--------------------------------------------------------------------------------------3
2.系统设计方案--------------------------------------------------------------------------------------3 三、硬件电路设计-----------------------------------------------------------------------------------------4
1.A/转换模块-----------------------------------------------------------------------------------------4
2.动量程转换模块----------------------------------------------------------------------------------5
3.直流转换模块-------------------------------------------------------------------------------------5
4.电阻测量模块--------------------------------------------------------------------------------------6 四、软件设计------------------------------------------------------------------------------------------------7 五、系统调试------------------------------------------------------------------------------------------------8
1.测使用的仪器---------------------------------------------------------8
2.标测试和测试结果----------------------------------------------------8 六、体会与感受-------------------------------------------------------------9
2
摘要:本设计采用单片机芯片M3S811设计一个智能数字万用表,能够精确的测量直流电压、交流电压和电阻,具有测量精度高,抗干扰能力强等特点。整个硬件系统有几大模块联合构成:交直流转换模块、电阻测量模块、A/D转换模块以及自动量程转换模块。软件部分则实现硬件控制和自动睡眠功能。
关键字:M3S811、A/D转换、多量程转换、自动睡眠
一、设计背景
随着电子技术的迅速发展,电子产品已经渗透到我们生活的方方面面,人们对电子不再感到陌生,对电路基础以及电子元器件的了解也开始慢慢普及。在一些小家电维修或检测中,通常对电路比较了解人们会使用万用表对未知电阻进行测量。而对于未知的电压电流,则需要辅助电路对其进行辅助测量,即繁琐,精确度又低。而对于那些电路基础相对薄弱的人们,那只能是望洋兴叹了。于是,设计一台数字智能便携式电阻、电压测量仪器成为必要。
二、系统设计
1. 系统设计方框图
电阻测量电路 单测电片 机被测量输A/D转换电系自动量程转换电 通过路 测直流电统 拨动 开关交/直流转换电 键盘与显测交流电
图1-系统模块框图
2. 系统设计方案
系统设计是由硬件电路和软件编程两大模块组成。硬件电路又由多个模块组成。硬件部分,首先以A/D转换器(MC14433)和CD4052为核心,设计一个多档
3
的直流电压测量电路,再在此基础上对电路进行扩展,使其能多量程的测量直流电流和电阻的测量电路。然后通过单片机(Cotex-M3)编程对各个主要模块的进行智能控制和数据处理,实现对直流电压、电流和电阻测量对象切换;手动和自动量程转换等功能,并将测量数据转换为人们日常习惯的十进制数字形式显示在LCD液晶屏上。所以系统硬件设计大致可以分为多档位直流电压测量电路、交流/直流转换电路、电阻测量、功能控制和数据显示电路这五个主要电路模块。 三、硬件电路设计
1. A/D转换模块
选用的MC14433是一个低功耗3 1/2位双积分式A/D转换器,MC1403提供输出可调基准电压(大小为2V),被测信号(0-2V的直流电压)从MC14433VREF
的Vin引脚输入A/D转换器MC14433,当A/D转换结束时,MC14433的EOC引脚输出一个高电平脉冲给单片机,单片机进入中断处理程序。然后单片机对MC14433的DS1~DS4进行动态扫描,将Q0~Q3进行转换之后读取MC14433的Q0-Q3引脚的数据由LCD显示。
原理图如下
图2-AD转换电路图
其中,三号引脚Vi为被测电压的输入端,被测电压与基准电压有以下关系:
因此,满量程的Vx=V。当满量程选为1.999V,V可取2.000V,而当满量RR
程为199.9mV时,V取200.0mV,在实际的应用电路中,根据需要,V值可在RR
4
200mV—2.000V之间选取。
2. 自动量程转换模块
自动量程转换电路的作用是按输入条件信号(过量程、欠量程信号)和时钟信号(EOC、DS1~DS4)发生相应的量程信号控制。通过单片机读取MC14433的数字信号,通过数字信号的大小来控制模拟开关,从而改变反馈电阻的大小来实现档位的不同选择。模拟开关的导通由Q3和Q0决定,当被测电压过量程时(Q3=0且Q0=1),向高量程变化;欠量程时(Q3=1且Q0=1),向低量程变化;在量程时,保持原来状态不变。
相关参数计算:
,如果要实现4个档位,可以将设为1k、10k、100kRfAu,,Rf/R,R,100k
和1M,然后通过控制开关来接通电阻,从而实现换档。
原理图如下:
图3—自动量程转换电路
3. 交直流转换模块
U 运放A1和D1、D2组成半波整流电路。当<>
UUUU以=0;当>0时,D1截止、D2导通,运放A1构成反相器,所以=-。iiAA
U对运放A2来说,它构成的是反相加法电路,被反相放大2倍,与输入信号叠A
5
加,即=-2-。此时输入信号的正半周被保留,负半周被抵消,再加上UUUOiA
剩下的就变成了一个完整的全波整流电路。 UA
原理图如下:
图4—交直流转换电路
4. 电阻测量模块
利用运算放大器采用反相比例运算的方法,将电阻转换成与之相关的电压,将电压输入MC14433测量电路,并通过单片机计算在液晶屏上显示出来。具体的电路及换算公式如下:U /R=Uo/Rx,推得:Rx=R* Uo/ U。 iiii
原理图如下:
图5—电阻测量电路
6
四、软件设计
以下是通过软件编程实现功能的流程图,源代码见附录。
五、系统调试
1、测试使用的仪器
(1)数字万用表M890G
(2)EE1640C型函数信号发生器
(3)RIGOL DS5062M型示波器
2、指标测试和测试结果
(1)直流电压的测试
测试方案:通过拨动开关和单片机选择直流档,由直流电源提供电压进行测
量,然后由单片机显示输出。
7
档位 输入电压 实测电压 误差(%)
2V 2V 0.6372v 0.14%
(2)电阻的测试
测试方案:通过拨动开关和单片机选择电阻档,由电平转换电路提供2V的 基准电压,将待测电阻接入测量端,然后选择合适的档位进行测量。
档位 输入电阻 实测电阻 误差(%)
165.0 160.0 3.12% 200
172.0 183.5 6.3%
3)交流电压的测试 (
测试方案:通过拨动开关和单片机选择交流档,由函数信号发生器提供一个正弦交流电压,输入到交流端进行测量。
(4)相对误差(?%)的测试
测试方案:通过拨动开关和单片机选择相应的档位进行测量时,可以通过按键输入标称值,单片机得到标称值之后进行智能的换算得到?值并显示出来。
结果分析:由于时间限制以及能力有限,该块功能暂时还没有实现。
六、体会与感受
经过短短十天左右的培训,我们从对Cotex-M3一无所知变成了初步了解,现在拿着我们历经十天奋战而来的小项目,确实感受颇深。从开始的电路成立到最后的系统调试,我们遇到了很多问题和波折,但是经过一番纠结和努力,我们最终将这些问题顺利解决了。我们不仅完成了该项目所必须的基本要求,并且丰富和拓展了力所能及的其它功能:1.直流电压的测量2.交流电压的测量3.电阻的测量4.自动量程转换5.自动关机功能6.相对误差的测量。当然,因为时间和能力的限制,该项目还有许多值得修饰和改进的地方。我相信,在接下来的培训时间里,我们所有组员都会更加认真努力的接受新的知识,并在后续的项目中将每一位组员都发挥到最好。
8
七、附录
1. 整机电路图
2. 源代码
本系统源程序代码共分为三个部分如下:
/*
跳线说明:
1)将EXP-LM3S811板卡上JP9跳至左侧(短接1-2);
2)将EXP-LM3S811板卡上JP13用跳线短接至左侧或右侧都可以;
3)将EXP-min_system_board板卡上JP13、JP14、JP15、JP16跳至右侧(短接2-3)。
操作过程:
9
1)将EXP-min_system_board板卡上K1拨动开关拨至ON状态,给液晶上
电;
2)调节RP1电位器,使液晶有合适的背光;
3)上电,编译并下载程序,复位后全速运行程序;观察液晶显示的内容,
再修改程序使之显示自己的内容。
*/
#include "systemInit.h"
#include "lcd.h"
#define CTL_PERIPH SYSCTL_PERIPH_GPIOC //
控制液晶所用的片内端口外设定义
#define CTL_PORT GPIO_PORTC_BASE #define SCK GPIO_PIN_4 //
定义信号SCK
#define SID GPIO_PIN_5 // 定
义信号SID
#define CS GPIO_PIN_6 // 定义信
号CS
#define PSB GPIO_PIN_7 // 定
义信号PSB
#define SCK_L GPIOPinWrite(CTL_PORT,SCK,0x00); // 定义信
号输出低电平
#define SID_L GPIOPinWrite(CTL_PORT,SID,0x00); #define CS_L GPIOPinWrite(CTL_PORT,CS,0x00); #define PSB_L GPIOPinWrite(CTL_PORT,PSB,0x00);
#define SCK_H GPIOPinWrite(CTL_PORT,SCK,0xFF); // 定义信
号输出高电平
#define SID_H GPIOPinWrite(CTL_PORT,SID,0xFF); #define CS_H GPIOPinWrite(CTL_PORT,CS,0xFF); #define PSB_H GPIOPinWrite(CTL_PORT,PSB,0xFF);
#define SID_READ GPIOPinRead(CTL_PORT,SID); // 定义读
回的数据
#define SID_IN GPIOPinTypeGPIOInput(CTL_PORT,SID); // 定义
SID信号为输入
#define SID_OUT GPIOPinTypeGPIOOutput(CTL_PORT,SID);// 定义
SID信号为输出
#define READDATA_PERIPH SYSCTL_PERIPH_GPIOB
#define READDATA_PORT GPIO_PORTB_BASE
10
#define READDATA
GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0 #define INT GPIO_PIN_4
#define SCAN_PERIPH SYSCTL_PERIPH_GPIOA
#define SCAN_PORT GPIO_PORTA_BASE
#define SCAN
GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0
#define OUTPUT_PERIPH SYSCTL_PERIPH_GPIOE
#define OUTPUT_PORT GPIO_PORTE_BASE #define OUTPUT GPIO_PIN_1|GPIO_PIN_0
#define KEY_PORT GPIO_PORTD_BASE
#define KEY_Row GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0 //扫描信号输出 PD3~0
#define KEY_clo GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4 //按键信号输入 PD7~4
#define KEY_PERIPH SYSCTL_PERIPH_GPIOD
#define SysCtlPeriClkGating SysCtlPeripheralClockGating #define SysCtlPeriSlpEnable SysCtlPeripheralSleepEnable
/*
#define ADCSequEnable ADCSequenceEnable //ADC的宏定义
#define ADCSequDisable ADCSequenceDisable #define ADCSequConfig ADCSequenceConfigure #define ADCSequStepConfig ADCSequenceStepConfigure #define ADCSequDataGet ADCSequenceDataGet */
#define BitRate 115200 // 设定波
特率
#define DataWidth 8 // 设
定数据宽度
//tBoolean ADC_EndFlag = false;
// 定义ADC转换结束的标志
unsigned char AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, // 第一行
11
汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, // 第二行汉字位置
} ;
unsigned char menu1_1[]="多功能数字万用表"; // 选择提示 unsigned char menu1_2[]="F:下一页" ;
unsigned char menu2_1[]="A:DC电压 B:电阻" ; // 输入提示 unsigned char menu2_2[]="C:AC电压 D:返回" ; // unsigned char menu3_1[]="预设(0~99): " ; // 输入提示 unsigned char menu3_2[]="实测值: E" ; // unsigned char menu4_1[]="预设(0~99): " ; // 输入提示 unsigned char menu4_2[]="实测值: Ω" ; // /*
unsigned char str[]="温度:" ; // 定义将要显示的汉字与字符 unsigned char str1[]="芯片的温度显示 " ;
//unsigned char str3[]="?";
unsigned char str3[]="C";
unsigned char c1[];
float v=0;
*/
extern unsigned char key_val; extern void key_check(void); void para_input_display(void); void display_menu1(void);
void display_menu2(void);
void display_menu3(void);
void display_menu4(void);
void WriteNum(unsigned char num); extern void judge_display(void) ; int k;
unsigned char a[4],flag0,flag1,flag2,flag3;
void GPIO_Init()
{
SysCtlPeripheralEnable(READDATA_PERIPH);
GPIOPinTypeGPIOInput(READDATA_PORT,READDATA);
SysCtlPeripheralEnable(SCAN_PERIPH);
12
GPIOPinTypeGPIOInput(SCAN_PORT,SCAN);
SysCtlPeripheralEnable(OUTPUT_PERIPH);
GPIOPinTypeGPIOOutput(OUTPUT_PORT,OUTPUT);
GPIOPinTypeGPIOInput(READDATA_PORT,INT);
GPIOIntTypeSet(READDATA_PORT,INT,GPIO_RISING_EDGE);
GPIOPinIntEnable(READDATA_PORT,INT);
IntEnable(INT_GPIOB);
IntMasterEnable();
}
// 所用的芯片端口初始化
void init(void)
{
SysCtlPeripheralEnable( CTL_PERIPH ); // 使能所用的端口
GPIODirModeSet(CTL_PORT, (SCK | PSB | CS ) ,GPIO_DIR_MODE_OUT);
// 设置信号的方向
GPIOPadConfigSet(CTL_PORT, (SCK | PSB | CS ), GPIO_STRENGTH_8MA,
GPIO_PIN_TYPE_STD_WPU); //
设置IO的驱动能力
}
// 串行方式发送一个字节
void SendByte(unsigned char Dbyte) {
unsigned char i ;
for(i=0 ;i< 8="" ;i++)="">
{
SCK_L ;
SID_OUT;
if (Dbyte & 0x80)
{
SID_H;
}
else
{
SID_L;
13
}
Dbyte=Dbyte<1 ;="">1>
SCK_H ;
SCK_L ;
}
}
// 串行方式接收一个字节
unsigned char ReceiveByte(void)
{
unsigned char i,temp1,t,temp2;
temp1=temp2=0 ;
for(i=0 ;i<8 ;i++)="">8>
{
temp1=temp1<1 ;="">1>
SCK_L ;
SCK_H ;
SCK_L ;
SID_IN;
t=SID_READ;
if (t)
{
temp1++ ;
}
}
for(i=0 ;i<8 ;i++)="">8>
{
temp2=temp2<1 ;="">1>
SCK_L ;
SCK_H ;
SCK_L ;
SID_IN;
t=SID_READ;
if (t)
{
temp2++ ;
}
}
return ((0xf0&temp1)+(0x0f&temp2)) ;
}
// 判断是否忙碌
void CheckBusy( void )
14
{
do SendByte(0xfc) ; // 字节格式:11111,RW(1),RS(0),0
while(0x80&ReceiveByte()) ; // 判断是否忙碌:BF(.7)=1 Busy
}
// 向液晶发送命令
void WriteCommand( unsigned char Cbyte )
{
CS_H;
CheckBusy() ;
SendByte(0xf8) ; // 字节格式:11111,RW(0),RS(0),0
SendByte(0xf0&Cbyte) ; // 高四位
SendByte(0xf0&Cbyte<4) ;="">4)><>< ;)="">
CS_L;
}
// 向液晶发送显示数据
void WriteData( unsigned char Dbyte ) //显示字符 {
CS_H ;
CheckBusy() ;
SendByte(0xfa) ; // 字节格式:11111,RW(0),RS(1),0
SendByte(0xf0&Dbyte) ; // 高四位
SendByte(0xf0&Dbyte<4) ;="">4)><>< ;)="">
CS_L ;
}
// 延时函数
void Delay(unsigned int MS) {
unsigned char us,usn ;
while(MS!=0)
{
usn = 2 ;
while(usn!=0)
{
us=0xf5 ;
15
while (us!=0){us-- ;} ;
usn-- ;
}
MS-- ;
}
}
// 维捷登测试架专用延时函数
void DelayKey(unsigned int Second , unsigned int MS100)
{ // 输入精确到0.1S,是用","
unsigned int i ;
for(i=0 ;i
{
Delay(10) ;
}
}
// 初始化
void Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI); // 使能片内SSI外设,为SSI提供时钟
SSIConfig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER,
BitRate, DataWidth); // 设置SPI为主机模式0,8位数据宽度,115200的波特率
SSIEnable(SSI_BASE); // 使能SPI
}
// 液晶初始化函数
void LcmInit( void )
{
WriteCommand(0x30) ; //
8BitMCU,基本指令集合
WriteCommand(0x03) ; // AC归0,不改变DDRAM内容
WriteCommand(0x0c) ; // 显示ON,游标Off,游标位反白OFF
WriteCommand(0x01) ; // 清屏,AC归0
WriteCommand(0x06) ; // 写入时,游标右移动
16
}
void PutStr1(unsigned char row,unsigned char col,unsigned char *puts)
128X32方{ //
式
WriteCommand(0x30) ; //
8BitMCU,基本指令集合
WriteCommand(AC_TABLE[8*row+col]) ; // 起始位置
while(*puts != '\0') // 判断字符串是否显示完毕
{
if(col==8) // 判断换行
{ // 若不判断,则自动从第一行到第三行
col=0 ;
row++ ;
}
if(row==2) // 一屏显示完,回到屏左上角,128x32时为row=2
{
row=0 ;
DelayKey(1,5);
Delay(2000) ;
}
WriteCommand(AC_TABLE[8*row+col]) ;
WriteData(*puts) ; // 一个汉字要写两次
puts++ ;
WriteData(*puts) ;
puts++ ;
col++ ;
}
}
void scan()
{
unsigned char scan_num;
17
scan_num=GPIOPinRead(SCAN_PORT,SCAN)&0x0f;
switch (scan_num)
{
case
0x01:a[3]=GPIOPinRead(READDATA_PORT,READDATA)&0x0f;flag0=1;break;
case
0x02:a[2]=GPIOPinRead(READDATA_PORT,READDATA)&0x0f;flag1=1;break;
case
0x04:a[1]=GPIOPinRead(READDATA_PORT,READDATA)&0x0f;flag2=1;break;
case
0x08:a[0]=GPIOPinRead(READDATA_PORT,READDATA)&0x0f;flag3=1;break;
}
}
void GPIO_Port_B_ISR(void)
{
unsigned long ulStatus;
ulStatus=GPIOPinIntStatus(READDATA_PORT,true);
GPIOPinIntClear(READDATA_PORT,ulStatus);
if(ulStatus&INT)
{
while(!((flag0==1)&&(flag1==1)&&(flag2==1)&&(flag3==1)))
{
scan();
}
}
flag0=0;
flag1=0;
flag2=0;
flag3=0;
}
void judge_display1(void)
{
unsigned char over_low=0;
unsigned char under_range=0;
unsigned char polarity=0;
unsigned char qian=0,bai=0,shi=0,ge=0;
if((a[3]&0x04)==0x04) //判断正负,Q2=0为负,Q2=1为正
polarity=1;
18
else
polarity=0;
if((a[3]&0x09)==0x09)
{
over_low=0;
under_range=1;
}
else if((a[3]&0x09)==0x01)
{
over_low=1;
under_range=0;
}
else
{
over_low=0;
under_range=0;
}
if((a[3]&0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
//WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
if((over_low==1)&&(under_range==0))
{
while(1)
{
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_0,0xff);
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_1,0x00);
scan();
if((a[3]&0x08)==0x08)
qian=0;
19
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
WriteNum(bai);
WriteData('.');
WriteNum(shi);
WriteNum(ge);
}
}
if((over_low==0)&&(under_range==1))
{
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_0,0x00);
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_1,0xff);
scan();
if((a[3]&0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
WriteNum(0);
WriteData('.');
WriteNum(qian);
WriteNum(bai);
WriteNum(shi);
WriteNum(ge);
}
if ((over_low==0)&&(under_range==0))
{
20
if((GPIOPinRead(OUTPUT_PORT,GPIO_PIN_0)==0xff)&&(GPIOPinRead(OUTP
UT_PORT,GPIO_PIN_1)==0x00))
{
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_0,0xff);
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_1,0x00);
scan();
if((a[3]&0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
WriteNum(bai);
WriteData('.');
WriteNum(shi);
WriteNum(ge);
}
if((GPIOPinRead(OUTPUT_PORT,GPIO_PIN_0)==0xff)&&(GPIOPinRead(OUTP
UT_PORT,GPIO_PIN_1)==0xff))
{
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_0,0xff);
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_1,0xff);
if((a[3]&0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
21
WriteNum(qian);
WriteData('.');
WriteNum(bai);
WriteNum(shi);
WriteNum(ge);
}
}
}
void judge_display2(void) {
unsigned char over_low=0;
unsigned char under_range=0;
unsigned char polarity=0;
unsigned char qian=0,bai=0,shi=0,ge=0;
if((a[3]&0x04)==0x04) //判断正负,Q2=0为负,Q2=1为正
polarity=1;
else
polarity=0;
if((a[3]&0x09)==0x09)
{
over_low=0;
under_range=1;
}
else if((a[3]&0x09)==0x01)
{
over_low=1;
under_range=0;
}
else
{
over_low=0;
under_range=0;
}
if((a[3]&0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
22
shi=a[1];
ge=a[0];
WriteCommand(0x94);
if(polarity==1)
WriteData('+');
else
WriteData('-');
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_0,0xff);
GPIOPinWrite(OUTPUT_PORT,GPIO_PIN_1,0xff);
WriteNum(qian);
WriteNum(bai);
WriteNum(shi);
WriteData('.');
WriteNum(ge);
}
// 显示一级菜单函数
void display_menu1(void)
{
unsigned char i;
init(); // 端口初始化
PSB_L; // 串行方式
SysCtlDelay(250*(SysCtlClockGet()/3000));
LcmInit() ; // 液晶初始化
WriteCommand(0x30) ;
WriteCommand(0x80) ;
for(i=0;menu1_1[i]!='\0';i++)
{
WriteData(menu1_1[i]) ;
}
WriteCommand(0x91) ;
WriteData(0x15);
WriteData(0x15);
WriteCommand(0x92) ;
23
for(i=0;menu1_2[i]!='\0';i++)
{
WriteData(menu1_2[i]) ;
}
WriteCommand(0x96) ;
WriteData(0x15);
WriteData(0x15);
SysCtlDelay(500*(SysCtlClockGet()/3000));
}
// 显示二级菜单函数
void display_menu2(void)
{
unsigned char i;
init(); // 端口初始化
PSB_L; // 串行方式
SysCtlDelay(250*(SysCtlClockGet()/3000));
LcmInit() ; // 液晶初始化
WriteCommand(0x30) ;
WriteCommand(0x80) ;
for(i=0;menu2_1[i]!='\0';i++)
{
WriteData(menu2_1[i]) ;
}
WriteCommand(0x90) ;
for(i=0;menu2_2[i]!='\0';i++)
{
WriteData(menu2_2[i]) ;
}
SysCtlDelay(500*(SysCtlClockGet()/3000));
}
//显示三级菜单
void display_menu3(void)
{
unsigned char i;
init(); // 端口初始化
PSB_L;
GPIO_Init(); // 串行方式
24
SysCtlDelay(250*(SysCtlClockGet()/3000));
LcmInit() ; // 液晶初始化
WriteCommand(0x30) ;
WriteCommand(0x80) ;
for(i=0;menu3_1[i]!='\0';i++)
{
WriteData(menu3_1[i]) ;
}
WriteCommand(0x83) ;
para_input_display();
WriteCommand(0x90) ;
for(i=0;menu3_2[i]!='\0';i++)
{
WriteData(menu3_2[i]) ;
}
while(1)
{
WriteCommand(0x94);
judge_display1();
SysCtlDelay(5000 * (TheSysClock / 3000));
WriteCommand(0x08);
SysCtlDelay(5000 * (TheSysClock / 3000));
WriteCommand(0x0c);
}
//WriteCommand(0x97) ;
//WriteData(0x19) ;
do {key_check();} while(key_val!=14);
{
display_menu4();
}
}
//显示四级菜单
void display_menu4(void)
{
unsigned char i;
init(); // 端口初始化
PSB_L;
GPIO_Init(); // 串行方式
SysCtlDelay(250*(SysCtlClockGet()/3000));
25
LcmInit() ; // 液晶初始化
WriteCommand(0x30) ;
WriteCommand(0x80) ;
for(i=0;menu4_1[i]!='\0';i++)
{
WriteData(menu3_1[i]) ;
}
WriteCommand(0x83) ;
para_input_display();
WriteCommand(0x90) ;
for(i=0;menu4_2[i]!='\0';i++)
{
WriteData(menu3_2[i]) ;
}
while(1)
{
WriteCommand(0x94);
judge_display2();
}
}
// 输出参数提示
void set_para(void)
{
// unsigned char i;
init(); // 端口初始化
PSB_L; // 串行方式
SysCtlDelay(250*(SysCtlClockGet()/3000));
LcmInit() ; // 液晶初始化
PutStr1(0,0,menu3_1);
DelayKey(1,5) ;
Delay(20);
PutStr1(1,0,menu3_2);
DelayKey(1,5) ;
Delay(20);
26
SysCtlDelay(500*(SysCtlClockGet()/3000));
}
// 参数输入与显示
void para_input_display(void)
{
int a[3],b[3],x;
int i=0;
int return_up_flag=0;
WriteCommand(0x30) ;
WriteCommand(0x85) ;
while(return_up_flag==0)
{
do {key_check();} while(key_val==16);
switch(key_val)
{
case 0:WriteData('0');DelayKey(1,5);a[i]=0;break;
case 1:WriteData('1');DelayKey(1,5);a[i]=1;break;
case 2:WriteData('4');DelayKey(1,5);a[i]=4;break;
case 3:WriteData('7');DelayKey(1,5);a[i]=7;break;
case 4:WriteData('.');DelayKey(1,5);break;
case 5:WriteData('2') ;DelayKey(1,5);a[i]=2;break;
case 6:WriteData('5') ;DelayKey(1,5);a[i]=5;break;
case 7:WriteData('8') ;DelayKey(1,5);a[i]=8;break;
case 8:;break;
case 9:WriteData('3') ;DelayKey(1,5);a[i]=3;break;
case 10:WriteData('6') ;DelayKey(1,5);a[i]=6;break;
case 11:WriteData('9') ;DelayKey(1,5);a[i]=9;break;
//case 12:return_up_flag=1;break;
case 12:;break;
case 13:;break;
case 14:;break;
case 15:return_up_flag=1;break;
}
i++;
}
}
27
void WriteNum(unsigned char num) {
WriteData(0x30+num);
}
void GPIO_Port_D_ISR(void)
{
unsigned long ulStatus;
ulStatus = GPIOPinIntStatus(KEY_PORT, true); // 读取中断状态 GPIOPinIntClear(KEY_PORT, ulStatus); // 清除中断状态,重要
if (ulStatus & KEY_PORT) // 如果KEY中断状态有效
{
SysCtlDelay(10 * (TheSysClock / 3000)); // 延时,以消除按键抖动
while
((GPIOPinRead(KEY_Row,GPIO_PIN_0)==0)&&(GPIOPinRead(KEY_clo,GPIO_P
IN_7)==0)); // 等待按键抬起
SysCtlDelay(10 * (TheSysClock / 3000));// 延时,以消除松键抖动 }
}
28
范文四:数字万用表 单片机课程设计
1
硬件选择方案:
一、实验所需元器件
1.A T89S51芯片 1块
2. AD0809芯片 1块
3. 74HC245 2块
4. 4位一体数码 1个
5. 6MHZ 晶振 1个
6. 33pF电容 2个
7. 0.1μf 滤波电容 2个
8. 10μf 电解电容 1个
9. 按键开关 1个
10. 发光二极管 1个
11. 4.7KΩ精密电位器 1个
12. 510Ω电阻 12个
13. 8.2KΩ电阻 1个
14. 10KΩ电阻 1个
15. 导线 若干
二、主要元器件的介绍
1、模数转换芯片 ADC0809:
ADC0809是典型的 8通 8位通道逐次逼近式 A/D转换器, 它可以喝微型计 算机直接接口。
(1) ADC0809内部逻辑框图
图 1-2 ADC0809内部逻辑框图及引脚图
ADC0809的内部逻辑框图如图 1-2所示。途中多路模拟开关可选通 8路模 拟通道,允许 8位模拟量分时输入,并共用一个 A/D转换器进行转换器,地址 锁存器与译码电路完成对 A 、 B 、 C 三个地址位进行所存与译码
2
(2) ADC0809的引脚
ADC0809芯片为 28引脚双列直插式装置其引脚排列图为 1-2所示。
(3) ADC0809的工作原理
首先输入 3位地址,并使 ALE=1,将地址存入地址锁存器中,此地址经译码选通 8路模拟输入之一的比较器。启动端上升沿逐次逼近寄存器复位,下降沿启动 A/D转换,之后 EOC 输出信号变低,指示转换正在进行,知道 A/D转换完成。 EOC 变为高电平,指示 A/D转换结束,结果数据已经存入锁存器,这个信号可 用作中断申请,当 OE 输入为高电平时,输出三态门打开,转换结果的数字量输 出到输出总线上。
图 1-3 ADC0809信号的时序配合
3
2. 数据处理及控制芯片 AT89S51
AT89S51是低功耗, 高性能 CMOS8位单片机, 图 1-4为内部总体结构, AT89S51内部含 4K 字节闪速存储器, 128字节 RAM , 32个 I/O口线,两个数据指针,两 个 16位定时器、计数器,一个 5向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时 S51可降至 0HZ 的静态逻辑操作,并支两种软件 可选的节电工作模式,空闲方式 停止 CPU 的工作,但允许 RAM ,定时、计数 器,串行通信口及中断系统继续工作, 直到下一个硬件复位, 由于将多功能 8位 CPU 和闪烁存储器组合在单个芯片中。
4
图 1-4 89S51芯片内部总体结构
(1)主要性能参数
与 MCS-51产品指令系列完全兼容
4K 字节在系统编程闪速存储器
1000次擦写周期
4.0~5.5V的工作范围
全静态工作模式 0HZ~33MHZ
三级程序加密码锁
128个字节内部 RAM
32个可编程 I/O口线
2个 16位定时器 /计数器
6个中断源
全双工串行 UART 通道
低功耗空闲和掉电模式
中断可从空闲模式唤醒系统
看门狗 (WDT)及双数据指针
掉电标志和快速编程特性
灵活的系统编程
(2) AT89S51的引脚:
AT89S51芯片为 40引脚双列直插式封装,其引脚排列图为
1-5
图 1-5 AT89S51引脚图
(3) P2口:P2口是一个内部提供上的拉电阻的 8位双向 I/O口, P2的输出缓 冲器可驱动 4个 TTL 逻辑门电路,对 P2口管脚写入 ” 1” 后,被内部上拉电阻拉 高,可作用输入。 P2口被外部下拉为低电平时,将输出电流,这事由于内部有 上拉电阻的缘故, P2口当用于外部程序或 16位地址外部数据存储器进行存取时,
5
P2口输出地址的高 8位, 在访问 8位地址外部数据存储器时, P2口线上的内容, 在访问整个期间不改变 P2口在编程和校验时接收高 8位地址信号和控制信号。 (4) P3口:P3是一个内部提供上拉电阻的 8位双向 I/O口, P3口的输出缓冲 器可驱动 4个 TTL 逻辑门电路, 对 P3口写 1后被内部上拉电阻拉高, 可作用输 入, P3口被外部下拉电阻拉低时,将输出电流,这是由于内部上有上拉电阻的 缘故, P3口除了一般 I/O口的功能外,还有重要的第二功,
P3口同时为编程和校验接收一些控制信号。
1. VCC :电源电压
2. DND ;接地
3. P0口:P0口试一组 8位漏极开路双向 I/O口,每位引脚可驱动 8个 TTL 逻辑门电路,对 P0口写 1时,被定义为高阻抗输入,在访问外部数据存 储器或程序存储器时,它可以定义为地址总线和数据总线的低八位 4. P1口:是一个内部提供上拉电阻的 8位双向 I/O口,它可驱动 4个 TTL 逻辑门电路,对 P1写 1,被上拉电阻拉高,可用作输入, P1口被外部下 拉为低电平时,将输出电流,这是由于内部有上拉电阻,在编程和校验 时, P1口作为低 8位地址接收,且具有第二功能。 如图表 1-2
表 1-2
5. RST:复位输入,当振荡器复位器件时,要保持 RST 脚两个机器周期的高 电平时间
6. ALE/RPOG:当访问外部存储器时,地址锁存器允许的输出电平用于锁 存地址的地位字节,编程时此引脚用于输出编程脉冲,在平时 ALE 端以 不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6,因此它可 用作对外部输出脉冲或用于定时目的。每当用作外部存数据存储器时, 将跳过一个 ALE 脉冲,如想禁止 ALE 的输出可在 SFR8EH 地址上置 0, 此时 ALE 只有执行 MOVX , MOVC 指令时 ALE 才起作用, 该引脚被略 微拉高,如果微处理器在外部执行状态 ALE 禁止,置为无效。
6
范文五:《数字万用表课程设计》课程报告
天津电子信息职业技术学院
《数字万用表课程设计》课程报告
论文题目 : 三位半数字万用表 姓系专班
名 : 陈星宇(02) 别 : 网络技术系 业 : 物联网应用技术 级 : 物联S11-1
指导教师 : 王青
目录
一.课程设计的目的 . .............................................................................................................. 1 二.设计题目和要求 . .............................................................................................................. 1 三.总体方案 . .......................................................................................................................... 1 四.方案比较 . .......................................................................................................................... 3 五.基本原理 . .......................................................................................................................... 4 六.单元电路设计 . .................................................................................................................. 5
6.2 AC/DC转换电路 . ....................................................................................................... 8 6.3 电压、电流信号衰减电路 . ....................................................................................... 8 6.4 电阻测量电路 . ........................................................................................................... 9 6.5 电容测量 . ................................................................................................................. 11 八.所用元器件 . .................................................................................................................... 13 九.设计心得和体会 . ............................................................................................................ 13 十一.实验测得波形图 . ........................................................................................................ 15 参考文献 . ................................................................................................................................ 16
三位半数字万用表
一.课程设计的目的
课程设计的主要目的,是通过电子技术的综合设计,熟悉一般电子电路综合设计过程、设计要求、完成的工作内容和具体的设计方法。通过设计也有助于复习、巩固以往的学习模电、数电内容,达到灵活应用的目的。在设计完成后,还要将设计的电路进行安装、调试以加强学生的动手能力。在此过程中培养从事设计工作的整体观念。
课程设计应强调以能力培养为主,在独立完成设计任务同时注意多方面能力的培养与提高,主要包括以下方面: 1、独立工作能力和创造力。
2、综合运用专业及基础知识,解决实际工程技术问题的能力。 3、查阅图书资料、产品手册和各种工具书的能力。
4、熟悉常用电子仪器操作使用和测试方法。 5、工程绘图能力。
6、写技术报告和编制技术资料的能力。
二.设计题目和要求
题目:设计3 1/2数字万用表 具体要求:
(一)根据题目,利用所学知识,通过上网或到图书馆查阅资料,设计 2-3个实现数字万用表的方案;只要求写出实现工作原理,画出电原理功能
框图,描述其功能。
说明:采用原理、方案、方法不限,可以自行设计。 (二)其中对将要实验方案3 1/2位数字万用表方案,须采用中小规模
集成电路、MC14433A/D转换器等电路进行设计,写出已确定方案详细工 作原理,计算出参数。 (三)技术指标:
1、测量直流电压1999-0001V ;199.9-0.1V ;19.99-0.01V ;1.999- 0.001V;测量交流电压1999-199V 。 2、交、直流电流; 3、电阻、电容;
4、三位半数字显示。
三.总体方案
方案一:由MC14433A/D转换器构成的3 1/2位数字万用表
原理:该系统中将待测直流电压Vx 加到MC14433芯片的3脚,经MC14433
完成A/D转换后,通过CD4511七段锁存/译码/驱动器送到LED 显示,LED 位选是由MC14433的DS4-DS1经MC1413反向后提供,MC1403为MC144433提供基准电压。测交流时则需经AC-DC 转换。
原理框图:
方案二:由ICL7106构成的3 1/2为数字万用表
原理:该系统采用ICL7106、四个共阴极LED 数码管,ICL7106内部包括模拟电路(即双积分A/D转换器)、数字电路两大部分。输入电压经量程转换进入ICL7106进行A/D转换,直接在数码器上显示。ICL7106只有液晶笔段及背电极驱动,没有小数点驱动端。为显示小数点,需另加外围电路。 原理框图:
方案三:由ICL7136构成的3 1/2为数字万用表
其原理、原理框图与ICL7106大致相同。有以下改进:1、在模拟电路的输出端增加了过零检测器和极性触发器;2、在缓冲器和积分器之间增加了一个自动调零模拟开关SAZ 。
四.方案比较
由上表可知,
(1)MC14433与ICL7106比较前者具有转换速率高、输入阻抗低、电压范围大等优点,MC14433转换准确度比较高,相当于二进制11位的A/D转换器,还具有价格低廉、抗干扰性强之优点。
(2)3位半双积分式A/D转换器MC14433可以满足设计要求,适合实验室应用,其功能也较全面。ICL7106采用大规模集成电路芯片,价格昂贵实验室不易提供且不符合设计中用小规模集成芯片的要求。
(3)同ICL7106相比ICL7136有以下特点:微功耗、输入电流为1pA 、低噪声、能消除超量程时的滞后效应、测量速度低。但总体性能仍不如MC14433。 故进行实验时用MC14433器件来构成3 1/2位数字万用表。
五.基本原理
该系统可采用MC14433 3位半A/D转换器,MC1413七路达林顿驱动阵列,CD4511BCD 到七段锁存-译码-驱动器,基准电压MC1403和共阴极LED 发光数码管组成。
(1)各部分功能如下:
1、3 1/2A/D转换器:将输入的模拟信号转换成数字信号 2、基准电源:提供精密电压,供A/D转换器作参考电压 3、译码器:将BCD 码转换成七段信号
4、驱动器:驱动显示器的a,b,c,d,e,f,g 七个发光段,推动发光数码管进行显示
5、显示器:将译码器输出的七段信号进行数字显示,读出A/D转换结果 (2)工作过程如下:
3 1/2数字万用表通过位选信号DS1~DS4进行动态扫描显示,其中MC14433用来实现A/D转换、计数和控制逻辑等主要功能。由于MC14433电路的A/D转换结果是采用BCD 码多路调制方法输出,只要配上一块译码器,就可以将转换结果一数字方式实现四位数字的LED 发光数码管动态扫描。DS1~DS4为输出多路调制选通脉冲信号,DS 选通脉冲为高电平则表示对应数位被选通,此时,该位数据在Q 0~Q 3端输出。DS 和EOC 时序关系是在EOC 脉冲结束之后,紧接着是DS1输出正脉冲,以下依次是DS2、DS3、DS4,其中DS1对应高位(MSD )DS4对应低位(LSD )。对应位选通期间,Q 0~Q 3输出以BCD 码形式数据,DS1选通期间Q 0~Q 3输出千位的半位数0或1及过量程、欠量程和极性标志信号。
在位选信号DS1选通期间Q0~Q3的输出内容如下:
Q3表示千位数,Q3代表千位数的数字。若其值为1,则代表千位数的数字显示为0;反之,若其值为0,千位数的数字显示为1。
Q2表示被测电压的极性,Q2的电平为1,表示极性为正,即Vx>0,Q2的电平为0,表示极性为负,即Vx<0。显示数的负号(负电压)由mc1413中的一只晶体管控制,符号位“一”段的阴极与千位数的阴极接在一起,当输入信号vx 为负电压时,q2端输出置“0”。q2负号控制位使得驱动器不工作,通过限流电阻rm="" 使显示器的“一”段(即g="" 段)点亮;当输入信号vx="">0。显示数的负号(负电压)由mc1413中的一只晶体管控制,符号位“一”段的阴极与千位数的阴极接在一起,当输入信号vx>
小数点显示是由正电源通过限流电阻供电燃亮小数点。若量程不通则选通对应的小数点。
过量程是当输入电压Vx 超过量程范围时,输出过量程标志信号/OR。 当Q3=0,Q0=1时,表示Vx 处于过量程状态。 当Q3=1,Q0=1时,表示Vx 属于欠量程状态。
当/OR=0时,|Vx|>1999,则溢出;|Vx|>Vr,则/OR输出低电平。
当/OR=1时,表示|Vx|
六.单元电路设计
6.1
器件介绍
(一) MC14433芯片引脚及其功能.
(1)MC14433的内部框图如图所示,主要包括模拟电路(A/D转换器)、数字电路两大部分。
(2)MC14433采用24脚双列直插式封装(DIP ——40)管脚排列如下图所示:
1-4多路选择开关
0-3
极性
锁存器判别
个时钟十百千溢出
时钟
逻辑控制模拟电路
1
1
多路选择开关
锁存器
个十百
逻辑控制
14433结构及引脚图
MC14433 引脚排列图
各引脚功能如下:
UDD ——正电源端,一般接+5V。
UAG ——输入信号的公共端,简称模拟地。
USS ——输入信号Q 0-Q 3、DS 1-DS 4,OR ˉ、ECO(不包括CL O ) 的公共地;此端接U AG 时输出电压变化范围是U AG -U DD ,接U EE 端时是U EE -U DD 。
U EE ——负电源端,通常接-5V ;U EE 主要作为内部模拟电路的负电源,其负载电流约为0.8mA 。
UI ——模拟电压输入端,输入电压为U IN 。 UREF ——外接基准电压端。
R1、R 1/C1、C 1——外接积分元件端。 C01、C 02——外接自动调零电容。
DU——实时输出控制端,亦称数据更新端。若在双积分第5阶段开始之前从DU 端输入一个正脉冲,则本次A/D转换结果就依次通过锁存器和多路选择开关输出。否则,输出端仍保持锁存中原有数据不变。使用中若将DU 端与EOC 端相连,则每次A/D的转换结果都被输出;将DU 端接U SS 时即可实现读数保持。 CLK1、CLK 2——分别为时钟脉冲输入、输出端,二者之间接上振荡电阻R C 即可产生时钟信号。
EOC——A/D转换结束标志输出端,每个A/D转换周期结束时此端输出一个正脉冲。
ORˉ——量程信号输出端,超量程时OR ˉ=0(负逻辑)。
DS1-DS 4——多路调制位选通信号输出端,其中DS 1为千位,DS 4为个位。 Q0-Q 3——BCD 码输出端。
(二) CD4511引脚图及其功能
CD4511引脚排列图
其功能介绍如下: 1)VDD,VSS 为正负电源端, 电源电压范围为3~18V通常取5V 2)A,B,C,D:BCD码输入端,A 为最低位。
3)a 、b 、c 、d 、e 、f 、g:七段译码输出(高电平有效)可驱动共阴极
LED
数码管。
4)LT 为灯测试端,只要LT=0无论其它输入端状态如何LED 显示为 8,各笔段都被点亮,由此检测数码管是否故障,正常工作时应为高电平。
5)BI 为消隐功能端只要BI=0且LT=1,LED 灭灯达到消隐目的,正常工作应置BI 端为高电平。另外CD4511有拒绝伪码的特点,输入数据超过十进制数9(1001)时显示字形也自行消隐。
6)LE 锁存信号:当LE=1且BI=LT=1时,则锁存输出信号LED 保持前一时刻.
(三) MC1403的引脚及其功能
V
MC1403引脚图
MC1403的输出电压温度系数为0,即输入电压与温度无关。该电路的特点:(1)温度系数小;(2)噪声小;(3)输入电压范围大,稳定性能好,当输入电压从+4.5V变化到+15V时,输出电压值变化量ΔV 0<3mv;(4)输出电压准确度较高,v 0值在2.475-2.525v="" 以内;(5)压差小,适用于低压电源;(6)负载能力小,该电源最大输出电流为10ma="">3mv;(4)输出电压准确度较高,v>
(四) MC1413反相驱动器(实验中用5个三极管搭建)
MC1413采用NPN 达林顿复合晶体管的结构,因此有很高的电流增益和很高的输入阻抗,可直接接受MOS 或CMOS 集成电路的输出信号,并把电压信号转换成足够大的电流信号驱动各种负载。该电路内含有7个集电极开路反相器(也称OC 门)。MC1413采用16引脚的双列直插式封装。每一驱动器输出端均接有一释放电感负载能量的抑制二极管。
6.2 AC/DC转换电路
交流电压测量电路如图所示:
左边IC1为精密半波整流电路,右边IC2为平均值-有效值变换电路。IC1输入端电压是经过衰减器和电压跟随器后得到的电压,此交流电压被限制在2V 以下,经过半波整流后,变换成平均值,再经过IC2修正使之成为电压的有效值。
半波整流后的平均值与有效值之间的关系如图所示,图中的Vm 为输入端电压的峰值。V=1/ЛVm ,V ˉ=1/√2 Vm 。IC2是平均值-有效值变换电路,其作用是将经IC1半波整流后得到的输出电压加以平滑和放大,即将V 放大到有效值V ,A u =V/Vˉ=2.22。IC2为反相放大器。
验证电路:
如输入电压有效值V~=2V,Vm=√2 X 2V=2.828V。
IC1输出半波整流电压,其平均值V ˉ=1/√2 Vm≈0.9V 。 IC2输出直流电压:V=Au V ˉ≈2V 。
所以上面的电路设计达到交流电压测量的目的。
6.3 电压、电流信号衰减电路
(1)电压衰减电路
四个电阻串联值为10M Ω,若隔直电容104通过交流电压使输出V 0达到2V ,则开关4接入的V i = V0 /10kΩ X 10MΩ=2000V,同理,其它档位1、2、3、4分别为2V 、20V 、200V 、2000V 。
(2)电流衰减电路
四个电阻串联值为1000Ω,若选1档,且使输出不超过2V ,则I i X 1000Ω=V0≤2V, 所以I i ≤2mA 。同理可计算出其它档的满量程电流。档位1、2、3、4
分别为2mA 、20mA 、200mA 、2A 。
图1-电压衰减电路 图2-电流衰减电路
6.4 电阻测量电路
如图3所示
R 0U REF
=
U IN R X U IN
R 0 U REF
即
R X =
选取不同的标准电阻并适当地对小数点进行定位,就能得到不同的电阻测量
挡。
对200Ω挡,取R 01=100Ω,小数点定在十位上。当R x =100Ω时,表头就会显示出100.0(Ω) 。当R x 变化时,显示值相应变化,可以从0.1Ω测到199.9Ω。
又如对2k Ω挡,取R 02=1kΩ,小数点定在千位上。当R x 变化时,显示值相应变化,可以从0.001k Ω测到1.999k Ω。 由上分析可知,
R 1=R 01=100Ω
R 2=R 02-R 01=1000-100=900Ω R 3=R 03-R 02=10k -1k =9k ??
图3-电阻测量电路
6.5 电容测量
IC7是555方波产生器,低电平时触发IC8单稳态触发器。电容测量仪输出电压V 0 与MC14433第3脚相连,通过A/D转换,可以从LED 显示器上读出电容值。
下面分析IC7的工作情况。
C1放电时: tpL =R2C 1ln2≈33 μS
C2充电时: tpH =(R1+R2)C 1ln2≈3.3ms
占空比 K= tpH /(tpH + tpL )=(R1+R2)/(R1+2R2) ≈0.99 频率 f=1/(tpH + tpL ) ≈300HZ 。
IC8是555单稳态触发器,其输出脉宽tpo 由被测电容Cx 及电阻目的。 当×1挡R4=1ΜΩ时,被测电容Cx 最大可达2000pF 。 因此,
tpo≈RCln3≈1.1R4Cx=2.2ms
同理,×0.1、×10、×100、×1000挡都为2.2ms ,单稳输出,脉冲宽度最大且固定不变,而且小于IC7输出脉宽3.3ms 。
当×1挡被测Cx=2000pF时,tpo=0.22ms> t pL =0.033ms,IC8仍能集电极开路工作。
其波形如图所示
下面来计算IC8第3脚输出电压V 3的平均值。 当×1挡,Cx=2000pF时,其输出电压最大。
V 平均=tpo/(tpH + tpL) ×V 3m ≈0.66×V 3m ,其中V 3m 是IC8第3脚输出电压V 3幅值。
设数字表输出最大电压Vx=2V,其方波幅度 V3m= V 平均/0.66=V0/0.66《=Vx/0.66=2V/0.66≈3V ,其中,V 3m= V 0《= Vx=2V。 保持这一档量程不变,下面来验证一下显示的指示值正确与否。 例:当×1挡,Cx=200pF时,V 平均3=0.2V。 此时每个字母代表1pF 。
×1挡最小可测到tpo=0.33ms=11000000Cx。
由上述计算可知,Vx=2V时,IC8的第3脚方波幅度应为3V ,当555定时器供电为5V 时,其3脚电压幅度近似为4V ,为此必须加衰减器将电压由4V 降至3V 。
七.组装、调试内容
总电路组装与调试:
(1) 接通正负电源电压,+5V、-5V ;调节电位器,使基准电压为2V 。 (2)将4只数码管插入板上,插好芯片CD4511、MC14433,用5个三极管搭成MC1413,按电路全图接好全部线路。
(3)接通电源,检查译码显示是否正常。
(4)将输入端接地,接通+5V,-5V 电源(先接好地线),此时显示器将显示“000”值,如果不是,应检测电源正负电压。用示波器测量、观察DS1~DS4 ,Q0~Q3 波形,判别故障所在。
(5) 用电阻、电位器构成一个简单的输入电压VX 调节电路,调节电位器,4位数码将相应变化,然后进入下一步精调。
(6) 用数字万用表代测量输入电压,调节电位器,使VX =1.000V ,这时
被调电路的电压指示值不一定显示“1.000”,应调整基准电压源,使指示值与标准电压表误差个位数在5之内。
(7) 改变输入电压VX 极性,使Vi =-1.000V ,检查“-”是否显示,并校准显示值。
(8) 在+1.999V~0~-1.999V 量程内再一次仔细调整(调基准电源电压)使全部量程内的误差均不超过个位数在5之内。
至此调试成功。
八.所用元器件
九.设计心得和体会
这次实习是到大学来后的第一次真正的动手锻炼,虽说以前做过一些实验,但对其主要思想还是不太懂,主要是根据电路图直接搭接。
这次和以前就大不一样。第一节课是老师说做万用表,当时脑子里是一点想法都没有,大概该怎么弄呢?也没有思路,唯一知道的就是下来了查资料吧,下课后先去的图书馆,但不让借书就在里面找书看了看,大概有了些了解,后来去网吧查资料但却查不到,主要是不知道从哪个网站查,怎么查,看来这做设计的第一步查资料也要有经验啊!只有差得多了才能查得快找得多而全。找到资料后来是了解原理图,好多都与以前学的电路、模电、数电有关联,也发现了自己的好多不足,对以前的知识掌握的不是太充足,通过这次实习我知道了自己现在开的课是多么有用,以后一定要好好掌握。当然也在后来搭接电路时也出现了很大问题,以至最后没能完美结束,主要原因是没有按实验步骤来,没有把电路板和接线测试好就开始搭接电路,最后因元件问题没能做好,通过这次搭接我懂得无论做任何事情一定要先把准备工作做好,正是要车马未动粮草先行啊!通过这次实习我受益颇多,以后要抓住每次机会多多锻炼自己。 问题:Q1和Q2的关系? Q4 Q3 Q2 Q1 0 0 0 1 0 0 1 0 0 0 1 1
这是一个二进制码,当Q1为2时进一位给Q2.
十、总电路图
十一.实验测得波形图
DS 断和Q 端的波形分别如下图所示:
图一
图二
参考文献
1、康华光、 《电子技术基础》模拟部分 第五版 高等教育出版社 2、阎石 《电子技术基础》数字部分 第五版 高等教育出版社 3、沙占友 《新型数字电压表原理与应用》 第一版 机械工业出版社 4、高吉祥、易凡《电子技术基础实验与课程设计》第二版 电子工业出版社 5、沙占友 《新型数字多用表实用大全》 电子工业出版社 6、杨刚、周群 7、林德杰
《电子系统设计与实验》 电子工业出版社 第三版 机械工业出版社 《电气测试技术》