51单片机的脉宽测量要点.docx

上传人:b****4 文档编号:3483208 上传时间:2022-11-23 格式:DOCX 页数:12 大小:308.43KB
下载 相关 举报
51单片机的脉宽测量要点.docx_第1页
第1页 / 共12页
51单片机的脉宽测量要点.docx_第2页
第2页 / 共12页
51单片机的脉宽测量要点.docx_第3页
第3页 / 共12页
51单片机的脉宽测量要点.docx_第4页
第4页 / 共12页
51单片机的脉宽测量要点.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机的脉宽测量要点.docx

《51单片机的脉宽测量要点.docx》由会员分享,可在线阅读,更多相关《51单片机的脉宽测量要点.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机的脉宽测量要点.docx

51单片机的脉宽测量要点

北华航天工业学院

课程设计报告(论文)

 

设计课题:

单片机技术课程设计

专业班级:

自动化

学生姓名:

张玉垒

指导教师:

李叶紫

设计时间:

2010年4月25日

北华航天工业学院电子工程系

单片机技术课程设计任务书

姓名:

张玉垒

专业:

自动化

班级:

B07221

指导教师:

李叶紫

职称:

副教授

课程设计题目:

外部输入正脉宽度测量

已知技术参数和设计要求:

技术指标:

1.测量范围:

4ms~512ms

2.测量信号:

方波

3.测量信号电压:

3~5V

4.显示位数:

6位

基本要求:

1.完成单片机外部输入正脉宽度测量的综合设计

2.编程实现题目要求的基本功能,程序运行通过

3.撰写课程实践报告(设计思路、实现方法、硬件资源分配、程序流程图、运行结果分析等)

所需仪器设备:

伟福Lab6000综合实验/仿真系统一台套、微机一台

成果验收形式:

程序上机运行

参考文献:

1.胡辉、李叶紫,单片机原理与应用,中国水利水电出版社,2007

2.Lab6000综合实验/仿真系统说明书

时间

安排

(1)第八周:

选题、方案设计

(2)第1次上机调试程序

(3)第2次上机课题验收

(4)第九周:

上交实践报告

指导教师:

李叶紫教研室主任:

李叶紫

2010年4月25日

目录

一概述………………………………………………………………3

二方案设计与论证……………………………………………………………3

三单元电路设计与参数计算…………………………………………………4

1.总程序框图……………………………………………………………4

2.单元电路设计………………………………………………………5

3.单元程序模块………………………………………………………7

4.参数计算……………………………………………………………9 

四总原理图及硬件资源分配………………………………………………10

五安装与调试………………………………………………………………11

六性能测试与分析…………………………………………………………12

七结论………………………………………………………………………12

八心得体会…………………………………………………………………12

九参考文献…………………………………………………………………13

 

一、概述

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

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

工程上常需要对各种机构工作的时间特性进行分析测量,如图1给出的这种时间特性示意图,其中t表示时间脉冲宽度,T表示一个工作循环周期。

工程实际中,影响时间特性的因素很多,因而工程中常需测量这种脉冲序列正脉冲或负脉冲的宽度。

图1脉冲波形

本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。

在现有的单片机仿真机系统上掌握相关软硬件设计与调试知识,根据所选择题目,焊接好硬件电路,正确进行元器件的测试与调试,并在计算机上编写汇编程序调试运行,并实现参考选题中要求的设计。

二、方案设计与论证

1.设定一个开关控制测量开始。

按动开关接外部中断0,响应1次外部中断。

在中断程序中测量脉宽。

2.将脉冲信号从P3.3脚引入。

将T1设为定时器方式工作。

并工作在门控方式。

初值TH1、TL1设为零。

在待测脉冲高电平期间,T1对内部周期脉冲进行计数。

在待测脉冲高电平结束时,其下降沿向P3.3发中断,在外中断1的中断服务程序中,读取TH1、TL1的计数值,该值就是待测脉冲的脉宽。

随后清零TH1和TL1,以便下一脉宽的测量。

3.由于T1方式1最大定时时间为131ms,因此当测脉冲宽度超过131ms时,需要进行进位处理。

4.为防止在外部输入正脉冲当中启动计数而产生错误测量,要在测到是低电平之后的下一个高电平才开始启动定时器,再次测到低电平时停止计数,把计数结果处理后送数码管显示。

