ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:65.17KB ,
资源ID:6711110      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6711110.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机做电容测量仪解析.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机做电容测量仪解析.docx

1、单片机做电容测量仪解析第十三届“长通杯”大学生电子设计竞赛电容测量仪( A 题)2016 年 5 月 14 日摘要电容测量仪装置是一种精度高、测试范围宽、操作简便、功能完善的电容测 量仪。随着科技的不断发展,电容在电路中有着越来越多的应用, 其容量大小直 接决定着电路的稳定性和准确性。因此,电容值的的测量在日常使用中不可避免。为了深入了解和学习52单片机的功能,本设计采用 STC89C52和555振荡 器为主要元件对电容进行测量。先将 555设计为多谐振荡器产生输入脉冲信号, 然后利用单片机对脉冲进行中断计数, 再使用公式计算出电容值。在多谐振荡器 终端加一个HD74LS08 (二输入与门)稳

2、定输出波形,从而使测量中更精确。多 谐振荡器会因为连接电阻值的不同而产生的方波的频率不同, 从而可以变换档位测量容量差距较大的电容。如果在工程问题中想寻找出符合要求的电容, 便可通过矩阵键盘输入相应的电容值的范围, 以方便筛选。当电容测定完以后,其数值 通过LCD1602显示出来,以便阅读。关键词:STC89C52单片机;电容测量;555定时器;LCD1602;1系统方案 错. 误 !未指定书签1.1电容测量仪的论证与选择 错误!未指定书签1.2控制系统的论证与选择 错误!未指定书签。2系统理论分析与计算 错. 误 ! 未指定书签。2.1设计方案的分析 错. 误!未指定书签。2.1.1 利用电

3、容器放电测电容实验原理 错误!未指定书签。2.1.2 利用放电时间比率来测电容 错误!未指定书签。2.1.3利用单片机测脉冲来测时间常数 RC再计算电容错误!未指定 书签。2 . 2电容的计算 错. 误!未指定书签。2.2.1计算振荡周期 错. 误!未指定书签2.2.2计算频率 错. 误!未指定书签2.2.3计算 Cx 错. 误!未指定书签3电路与程序设计 错. 误!未指定书签4电路的设计 错. 误!未指定书签3.1.3总程序框图 错. 误!未指定书签3.1.4电源 错. 误!未指定书签3.2程序的设计 错. 误!未指定书签3.2.1程序功能描述与设计思路 错误!未指定书签3.2.2程序流程图

4、 错. 误!未指定书签5测试方案与测试结果 错. 误!未指定书签4.1测试方案 错. 误!未指定书签4.2测试条件与仪器 错. 误!未指定书签4.3测试结果及分析 错. 误 !未指定书签4.3.1测试结果 (数据) 错误!未指定书签4.3.2测试分析与结论 错误!未指定书签附录 1:电路原理图 错. 误 !未指定书签电容测量仪( A 题)1 设计方案设计一:利用电容器放电测电容实验原理电容器充电后,所带电量 Q与两极板间电压U和电容C之间满足Q= CU的关系。U 可由直流电压表测出, Q 可由电容器放电测量。使电容器通过高电阻放电,放电电流 随电容器两极板间的电压下降而减少,通过测出不同时刻的

5、放电电流值,直至 1 = 0,作出放电电流I随时间变化的曲线,曲线下的面积即等于电容器所带电量。由 C= Q/U可求出电容器的电容值。但此方法操作性差,很难实现其功能,故舍之。设计二:利用放电时间比率来测电容其测量原理是把被测电容和基准电容连接到同一电阻上,构成 RC网络。通过测量 两个电容放电时间的比率,就可以求出被测电容的电容值。充电前电容的电压为 0,放电时电容电压与时间的关系为:当 Vc 达到 Vth 时从而由于R和Vth/E已知,可根据Tc算出Co此方法的测量范围从pF(10-12F)到几十个nF(10-9F),并且在寄生电容的抑制和温度 稳定性方面具有极很大的优势,但此方法适用于电

