脉冲宽度的测量

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)
摘要:近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,同时
带动传统控制检测的更新。

在实时检测和自动控制的单片机应用系统中,单片机大都是作为一个核心器件来使用,仅单片机方面的知识是不够的,还应该根据具体硬件结构,以及对具体应用对象特点的软件结合,加以完善。

本系统采用单片机A T89C51为中心器件来设计,在现有的单片机仿真机系统上掌握软硬件设计与调试知识,正确进行元器件的测试与调试,并在计算机上编写程序,进行调试运行,实现设计要求。

一、课程设计的目的和意义
(1)设计目的
通过本次课程设计,巩固和加深“单片机原理与应用”中的理论知识,了解和应用单片机仿真系统,结合软硬件,基本掌握单片机的应用的一般设计方法,提高电子电路的设计和实验能力,并且提高自身查找和运用资料能力
(2) 设计意义
通过本次课程设计,理论知识系统化,从中或得一些实战工作经验,提高个人与团体合作的能力。

为以后从事生产和科研工作打下一定基础。

二、程序设计的具体要求
2.1 技术指标
1、输入脉冲幅度:0-5v
2、频率量测量范围:100—10000HZ
3、测量精度:正负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)数码管
被测信号
晶振电路
89C51 单片机控制
器 4位数码管显示
7407
74LS00
数码管采用的是共阴极。

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,#60H
MOV TMOD,#09H ;计数器T0工作在方式1,门控信号为1
MOV TL0,#00H ;计数器TO清零
MOV IE,#81H ;开放定时器中断和总中断和外部中断0
MOV TCON,#11H
MOV R5,#05H ;T0当外部中断输入为高时计数,外部中断0为
边沿触发方式,下降沿有效
(2)外中断0服务子程序如下:
SOLVE: MOV 41H,TH0
MOV 40H,TL0 ;将计数器T0中的数转移到40H ,41H 中 MOV TH0,#00H
MOV TL0,#00H ;重新将定时器T0清零 RETI
4.3各参数的选择理论根据及公式 (1) 数码转换
由于单片机显示的是10进制的数,所以需要将2进制数转换为10进制数来显示
二进制—十进制转换的流程图如下:
因为有16位的二进制,故循环次数为16次,放在R7中。

38H37H 中的十六位二进制数转换为十进制后放在34H35H36H 单元中
(2)压缩BCD 码转换成非压缩BCD 码
压缩BCD 码有4位,所以需要将压缩BCD 码转换为非压缩BCD 码供8段数码管显示
USBCD:MOV A,34H
CJNE A,#00H, CHOOSE ;判断第五位数值是否为0 为零则按四位有
效值处理 不为零按5位有效值处理
MOV R1,#35H ;当有4位有效效值时 取后四位显示 小数点加在第一

开始
38H ←41H 37H ←40H
0→34H,35H,36H
16→R7
C(38H37H)左移一位(移出位bi 在C 中)
(34H35H36H )*2+C →(34H35H36H ) (十进制运算)
(R7)-1--〉=0?
返 回
N
Y
MOV R0,#36H ;显示的是以ms为为单位的
MOV A,#00H
XCHD A,@R0 ;将36H中的低4位转换为非压缩BCD码存到30H
MOV 30H,A
MOV A,@R0
SW AP A
MOV 31H,A ;高4位转换为非压缩BCD码存到31H
MOV A,#00H
XCHD A,@R1 ;将35H中的低4位转换为非压缩BCD码存到32H
MOV 32H,A
MOV A,@R1 ;高4位转换为非压缩BCD码存到33H
SW AP A
ADD A,#10 ;加小数点显示(如果显示us为单位可以不加小数点)
MOV 33H,A
RET
CHOOSE:MOV R1,#34H ;当有5位有效值时取前四位显示小数点加
在第二位
MOV R0,#35H ;将35H中的低4位转换为非压缩BCD码存到31H
MOV A,#00H
XCHD A,@R0 ;高4位转换为非压缩BCD码存到32H
MOV 31H,A
MOV A,@R0
SW AP A
ADD A,#0A ;加小数点显示(如果显示us为单位可以不加小数点)
MOV 32H,A
MOV A,#00H ;将34H中的低4位转换为非压缩BCD码存到33H
XCHD A,@R1
MOV 33H,A
MOV A,@R1
SW AP A
ANL 36H,#0F0H
MOV A,36H
SW AP A
MOV 30H,A
RET
(3)数码管显示子程序
DISP: MOV DPTR,#TAB ;显示千位
MOV A,U4
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FEH ;位选信号第一个数码管
MOV P2,A
LCALL DELAY
MOV DPTR,#TAB ;显示百位
MOV A,U3
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FDH ;位选信号第二个数码管
MOV P2,A
MLCALL DELAY
OV DPTR,#TAB ;显示十位
MOV A,U2
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FBH ;位选信号第三个数码管
MOV P2,A
LCALL DELAY
MOV DPTR,#TAB ;显示个位
MOV A,U1
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0F7H ;位选信号第四个数码管
MOV P2,A
LCALL DELAY
RET
选用4个共阴极数码管显示,每个数码管的选通是由P2.4~P2.7来控制每位点亮时间为3780us,采用延时子程序,有四个数码管,用扫描的方式显示,每一个时刻只选通一个数码管。

