简易电阻、电容和电感测试仪软件实现.docVIP

简易电阻、电容和电感测试仪软件实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简易电阻、电容和电感测试仪软件实现.doc

简易电阻、电容和电感测试仪软件实现   摘 要:结合实际,重点阐述了电阻、电容和电感测试仪软件程序。   关键词:电阻;电容;电感测试仪;程序设计   本设计是用汇编语言对AT89S51编程,以下是各个单元的软件设计。   1 整体程序设计   整体程序是对各个子程序的调用和组织,系统开始后,主程序负责安排初始化、系统信号的发送和读取,以及数据的处理,最后通过LED做数据显示。系统的测量选择可以由按键选择并且由发光二极管做指示。   整体程序设计如下:   ORG 0000H   LJMP START   ORG 001BH   JMP INTM1 ;定义中断地址   ORG 0030H   START : MOV A,#3H   MOV P2,A ; 初始化p2口   LOOP1: JB P2.2,DZ1; 有按键1动作则转dz1   JB P2.3,DR1; 有按键2动作则转dr1   JB P2.4,DG1; 有按键3动作则转dg1   LCALL DELAY; 延时   LJMP LOOP1; 若无按键动作,继续扫描   DZ1: MOV A,#24H   MOV P2,A; 点亮二极管1并选通电阻测量   LCALL DZ ; 调用电阻处理模块   LCALL DISPLAY; 调用显示程序   LJMP START ; 电阻处理完毕,程序返回等待下次测量   DR1: MOV A,#49H   MOV P2,A ; 点亮二极管2并选通电容测量   LCALL DR ; 调用电容处理模块   LCALL DISPLAY; 调用显示程序   LJMP START ; 电容处理完毕,程序返回等待下次测量   DG1: MOV A,#92H   MOV P2,A ; 点亮二极管3并选通电感测量   LCALL DG ; 调用电感处理模块   LCALL DISPLAY; 调用显示程序   LJMP START; 电感处理完毕,程序返回等待下次测量   程序运行顺序是先定义程序开始地址,定义T1口中断地址,初始化P2口,判断按键动作,如果有动作,则被选择电路的指示灯亮,否则继续循环扫描按键,直到有键按下。   2 初始化模块设计   初始化首先是通过单片机P2口的赋值来使CD4052按照要求选通,定义中断类型和中断地址,初始化计数定时器。   初始化P2口的赋值来使CD4052按照要求选通:   3 按键扫描和指示电路程序设计   按键通过上拉电阻给予高电平,动作时直接会给P2.2或者P2.3或者 P2.4一个高电平,通过扫描P2.2-P2.4则可以判断按键动作,如果有按键按下,通过P2.5 P2.6 P2.7分别点亮指示灯,同时P2.0 P2.1送出相应数据选通CD4052使相应的测量电路选通,数据通过CD4052的13脚进入单片机T0计数器,到此,按键扫描电路工作完成。   4 数据处理模块设计   数据处理主要是把从T0读取的频率数通过计算转换成相应的电阻、电容和电感值。图为读取频率的子程序流程图(如图1)   设计思想是通过计数定时器来计算在10ms内的频率计算,然后通过中断服务程序循环100次来达到定时1s的频率计算。部分程序如下所示:   START1:   MOV TMOD,#15H; 方式1,t0计数,t1定时10ms   MOV TH1,#0D8H;   MOV TL1,#0F0H; 初始化t1,定时10ms   MOV TH0,#0H;   MOV TL0,#0H; 初始化t0   MOV IE,#88H; 开中断   MOV R2,#0H; 循环记数器初始化   SETB TR1; 开始定时和记数   SETB TR0;   YL1: CJNE R2,#100,YL1 ; 中断100次,定时1s   CLR TR1 ; 关定时记数   CLR TR0 ;   MOV A,TL0 ; 保存记数值   MOV B,TH0;   RET   INTM1: MOV TH1,#0D8H; t0中断   MOV TL1,#0F0H; 初始化t1,定时1us   INC R2   RETI   首先计算定时时间为10ms,则定时初值为65536-10000=55536=D0F0H,所以分别赋予TH1=0D8H,TL1=0F0H,循环计算器R2初值为零,开中断,EA=1,ET1=1,开始定时计算,定时时间到,判断R2是否等于100,不等,则进中断,等,则关定时计算器,保存TL0和TH0的频率到A和B。中断程序首先初始化T1,R2自加1。整个频率读取完成。   5 数据显示模块设计  

文档评论(0)

lnainai_sj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档