51单片机的脉宽测量.docx
- 文档编号:1173155
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:13
- 大小:332.56KB
51单片机的脉宽测量.docx
《51单片机的脉宽测量.docx》由会员分享,可在线阅读,更多相关《51单片机的脉宽测量.docx(13页珍藏版)》请在冰豆网上搜索。
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:
MOV SP ,#50H
MOV TMOD ,#90H ;设置定时器1的工作方式为1,GEAE置1
MOV TH1 ,#00H
MOV TL1 ,#00H ;定时器时间初值置零
MOV IE ,#81H ;开外部中断0
CALL LED ;调显示
LJMP START
END
(2)中断服务子程序(启动定时功能)
INT_0:
CLR EX0 ;关中断
MOV DATC ,#00H
MOV TH1 ,#00H
MOV TL1 ,#00H
SETB TR1 ;启动定时器1,但不计数
JNB P3.3,$ ;等待正脉冲
CH0:
JNB TF1 ,CH1 ;计数没溢出,跳转
INC DATC
CLR TF1
MOV TH1 ,#00H ;装入初值
MOV TL1 ,#00H
SETB TR1 ;启动定时器
CH1:
JB P3.3 ,CH0 ;判断正脉冲是否结束
CLR TR1 ;停止计数
MOV A ,TL1
MOV DATL ,A
MOV A ,TH1
MOV DATH ,A
(3)显示子程序
LEDMAP:
DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h
LED:
MOV R0 ,#LEDBuf
MOV R1 ,#6 ;共6个八段管
MOV R2 ,#00100000b ;从左边开始显示
Loop:
MOV DPTR,#8002H
MOV A ,#0
MOVX @DPTR,A ;关所有八段管
MOV A ,@R0
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A ,R2
MOVX @DPTR,A ;显示一位八段管
MOV R6 ,#1
MOV R7 ,#0
L:
DJNZ R7 ,L
DJNZ R6 ,L
MOV A ,R2 ;显示下一位
RR A
MOV R2, A
INC R0
DJNZ R1 ,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)在同一个外部正脉冲的情况下,多次测量却得到不同的数值。
思考后
认为问题应该出在计数算时间部分,检查推敲计数算时间程序段,原来是计数开始时刻选取的不对,原程序为
SETB TR1
JB P3.3 ,$
JNB P3.3 ,$
这样的话,如果相应外部中断的时候外部信号正好是高电平,则定时器开始计数,得到了不正确的计数结果,由于每次加外部中断的时刻不同,导致了同一个信号测得多个数值。
修改办法:
将程序调整为
JB P3.3 ,$
SETB TR1
JNB P3.3 ,$
如此,当外部信号是高电平时等待,低电平来时等待,再次是高电平时才开始计数,低电平时结束计数,得到了正确的计数结果。
3、数码管高位起第二位总是显示数字7而不是应有的结果。
此处错误较为隐秘,先是检查了硬件试验箱是否损坏,调用了实验数码管显示程序,数码管可以正常显示,说明是程序错误;检查了程序整个的逻辑,没问题;应该是显示程序段的错误,但多次仔细检查了数值转化及显示程序段并未发现错误;排除了是逻辑错误,应该是非逻辑错误,最后查找相关资料并向老师请教,才明白错误是字型码表放错了位置,误把其放在了将数值转换成非压缩的BCD码的程序段前面,字型码表的第一个3FH可能是某条指令的机器码,当程序执行到这时,发生了错误的指令执行,导致了错误的显示。
修正方法:
将字型码表调整到整个程序段的末尾或主程序开始前。
再次运行得出了正确的结果。
六、性能测试与分析
完成调试后运行程序,在单片机外部中断1加外部脉冲信号,用单片机外部中断0控制中断,数码管能准确显示外部方波信号正脉冲宽度,根据输入脉冲信号的频率,计算输入脉冲的宽度与测量结果对照,是否符合设计要求。
七、结论
本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。
该系统测量4ms~512ms的方波,共显示6位数,精确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 测量