6、解电容,对于瓷片电容并不适用。设计三:利用单片机测脉冲来测时间常数 RC再计算电容其测量原理是把被测电容和电阻串联,构成 RC网络,然后可利用这个时间常数去 利用多谐振荡器,调好振荡信号的波形然后开始计数脉冲值, 可能的周期为T=A0X RC, A0 为一个常数,可通过周期可以计算出 C 的值。这个可以用单片机来测,理论上可以 从测的值可以为 N 多个,大大超过前面所讲述的。 考虑到实用性和可操作性,我们选择设计三。利用555构成单稳态电路(如图* ),待测电容是电路中的Cx,再把”OUT”口输 出的信号的频率输入单片机的 P1.0 口,Cx的一端连接单片机的P2.3 口,通过公式换算 得到电

7、容值。P3.7 口接一独立按键,当其按下时,555定时器的3引脚输出方波,3脚与P1.0 口 相接,可通过程序测出其频率,进而求出 Cx的值,并显示在LCD1602液晶屏上。由分析可知其振荡周期为:由单稳态电路的特性知:使 Rl=R2,则:电容测量电路如图 1所示:图 1555 定时器构成单稳态的电容测量电路图 此方案从计算公式可知,只需要通过单片机处理频率信号即可得到待测电容值,对 测量精度要求而言,还是比较符合要求的,由于是通过单片机读取转化,精确度会明显 的提高。核心元器件简介STC89C52 的介绍STC89C52是STC公司生产的一种低耗能、性能高的 CM0S8位微控制器。具有以 下

8、标准功能:内置 4KBEEPROM ,有 MAX810 复位电路, 3个 16位定时器/计数器, 4 个外部中断,8k字节Flash, 32位I/O 口线,512字节RAM,看门狗定时器,一个7向 量4级中断结构,全双工串行口。另外 STC89C52可降至OHz静态逻辑操作,支持2 种软件可选择节电模式。掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机 一切工作停止,直到下一个中断或硬件复位为止。空闲模式下, CPU 停止工作,允许 RAM 、定时器 /计数器、串口、中断继续工作。最高运作频率 35MHz, 12T/6T 可选。 STC89C52 单片机最小系统原理图 :图 2STC

9、89C52 单片机最小系统555 定时器的介绍NE555 集成电路是 8 脚封装,双列直插型。 NE555 引脚功能如下:Pin 1-GND(接地)-通常被连接到电路共同接地。Pin2-Trigger(触发点)-这个脚位是触发NE555使其启动它的时间周期,又称触发端, 是下比较器的输入。触发信号上缘电压须大于 2/3VCC,下缘须低于1/3VCC。Pin 3-Output(输出)-输出端(Vo),它有0和1两种状态,由输入端所加电平决定, 当时间周期开始 555的输出输出脚位,移至比电源电压少 1.7伏的高电位。周期的结束 输出回到 0 伏左右的低电位。于高电位时的最大输出电流大约 0.2A

10、。Pin4 -Reset重置)-一个低逻辑电位送至该脚位时会重置定时器且使输出回落到一个 低电位,加上低电平时可使输出为低电平 5。它通常被接到电源或不用连接。Pin5-Controlvoltage(控制)-控制电压端(Vc),准许由外部电压控制触发和闸限电 压,可用它控制改变上下触发电平值。 当计时器经营在振荡或稳定的运作方式下 ,这个输 入可以用来改变或调整输出的频率值。Pin6-Threshold重置锁定)-又称阈值端(TH),是上比较器的输入;重置锁定并能 使输出呈低电平。当此接脚的电压从 1/3VCC 电压以下移至 2/3VCC 以上时启动这个动 作。Pin7-Discharge放电

11、端DIS),它是内部放电管的输出,有悬空和接地两种状态,也是由输入端的状态决定这个接脚和主要的输出接脚有相同的电流输出能力, 当输出为ON时为LOW,对地为低阻抗,当输出为 OFF时为HIGH,对地为高阻抗。Pin8-Vcc(V+)-这是555个计时器IC的正电源电压端。供应电压的范围是 +4.5伏特 (最小值)至+16伏特(最大值)。图3555定时器输出波形图4555集成电路内部结构图1602液晶的介绍本设计使用的1602液晶为5V电压驱动,带背光,可显示两行,每行 16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。接口说明:Pin-1-VSS电源

