51单片机的脉宽测量_第1页
51单片机的脉宽测量_第2页
51单片机的脉宽测量_第3页
51单片机的脉宽测量_第4页
51单片机的脉宽测量_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北华航天工业学院课程设计报告(论文)设计课题:单片机技术课程设计专业班级:自动化学生姓名:张玉垒指导教师:李叶紫设计时间:2010 年 4 月 25北华航天工业学院电子工程系单片机技术 课程设计任务书姓名:张玉垒专业:自动化班级:B07221指导教师:李叶紫职称:副教授课程设计题目:外部输入正脉宽度测量已知技术参数和设计要求:技术指标:1. 测量范围:4ms- 512ms2 测量信号:方波3.测量信号电压:35V4 .显示位数:6位基本要求:1 .完成单片机外部输入正脉宽度测量的综合设计2. 编程实现题目要求的基本功能,程序运行通过3. 撰写课程实践报告(设计思路、实现方法、硬件资源分配、程序

2、流程图、 运行结果分析等)所需仪器设备:伟福Lab6000综合实验/仿真系统一台套、微机一台成果验收形式:程序上机运行参考文献:1. 胡辉、李叶紫,单片机原理与应用,中国水利水电出版社,20072. Lab6000综合实验/仿真系统说明书时间 安排(1) 第八周:选题、方案设计(2) 第1次上机调试程序(3) 第2次上机课题验收(4) 第九周:上交实践报告指导教师:李叶紫教研室主任:李叶紫2010年4月25日一概 述 3二方案设计与论证 3三单元电路设计与参数计算 41. 总程序框图 42. 单元电路设计 53. 单元程序模块 74. 参数计算 9四总原理图及硬件资源分配 10五安装与调试11

3、六性能测试与分析 12七结论 12八心得体会 12九参考文献 13一、概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动 传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中, 单片 机往往是作为一个核心部件来使用, 仅单片机方面知识是不够的,还应根据具体 硬件结构,以及针对具体应用对象特点的软件结合,加以完善。工程上常需要对各种机构工作的时间特性进行分析测量, 如图1给出的这种 时间特性示意图,其中t表示时间脉冲宽度,T表示一个工作循环周期。工程实 际中,影响时间特性的因素很多,因而工程中常需测量这种脉冲序列正脉冲或负 脉冲的宽度。图1脉冲波形本系统采用单片机

4、AT89C51为中心器件来设计脉冲宽度测量器,系统实用 性强、操作简单、扩展性强。在现有的单片机仿真机系统上掌握相关软硬件设计 与调试知识,根据所选择题目,焊接好硬件电路,正确进行元器件的测试与调试, 并在计算机上编写汇编程序调试运行,并实现参考选题中要求的设计。二、方案设计与论证1. 设定一个开关控制测量开始。按动开关接外部中断0,响应1次外部中 断。在中断程序中测量脉宽。2. 将脉冲信号从P3.3脚引入。将T1设为定时器方式工作。并工作在门控 方式。初值TH1、TL1设为零。在待测脉冲高电平期间,T1对内部周期脉冲进行计数。在待测脉冲高电平 结束时,其下降沿向P3.3发中断,在外中断1的中

5、断服务程序中,读取TH1、 TL1的计数值,该值就是待测脉冲的脉宽。随后清零TH1和TL1,以便下一脉宽的测量。3由于T1方式1最大定时时间为131ms因此当测脉冲宽度超过131ms时, 需要进行进位处理把计4为防止在外部输入正脉冲当中启动计数而产生错误测量,要在测到是低 电平之后的下一个高电平才开始启动定时器, 再次测到低电平时停止计数, 数结果处理后送数码管显示。三、单元电路设计与参数计算1.总程序框图2 单元电路设计本设计由单片机、测量控制电路、用的电路形式及主要器件确定如下:(1)单片机部分选用89C51作为主机,同时要设计*11 ” 11 t*Wt4键盘及显示电路几个组成部分,各部分

