您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计脉冲宽度测量
学院名称:专业:班级:姓名:学号:指导教师:2009年11月JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY单片机课程设计报告脉冲宽度测量目录第一章引言……………………………………………第二章方案选择及总体设计…………………………2.1硬件技术指标……………………………………2.2方案选择及工作原理……………………………2.3系统实现功能……………………………………第三章控制系统的硬件设计…………………………3.1系统模块构成……………………………………3.2系统工作原理图…………………………………3.3管脚说明…………………………………………第四章软件设计及程序………………………………4.1软件设计流程……………………………………4.2各子程序功能描述………………………………4.2.1定时器T0中断服务程序……………………4.2.2显示子程序……………………………………4.3系统总程序…………………………………………第五章系统制作与调试…………………………………5.1硬件调试……………………………………………5.1.1调试方法………………………………………5.1.2出现问题及解决方法…………………………5.2软件调试……………………………………………5.3结果分析……………………………………………第六章总结与体会………………………………………第一章引言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。在现有的单片机仿真机系统上掌握相关软硬件设计与调试知识,根据所选择题目,焊接好硬件电路,正确进行元器件的测试与调试,并在计算机上编写汇编程序调试运行,并实现参考选题中要求的设计。第二章方案选择及工作原理2.1硬件技术指标输入脉冲幅度:0-5V脉宽测量范围:0.1-50ms测量精度:1%显示方式:四位数字显示2.2方案选择及工作原理将脉冲信号从P3.2脚引入。将T0设为定时器方式工作。并工作在门控方式。初值TH0、TL0设为零。在待测脉冲高电平期间,T0对内部周期脉冲进行计数。在待测脉冲高电平结束时,其下降沿向P3.2发中断,在外中断0的中断服务程序中,读取TH0、TL0的计数值,该值就是待测脉冲的脉宽。随后清零TH0和TL0,以便下一脉宽的测量。2.3系统实现功能在电源正确接入的前提下,由RC震荡器产生信号从P3.2口输入,利用内部脉冲对外部信号进行计数。计数值经过二—十转换后,判断高位是否为零,如果为零即显示低四位,如果不为零即显示高四位。通过数码管显示计数脉冲的个数,其个数即为脉冲宽度。第三章控制系统的硬件设计3.1系统模块构成3.2系统工作原理图3.3管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在编程时,P0口作为原码输入口,当进行校验时,P0输出原码,此时P0外部必须被拉高。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在编程和校验时接收高八位地址信号和控制信号。P3口也可作为89C51的一些特殊功能口,在本次课程设计中用到的P3口如下所示:P3.2/INT0(外部中断0)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。第四章软件设计及程序4.1软件设计流程4.2各子程序功能描述:4.2.1定时器T0中断服务程序:通过对方式寄存器TMOD和控制寄存器TCON的编程来选择T0的工作方式。TMOD设为09H,表示门控方式为1,16位定时器。TCON的低四位为外部中断的触发方式控制位和外部中断请求标志,设为13H,门控位为1时,仅当TR0等于1且P3.2输入为高电平时T0才计数,TR0为0或P3.2输入低电平时都禁止计数,以此来判断输入脉冲高电平的开始和结束。4.2.2显示子程序:时间显示子程序每次显示4个连续单元的十进制数。首先判断高位是否为0,为0调用低四位显示,不为0则显示高四位。显示时,先取出内存地址中的数据,然后从P2.4、P2.5、P2.6、P2.7口依次由低位到高位显示,在显示过程中通过延时程序控制四个数码管的显示时间长度,以达到可以清晰读出四位数。4.3系统总程序ORG0000HAJMPMAINORG0003HAJMPJISHIMAIN:MOVSP,#60H;设堆栈MOVTMOD,#09H;设置控制字方式方式0门控MOVTH0,#00H;定时器清零MOVTL0,#00HSETBEA;开总中断SETBEX0;开T0中断SETBTR0SETBIT0MAIN1:ACALLEX;调用二进制转换为十进制子程序ACALLNEX;调用拆为非压缩BCD码数子程序MOV50H,#0FAH;延时程序MOVA,23H;将R4中低位给累加器CJNEA,#0H,MAIN3;比较累加器中数值和0,不等于0跳转MAIN2:ACALLDISP;调用显示子程序1AJMPMAIN4MAIN3:ACALLDISP2;调用显示子程序2MAIN4:DJNZ50H,MAIN2;循环250次AJMPMAIN1EX:MOVR2,30H;将从信号源中读出的数据存入R2R3中MOVR3,31HCLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,#10HLOOP:CLRCMOVA,R3RLCA;R3带进位左移一位MOVR3,AMOVA,R2RLCAMOVR2,A;2*(R4R5R6)+C赋值给R4R5R6MOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZR7,LOOP;(R7)-1赋值给R7是否为零RETNEX:MOVA,R6ANLA,#0FHMOV19H,AMOVA,R6;拆分为非压缩BCD码SWAPA;将R6中高低四位相互转换ANLA,#0FH;将高四位清零,保持低四位不变MOV20H,AMOVA,R5ANLA,#0FHMOV21H,AMOVA,R5SWAPAANLA,#0FHMOV22H,AMOVA,R4ANLA,#0FHMOV23H,ARETDISP:MOVDPTR,#TAB;查表程序MOVA,19HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.4ACALLYANCHIMOVA,20HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.5ACALLYANCHIMOVA,21HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.6ACALLYANCHIMOVA,22HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.7ACALLYANCHIRETDISP2:MOVDPTR,#TABMOVA,20HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.4ACALLYANCHIMOVA,21HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.5ACALLYANCHIMOVA,22HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ASETBP0.7CLRP2.6ACALLYANCHIMOVA,23HMOVCA,@A+DPTRORLP2,#0F0HMOVP0,ACLRP2.7ACALLYANCHIRETYANCHI:MOV51H,#50HTL:MOV52H,#10HDJNZ52H,$DJNZ51H,TLRETTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHJISHI:MOV30H,TH0MOV31H,TL0MOVTH0,#00HMOVTL0,#00HRETIEND第五章系统制作与调试5.1硬件调试5.1.1调试方法硬件调试是利用基本测试仪器(万用表、示波器等),检查系统硬件中存在的故障。第一步:目测。检查外部的各种元件或者是电路是否有断点。第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。第三步:加电检测。给系统加电,检测所有器件的电源端是否符合要求。(1)取稳压电源打开电源,检查电源的输出电压是否为5V,可通过观察电源的量程及指针的读数来判断或用万用表测量。(2)在确定输出电压正确的情况下,接好电路,用一根导线从地引出,接到P3.2口;再用另一根线从地引出分别接到P2.4、P2.5、P2.6、P2.7口,观察数码管的亮灭情况。5.1.2出现问题及解决方法在观察信号发生器产生波形时发现所产生的波形并不是标准的方波。经过老师的讲解知道问题时处在波形整形步骤中,将信号源连接两个非门后再观察波形发现波形的垂直程度得到很好的改善。在观察过程中还发现本次课程设计中用来产生信号源的方案所实现的方波并不等宽。在测试数码显示器时,其中一个数码显示管特别暗,经检查得知该数码显示管的小数点位没有接上拉电阻,这样导致分流出现问题。接上电阻后该问题得到解决。5.2软件调试:软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。在LCA51编译器下进行程序编译,检查程序是否有语法错误。接好仿真机判断接口。以子程序为单位逐个进行仿真,最后结合硬件实时调试。将上述各编译好的子程序结合为总程序编译后加载到单片机芯片中进行仿真,结果并不是出现稳定的四位数字,闪的频率比较快,调整延时时间后问题解决。5.3结果分析通过数字示波器观测,输入信号的高电平的宽度为6.72ms,波形的峰—峰值为4.08V。数码管显示脉宽为6.48ms。输入脉冲幅度及脉宽测量范围都满足要求。测量精度=±(6.72-6.48)/6.72=±4.5%数码管显示时数字在不断的跳动,可能原因是输入信号不稳。第六章总结与体会本系统是以单片机89C51芯片为核心部件,通过89C51芯片内部软件计数来测量脉冲宽度的功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于脉冲宽度测量这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统结合过程,以及在常用编程设计思路技巧(特别是汇编语言C51语言)的掌握方面都能向前迈了一大步。
本文标题:单片机课程设计脉冲宽度测量
链接地址:https://www.777doc.com/doc-4383005 .html