您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 基于单片机的脉冲周期测量
1单片机脉冲周期的测量学院名称:电气信息工程班级:06姓名:学号:2010目录2一、课程设计的目的和意义······································2二、程序设计的具体要求········································2三、程序设计的硬件连接·····································四、软件设计流程及描述········································5五、程序清单··········································9六、调试与分析·················································13七、课程设计的体会·············································13一、程序设计的目的和意义(1)目的:通过本次课程设计,巩固和加深“单片机原理与应用”中的理论知识,基本掌握单片机的应用的一般设计方法,提高电子电路的设计和实验能力,并且提高自身查找和运用资料能力(2)意义:通过本次课程设计,理论知识系统化,从中或得一些实战工作经验,提高个人与团体合作的能力。3二、程序设计的具体要求利用单片机AT89C51单片机的T0、T1的定时/计数功能,完成对待测信号的周期进行测量,测量的结果通过8位动态数码管显示出来。设计要求的技术指标有:1、输入脉冲幅度:0-5v2、周期量测量范围:0.1ms—50ms3、测量精度:正负1%三、程序设计的硬件连接h1总体框图环形振荡器电路如图所示。其中G4用于整形,以改善输出波形,R为限流电阻,一般取100Ω,。电位器Rw要求不大于1KΩ。电路利用电容C充放电过程,控制D点电压VD,从而控制与非门的自动启闭,。形成多谐振荡,电容C的充电时间tw1、放电时间tw2和总的振荡周期T分别为:tw1≈0.94RC,tw2≈1.26RC,。T≈2.2RC调节R和C的值,可改变输出信号的振荡频率。以上这些电路的状态转换都发生在与非门输入电平达到门的阀值电平VT的时刻。在VT附近电容器的充放电速度已经很缓慢,。而且VT本身也不够稳定,易受温度、电源电压变化等因素以及干扰的影响。因此,电路输出频率的稳定性较差。信号源电路由RC振荡器构成,电阻选510欧姆,电容选择0.1uf,,产生矩形波后通过非门整形,非门由与非门74LS00构成,实际电路中用到四个与非门,使得整形更好,波形更稳定。根据公式T=2.2*RC,计算可得周期为112.2ms3数码显示电路采用的为共阴极。P0口来送段选信号,P0口内部并没有带上拉电阻,在接收数码管时需要被测信号晶振电路89C51单片机控制器4位数码管显示7407列驱动4在两者之间加一排阻,降低电流来保护P0口。利用了P2.0~P2.3来送位选信号即哪一个数码管来亮,且送低电平时有效,数码管用动态显示的方式来显示测量的周期值。在单片机与数码管之间我们采用了7407来驱动,7407为位6输入高压缓冲器。4单片机单片机使用12m的晶振5晶振和C1、C2组成振荡器,使单片机内部产生产生周期为1us的脉冲信号。5管脚接线图管脚接线图四、软件设计流程及描述61主程序如下所示:MAIN:MOVSP,#60HMOVTMOD,#01H;计数器T0工作在方式1MOVTH0,#00HMOVTL0,#00H;计数器TO清零MOVIE,#81H;开总中断外部中断0SETBTR0;T0允许计数且当外部中断输入为高时计数外部中断0为边沿触发SETBIT0外中断0服务子程序如下:INTR_0:MOV41H,TH0MOV40H,TL0;将计数器T0中的数转移到40H,41H中MOVTH0,#00HMOVTL0,#00H;重新将定时器T0清零QQ:RETI2数码转换由于单片机显示的是10进制的数,所以需要将2进制数转换为10进制数来显示二进制—十进制转换的流程图如下:因为有16位的二进制,故循环次数为16次,放在R7中。38H37H中的十六位二进制数转换为十进制后放在34H35H36H单元中初始化将测量转换为十进制数拆为非压缩BCD数调用显示子程序重设TH1,TL1读TH0TL0到频率单元清零返回73压缩BCD码转换成非压缩BCD码压缩BCD码有4位,所以需要将压缩BCD码转换为非压缩BCD码供8段数码管显示USBCD:MOVA,34HCJNEA,#00H,PD;MOVR1,#35H;MOVR0,#36H;MOVA,#00HXCHDA,@R0;将36H中的低4位转换为非压缩BCD码存到30HMOV30H,AMOVA,@R0SWAPAMOV31H,A;高4位转换为非压缩BCD码存到31HMOVA,#00HXCHDA,@R1;将35H中的低4位转换为非压缩BCD码存到32H开始38H41H37H40H034H,35H,36H16R7C(38H37H)左移一位(移出位bi在C中)(34H35H36H)*2+C(34H35H36H)(十进制运算)(R7)-1--〉=0?返回NY8MOV32H,AMOVA,@R1;高4位转换为非压缩BCD码存到33HSWAPAADDA,#10;加小数点显示(如果显示us为单位可以不加小数点)MOV33H,ARETPD:MOVR1,#34H;当有5位有效值时取前四位显示小数点加在第二位MOVR0,#35H;将35H中的低4位转换为非压缩BCD码存到31HMOVA,#00HXCHDA,@R0;高4位转换为非压缩BCD码存到32HMOV31H,AMOVA,@R0SWAPAADDA,#10MOVA,#00H;将34H中的低4位转换为非压缩BCD码存到33HXCHDA,@R1MOV33H,AMOVA,@R1SWAPAANL36H,#0F0HMOVA,36HSWAPAMOV30H,ARET4数码管显示子程序LEDS:MOVDPTR,#TAB;显示千位MOVA,U4MOVCA,@A+DPTRMOVP0,AMOVA,#0FEH;MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示百位MOVA,U3MOVCA,@A+DPTRMOVP0,AMOVA,#0FDH;位选信号第二个数码管9MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示十位MOVA,U2MOVCA,@A+DPTRMOVP0,AMOVA,#0FBH;位选信号第三个数码管MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示个位MOVA,U1MOVCA,@A+DPTRMOVP0,AMOVA,#0F7H;位选信号第四个数码管MOVP2,ALCALLDELAYRET选用4个共阴极数码管显示,每个数码管的选通是由P2.0~P2.3来控制每位点亮时间为2048us,采用延时子程序,有四个数码管,用扫描的方式显示,每一个时刻只选通一个数码管。不带小数点的0~9的数据对应表带小数点的0~9的数据对应表:03FH00BFH106H186H25BH20DBH34FH30CFH466H40E6H56DH50EDH67DH60FDH707H787H87FH80FFH96FH90EFH5延时程序DELAY:MOVR7,#08HDELA:MOVR6,#80HDJNZR6,$DJNZR7,DELARET10采用软件延时,延时时间为8*128*2=2048us五、程序清单ORG0000HAJMPMAINORG0003HAJMPINTR_0;外部中断低电平触发处理ORG0033HMAIN:MOVSP,#60HMOVTMOD,#01H;计数器T0工作在方式1MOVTH0,#00HMOVTL0,#00H;计数器TO清零MOVIE,#81H;开总中断外部中断0SETBTR0;T0允许计数且当外部中断输入为高时计数外部中断0为边沿触发SETBIT0LOOPS:LCALLBCD;二进制LCALLUSBCD;压缩BCD码,转非压缩BCD码LCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLDELAYLCALLLEDSLCALLLEDSAJMPLOOPS;循环处理显示INTR_0:MOV41H,TH0MOV40H,TL0;将计数器T0中的数转移到40H,41H中MOVTH0,#00HQQ:RETI11MOV38H,41HMOV37H,40HMOV34H,AMOV35H,AMOV36H,AMOVR7,#16LOOPS1:CLRCMOVA,37HRLCAMOV37H,AMOVA,38HRLCAMOV38H,AMOVA,36HADDCA,36HDAAMOV36H,AMOVA,35HADDCA,35HUSBCD:MOVA,34HCJNEA,#00H,PD;判断第五位数值是否为0为零则按四位有效值处理不为零按5位有效值处理MOVR1,#35H;当有4位有效效值时取后四位显示小数点加在第一位MOVR0,#36H;显示的是以ms为为单位的MOVA,#00HXCHDA,@R0;将36H中的低4位转换为非压缩BCD码存到30HMOV30H,AMOVA,@R0SWAPAMOV31H,A;高4位转换为非压缩BCD码存到31HMOVA,#00HXCHDA,@R1;MOVA,@R1;高4位转换为非压缩BCD码存到33HSWAPAADDA,#10;加小数点显示(如果显示us为单位可以不加小数点)MOV33H,ARET12PD:MOVR1,#34H;当有5位有效值时取前四位显示小数点加在第二位MOVR0,#35HLEDS:MOVDPTR,#TAB;显示千位MOVA,U4MOVCA,@A+DPTRMOVP0,AMOVA,#0FEH;位选信号第一个数码管MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示百位MOVA,U3MOVCA,@A+DPTRMOVP0,AMOVA,#0FDH;位选信号第二个数码管MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示十位MOVA,U2MOVCA,@A+DPTRMOVP0,AMOVA,#0FBH;位选信号第三个数码管MOVP2,ALCALLDELAYMOVDPTR,#TAB;显示个位MOVA,U1MOVCA,@A+DPTRMOVP0,AMOVA,#0F7H;位选信号第四个数码管MOVP2,ALCALLDELAYRETDELAY:MOVR7,#08H;延时程序DELA:MOVR6,#80HDJNZR6,$DJNZR7,DELARET13TAB:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhDB0Bfh,86h,0DBh,0Cfh,0E6h,0Edh,0Fdh,87h,0FFh,0EfhNOPEND六、调试与分析将信号源的输出脚接在示波器上,并加上正负电源,观察波形,如果得到的波形不太好,可将74LS00的4个与非门全部串联,并将对应的周期记录下来。在软件测试的时候,将各子程序分别进行调试,数码管显示可先编一段小程序来验证,不能利用数码管显示的程序部分可以利用软件上添加观察程序来实现观察结果是否正确。分析与误差计算:由于我们的理论值为T=2.2RC=112.2us,而我们实际测量得到的值为113ms,求得精度误差小于1%,符合测量要求。七、课程设计的体会在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。在设计开始时,我们应根据应用的和设计要求提出设计的总体任务,绘制硬件和软件的总框图。将总任务分解成可以独立表达的子任务,这些子任务再向下
本文标题:基于单片机的脉冲周期测量
链接地址:https://www.777doc.com/doc-2574243 .html