单片机脉冲信号测量Word下载.docx

上传人:b****6 文档编号:22193987 上传时间:2023-02-03 格式:DOCX 页数:22 大小:146.40KB
下载 相关 举报
单片机脉冲信号测量Word下载.docx_第1页
第1页 / 共22页
单片机脉冲信号测量Word下载.docx_第2页
第2页 / 共22页
单片机脉冲信号测量Word下载.docx_第3页
第3页 / 共22页
单片机脉冲信号测量Word下载.docx_第4页
第4页 / 共22页
单片机脉冲信号测量Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机脉冲信号测量Word下载.docx

《单片机脉冲信号测量Word下载.docx》由会员分享,可在线阅读,更多相关《单片机脉冲信号测量Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

单片机脉冲信号测量Word下载.docx

测量按键

图2。

1系统框图

图中给出了整个系统设计的系统框图,系统主要由三个主要部分组成,单片机和晶振电路设计,显示电路设计,复位电路设计.

第三章硬件设计任务

AT89C51基本工作电路设计:

使单片机正常工作;

时钟电路:

为单片机提供时钟信号;

复位电路:

为单片机提供高电平复位信号;

显示电路:

显示当前测量脉冲宽度;

按键电路:

开始测量脉冲信号;

3。

1基于AT89C51脉冲信号测量系统硬件设计详细分析

1。

1AT89C51单片机工作电路

本设计的核心是单片机电路,考虑到需要一个中断输入,存储容量、外部接口对单片机端口的需要以及兼顾到节约成本的原则,选用了常用的AT89C51单片机。

AT89C51是低功耗、高性能、经济的8位CMOS微处理器,工作频率为0-24MHz,内置4K字节可编程只读闪存,128x8位的内部RAM,16位可编程I/O总线。

它采用Atmel公司的非易储器制造技术,与MCS51的指令设置和芯片引脚可兼容.AT89C51可以按照常规方法进行编程,也可以在线编程.其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C51工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。

其最简单的工作原理图如下图.

图3。

1AT89C51单片机工作电路

3.1。

2基于AT89C51脉冲信号测量系统复位电路

MCS—51的复位是由外部的复位电路来实现的。

MCS—51单片机片内复位,复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

复位电路通常采用上电自动复位和按钮复位两种方式。

上电自动复位是通过外部复位电路的电容充电来实现的。

只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。

除了上电复位外,有时还需要按键手动复位。

按键手动复位有电平方式和脉冲方式两种。

其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。

按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。

2上电复位电路

上图兼有上电复位和按钮复位的电路。

在单片机设计中,若有外部扩展的I/O接口电路需初始复位,如果它们的复位端和MCS-51单片机的复位端相连,复位电路中的R、C参数要受到影响,这时复位电路中的R、C参数要统一考虑以保证可靠的复位。

如果单片机MCS-51单片机与外围I/O接口电路的复位电路和复位时间不完全一致,使单片机初始化程序不能正常运行,外围I/O接口电路的复位也可以不和MCS-51单片机复位端相连,仅采用独立的上电复位电路.一般来说,单片机的复位速度比外围I/O快些。

若RC上电复位电路接MCS-51单片机和外围电路复位端,则能使系统可靠地同步复位。

为保证系统可靠复位,在初始化程序中应用到一定的复位延迟时间.

复位电路软件程序跑飞或者硬件发生错误的时候产生一个复位信号,控制MCS—51单片机从0000H单元开始执行程序,重新执行软件程序。

此电路的输出

端RESET接在单片机的复位引脚。

3基于AT89C51脉冲信号测量系统时钟电路

时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。

时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性.常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式.

内部时钟方式:

内部时钟方式电路图如下图所示。

图3.3内部时钟电路

MCS—51单片机内部有一个用与构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器电路。

电路中的电容C1和C2典型值通常选择为33PF左右。

对外接电容的值虽然没有严格的要求,但是电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。

晶体的振荡频率的范围通常是在1.2MHz-12MHz之间。

晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。

为了提高温度稳定性,应采用温度稳定性能好的NPO高频电容.MCS-51单片机常选择振荡频率12MHz的石英晶体。

