脉宽测量.docx
《脉宽测量.docx》由会员分享,可在线阅读,更多相关《脉宽测量.docx(18页珍藏版)》请在冰豆网上搜索。
脉宽测量
《电子测量》课程设计报告
课题:
脉宽测量电路设计
班级电子3081学号3082107126
学生姓名席凌晨
专业电子信息工程
系别电子与电气工程系
指导教师电子测量课程设计指导小组
淮阴工学院
电子与电气工程学院
2011年3月
一、课程设计的目的············································2
二、程序设计的具体要求········································2
三、程序总体设计··········································2
四、测量电路的硬件设计········································5
五、软件设计··········································8
六、安装与调试············································15
七、课程设计的体会·············································16
八参考文献················································16
1设计目的:
a)培养理论联系实际的正确设计思想,训练综合运用已经学过的理论生产实际知识去分析和解决工程实际问题的能力。
b)学习较复杂的电子系统设计的一般方法,了解和掌握模拟、数字电路等知识解决电子信息方面常见实际问题的能力,由学生自行制作和自行调试。
c)进行基本技术技能训练,如基本仪器仪表的使用,常用元器件的识别、测量、熟练运用的能力,掌握设计资料、手册、标准和规范以及使用仿真软件、实验设备进行调试和数据处理等。
d)培养学生的创新能力。
2设计要求:
a)说明电路的工作原理;
b)主单元电路和元器件参数计算、选择、使用方法经功能;
c)画出总体电路图;
d)上交完整的实习报告。
3总体设计
3.1脉冲宽度测量原理
所谓移相是指对于两路同频信号,以其中一路为参考信号,另一路相对于该参考信号做超前或滞后的移动形成相位差。
数字移相通常采用延时方法,以延时的长短来决定两数字信号间的相位差,本文提出的测量原理正是基于数字移相技术。
如图2所示,原始计数时钟信号CLK0通过移相后得到CLK90、CLKl80、CLK270,相位依次相差90°,用这四路时钟信号同时驱动四个相同的计数器对待测信号进行计数。
设时钟频率为f,周期为T,四个计数器的计数个数分别为m1、m2、m3和m4,则最后脉宽测量值为:
可以看到,这种方法实际等效于将原始计数时钟四倍频,以4f的时钟频率对待测信号进行计数测量,从而将测量精度提高到原来的4倍。
例如原始计数时钟为80MHz时,系统的等效计数频率则为320MHz,如果不考虑各路计数时钟间的相对延迟时间误差,其测量的最大误差将降为原来的四分之一,仅为3.125ns。
同时,该法保证了整个电路的最大工作频率仍为人避免了时钟频率提高带来的一系列问题。
3.2利用单片机89C2051实现脉冲宽度测量方法
AT89C51内有两个可编程定时/计数器。
我们使用T0完成定时功能,T1完成计数功能,当AT89C51的INT0端输入待测的随机脉冲序列时,在脉冲低电平时,引起INT0中断,进行定时,计数测脉宽。
因此,测得随机脉冲序列高电平宽度需将待测信号反向一次后输入给AT89C51的INT0引起INT0中断。
当脉冲低电平时,每定时10us,AT89C51的P1.0引脚求反一次,并将求反信号输入到计数器T1,作为计数脉冲信号启动计数器计数,直到输入到INT0的信号变为高电平为止,外部中断结束。
假设在这段时结果间内计数器总的计数值为X,则所测该脉冲宽度为t1=X×10(us),将一次测量存入相应RAM单元中。
若连续测量N个脉冲的宽度,则重复上述过程,将采样结果存入RAM区中。
为了避免测量时刻的随机性而造成第一个信号脉冲不定带来的测量误差及防止测量时干扰问题,则连续N+2次测量,将N+2次测量结果进行比较,去除一个最大值,一个最小值,剩余N个值进行平均,并送液晶显示器进行结果显示。
图2AT89C51引脚图及其功能
4测量电路的硬件设计
4.1测量电路的硬件原理图
图3硬件原理图
由图3硬件原理可知,测量电路以AT89C51单片机为核心,四位数码液晶显示器组成,它由数码显示器、驱动电路、8位CPU接口构成。
在P3.2送入连续脉冲,T0、T1分别进行定时、计数。
利用AT89C51的P2口作为数据输出,送到数码显示管显示,P1口的P1.0、P1.1、P1.2、P1.3通过四个非门取反驱动数码显示。
运行键、复位键共两个功能键。
数字键主要用于设定N个连续脉冲信号的N值。
控制系统一上电,显示0值。
按运行键后,开始对脉冲序列宽度进行测量,测量过程中若因某种原因需重新开始测量时,按复位键,整个系统复位,并重新开始测量。
4.2单元电路设计
4.2.1时钟电路设计
时钟电路用于产生89C51单片机工作时所需要的时钟控制信号。
89C51单片机的内部电路在时钟信号的控制下,严格地按时序执行指令。
在执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。
单片机各功能部件的运行都是通过时钟信号来控制,有条不紊地一拍一拍地工作的,因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
本设计中,单片机要完成对呀信号的A/D转换和对A/D转换的结果存入外部存储器,对于高频载波信号和调制信号,单片机的速度要够快才能在两次采样之间的时间内完成这两项工作,时钟电路对于本设计有着重要的作用。
常用的时钟电路设计有两种方式,内部时钟方式和外部时钟方式,本设计采用内部时钟的方式。
89C51内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器,89C51内部时钟的振荡电路如下图所示:
图4振荡电路
电路中的电容C1和C2典型值通常选择为30PF左右,晶体频率越高,系统的时钟频率也就越高,单片机的运行速度也就越快。
选用12MHZ的晶振,机器周期则为1us。
4.2.2上电复位电路
图5按键式复位电路
单片机的复位都是靠外部复位电路来实现的,在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟震荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位。
为了保证系统可靠复位,在设计复位电路时,一般使RESET引脚保持10ms以上的高电平,单片机便可以可靠的复位。
图5是一个按键式复位电路,它的上电复位功能通过按键实现。
当开关按下时,电容C充电,通过R6、R7形成回路,使RESET端产生高电平;当开关断开时,电容放电,RESET的点位与地相同,复位结束。
4.2.3数码管显示电路
数码管显示电路如图6所示:
图6数码管引脚排列
5软件设计
5.1总框图
图7总程序框图
2.单元电路设计
本设计由单片机、测量控制电路、键盘及显示电路几个组成部分,各部分采用的电路形式及主要器件确定如下:
(1)单片机部分
选用89C51作为主机,同时要设计89C51单片机的晶振电路和复位电路。
单片机部分框图
(2)测量电路部分
直接利用单片机内部的定时/计数器实现频率的测量。
测量电路框图
(3)显示部分具体电路
显示部分框图
5.2主程序模块
5.2.1主程序
AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。
只要通过设置特殊功能寄存器TMOD,即可完成。
定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。
这里选用16位定时工作方式,对于T0来说,最大定时也只216*1us=65536us,即65.536ms。
如果被测脉冲的宽度大于65536个机器周期时,可设一个中断次数计时器R1,每当定时/计数器满65536个机器周期而产生溢出中断时,计数器R1加1计数,且定时/计数器T0清0后重新从0开始计数,直到脉冲结束。
MOV TMOD,#09H ;置定时/计数方式1,GATE=1
MOV TL1,#00H ;计数器清零
MOV TH1,#00H
MOV TL0,#10 ;延时10us常数
MOV TH0,#0
MOV R0,#20H ;置地址指针初值
MOVIE,#82H;开放CPU和T0中断
MOVR1,#00H;中断次数计数器清零
JBP3.2,$;等待/INTO变低
SETB TR0 ;启动T0
SETB TR1 ;启动T1
JNBP3.2,$
JBP3.2,$
CLR TR1
CLR TR0;关T0
MOV @R0,TL1 ;保存计数值
INCR0
MOV @R0,TH1
INT_T1:
PUSH ACC
PUSH PSW
CLR TR1
CLR TR0;关T0
INCR1
SETB TR1
SETB TR0
POP PSW
POP ACC
RETI
运行上述程序后,只要将21H、20H两单元的内容(定时/计数器中的内容)转化成十进制数,乘以机器周期,再加上65536个机器周期乘以中断次数(R1的内容),即是外部正脉冲的宽度。
5.2.2中断部分
所谓中断,是指CPU正在处理某件事情的时候,外部发生了某一事件请求CPU迅速去处理。
CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再回来继续执行被中止了的工作。
外部中断是由外部原因引起的。
本设计使用单片机的外部中断0和外部中断1,相应的中断请求信号是
和
,有两种触发方式,即电平触发方式和脉冲触发方式。
(1)首先应考虑设置中段触发方式。
定时器控制寄存器TCON与中断有关的位如下:
8F
8E
8D
8C
8B
8A
89
88
TF1
-
TF0
-
IE1
IT1
IE0
IT0
表5.1定时器控制寄存器TCON
其中IT1(IT0):
外中断请求信号方式控制位。
该位由用户设置。
当IT1(IT0)=1时,选择脉冲触发方式,负跳变有效;当IT1(IT0)=0时,选择电平触发,低电平有效。
由硬件连接可知,单稳态触发器输出单稳态脉冲的每个下降沿触发中断0,每次AD转换结束后触发中断1,则外部中断0和外部中断1均为脉冲触发方式。
在初始化程序中应使用以下指令对触发方式进行设置:
SETBIT0;外部中断0设置为边沿触发方式
SETBIT1;外部中断1设置为边沿触发方式
(2)另外要考虑中断允许
中断的允许或者禁止是由片内的中断允许寄存器IE控制的,寄存器的内容及位地址如下:
AF
AE
AD
AC
AB
AA
99
A8
EA
/
/
ES
ET1
EX1
ET0
EX0
表5.2中断允许寄存器IE
EA:
中断允许总控制位。
EA=0时,表示CPU禁止所有中断,即所有的中断请求被屏蔽;EA=1时,表示开放CPU中断,但是每个中断源的中断请求是允许还是禁止,要由各自的允许位控制。
EX0(EX1)位:
外部中断允许控制位。
EX0(EX1)=0,禁止外中断;EX0(EX1)=1,允许外中断。
在初始化程序中,应先开放中断,以等待采样结束后进入中断服务程序进行AD转换。
则EA=1,EX1=1,EX0=1,IE=82H。
初始化程序中,使用MOVIE,#82H,开放中断。
5.2.3数码显示部分
Disolay:
mova,r0
movP2,a ;把计数值在LED上显示
sjmpdisplay
play:
movr1,#dat ;p2口接数码管显示
mova,@r1
movdptr,#tab1 ;查段码表1
movca,@a+dptr
movp2,a ;数据送p2口
acalldelay ;调用延时
incr1
mov a,@r1
movdptr,#tab2 ;查段码表2
movca,@a+dptr
movp2,a ;数据送p2口
acalldelay ;调用延时
incr1
mov a,@r1
movdptr,#tab3 ;查段码表3
movca,@a+dptr
movp2,a
acalldelay
incr1
mov a,@r1
movdptr,#tab4 ;查段码表4
movca,@a+dptr
movp2,a
acalldelay
ajmpplay
delay:
movr7,#1
del0:
movr6,#2
del1:
movr5,#10
djnzr5,$
djnzr6,del1
djnzr7,del0
ret
tab1:
db0e0h,0e1h,0e2h,0e3h,0e4h,0e5h,0e6h,0e7h,0e8h,0e9h;最低位数码管段码
tab2:
db0d0h,0d1h,0d2h,0d3h,0d4h,0d5h,0d6h,0d7h,0d8h,0d9h
tab3:
db0b0h,0b1h,0b2h,0b3h,0b4h,0b5h,0b6h,0b7h,0b8h,0b9h
tab4:
db70h,71h,72h,73h,74h,75h,76h,77h,78h,79h,0ffh ;最高位数码管段码
6安装与调试
1.硬件连线:
单片机外部中断1接信号发生器来引入所测量的外部脉冲,外部中断0接负脉冲发生器作为单片机的中断控制,显示部分按照试验箱上实验十六(八段数码管的显示)的连线连接。
2.在调试过程中遇到的问题及调试解决方法:
(1)程序开始调试时总报错,程序无法运行调试。
检查了保存情况,程序保存后缀名正确。
仔细排查后发现,在输入程序时为了输入注释汉字,大部分情况下中英文输入法混淆切换使用,使得程序中逗号分隔符有些是在中文输入状态下输入的,导致程序无法运行。
修正方法:
将程序中所有逗号在英文输入状态下重新输入。
再次运行成功,进入正常调试。
(2)在同一个外部正脉冲的情况下,多次测量却得到不同的数值。
思考后
认为问题应该出在计数算时间部分,检查推敲计数算时间程序段,原来是计数开始时刻选取的不对,原程序为
SETBTR1
JBP3.3,$
JNBP3.3,$
这样的话,如果相应外部中断的时候外部信号正好是高电平,则定时器开始计数,得到了不正确的计数结果,由于每次加外部中断的时刻不同,导致了同一个信号测得多个数值。
修改办法:
将程序调整为
JBP3.3,$
SETBTR1
JNBP3.3,$
如此,当外部信号是高电平时等待,低电平来时等待,再次是高电平时才开始计数,低电平时结束计数,得到了正确的计数结果。
3、数码管高位起第二位总是显示数字7而不是应有的结果。
此处错误较为隐秘,先是检查了硬件试验箱是否损坏,调用了实验数码管显示程序,数码管可以正常显示,说明是程序错误;检查了程序整个的逻辑,没问题;应该是显示程序段的错误,但多次仔细检查了数值转化及显示程序段并未发现错误;排除了是逻辑错误,应该是非逻辑错误,最后查找相关资料并向老师请教,才明白错误是字型码表放错了位置,误把其放在了将数值转换成非压缩的BCD码的程序段前面,字型码表的第一个3FH可能是某条指令的机器码,当程序执行到这时,发生了错误的指令执行,导致了错误的显示。
修正方法:
将字型码表调整到整个程序段的末尾或主程序开始前。
再次运行得出了正确的结果。
7课程设计体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
回顾起此次课程设计,至今我仍感慨颇多,老师详细讲解我已对单片机的各个指令功能,寻址方式,程序设计方法有了初步了解。
但毕竟课本上的只是理论。
平时学习时我们都学到了各子模块的程序,到真正将他们综合起来去控制实验箱还是第一次。
首先在编写程序时我们就遇到了很大的困难,编写程序需要有一个冷静的头脑,心浮气躁是不行的。
遇到困难时更是要心平气和,细致思考。
从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,我在做设计的过程中发现有很多东西,也知道拉自己的不足之处,知道自己对以前所学过的知识理解得不够深刻,掌握得不够牢固。
最后我们在老师细心指导下顺利完成了。
8参考文献
1.梅丽凤,王艳秋,汪毓铎,张军单片机原理及接口技术(修订本).北京:
清华大学出版社;北京交通大学出版社2007
2.严石,郑蓉建,徐君单片机原理及应用.淮阴工学院2009
3.朱玉红MCS—51单片机对连续脉冲宽度测量的实验自动化与仪器仪表2003第一期1001-9227(2003)01-0035-02
4.张兰群利用单片机门控位测量脉冲的宽度电脑学习2004第六期
5.康华光.电子技术基础数字部分.北京:
高等教育出版社,2000
6.李光飞等,单片机课程设计实例指导.北京:
北京航空航天大学出版社,2004