不带小数点的0~9的数据对应
0 , 1 , 2 , 3, 4, 5 , 6 , 7 , 8, 9
77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH
带小数点的0~9的数据对应表:
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH
(4)延时程序
POST: MOV R7,#15H
POST1:MOV R6,#50H
DJNZ R6,$
DJNZ R7,POST1
RET
采用软件延时,延时时间为21*90*2=3780us
五、源程序代码
下面的程序是本次课程设计的源程序:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTR_0 ;外部中断低电平触发处理
ORG 0033H
MAIN: MOV SP,#60H
MOV TMOD,#09H ;计数器T0工作在方式1,门控信号为1
MOV TL0,#00H ;计数器TO清零
MOV IE,#81H ;开放定时器中断和总中断和外部中断0
MOV TCON,#11H
MOV R5,#05H ;T0当外部中断输入为高时计数,外部中断0为
边沿触发方式,下降沿有效
LOOP: ACALL BCD ;十六位二进制转十进制
ACALL UBCD ;压缩BCD码,转非压缩BCD码
LOOP1: ACALL DISP ;显示程序
ACALL POST
DJNZ R5,LOOP1
MOV R5,08H
AJMP LOOP ;循环处理显示计数器T0采集得数
SOLVE:MOV 41H,TH0
MOV 40H,TL0 ;将计数器T0中的数转移到40H,41H中
CLR C
MOV A,40H
ADDC A,#90H
MOV 40H,A
MOV A,41H
ADDC A,#02H
MOV 41H,A
MOV TH0,#00H
MOV TL0,#00H ;重新将定时器T0清零
RETI
BCD: CLR A ;十进制转换,将41H 42H中的数值转换成BCD
码分别按高低存储在34H 35H 36H中MOV 38H,41H
MOV 37H,40H
MOV 34H,A
MOV 35H,A
MOV 36H,A
MOV R7,#16
LOOP2: CLR C
MOV A,37H
RLC A
MOV 37H,A
MOV A,38H
RLC A
MOV 38H,A
MOV A,36H
ADDC A,36H
DA A
MOV 36H,A
MOV A,35H
ADDC A,35H
DA A
MOV 35H,A
MOV A,34H
ADDC A,34H
DA A
MOV 34H,A
DJNZ R7,LOOPS1
RET
USBCD:
MOV A,34H
CJNE A,#00H, ,CHOOSE ;判断第五位数值是否为0 为零则
四位有效值处理不为零按5位有效值处理MOV R1,#35H ; 当有4位有效效值时取后四位显示小数点
加在第位
MOV R0,#36H ;显示的是以ms为为单位的
MOV A,#00H
XCHD A,@R0 ;将36H中的低4位转换为非压缩BCD码存到30H
MOV 30H,A
MOV A,@R0
SW AP A
MOV 31H,A ;高4位转换为非压缩BCD码存到31H
MOV A,#00H
XCHD A,@R1 ;将35H中的低4位转换为非压缩BCD码存到32H
MOV 32H,A
MOV A,@R1 ;高4位转换为非压缩BCD码存到33H
SW AP A
ADD A,#10; 加小数点显示(如果显示us为单位可以不加小数点)
MOV 33H,A
RET
CHOOSE:MOV R1,#34H ;当有5位有效值时取前四位显示小数点加在
第二位
MOV R0,#35H
MOV A,#00H
XCHD A,@R0
MOV 31H,A
MOV A,@R0
SW AP A
ADD A,#10 ;加小数点显示
MOV 32H,
MOV A,#00H
XCHD A,@R1
MOV 33H,A
MOV A,@R1
SW AP A
ANL 36H,#0F0H
MOV A,36H
SW AP A
MOV 30H,A
RET
DISP: MOV DPTR,#TAB ;显示千位
MOV A,U4
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FEH ;位选信号第一个数码管
MOV P2,A
LCALL DELAY
MOV DPTR,#TAB ;显示百位
MOV A,U3
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FDH ;位选信号第二个数码管
MOV P2,A
LCALL DELAY
MOV DPTR,#TAB ;显示十位
MOV A,U2
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FBH ;位选信号第三个数码管
MOV P2,A
LCALL DELAY
MOV DPTR,#TAB ;显示个位
MOV A,U1
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0F7H ;位选信号第四个数码管
MOV P2,A
LCALL DELAY
RET
POST: MOV R7,#15H ;延时程序
POST1:MOV R6,#50H
DJNZ R6,$
DJNZ R7,POSTI
RET
TAB: DB 77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH
DB 0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH
END
六、调试与分析
6.1 调试
(1)硬件调试:
将信号源的输出脚接在示波器上,并加上正5伏电源上,观察波形,如果得到的波形不稳定,可将74LS00的4个与非门全部串联,并记录下对应的周期。

(2)软件的测试:
在软件测试的时候,将各子程序分别进行调试,数码管显示可先编一段小程序来验证,不能利用数码管显示的程序部分可以利用软件上添加观察程序来实现观察结果是否正确。

6.2分析与误差计算:
由于我们的理论值为3.84ms,而我们实际测量得到的值为3.877ms,求得精度误差小于1%,符合测量要求。

七、课程设计的体会
在单片机应用设计时,必须先确定该系统的技术要求,把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。

在设计开始时,我们应根据应用的和设计要求提出设计的总体任务,绘制硬件和软件的总框图。

将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。

在程序调试时应按各个功能模块分别调试。

在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。

另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。

总体来说,此次设计是很有意义的,是提高学习效率和学习积极性的一种很有效的途径,这个过程中,我还懂得合作精神的重要性,学会了与他人合作。

同时在此次课程设计中还运用到以前学过的知识,虽然过去从未独立应用过他们,但在学习的过程中带着问题去发现效率很高,这是我在课程设计中的又一次收获。

参考文献:
《单片微型机原理应用与实验》复旦大学出版社,张友德赵志英涂时亮·编著《程序设计》复旦大学出版社,夏宽理编著
《单片微机控制技术》复旦大学出版社,涂时亮·编著。

相关文档
最新文档