外部时钟方式:

外部时钟方式电路图如下图所示。

4外部时钟电路

外部时钟方式是使用外部振荡脉冲信号,常用于多片MCS-51单片机同时工作,以便于同步.对外部脉冲信号只要求高电平的持续时间大于20us,一般为低于12MHz的方波。

外部的时钟源直接接到XTAL2端,直接输入到片内的时钟发生器上。

由于XTAL2的逻辑电平不是TTL的,因此要外接一个4。

7k~10k的上拉电阻。

这次的设计采用MCS—51的内部时钟方式。

因为外部时钟方式是用外部振荡脉冲信号,用于多片MCS-51单片机同时工作。

在这次设计中只用一个MCS—51单片机,不需要振荡脉冲信号.

4基于AT89C51脉冲信号测量系统按键电路

按键是实现人机对话的比较直观的接口,可以通过按键实现人们想让单片机做的不同的工作.键盘是一组按键的集合,键是一种常开型开关,平时按键的两个触点处于断开状态,按下键是它们闭合。

键盘分编码键盘和非编码键盘,案件的识别由专用的硬件译码实现,并能产生键编号或键值的称为编码键盘,而缺少这种键盘编码电路要靠自编软件识别的称为非编码键盘。

在单片机组成的电路系统及智能化仪器中,用的更多的是非编码键盘。

下图就是一种比较典型的按键电路,在按键没有按下的时候,输出的是高电平,当按键按下去的时候,输出的低电平。

图3.5按键电路

5基于AT89C51脉冲信号测量系统显示电路

本设计采用6位LED数码管动态显示测量值。

动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为动态扫描。

各位数码管的段选线相应并联在一起,由P0端口送字形代码,各位LED显示器的位选线(COM端)由P1端口控制。

图中,数码管采用共阴极LED,P1端口输出经过6路反相驱动器75452后接至数码管的COM端。

当位选控制口P1的某位输出:

“1"

时,75452反相器驱动相应的LED位发光。

6LED显示电路

显示缓冲区DISBUF是片内RAM的一个区域,占用片内RAM的70H~75H单元,它的作用是存放要显示的字符,其长度与LED的位数相同。

显示程序的任务是吧显示缓冲区中待显示的字符送往LED显示器显示。

在进行动态扫描显示时,从DISBUF中依次取出待显示的字符,采用查表的方法得到去对应的字形代码,逐个点亮各位数码管每位显示1ms左右,即可是各位数码管显示要显示的字符。

下图给出了动态扫描显示子程序DISPLAY的流程图。

R0指向DISBUF首地址

DISPLAY

R3=01,选右起第一个LED

瞬时关显示器

从DISBUF中取出字符

查表取对应的字形码

输出字形码

点亮当前LED显示位

是第六位?

RET

下一个字符

图3.7显示子程序DISPLAY的流程图

主程序首先设置定时器T0为方式1,门控信号GATE=1,在被测脉冲信号INT0的上升启动T0计数码,被测脉冲信号下降沿停止T0计数,脉宽测量过程见下图.定时器T0以方式1对内部脉冲计数,16位计数值存放在40H(高字节)和41H单元(低字节),调用WDISBUF子程序将该16位计数值换成6位非压缩型BCD码放入显示缓冲区DISBUF中。

主程序流程图如下。

被测脉冲信号

INT0

为高则等待

为低时启动T0

上升沿开始计数

下降沿停止T0计数

脉宽测量过程图

初始化

主程序

启动T0

输入为高?

开始计数

输入为低?

停止T0计数

显示测量值

Y

N

8主程序流程图

第四章软件结论

通过这次学习,我把平时学习的那些理论知识应用到这次的实践之中,锻炼了我的实践能力。

在不懈的努力下,我顺利并按时地完成《基于单片机的脉冲信号测试仪设计》这个课程设计.设计过程中,与老师的短暂交流让我毕生受益匪浅,老师丰富的专业知识、以及严谨细致、一丝不苟的作风,将成为我日后生活中的典范,学习中的榜样,在此谨对老师致以衷心的感谢!