12、地Pin-2-VDD电源正极Pin-3-VQ液晶显器对比度调节Pin-4-RS数据/命令选择输入(H/L)Pin-5-R/W读写选择端(H/L)Pi n-6-E使能信号Pin-7-D0数据接口Pi n-8-D1数据接口Pin-9-D2数据接口Pin-10-D3 数据接口Pin-11-D4 数据接口Pin-12-D5 数据接口Pin-13-D6 数据接口Pin-14-D7 数据接口Pin-15-BLA背光灯电源正极Pin-16-BLK背光灯电源负极基本操作时序:读状态输入:RS=L,R/W=H,E=H输出:D0D7=状态字读数据输入:RS=H,R/W=H,E=H输出:无写指令输入:RS=L,R/

13、W=L,D0D7=指令码,E=高脉冲输出:D0D7=数据写数据输入:RS=H,R/W=L,D0D7=指令码,E=高脉冲 输出:无1602与单片机接口:图51602与单片机接口系统的总体设计思路是被测电容通过 555定时器构成多谐振荡电路,频率输入单片 机,通过分屏电路把频率送入单片机,并把频率通过单片机处理,运算出相应的数值, 再用LCD062显示出来。系统方框图*如下:主程序流程是先通过按键对单片机时钟和端口进行初始化,再对定时器进行初始 化,液晶初始化显示开机界面,再转入上面所设计的开机总中断,结束之后进入低功耗 模式,具体流程如图7所示。图7主程序流程图心得体会这次设计历时两个周左右。在

14、此期间,查找资料,同学交流,反复调试,每一个过程都是对我们这个团队的一次检验和挑战。通过这次实践,我们深入学习了 52单片机、555定时器和LCD1602的用途及工作原理,掌握了设计步骤,锻炼了实践能力,培养了 独立设计能力。这次课程设计收获很多,比如学会了查找相关资料相关标准, 分析数据, 提高了自己的制作能力。但是此次比赛也暴露出了我们的知识基础有很多不足之处。由 于能力有限,未能做到用键盘输入电容的测量范围来筛选电容,因此感到有点儿遗憾。 这次实践是对自己模电和单片机所学的一次大检阅,使我明白自己的能力还有待提高。 本设计是在老师的精心指导和鼓励下完成的。在此,谨向老师和帮助我的同学表示

15、衷心 的感谢!此外,我还要感谢在我的论文中所有被援引过的文献的作者们,他们是我的知 识之源。最后,再次向所有给予我帮助和鼓励的同学和老师致以最诚挚的谢意!附件附件1:电路图图8总电路图附件2:元件清单表1元件 型号 |位号 数量单片机STC89C52RCU11排阻A103JRP11电磁继电器JWDRL1 , RL2, RL33晶振12MX11瓷片电容30pFC1, C22独石电容103( 0.01uF)C41电阻10K QR1, R2, R5, R6, R75按键J1, J2,2液晶LCD1602LCD11555定时器NE555U21电阻1K QR3, R42电阻10QR9, R10, R11

16、3与门HD74LS08U31电解电容50V, 1000pFC31附件三:程序#in clude#in cludei ntrin s.hII 库函数#defi neuintun sig nedint #defi neuchar un sig nedchar #defi neul ongun sig nedl ong uchartable416=C( nF)=; ucharnum,b,x=1,i,a=2,th0,tl0; uin tC;ulo ngf,Cpf,f1;sbitlcde n=P2T; II 液晶使能端sbitlcdrs=P2A5; II液晶数据命令选择端测量电容按键测量电容信号输入sb

