2020年脉冲宽度的测量精编版JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 单片机原理与应用课题:脉冲宽度的测量学院:电气信息工程学院专业:电子信息工程班级: 08电子1班姓名:学号: 08311106合作者:指导教师:陈连玉黄阳日期: 2011-10-10目录摘要 (3)一、课程设计的目的与意义 (3)二、程序设计的具体要求 (3)2.1 技术指标 (3)2.2 工作原理 (3)2.3 主要功能 (3)三、硬件电路的设计及描述 (4)3.1 总体框图 (4)3.2 各器件的参数 (4)3.3电路中的各器件 (4)四、软件设计流程及描述 (6)4.1 软件框图 (6)4.2 软件设计思想 (6)4.3 各参数的选择理论根据及公式 (7)五、源程序代码 (9)六、调试与分析 (13)6.1 调试 (13)6.2 误差与分析 (13)七、课程设计的体会 (13)八、参考文献 (13)九、附录一 (14)摘要:近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动传统控制检测的更新。
在实时检测和自动控制的单片机应用系统中,单片机大都是作为一个核心器件来使用,仅单片机方面的知识是不够的,还应该根据具体硬件结构,以及对具体应用对象特点的软件结合,加以完善。
本系统采用单片机AT89C51为中心器件来设计,在现有的单片机仿真机系统上掌握软硬件设计与调试知识,正确进行元器件的测试与调试,并在计算机上编写程序,进行调试运行,实现设计要求。
一、课程设计的目的和意义(1)设计目的通过本次课程设计,巩固和加深“单片机原理与应用”中的理论知识,了解和应用单片机仿真系统,结合软硬件,基本掌握单片机的应用的一般设计方法,提高电子电路的设计和实验能力,并且提高自身查找和运用资料能力(2) 设计意义通过本次课程设计,理论知识系统化,从中或得一些实战工作经验,提高个人与团体合作的能力。
为以后从事生产和科研工作打下一定基础。
二、程序设计的具体要求2.1 技术指标1、输入脉冲幅度:0-5v2、频率量测量范围:100—10000HZ3、测量精度:正负1%4、显示方式:四位数字显示2.2 工作原理将脉冲信号从P3.2脚引入,将T0设为定时器方式工作。
并工作在门控方式(GATE=1)。
初值TH0,TL0设为0。
在待测脉冲高电平期间,T0对内部周期脉冲进行计数,在待测脉冲高电平结束时,其下降沿向P3.2发中断,在外中断服务程序中,读取TH0,TL0的计数值,该值就是待测脉冲的脉宽。
随后清零TH0和TL0,以便下一脉宽的测量。
2.3主要功能实现对被测信号的脉宽测量。
三、硬件电路设计及描述3.1 总体框图3.2 各器件的参数(1)被测信号源用的是带RC 电路的环形振荡器电路图电路如图所示。
其中G4用于整形,以改善输出波形,R 为限流电阻,一般取100Ω,。
电位器R w 要求不大于1KΩ。
电路利用电容C 充放电过程,控制D 点电压V D ,从而控制与非门的自动启闭,。
形成多谐振荡,电容C 的充电时间t w1、放电时间t w2和总的振荡周期T 分别为: t w1≈0.94RC, t w2≈1.26RC ,。
T≈2.2RC 调节R 和C 的值,可改变输出信号的振荡频率。
以上这些电路的状态转换都发生在与非门输入电平达到门的阀值电平V T 的时刻。
在V T 附近电容器的充放电速度已经很缓慢,。
而且V T 本身也不够稳定,易受温度、电源电压变化等因素以及干扰的影响。
因此,电路输出频率的稳定性较差。
信号源电路由RC 振荡器构成,电阻选510欧姆,电容选择4.7uf,,产生矩形波后通过非门整形,非门由与非门74LS00构成,实际电路中用到四个与非门,使得整形更好,波形更稳定。
复位电容取10uf(2)单片机使用12m 的晶振晶振和C1、C2组成振荡器,使单片机内部产生产生周期为1us的脉冲信号。
3.3电路中各器件(1)数码管数码管采用的是共阴极。
P0口来送段选信号, P0口内部并没有带上拉电阻,在接收数码管时需要在两者之间加一排阻,降低电流来保护P0口。
利用了P2.4~P2.7来送位选信号即哪一个数码管来亮,且送低电平时有效,数码管用动态显示的方式来显示测量的周期值。
在单片机与数码管之间我们采用了7407来驱动,7407为位6输入高压缓冲器。
(2)单片机AT89C51芯片VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3.2 /INT0(外部中断0)RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间四、软件设计流程及描述4.1软件框图主程序流程图初始化将测量转换为十进制拆为非压缩BCD数调用显示子程序(2)外中断0服务程序流程图4.2软件设计思想(1)主程序如下所示:MAIN:MOV SP,#60HMOV TMOD,#09H ;计数器T0工作在方式1,门控信号为1MOV TL0,#00H ;计数器TO清零MOV IE,#81H ;开放定时器中断和总中断和外部中断0 MOV TCON,#11HMOV R5,#05H ;T0当外部中断输入为高时计数,外部中断0为边沿触发方式,下降沿有效(2)外中断0服务子程序如下:SOLVE: MOV 41H,TH0MOV 40H,TL0 ;将计数器T0中的数转移到40H,41H中MOV TH0,#00HMOV TL0,#00H ;重新将定时器T0清零RETI4.3各参数的选择理论根据及公式(1)数码转换由于单片机显示的是10进制的数,所以需要将2进制数转换为10进制数来显示二进制—十进制转换的流程图如下:因为有16位的二进制,故循环次数为16次,放在R7中。
38H37H中的十六位二进制数转换为十进制后放在34H35H36H单元中(2)压缩BCD码转换成非压缩BCD码压缩BCD码有4位,所以需要将压缩BCD码转换为非压缩BCD码供8段数码管显示USBCD:MOV A,34HCJNE A,#00H, CHOOSE ;判断第五位数值是否为0 为零则按四位有效值处理不为零按5位有效值处理MOV R1,#35H ;当有4位有效效值时取后四位显示小数点加在第一位MOV R0,#36H ;显示的是以ms为为单位的MOV A,#00HXCHD A,@R0 ;将36H中的低4位转换为非压缩BCD码存到30HMOV 30H,AMOV A,@R0SWAP AMOV 31H,A ;高4位转换为非压缩BCD码存到31HMOV A,#00HXCHD A,@R1 ;将35H中的低4位转换为非压缩BCD码存到32H MOV 32H,AMOV A,@R1 ;高4位转换为非压缩BCD码存到33HSWAP AADD A,#10 ;加小数点显示(如果显示us为单位可以不加小数点)MOV 33H,ARETCHOOSE:MOV R1,#34H ;当有5位有效值时取前四位显示小数点加在第二位MOV R0,#35H ;将35H中的低4位转换为非压缩BCD码存到31H MOV A,#00HXCHD A,@R0 ;高4位转换为非压缩BCD码存到32HMOV 31H,AMOV A,@R0SWAP AADD A,#0A ;加小数点显示(如果显示us为单位可以不加小数点)MOV 32H,AMOV A,#00H ;将34H中的低4位转换为非压缩BCD码存到33H XCHD A,@R1MOV 33H,AMOV A,@R1SWAP AANL 36H,#0F0HMOV A,36HSWAP AMOV 30H,ARET(3)数码管显示子程序DISP: MOV DPTR,#TAB ;显示千位MOV A,U4MOVC A,@A+DPTRMOV P0,AMOV A,#0FEH ;位选信号第一个数码管MOV P2,ALCALL DELAYMOV DPTR,#TAB ;显示百位MOV A,U3MOVC A,@A+DPTRMOV P0,AMOV A,#0FDH ;位选信号第二个数码管MOV P2,AMLCALL DELAYOV DPTR,#TAB ;显示十位MOV A,U2MOVC A,@A+DPTRMOV P0,AMOV A,#0FBH ;位选信号第三个数码管MOV P2,ALCALL DELAYMOV DPTR,#TAB ;显示个位MOV A,U1MOVC A,@A+DPTRMOV P0,AMOV A,#0F7H ;位选信号第四个数码管MOV P2,ALCALL DELAYRET选用4个共阴极数码管显示,每个数码管的选通是由P2.4~P2.7来控制每位点亮时间为3780us,采用延时子程序,有四个数码管,用扫描的方式显示,每一个时刻只选通一个数码管。
不带小数点的0~9的数据对应0 , 1 , 2 , 3, 4, 5 , 6 , 7 , 8, 977H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH带小数点的0~9的数据对应表:0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 90F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH(4)延时程序POST: MOV R7,#15HPOST1: MOV R6,#50HDJNZ R6,$DJNZ R7,POST1RET采用软件延时,延时时间为21*90*2=3780us五、源程序代码下面的程序是本次课程设计的源程序:ORG 0000HAJMP MAINORG 0003HAJMP INTR_0 ;外部中断低电平触发处理ORG 0033HMAIN: MOV SP,#60HMOV TMOD,#09H ;计数器T0工作在方式1,门控信号为1MOV TL0,#00H ;计数器TO清零MOV IE,#81H ;开放定时器中断和总中断和外部中断0 MOV TCON,#11HMOV R5,#05H ;T0当外部中断输入为高时计数,外部中断0为边沿触发方式,下降沿有效LOOP: ACALL BCD ;十六位二进制转十进制ACALL UBCD ;压缩BCD码,转非压缩BCD码LOOP1: ACALL DISP ;显示程序ACALL POSTDJNZ R5,LOOP1MOV R5,08HAJMP LOOP ;循环处理显示计数器T0采集得数SOLVE:MOV 41H,TH0MOV 40H,TL0 ;将计数器T0中的数转移到40H,41H中CLR CMOV A,40HADDC A,#90HMOV 40H,AMOV A,41HADDC A,#02HMOV 41H,AMOV TH0,#00HMOV TL0,#00H ;重新将定时器T0清零RETIBCD: CLR A ;十进制转换,将41H 42H中的数值转换成BCD码分别按高低存储在34H 35H 36H中MOV 38H,41HMOV 37H,40HMOV 34H,AMOV 35H,AMOV 36H,AMOV R7,#16LOOP2: CLR CMOV A,37HRLC AMOV 37H,AMOV A,38HRLC AMOV 38H,AMOV A,36HADDC A,36HDA AMOV 36H,AMOV A,35HADDC A,35HDA AMOV 35H,AADDC A,34HDA AMOV 34H,ADJNZ R7,LOOPS1RETUSBCD:MOV A,34HCJNE A,#00H, ,CHOOSE ;判断第五位数值是否为0 为零则四位有效值处理不为零按5位有效值处理MOV R1,#35H ; 当有4位有效效值时取后四位显示小数点加在第位MOV R0,#36H ;显示的是以ms为为单位的MOV A,#00HXCHD A,@R0 ;将36H中的低4位转换为非压缩BCD码存到30H MOV 30H,AMOV A,@R0SWAP AMOV 31H,A ;高4位转换为非压缩BCD码存到31HMOV A,#00HXCHD A,@R1 ;将35H中的低4位转换为非压缩BCD码存到32HMOV 32H,AMOV A,@R1 ;高4位转换为非压缩BCD码存到33HSWAP AADD A,#10; 加小数点显示(如果显示us为单位可以不加小数点)MOV 33H,ARETCHOOSE:MOV R1,#34H ;当有5位有效值时取前四位显示小数点加在第二位MOV A,#00HXCHD A,@R0MOV 31H,AMOV A,@R0SWAP AADD A,#10 ;加小数点显示MOV 32H,MOV A,#00HXCHD A,@R1MOV 33H,AMOV A,@R1SWAP AANL 36H,#0F0HMOV A,36HSWAP AMOV 30H,ARETDISP: MOV DPTR,#TAB ;显示千位MOV A,U4MOVC A,@A+DPTRMOV P0,AMOV A,#0FEH ;位选信号第一个数码管 MOV P2,ALCALL DELAYMOV DPTR,#TAB ;显示百位MOV A,U3MOVC A,@A+DPTRMOV P0,AMOV A,#0FDH ;位选信号第二个数码管 MOV P2,ALCALL DELAYMOV DPTR,#TAB ;显示十位MOV A,U2MOVC A,@A+DPTRMOV P0,AMOV A,#0FBH ;位选信号第三个数码管MOV P2,ALCALL DELAYMOV DPTR,#TAB ;显示个位MOV A,U1MOVC A,@A+DPTRMOV P0,AMOV A,#0F7H ;位选信号第四个数码管MOV P2,ALCALL DELAYRETPOST: MOV R7,#15H ;延时程序POST1: MOV R6,#50HDJNZ R6,$DJNZ R7,POSTIRETTAB: DB 77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FHDB 0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH END六、调试与分析6.1 调试(1)硬件调试:将信号源的输出脚接在示波器上,并加上正5伏电源上,观察波形,如果得到的波形不稳定,可将74LS00的4个与非门全部串联,并记录下对应的周期。