6、采89C51单片机的晶振电路和复位电路启动计数辭】单片机部分框图VCCVCC sC ap FqH皿两n vcc口丄XC52 7 pF10 TTH T I11Pl .VCCPl .1PO.OPl 2P0.1Pl .3P0.2Pl 4P0.3Pl .5(MOSI)P0.4Pl .S(M1SQ JPO,5Pl .7(3 CK)P0.6RS TP0.7P3 .0/RXDEAVppP3.1/TKD ALE/PROGP3.2/INTOPS EMP3 .3/IN T1P2.7P3.JI/T0P2.fiP3 .5/T1P2.5 IP3 .6/WRP2.4P 3 ,7/R.DP2.3 |XTAL2P2.2ZTA

7、L1P2.1GHDP2.0U 1AT89C512K单片机部分原理图(2)测量电路部分直接利用单片机内部的定时/计数器实现频率的测量。(3)显示部分具体电路显示部分框图数据总线段码输出(Ox004H)位选通信号(Ox002H)显示部分原理图START: MOV SP ,#50HMOVTMOD ,#90H:设置定时器1的工作方式为1, GEAE置 1MOVTH1 ,#00HMOVTL1 ,#00H ;定时器时间初值置零MOVIE ,#81H ;开外部中断 0CALLLED ;调显示LJMPSTARTEND(2)中断服务子程序( 启动定时功能)3单元程序模块(1)主程序关中断INT_0: CLR E

8、X0MOV DATC ,#00HMOV TH1 ,#00HMOV TL1 ,#00HSETB TR1 ;JNB P3.3,$ ;CH0: JNB TF1 ,CH1INC DATCCLR TF1MOV TH1 ,#00HMOV TL1 ,#00HSETB TR1 ;CH1: JB P3.3 ,CH0CLR TR1 ;MOV A ,TL1MOV DATL ,AMOV A ,TH1MOV DATH ,A启动定时器 1,但不计数等待正脉冲 计数没溢出,跳转装入初值启动定时器判断正脉冲是否结束停止计数3)显示子程序LEDMAP:DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh,

9、07h DB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hMOV A ,#0 MOVX DPTR,AMOV A ,R0MOV DPTR ,#8004H MOVX DPTR,AMOV DPTR ,#8002HMOV A ,R2 MOVX DPTR,AMOV R6 ,#1MOV R7 ,#0L: DJNZ R7 ,LDJNZ R6 ,LMOV A ,R2RR AMOV R2, AINC R0DJNZ R1 ,LoopRET关所有八段管显示一位八段管显示下一位LED: MOV R0 ,#LEDBufMOV R1 ,#6 ;共 6 个八段管MOV R2 ,#001000

10、00b ;从左边开始显示Loop: MOV DPTR ,#8002H4参数计算计算脉宽:d=1/f (输入信号频率) *2测量脉宽:d=计数值x TC (机器周期)(卩s), d (卩s)- 1000- d (ms)四、总原理图及硬件资源分配1总原理图rJ_B rjh JL BJL- r4L - V50 nHU 0330*874LS07AAAAAApO. O-pO. 789c51P3.3 P3.2 XTAL1 XTAL22 硬件资源分配表存储单兀、寄存器用途备注30H:存放计数低8位31H存放计数咼8位32H存放计数进位位33H-38H显示缓冲区50H堆栈区R0存放显示缓冲区指针R1:存放用于

11、显示的数码管数R2点亮数码管的位选量R3暂存处理计数压缩BCD码形式的小数后百分位、 千分位R4暂存处理计数压缩BCD码形式的个位、小数后十 分位R5暂存处理计数压缩BCD码形式的百位、十位R6:用于延时程序R7用于延时程序五、安装与调试1硬件连线:单片机外部中断 1 接信号发生器来引入所测量的外部脉冲,外部中断 0 接负 脉冲发生器作为单片机的中断控制, 显示部分按照试验箱上实验十六 (八段数码 管的显示)的连线连接。2 在调试过程中遇到的问题及调试解决方法: (1)程序开始调试时总报错,程序无法运行调试。检查了保存情况,程序 保存后缀名正确。 仔细排查后发现, 在输入程序时为了输入注释汉字

12、, 大部分情 况下中英文输入法混淆切换使用, 使得程序中逗号分隔符有些是在中文输入状态 下输入的,导致程序无法运行。 修正方法: 将程序中所有逗号在英文输入状态下 重新输入。再次运行成功,进入正常调试。(2)在同一个外部正脉冲的情况下,多次测量却得到不同的数值。思考后 认为问题应该出在计数算时间部分, 检查推敲计数算时间程序段, 原来是计数开 始时刻选取的不对,原程序为SETB TR1JB P3.3 ,$JNB P3.3 ,$这样的话,如果相应外部中断的时候外部信号正好是高电平, 则定时器开始 计数,得到了不正确的计数结果, 由于每次加外部中断的时刻不同, 导致了同一 个信号测得多个数值。修改

13、办法:将程序调整为JB P3.3 ,$SETB TR1JNB P3.3 ,$如此,当外部信号是高电平时等待, 低电平来时等待, 再次是高电平时才开 始计数,低电平时结束计数,得到了正确的计数结果。3、数码管高位起第二位总是显示数字 7 而不是应有的结果。 此处错误较为 隐秘,先是检查了硬件试验箱是否损坏, 调用了实验数码管显示程序, 数码管可 以正常显示,说明是程序错误;检查了程序整个的逻辑,没问题;应该是显示程 序段的错误, 但多次仔细检查了数值转化及显示程序段并未发现错误; 排除了是逻辑错误, 应该是非逻辑错误, 最后查找相关资料并向老师请教, 才明白错误是 字型码表放错了位置,误把其放在

14、了将数值转换成非压缩的BCD码的程序段前面,字型码表的第一个3FH可能是某条指令的机器码,当程序执行到这时,发生 了错误的指令执行, 导致了错误的显示。 修正方法: 将字型码表调整到整个程序 段的末尾或主程序开始前。再次运行得出了正确的结果。六、性能测试与分析完成调试后运行程序,在单片机外部中断 1 加外部脉冲信号,用单片机外 部中断 0 控制中断,数码管能准确显示外部方波信号正脉冲宽度, 根据输入脉冲 信号的频率,计算输入脉冲的宽度与测量结果对照,是否符合设计要求。七、结论本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性 强、操作简单、扩展性强。该系统测量 4ms-

15、512ms的方波,共显示6位数,精 确到0.001ms。通过该系统的测量结果和理论值的对比,系统误差小,能很好的 实现系统要求。八、设计总结经过一个学期的单片机的学习, 我有机会又学到了一种新的机器语言。 经过 老师详细讲解我已对单片机的各个指令功能, 寻址方式, 程序设计方法有了初步 了解。但毕竟课本上的只是理论。 这次课设我分到的任务是外部输入正脉冲宽度 的测量,科设的题目综合性很强,用到了外部中断 0,定时器 T1 的方式 1,数制 转换,数码管显示等。 平时学习时我们都学到了各子模块的程序, 到真正将他们 综合起来去控制实验箱还是第一次。首先在编写程序时我们就遇到了很大的困 难, 编写

16、程序需要有一个冷静的头脑,心浮气躁是不行的。遇到困难时更是要 心平气和, 细致思考。 幸运的是在我们小组激烈讨论, 老师细心指导下我们顺利 完成了课设。最终的程序由主程序,中断服务子程序 ( 启动定时功能 ),显示子 程序,计数值*机器周期,数制转换,压缩 BCD码转换成非压缩BCD码六个模块 组成。在对程序的宏观理解基础上,细微处理决定成败。课设让我对单片机软件与硬件结合有了一定的了解, 也激发了我学习这门课 的热情,同时我也认识到现在知道的单片机知识远远不够, 要想要将所学运用到 实际工作中还需刻苦努力钻研, 大量实践。 在以后的学习中我一定注意这方面的 练习。本系统是以单片机 89C51 芯片为核心部件,通过 89C51 芯片内部软件计数 来测量脉冲宽度的功能。 此次在软件上是花费时间最多的, 我们上网找资料, 上 图书馆,尽可能的了解有关于脉冲宽度测量这方面的知识。通过这次课程设计, 使我得到了一次用专业知识、 专业技能分析和解决问题全面系统的锻炼。 使我在 单片机的基本原理、单片机应用系统结合过程, 以及在常用编程设计思路技巧 (特 别是汇编语言 C51 语言)的掌握方面都能向前迈了一大步。九、参考文献1胡辉、李叶紫,单片机原理与应用,中国水利水电出版社

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论