智能仪器课程设计——频率计(共22页).doc

上传人:飞****2 文档编号:14034276 上传时间:2022-05-02 格式:DOC 页数:22 大小:342KB
返回 下载 相关 举报
智能仪器课程设计——频率计(共22页).doc_第1页
第1页 / 共22页
智能仪器课程设计——频率计(共22页).doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《智能仪器课程设计——频率计(共22页).doc》由会员分享,可在线阅读,更多相关《智能仪器课程设计——频率计(共22页).doc(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上 电子仪器综合课程设计报告 题 目 智能数字频率计 学院(部) 信 息 工 程 学 院 专 业 电 子 信 息 工 程 班 级 学生姓名 学 号 2012.02.20 至 2012.03.04 共 2 周 指导教师(签字): 王选民、郭晨 一、课设题目:智能频率计设计二技术指标: 测频的范围是1Hz1MHz三设计内容本次设计的基于单片机的数字式频率计包括波形整形电路、分频电路、多路数据选择器、单片机和显示电路等几个模块。所以本次设计的数字式频率计的电路由以下几块构成:由施密特触发器构成的波形整形放大电路、由74LS90构成的分频电路、由74LS153四选一电路构成的四

2、选一电路、AT89C51单片机以及由74LS138译码电路、74LS245上拉电路和八段数码管显示电路构成的数码显示电路构。其原理图如图1所示:放大整形电路分频电路多路数据选择器单片机显示电路待测信号 图1 系统框图 控制电路在数字频率计中起至关重要的作用。采用什么样的控制电路,直接决定了数字频率计的性能。为了得到一个高性能的数字频率计,本次设计采用单片机来做为数字频率计的核心控制电路,辅之于少数的外部控制电路。本系统让被测信号经过放大整形后,进入单片机开始计数,利用单片机内部定时计数器定时,在把所记得的数经过相关处理后送到显示电路中显示。1.硬件设计基于单片机的数字频率计的设计,包括一个由放

3、大整形电路、分频电路、多路数据选择器、AT89C51以及显示电路,其系统总电路图如图2所示: 图2 总电路图1.1放大整形电路因为在单片机计数中只能对脉冲波进行计数,而实际中需要测量频率的信号是多种多样的,有脉冲波、还有可能有正弦波、三角波等,所以需要一个电路。把待测信号转化为可以进行计数的脉冲波。 矩形脉冲波的整形电路有两种:施密特触发器、单稳态触发器。而这两种电路都可以有门电路或是555定时器构成。由于本次设计的基于单片机的数字频率计的放大整形电路部分需求比较简单,所以我们选择由555定时器构成的施密特触发器来作为信号波形整形电路, 施密特触发器常见的逻辑符号如图3所示。 图3 施密特触发

4、器的逻辑符号集成施密特触发器,常用TTL电路集成施密特触发器有7413等。常用CMOS电路集成施密特触发器有CC40106等。1.2分频电路本次设计采用的是脉冲定时测频法,由于考虑到单片机的定时计数器得计数能力有限,无法对过高频进行测量,所以我们对待测信号进行了分频,这样能提高测量频率的范围,还能相应的提高频率测量的精度。所以我们需要把待测信号进行分频。在本次设计中,因为我们要进行的是十分频、一百分频和一千分频,所以我们选用74LS90电路,经过正确的连接后就可以进行十分频,进行三次十分频就可以得到分频一千次的信号。其引脚图和功能表分别如图4和表1所示。 图4 74LS90引脚图 表1 74L

5、S90功能表 信号经过分频电路74LS90,其频率将减小到原信号的十分之一。1.3.四选一电路本次设计需要用到一个四选一电路,用来选择输入单片机进行计数的待测信号。74LS153就是其中比较好用和常用的一种四选一电路元件。所以这次采用很常见的74LS153集成电路,其电路图如下图5所示: 图5 74LS153电路原理图 数据选择器有多个输入,一个输出。其功能类似于单刀多掷开关,故又称为多路开关(MUX)。在控制端的作用下可从多路并行数据中选择一路送输出端。TTL中规模数据选择器是根据多位数据的编码情况将其中一路数据由输出端 送出的电路,74LS153是双四选一数据选择器,其中有两个四选一数据选

6、择器,它们各有四个数据输入端:1D3、1D2、1D1、1D0和2D3、2D2、2D1、2D0。一个输出端1Y、2Y和一个控制许可端S。系统控制端S为低电平有效。当控制许可端S=1时,传输通道被封锁,芯片被禁止,Y=0,输入的数据不能传送出去;当控制许可端S=0时,传输通道打开,芯片被选中,处于工作状态,输入的数据被传送出去A1、A0是地址选择端,两路选择器共用。74LS153逻辑功能见表。从功能表可看出,当S端输入为低电平时,四选一数据选择器处于工作状态,它有4位并行数据输入D0D3,单选择地址输入A1、A0的二进制码依次由00递增至11时,4个通道的并行数据便依次传送到输出端W。 表2 74

7、LS153的功能表A1A0/SW10000D0010D1100D2110D31.4.单片机单片机作为控制系统和计数器,是本次设计的最重要的部分,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微,俗称单片机。该器件采用ATMEL高密度非易失存储器制造制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。所

8、以本次设计采用AT89C51单片机。本次设计采用的是89C51单片机, 89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。1.5.显示电路 我们测量的频率最终要显示出来。八段LED数码管显示器基本电路如图6所示。 图6 八段LED数码管显示器八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及

9、部份英母。LED数码管显示器有两种形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。如下图所示。共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就能表示欲显示字符的字形代码。在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独

10、的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小,能供给单独锁存的I/O接口电路很多。在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我

11、们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。综合以上内容,我们在这次设计中采用LED数码管,采用单片机静态显示计数来显示。采用一个74LS138译码器来控制各个数码管,采用一个74LS245来做上拉电路,使数码显示管有足够的电压进行显示。显示电路由数码管和74LS138组成,数码管已经介绍过了,现在介绍显示电路组成的另一重要电路:74LS138。在本

12、次设计中,由74LS138连接数码管的接地端,由此来控制数码管的亮和灭。其引脚图和功能表分别如图7和表3所示。 图7 74LS153引脚图 表3 74LS138功能表G1G2CBAY0Y1Y2Y3Y4Y5Y6Y711111111101111111110000011111111000110111111100101101111110011111011111010011110111101011111101110110111111011011111111110由图和功能表可以看出,74LS138译码器有三个地址输入端A、B、C和八个译码输出端Y0Y7,当输入为000时,Y0输出端为0,其他输出端都为1

13、;同理可推出其他输出状态,即只有输出变量下标对应的二进制代码与输入代码相等的输出端为0,其他的输出端都为1。另外,该译码器还有三个使能端:G1、/G2A、/G2B,只有当G1=1、/G2A=0、/G2B=0同时满足,才能译码。三个条件中任何一个不满足就禁止译码。其中译码选通端/G2B也被称作数据输入端,主要指它用于数据分配时所起的作用。设置多个使能端使得该译码器能被灵活组成各种电路。由于单片机输出的显示数据电压不够高,无法直接送到数码管上直接显示,因此需要用一个上拉电路来提高输出数据的电压值,以便送到数码管显示。在本次设计中我们选用DM74LS245N。其电路图如图8所示。 图8 DM74LS

14、245N2.软件设计测频软件实现原理测频软件的实现是基于电路系统来进行设计的。本次设计采用的是脉冲定时测频法,所以在软件实现上基本遵照系统的设计原理,进行测频。本次软件设计语言采用汇编语言,在电脑上编译通过后即可下载到电路上的实际电路中,即可实现频率的测量。软件设计的基本思路是:1、把要用到的内部存储器的地址运用伪指令标号,方便后面设计中运用;2、跳转到中断程序进行初步数据采集;3、开始主程序,首先判断是否有待测信号,无信号就等待信号,有信号则进行下一步;4、判断是否定时到1S,若没有到达1S定时,则执行下面的5和6步得操作,若达到1S,则执行第6步以后的操作;5、判断是否第一次,若是,则判断

15、当前的档位是否设置合适,若合适则直接跳转到返回主程序,若不合适,则进入第6步;6、调整档位,重新进入中断开始初步计数;7、判断档位是否合适,合适则把测得的数据转换为十进制数据,根据当前的档位相应的调整数位,并取表找到相应的显示数据,然后执行第10步操作;8、若上一步中判断出档位不合适,则根据频率进行相应的档位调整。9、恢复初值,重新开始计数;10、返回主程序。2.1.软件流程图 数码转换开始次数加1调整档位,重新设置计时返回主程序判断是否有信号判断是定时到1s判断是否适合显示 返回否否是是是是否第一次档位是否合适适否否是是否2.2.重要的程序 1、控制程序:本文设计的是基于单片机的数字频率计的

16、设计,用单片机来做为数字频率计的控制部分。因此,单片机的控制程序在本次设计中显得非常重要。经过设计,我们得到了如下的控制程序。;*;- MAIN -;* MAIN: NOP CALL DISPLAY0;LED动态显示刷新 CALL DELAY100 JNB B_T1IF,MAIN;每50ms处理一次。;= CLR B_T1IF MOV A,TIMES_50MS CJNE A,#20,NO_1S JMP YES_1S; 满20次即为一秒钟;=NO_1S:MOV A,TIMES_50MSCJNE A,#1,NO_1S_END ;TIMES_50MS不为1,返回;当TIMES_50MS为1时,判断当

17、前所选档位是否过高或者过低;若计数器BUF大于100,则说明满1秒时必然大于2000,则提前调高频率衰减档位,;并清零各计数值,重新在新档位测量MOV A,COUNTER_BUF_H JNZ NO_1S_1;计数器高位不为0,说明超100 MOV A,COUNTER_BUF_LCJNE A,#100,NO_1S_0NO_1S_0:JC NO_1S_LOW;计数器BUF小于100,继续跳转到NO_1S_LOW判断是否需要调低档位NO_1S_1:MOV A,FREQ_LOSS;超量程,判断当前频率衰减档位,若小于3则加一档CJNE A,#3,NO_1S_2JMP NO_1S_ENDNO_1S_2:

18、JC NO_1S_3MOV A,#3MOV FREQ_LOSS,A;档位大于3,则修正为3NO_1S_3:INC FREQ_LOSS;频率衰减档位加1MOV A,FREQ_LOSSCJNE A,#1,NO_1S_4SETB P153_B;FREQ_LOSS=1CLR P153_AJMP NO_1S_20NO_1S_4:CJNE A,#2,NO_1S_5CLR P153_B;FREQ_LOSS=2SETB P153_AJMP NO_1S_20NO_1S_5:CLR P153_B;FREQ_LOSS=3CLR P153_AJMP NO_1S_20;=NO_1S_LOW:MOV A,COUNTER_

19、BUF_LCJNE A,#10,NO_1S_10NO_1S_10:JNC NO_1S_END;偏低,则判断是否需要降低频率衰减档位MOV A,FREQ_LOSS;JZ NO_1S_END;已经是最低档,无需调整DEC FREQ_LOSS;减一档MOV A,FREQ_LOSSCJNE A,#0,NO_1S_11SETB P153_B;FREQ_LOSS=0SETB P153_AJMP NO_1S_20NO_1S_11:CJNE A,#1,NO_1S_12SETB P153_B;FREQ_LOSS=1CLR P153_AJMP NO_1S_20NO_1S_12:CLR P153_B;FREQ_LO

20、SS=2SETB P153_AJMP NO_1S_20NO_1S_20:;调整档位后,重新计数CLR AMOV TIMES_50MS,AMOV COUNTER_BUF_L,AMOV COUNTER_BUF_H,ANO_1S_END:JMP MAIN;=;=YES_1S:;把计数器的数转换成10进制,并根据当前档位设定好要显示的6个数字,;存放在DISPLAY_DATA1-DISPLAY_DATA6中。MOV A,COUNTER_BUF_HMOV R7,AMOV A,COUNTER_BUF_LMOV R6,ACALL CHANGE16_10;=;在频率衰减控制下,计数器数据不会超出2000多少,

21、因此只取转换后的低4位转换成数据显示MOV A,R3ANL A,#0FHMOV TEMP1,AMOV A,R3ANL A,#0F0HSWAP AMOV TEMP2,A MOV A,R4ANL A,#0FHMOV TEMP3,A MOV A,R4ANL A,#0F0HSWAP AMOV TEMP4,A;=;根据频率衰减档位调整数位MOV A,FREQ_LOSSCJNE A,#0,LOSS_1CLR AMOV DATA4,AMOV DATA5,AJMP LOSS_ENDLOSS_1:CJNE A,#1,LOSS_2MOV A,DATA3MOV DATA4,AMOV A,DATA2MOV DATA3

22、,AMOV A,DATA1MOV DATA2,AMOV A,DATA0MOV DATA1,ACLR AMOV DATA0,AMOV DATA5,AJMP LOSS_ENDLOSS_2:CJNE A,#2,LOSS_3MOV A,DATA3MOV DATA5,AMOV A,DATA2MOV DATA4,AMOV A,DATA1MOV DATA3,AMOV A,DATA0MOV DATA2,ACLR AMOV DATA0,AMOV DATA1,AJMP LOSS_ENDLOSS_3:MOV A,DATA2MOV DATA5,AMOV A,DATA1MOV DATA4,AMOV A,DATA0MOV

23、 DATA3,ACLR AMOV DATA0,AMOV DATA1,AMOV DATA2,ALOSS_END:;高位若为0,则置为11,取出显示代码为LED全灭MOV R0,#DATA5;取最高位数据地址MOV R2,#5LOOP_CLR:MOV A,R0JNZ DISCDMOV A,#11MOV R0,ADEC R0DJNZ R2,LOOP_CLR;=;取表找相应显示代码DISCD:MOV R0,#DATA_ADDR;MOV R1,#DISPLAY_DATA_ADDR;MOV R2,#6;MOV DPTR,#TABDILP:MOV A,R0MOVC A,A+DPTRMOV R1,AINC R

24、0INC R1DJNZ R2,DILP;=;重新计数CLR AMOV TIMES_50MS,AMOV COUNTER_BUF_L,AMOV COUNTER_BUF_H,AJMP MAINTAB: ;/显示码码表/ DB 3FH,06H,5BH,4FH,66H; DB 6DH,7DH,07H,7FH,6FH,0FFH;2、数码转化程序:在本次设计中,单片机计数器所计得的数是二进制,以十六进制数的形式存放在寄存器中,而我们需要显示的是十进制数的频率,因此需要进行转化才能显示。数码转化程序设计的原理:本次设计的单片机数码转换是通过单片机的移位乘二特性和单片机的十进制调整功能来实现的。先把双字节的十六

25、进制数转换为8421BCD码,在控制显示的时候通过位调整就可以得到计数所得频率的十进制数据,供给显示。其具体的转换程序如下。;*; - 16进制转10进制 -;*;双字节十六进制整数转换成双字节码整数;入口条件:待转换的双字节十六进制整数在R6、R7中。;出口信息:转换后的三字节码整数在R3、R4、R5中。;影响资源:PSW、A、R2R7 堆栈需求: 字节CHANGE16_10: CLR A ;码初始化 MOV R3, A MOV R4, A MOV R5, A MOV R2, #10H ;转换双字节十六进制整数CHANG_1: MOV A, R7 ;从高端移出待转换数的一位到CY中 RLC

26、A MOV R7, A MOV A, R6 RLC A MOV R6, A MOV A, R5 ;码带进位自身相加,相当于乘 ADDC A, R5 DA A ;十进制调整 MOV R5, A MOV A, R4 ADDC A, R4 DA A MOV R4, A MOV A, R3 ADDC A, R3 MOV R3, A ;双字节十六进制数的万位数不超过,不用调整 DJNZ R2, CHANG_1 ;处理完 RET3、 数码显示程序:单片机控制其内部计数器得到的数据要送到8位数码显示管中显示出来,才能被我们所看到,直接得到我们所测量的频率。我们本次设计所采用的是数码管静态显示,所以我们要把数

27、据循环的送入数码管显示。因为我们经过转换程序把所得的数据存储在40H45H中,因此,数码显示的基本原理就是把40H45H中的数据分时的通过P1口送到数码管,再通过74LS138来控制各个数码管的亮和灭。对于控制,我们在控制软件里。其流程图如图所示。把显示位数清零开始计算当前要显示的位数,取得地址灭LED灯取数显示返回主程序判断显示位数是否为6判断显示位数是否大于6是否否是由此,可以写出显示程序如下:;*; - 显示子程序 -;*DISPLAY0: MOV A,COUNTER_DISPLAY; CJNE A,#6,DISPLAY1 JMP DISPLAY2;/当前显示位数等于6/DISPLAY1

28、: JNC DISPLAY2;/当前显示位数大于6/ JMP DISPLAY3DISPLAY2: CLR A MOV COUNTER_DISPLAY,A;/当前显示位数大于等于6,清零/DISPLAY3: MOV A,#0FFH MOV PORT_LED,A;/变换数据前先灭LED,以消除闪动/ MOV A,COUNTER_DISPLAY MOV PORT_LED_138,A MOV R1,#DISPLAY_DATA_ADDR ADD A,#DISPLAY_DATA_ADDR;/计算当前要显示数据的地址,初始地址+相应位数/ MOV R1,A MOV A,R1;/取出要显示的相应位的数据/ M

29、OV PORT_LED,A;/送出显示数据/ MOV A,COUNTER_DISPLAY INC A MOV COUNTER_DISPLAY,A;/显示位加1/RETI四、 参考文献【1】王化祥,张淑英。传感器原理及应用M。天津:天津大学出版社,2005年;【2】张俊謨。单片机中级教程M。北京:北京航空航天大学出版社,2006年;【3】李志全等。智能仪表设计原理及应用M。国防工业出版社,1998年;【4】郑建国。一种高精度的铂电阻温度测量方案,自动化仪表M,1997年;【5】杨振江等.智能仪器与数据采集系统中的新器件及应用M,西安电子科技大学出版社,2001年;【6】周航慈.单片机应用程序设计M,北京航空航天大学出版社,1991年;【7】李建民.单片机在温度控制系统中的应用M,江汉大学学 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com