在设计过程中,我将基础理论知识融于实践认真完成每个环节、这不仅很好地巩固了我的理论知识而且也锻炼了我的动手能力。

同时也提高了我独立思考问题能力。

本次设计从选题、编程设计到完成整个过程都倾注了老师的心血,我向老师表示衷心的感谢和诚挚的敬意!

下图是单片机脉冲信号测量程序效果图:

图4.1单片机脉冲信号测量程序效果图

第五章参考文献

[1]李华单片机原理及应用,兰州大学出版社,2001;

[2]兰吉昌51单片机应用设计百例,化学工业出版社,2008;

[3]冯育长单片机系统设计与实例分析,西安电子科技大学出版社,2007;

[4]李学礼基于Proteuse的8051单片机实例教程,电子工业出版社,2008;

[5]魏立峰王宝兴,单片机原理与应用技术,北京大学出版社,2006;

第六章附录

6.1脉冲信号宽度测量设计程序

ORG0000H

LJMPSTART

ORG0040H

COUNTEQU40H;

COUNT,COUNT+1单元存放测量值

START:

MOVSP,#40H

;

MOVTMOD,#00001001B;

T0方式1,GATE=1

AGAIN:

MOVTH0,#00H;

计数初值=0000H

MOVTL0,#00H

WAIT0:

JBP3.2,WAIT0;

INT0输入为高则开始等待

SETBTR0;

INT0为低时启动T0

WAIT1:

JNBP3。

2,WAIT1;

INT0输入为高则开始计数

WAIT2:

JBP3。

2,WAIT2;

等待INT0下降沿

CLRTR0;

下降沿后停止T0计数

MOVA,TH0;

取计数值高字节

MOVCOUNT,A

MOVA,TL0;

取计数值低字节

MOVCOUNT+1,A

LCALLWDISBUF;

写DISBUF

LCALLDISPLAY;

显示测量值

LCALLDISPLAY

LJMPAGAIN

;

写DISBUF子程序、

子程序名称:

WDISBUF

子程序功能:

将一个双字节二进制数转换成6位非压缩型BCD码,写入显示缓冲区DISBUF中.

入口参数:

内部RAM的40H(高字节)和41H(低字节)单元中是待转换的数据

出口参数:

转换结果放入DISBUF内部RAM70H~75H单元中,70H单元中为最低位。

HEXEQU40H

DISBUFEQU70H

WDISBUF:

CLRA;

压缩BCD码初始化

MOVR3,A;

R3R4R5暂存压缩BCD码

MOVR4,A

MOVR5,A

MOVR2,#16

HB1:

MOVR6,HEX;

数据高字节暂存于R6中

MOVR7,HEX+1;

数据低字节暂存于R7中

HB2:

MOVA,R7;

从高端移出待转换的一位到CY中

RLCA

MOVR7,A

MOVA,R6

MOVR6,A

MOVA,R5;

BCD码带进位自身相加,相当于乘2

ADDCA,R5

DAA;

十进制调整

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

MOVR3,A;

双字节十六进制数的万位数不超过6,不用调整

DJNZR2,HB1;

处理完十六位

MOVR0,DISBUF+5;

转换成分离BCD码存于70H~75H单元中

MOVA,#00H

MOV@R0,A

MOVA,R3:

R3不超过6,不用转换

DECR0

MOV@R0,A

MOVA,R4

SWAPA

ANLA,#0FH

MOVA,R4

SWAPA

ANLA,#0FH

MOV@R0,A

MOVA,R4

ANLA,#0FH

MOV@R0,A

MOVA,R5

RET

动态扫描显示子程序

子程序名:

DISPLAY

子程序功能:

从DISBUF中依次取出待显示的字符,逐个点亮各位数码管

入口参数:

DISBUF(内部RAM70H~75H单元中,70H单元中伟最低位)中是待显示的字符

出口参数:

DISPLAY:

MOVR0,#70H;

R0指向DISBUF首地址

MOVR3,#01H;

右起第一个LED的选择字