三、单元电路设计与参数计算

1.总程序框图

2.单元电路设计

本设计由单片机、测量控制电路、键盘及显示电路几个组成部分,各部分采用的电路形式及主要器件确定如下:

(1)单片机部分

选用89C51作为主机,同时要设计89C51单片机的晶振电路和复位电路。

单片机部分框图

单片机部分原理图

(2)测量电路部分

直接利用单片机内部的定时/计数器实现频率的测量。

测量电路框图

(3)显示部分具体电路

显示部分框图

显示部分原理图

3.单元程序模块

(1)主程序

START:

MOVSP,#50H

MOVTMOD,#90H;设置定时器1的工作方式为1,GEAE置1

MOVTH1,#00H

MOVTL1,#00H;定时器时间初值置零

MOVIE,#81H;开外部中断0

CALLLED;调显示

LJMPSTART

END

(2)中断服务子程序(启动定时功能)

INT_0:

CLREX0;关中断

MOVDATC,#00H

MOVTH1,#00H

MOVTL1,#00H

SETBTR1;启动定时器1,但不计数

JNBP3.3,$;等待正脉冲

CH0:

JNBTF1,CH1;计数没溢出,跳转

INCDATC

CLRTF1

MOVTH1,#00H;装入初值

MOVTL1,#00H

SETBTR1;启动定时器

CH1:

JBP3.3,CH0;判断正脉冲是否结束

CLRTR1;停止计数

MOVA,TL1

MOVDATL,A

MOVA,TH1

MOVDATH,A

(3)显示子程序

LEDMAP:

DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h

DB7fh,6fh,77h,7ch,39h,5eh,79h,71h

LED:

MOVR0,#LEDBuf

MOVR1,#6;共6个八段管

MOVR2,#00100000b;从左边开始显示

Loop:

MOVDPTR,#8002H

MOVA,#0

MOVX@DPTR,A;关所有八段管

MOVA,@R0

MOVDPTR,#8004H

MOVX@DPTR,A

MOVDPTR,#8002H

MOVA,R2

MOVX@DPTR,A;显示一位八段管

MOVR6,#1

MOVR7,#0

L:

DJNZR7,L

DJNZR6,L

MOVA,R2;显示下一位

RRA

MOVR2,A

INCR0

DJNZR1,Loop

RET

4.参数计算

计算脉宽:

d=1/[f(输入信号频率)*2]

测量脉宽:

d=计数值×TC(机器周期)(μs),d(μs)÷1000→d(ms)

四、总原理图及硬件资源分配

1.总原理图

2.硬件资源分配表

存储单元、寄存器

用途

备注

30H

存放计数低8位

31H

存放计数高8位

32H

存放计数进位位

33H-38H

显示缓冲区

50H

堆栈区

R0

存放显示缓冲区指针

R1

存放用于显示的数码管数

R2

点亮数码管的位选量

R3

暂存处理计数压缩BCD码形式的小数后百分位、千分位

R4

暂存处理计数压缩BCD码形式的个位、小数后十分位

R5

暂存处理计数压缩BCD码形式的百位、十位

R6

用于延时程序

R7

用于延时程序

五、安装与调试

1.硬件连线:

单片机外部中断1接信号发生器来引入所测量的外部脉冲,外部中断0接负脉冲发生器作为单片机的中断控制,显示部分按照试验箱上实验十六(八段数码管的显示)的连线连接。

2.在调试过程中遇到的问题及调试解决方法:

(1)程序开始调试时总报错,程序无法运行调试。

检查了保存情况,程序保存后缀名正确。

仔细排查后发现,在输入程序时为了输入注释汉字,大部分情况下中英文输入法混淆切换使用,使得程序中逗号分隔符有些是在中文输入状态下输入的,导致程序无法运行。

修正方法:

将程序中所有逗号在英文输入状态下重新输入。

再次运行成功,进入正常调试。

(2)在同一个外部正脉冲的情况下,多次测量却得到不同的数值。

思考后

认为问题应该出在计数算时间部分,检查推敲计数算时间程序段,原来是计数开始时刻选取的不对,原程序为

SETBTR1

JBP3.3,$

JNBP3.3,$