17、itRW=P2A6;II1602 写地址 sbitkey_C=P3A7;sbitC_out= PM7; sbitswitch0=P1A。; sbitswitch1=P1Al; sbitswitch2=P1A2; sbitkey_C0=P1A3; sbitkey_C 仁 PM4; sbitkey_C2=P1A5;延时函数液晶写命令函数II声明子函数voiddelayms(ui ntxms); voidwrite_com(ucharcom);II液晶初始化函数/定时器0初始化函数II键盘检测函数(确定被测元件为电阻、电容或电感)II频率显示函数II电容显示函数voidwrite_data(ucha

18、rdate);/I液晶写数据函数 voidledn it(); voidt_i nit();voidkeysca n(); voiddisplay_f( ulon gf); voiddisplay_C(ui ntC);voiddisplay_Cpf();/主函数voidmain()switch0=0;switch1=0;switch2=0;key_C0=0;key_C1=0;key_C2=0;RW=0;led_init(); /清屏函数t_init();keyscan();write_com(0x0c);/ 开显示,不开光标a=2;while(1)keyscan();switch(b)case

19、0:delayms(80);C=(int)(0.069*f*2);if(C10)display_Cpf(); elseswitch0=1;led_init();break;case1:if(C)C=(int)(0.9*C+0.0069*f*2);elseC=(int)(0.069*f*2);if(C49)table42=110;display_C(C); elseswitch1=1;led_init(); break;case2:if(C)C=(int)(0.9*C+0.0069*f*2); elseC=(int)(0.069*f*2); if(C4999)C=4999;table42=110

20、;display_C(C); break;/中断函数 voidT0_count()interrupt1 switch(a)case2:while(C_out); while(!C_out); TH0=0; TL0=0; while(C_out); while(!C_out); th0=TH0; tl0=TL0; TR0=1; break; f=th0*256+tl0;/延时函数 voiddelayms(uintxms) uinti,j; for(i=xms;i0;i-) for(j=110;j0;j-); /液晶写命令函数 voidwrite_com(ucharcom) delayms(2);

21、lcdrs=0;P0=com;lcden=1;_nop_();_nop_();_nop_();_nop_();lcden=0;/液晶写数据函数 voidwrite_data(uchardate) delayms(2); lcdrs=1; lcden=1; P0=date; lcden=1; _nop_(); _nop_(); _nop_(); _nop_(); lcden=0;/液晶初始化函数 voidled_init()设置16X 2显示,5X 7点阵,8位数据接口/设置定时器 0工作方式 1(M1M0=0x0001)delayms(15); write_com(0x38); delayms

22、(5); write_com(0x38); delayms(5); write_com(0x01); delayms(5); write_com(0x08); delayms(5); write_com(0x0C);/定时器 0 初始化函数 voidt_init()TMOD=0x01;TH0=0; /装初值TL0=0;EA=1; /开总中断ET0=1; /开定时器 0 中断TR0=1; /启动定时器 0/档位检测函数 (确定被测元件的档位 ) voidkeyscan() if(key_C0=1)delayms(10); if(key_C0=1) b=1;if(key_C1=1) delayms

23、(10); if(key_C1=1) b=2;if(key_C2=1) delayms(10); if(key_C2=1) b=3;/电容显示函数 voiddisplay_C(uintC)ucharcount=0;uintC0;C0=C;while(C)C=C/10;count+; for(num=5+count;num5;num-)table4num=C0%10+48;C0=C0/10;write_com(0x80+0x40); for(num=0;num6+count;num+) write_data(table4num);delayms(5); /电容值偏小时使用的显示函数 voiddi

24、splay_Cpf() while(C_out);while(!C_out);TH0=0;TL0=0; while(C_out);while(!C_out);while(C_out);while(!C_out);while(C_out);while(!C_out);while(C_out);while(!C_out);while(C_out);while(!C_out);while(C_out);while(!C_out);th0=TH0;tl0=TL0;TR0=1;f1=th0*256+tl0;table42=112;if(Cpf)Cpf=(int)(0.9*Cpf+1.13645*f1*2/1.2);elseCpf=(int)(11.3645*f1*2/1.2); display_C(Cpf);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1