NEXT:

MOVA,#00H;

取位选控制字为全灭

MOVP1,A;

瞬时关显示器

MOVA,@R0;

从DISBUF中取出字符

MOVDPTR,#DSEG;

取段码表首地址

MOVCA,@A+DPTR;

查表,取对应的字形码

MOVP0,A;

输出字形码

MOVA,R3;

取当前位选控制字

MOVP1,A;

点亮当前LED显示位

LCALLDELAY;

DELAY延时1ms

INCR0;

R0N指向下一个字符

JBACC.5,EXIT;

诺当前显示位是第六位则结束

RLA;

下一个LED的选择字

MOVR3,A

SJMPNEXT

EXIT:

RET;

返回

段码表0~9,A~F,空白,P

DSEG:

  DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

DB6FH,77H,7CH,39H,5EH,79H,71H,00H,73H

DELAY:

MOVR7,#02H;

延时1ms的子程序

DEL1:

MOVR6,#0FFH

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

6。

2脉冲信号频率测量设计程序

频率测量实际上就是在1s内对脉冲个数进行计数,计数值就是信号频率。

利用已有的电路可以实现脉冲信号的频率测量。

令定时器T0工作在方式1,得到50ms的定时间隔,在进行软件计数20次,形成一个1s的测量闸门信号,在测量闸门信号期间响应INT0中断,对脉冲信号加1计数来完成对输入信号的频率计数,计数值存入COUNT和COUNT+1单元,计数值通过6位动态数码管显示出来。

程序如下:

频率计程序清单

ORG0000H

LJMPSTART

ORG0003H

LJMPPINT0;

INT0中断入口

ORG000BH;

T0中断入口

LJMPT0INT

ORG0040H

COUNTEQU40H;

定义计数单元

COUNT,COUNT+1对脉冲个数计数,高位在前

COUNT+2为秒计数单元

START;

MOVSP,#40H;

主程序

AGAIN;

MOVCOUNT,#00H;

计数单元清0

MOVCOUNT+1,#00H

MOVCOUNT+2,#00H

MOVTMOD,#01H;

初始化T0

MOVTH0,#3CH;

计数初值,50ms的定时间隔

MOVTL0,#0B0H

SETBTR0;

启动T0

SETBET0;

允许T0中断

SETBEX0

SETBIT0;

INT0为负沿触发方式

SETBEA

WAIT:

JNBF0,WAIT;

不到1s则等待

将双字节计数值转换成6位非压缩型BCD码

LCALLDISPLAY

写WDISBUF子程序

WDISBUF:

CLRA;

MOVR5,A

MOVR2,#16

HB1:

MOVR6,HEX;

MOVA,R7;

MOVR7,A

MOVA,R6

MOVR6,A

BCD码带进位自身相加,相当于乘2

ADDCA,R4

MOVR4,A

MOVA,R3

MOVR3,A;

DJNZR2,HB1;

MOVA,R3:

MOV@R0,A

ANLA,#0FH

ANLA,#0FH

MOVA,R4

ANLA,#0FH

MOV@R0,A

ANLA,#0FH

MOV@R0,A

DISPLAY显示子程序

DISPLAY:

MOVR0,#70H;

MOVA,#00H;

MOVP1,A;

MOVA,@R0;

MOVDPTR,#DSEG;

MOVCA,@A+DPTR;

查表,取对应的字形码

MOVP0,A;

LCALLDELAY;

JBACC.5,EXIT;

MOVR3,A

EXIT:

定时器T0中断服务程序

T01NT:

PUSHA

MOVTH0,#3CH;

再次启动计数器

MOVTL0,#0B0H

INCCOUNT+2;

秒计数单元加1

MOVA,COUNT+2

CLRC

SUBBA,#20

JCEXIT

SETBF0;

闸门时间到

CLREA;

关中断

POPA

RETI

INT0中断服务程序

PINT0:

MOVA,COUNT+1

ADDA,#01H;

计数值+1

MOVA,COUNT

ADDCA,#00H;

高字节

MOVCOUNT,A

POPA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1