这样的话,如果相应外部中断的时候外部信号正好是高电平,则定时器开始计数,得到了不正确的计数结果,由于每次加外部中断的时刻不同,导致了同一个信号测得多个数值。

修改办法:

将程序调整为

JBP3.3,$

SETBTR1

JNBP3.3,$

如此,当外部信号是高电平时等待,低电平来时等待,再次是高电平时才开始计数,低电平时结束计数,得到了正确的计数结果。

3、数码管高位起第二位总是显示数字7而不是应有的结果。

此处错误较为隐秘,先是检查了硬件试验箱是否损坏,调用了实验数码管显示程序,数码管可以正常显示,说明是程序错误;检查了程序整个的逻辑,没问题;应该是显示程序段的错误,但多次仔细检查了数值转化及显示程序段并未发现错误;排除了是逻辑错误,应该是非逻辑错误,最后查找相关资料并向老师请教,才明白错误是字型码表放错了位置,误把其放在了将数值转换成非压缩的BCD码的程序段前面,字型码表的第一个3FH可能是某条指令的机器码,当程序执行到这时,发生了错误的指令执行,导致了错误的显示。

修正方法:

将字型码表调整到整个程序段的末尾或主程序开始前。

再次运行得出了正确的结果。

六、性能测试与分析

完成调试后运行程序,在单片机外部中断1加外部脉冲信号,用单片机外部中断0控制中断,数码管能准确显示外部方波信号正脉冲宽度,根据输入脉冲信号的频率,计算输入脉冲的宽度与测量结果对照,是否符合设计要求。

七、结论

本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。

该系统测量4ms~512ms的方波,共显示6位数,精确到0.001ms。

通过该系统的测量结果和理论值的对比,系统误差小,能很好的实现系统要求。

八、设计总结

经过一个学期的单片机的学习,我有机会又学到了一种新的机器语言。

经过老师详细讲解我已对单片机的各个指令功能,寻址方式,程序设计方法有了初步了解。

但毕竟课本上的只是理论。

这次课设我分到的任务是外部输入正脉冲宽度的测量,科设的题目综合性很强,用到了外部中断0,定时器T1的方式1,数制转换,数码管显示等。

平时学习时我们都学到了各子模块的程序,到真正将他们综合起来去控制实验箱还是第一次。

首先在编写程序时我们就遇到了很大的困难,编写程序需要有一个冷静的头脑,心浮气躁是不行的。

遇到困难时更是要心平气和,细致思考。

幸运的是在我们小组激烈讨论,老师细心指导下我们顺利完成了课设。

最终的程序由主程序,中断服务子程序(启动定时功能),显示子程序,计数值*机器周期,数制转换,压缩BCD码转换成非压缩BCD码六个模块组成。

在对程序的宏观理解基础上,细微处理决定成败。

课设让我对单片机软件与硬件结合有了一定的了解,也激发了我学习这门课的热情,同时我也认识到现在知道的单片机知识远远不够,要想要将所学运用到实际工作中还需刻苦努力钻研,大量实践。

在以后的学习中我一定注意这方面的练习。

本系统是以单片机89C51芯片为核心部件,通过89C51芯片内部软件计数来测量脉冲宽度的功能。

此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于脉冲宽度测量这方面的知识。

通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我在单片机的基本原理、单片机应用系统结合过程,以及在常用编程设计思路技巧(特别是汇编语言C51语言)的掌握方面都能向前迈了一大步。

九、参考文献

1.胡辉、李叶紫,单片机原理与应用,中国水利水电出版社,2007

2.Lab6000综合实验/仿真系统说明书

电子工程系单片机技术课程设计成绩评定表

专业:

自动化班级:

B07221学号:

20074022117姓名:

张玉垒

课题名称

外部输入正脉宽度测量

 

设计任务与要求

设计任务:

1.测量范围:

4ms~512ms

2.测量信号:

方波

3.测量信号电压:

3~5V

4.显示位数:

6位

基本要求:

1.完成单片机综合设计

2.编程实现题目要求的基本功能,程序运行通过。

3.撰写课程实践报告。

 

指导教师评语

 

建议成绩:

指导教师:

 

课程小组评定

 

评定成绩:

课程负责人:

年月日

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

当前位置:首页 > 表格模板 > 合同协议

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

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