单片机技术课程设计外部输入正脉宽度测量_第1页
单片机技术课程设计外部输入正脉宽度测量_第2页
单片机技术课程设计外部输入正脉宽度测量_第3页
单片机技术课程设计外部输入正脉宽度测量_第4页
单片机技术课程设计外部输入正脉宽度测量_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、 10五 安装与调试 11六 性能测试与分析 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作为主机,同时要设计89c51单片机的晶振电路和复位

6、电路。单片机部分框图单片机部分原理图(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

7、 ,#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 d

8、b 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hled: 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 ,#0l: djnz r7 ,l djnz r6 ,l mov

9、 a ,r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1 ,loop ret4参数计算 计算脉宽:d=1/f(输入信号频率)*2测量脉宽:d=计数值tc(机器周期)(s),d(s)1000d(ms)四、总原理图及硬件资源分配1总原理图 2硬件资源分配表存储单元、寄存器用途备注30h存放计数低8位31h存放计数高8位32h存放计数进位位33h-38h显示缓冲区50h堆栈区r0存放显示缓冲区指针r1存放用于显示的数码管数r2点亮数码管的位选量r3暂存处理计数压缩bcd码形式的小数后百分位、千分位r4暂存处理计数压缩bcd码形式的个位、小数后十分位r5暂存处理计数压缩

10、bcd码形式的百位、十位r6用于延时程序r7用于延时程序五、安装与调试1硬件连线: 单片机外部中断1接信号发生器来引入所测量的外部脉冲,外部中断0接负脉冲发生器作为单片机的中断控制,显示部分按照试验箱上实验十六(八段数码管的显示)的连线连接。 2在调试过程中遇到的问题及调试解决方法: (1)程序开始调试时总报错,程序无法运行调试。检查了保存情况,程序保存后缀名正确。仔细排查后发现,在输入程序时为了输入注释汉字,大部分情况下中英文输入法混淆切换使用,使得程序中逗号分隔符有些是在中文输入状态下输入的,导致程序无法运行。修正方法:将程序中所有逗号在英文输入状态下重新输入。再次运行成功,进入正常调试。

11、(2)在同一个外部正脉冲的情况下,多次测量却得到不同的数值。思考后认为问题应该出在计数算时间部分,检查推敲计数算时间程序段,原来是计数开始时刻选取的不对,原程序为setb tr1jb p3.3 ,$ jnb p3.3 ,$这样的话,如果相应外部中断的时候外部信号正好是高电平,则定时器开始计数,得到了不正确的计数结果,由于每次加外部中断的时刻不同,导致了同一个信号测得多个数值。修改办法:将程序调整为jb p3.3 ,$setb tr1jnb p3.3 ,$如此,当外部信号是高电平时等待,低电平来时等待,再次是高电平时才开始计数,低电平时结束计数,得到了正确的计数结果。3、数码管高位起第二位总是显

12、示数字7而不是应有的结果。此处错误较为隐秘,先是检查了硬件试验箱是否损坏,调用了实验数码管显示程序,数码管可以正常显示,说明是程序错误;检查了程序整个的逻辑,没问题;应该是显示程序段的错误,但多次仔细检查了数值转化及显示程序段并未发现错误;排除了是逻辑错误,应该是非逻辑错误,最后查找相关资料并向老师请教,才明白错误是字型码表放错了位置,误把其放在了将数值转换成非压缩的bcd码的程序段前面,字型码表的第一个3fh可能是某条指令的机器码,当程序执行到这时,发生了错误的指令执行,导致了错误的显示。修正方法:将字型码表调整到整个程序段的末尾或主程序开始前。再次运行得出了正确的结果。六、性能测试与分析

13、完成调试后运行程序,在单片机外部中断1加外部脉冲信号,用单片机外部中断0控制中断,数码管能准确显示外部方波信号正脉冲宽度,根据输入脉冲信号的频率,计算输入脉冲的宽度与测量结果对照,是否符合设计要求。七、结论 本系统采用单片机at89c51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。该系统测量4ms512ms的方波,共显示6位数,精确到0.001ms。通过该系统的测量结果和理论值的对比,系统误差小,能很好的实现系统要求。八、设计总结经过一个学期的单片机的学习,我有机会又学到了一种新的机器语言。经过老师详细讲解我已对单片机的各个指令功能,寻址方式,程序设计方法有了初步了解。但

14、毕竟课本上的只是理论。这次课设我分到的任务是外部输入正脉冲宽度的测量,科设的题目综合性很强,用到了外部中断0,定时器t1的方式1,数制转换,数码管显示等。平时学习时我们都学到了各子模块的程序,到真正将他们综合起来去控制实验箱还是第一次。首先在编写程序时我们就遇到了很大的困难, 编写程序需要有一个冷静的头脑,心浮气躁是不行的。遇到困难时更是要心平气和,细致思考。幸运的是在我们小组激烈讨论,老师细心指导下我们顺利完成了课设。最终的程序由主程序,中断服务子程序 (启动定时功能),显示子程序,计数值*机器周期,数制转换,压缩bcd码转换成非压缩bcd码六个模块组成。在对程序的宏观理解基础上,细微处理决

15、定成败。课设让我对单片机软件与硬件结合有了一定的了解,也激发了我学习这门课的热情,同时我也认识到现在知道的单片机知识远远不够,要想要将所学运用到实际工作中还需刻苦努力钻研,大量实践。在以后的学习中我一定注意这方面的练习。本系统是以单片机89c51芯片为核心部件,通过89c51芯片内部软件计数来测量脉冲宽度的功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于脉冲宽度测量这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统结合过程,以及在常用编程设计思路技巧(特别是汇编语言c51语言)的掌握方面都能向前迈了一大步。九、参考文献1胡辉、李叶紫,单片机原理与应用,中国水利水电出版社,2007 2

温馨提示

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

评论

0/150

提交评论