资源描述
摘 要
Abstract
摘 要
Abstract
第1章 引言
第2章 系统功能分析
2.1系统功能概述
2.2系统要求及主要内容
2.3系统技术指标
第3章 系统总体设计
3.1硬件电路设计思路
3.2软件设计思路
第4章 硬件电路设计
4.1单片机的描述
4.1.1 AT89C51引脚及作用
4.1.2 ULN2003引脚图及功能
4.2外围电路的设计
4.2.1时钟电路
4.2.2复位电路
4.2.3测速电路
4.2.4报警电路
4.2.5显示电路
4.2.6 74HC573引脚图及功能
第5章 软件电路设计
第6章 系统调试
6.1硬件调试
6.2软件调试
6.3综合调试
6.4故障分析与解决方案
6.4.1故障出现情况
6.4.2解决方案
第7章 结论
参 考 文 献
致 谢
附 录I
附 录II
第1章 引言
第2章 系统功能分析
2.1系统功能概述
2.2系统要求及主要内容
2.3系统技术指标
第3章 系统总体设计
3.1硬件电路设计思路
硬件设计的任务是根据总体设计要求,确定系统中所使用的元器件,设计出系统的电路原理图。
89C51单片机通过INT0输入传感器信号,P2口接LED动态显示,转速测量部分硬件设计电路本主要由两部分组成:1.霍尔传感器测速部分。测量转速的霍尔传感器和被测物体通州连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路部分输出。2.测得的脉冲处理和显示部分,测速主要由霍尔传感器完成。脉冲处理部分主要经放大信号后对脉冲进行处理,由单片机P1.1口输入,经由AT89C51处理后使电动机转速显示在数码管上。并且使得转速测量误差小于±20转/秒。其如图3-1所示[5]。
3.2软件设计思路
软件需要解决的是定时器0的记数外部中断0的设定,由于测量转速范围大,所以低速和高速都要考虑在内,关键在于一个四字节除三字节程序的实现,显示部分、需要有一个二进制到十进制的转换程序,以及转换成非压缩BCD的程序后,才能进行调用查表程序送到显示。
软件工作流程:霍尔传感器利用磁电效应产生一周期脉冲向单片机的外部中断0(P3.2)口发送一个中断信号,定时器工作在内部定时,THO、THL设定初值为0,作为除数的低两字节,利用软件计数器,定时器0中断的次数作为除数高字节,中断完毕读取内部计数值作为除数,调用除法程序计算转速,再对二进制数进行一系列变换后调用查表程序,显示在LED上。
转速部分软件设计思路:AT89C51单片机的P3.2口接收传感器信号,主要编写一个外部中断服务程序INT0,读取计数值的三个字节,并再次清0记数初值以便下次的记数和计算,调用两字节二进制-三字节十进制转换子程序BCD,再调用十进制转换成非压缩BCD程序,最后调用查表程序送到显示[6]。
第4章 硬件电路设计
4.1单片机的描述
4.1.1 AT89C51引脚及作用
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。其引脚图如图4-1所示。
图4-1 AT89C51引脚图
AT89C51各端口功能如下:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
引脚口 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
4.1.2 ULN2003引脚图及功能
ULN2003 是高耐压、大电流、内部由七个硅NPN 达林顿管组成的驱动芯片经常在以下电路中使用,作为:
1.显示驱动
2.继电器驱动
3.照明灯驱动
4.电磁阀驱动
5.伺服电机、步进电机驱动等电路中。
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它 能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来 处理的数据,ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行,ULN2003 的封装采用DIP—16 或SOP—16,可以并联使用,在相应的OC输出管脚上串联几个欧姆的均流电阻后再并联使用,防止阵列电流不平衡在输入口输入高电平时,输出口为低电平,但是在输入端输入低电平时,输出端怎么还是低电平,ULN2003A的输出结构是集电极开路的,所以要在输出端接一个上拉电阻,在输入低电平的时候输出才是高电平。在驱动负载的时候,电流是由电源通过负载灌入ULN2003A的[7]。
4.2外围电路的设计
4.2.1时钟电路
4.2.2复位电路
4.2.3测速电路
图4-4 霍尔传感器与磁钢图
4.2.4报警电路
4.2.5显示电路
市场上比较多见的数码管是LED数码管,它有亮度高,售价低等特点。非常适合本电路的制作。数码管课分为共阴数码管和共阳数码管,其区分方法如下:用一个万用表,将万用表调至二极管档(有个二极管符号的,也作通路档使用),黑表笔接公共脚红笔接任意非公共脚,若有某一段变亮则说明是共阳,反之如果红表笔接公共脚,黑表笔接任意非公共脚,发现有某一段变亮则说明是共阴,本设计中用到的是共阴数码管。共阴数码管内部构造如图4-5所示。
图4-5 阴极数码显示管内部结构图
它由8段发光二极管组成,可以显示a-g为7个可发光段的不同组合,可以显示0-9这几个数字。共阴极结构把8个发光二极管阴极连在一起。其显示数字与断码之间关系如表4-1所示。
表4-1 数码管断码显示
显示电路如图4-6所示。
图 4-6 显示电路
4.2.6 74HC573引脚图及功能
74HC573 为八进制3 态非反转透明锁存器,同时也是高性能硅门CMOS 器件当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS 和TTL 接口上,操作电压范围:2.0V-6.0V,低输入电流:1.0uA,CMOS 器件的高噪声抵抗特性,主要用于数码管、按键等的控制。
74HC573包含八路D 型透明锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端,当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临,当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状态。作用如下:1. 就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。2. 当输入的数据消失时,在芯片的输出端,数据仍然保持,这个概念在并行数据扩展中经常使用到。3. 在数据缓冲方面可以加强驱动能力,管
脚图如图4-7所示。
表4-2 74HC573功能表
74HC573功能表如表4-2所示。1脚是输出使能,11脚是锁存使能,D是输入,Q是输出,H是高电平,L是低/OE是1脚 LE是11脚/OE 接低电平,使芯片内部数据保持器输出端与芯片8位输出端之间连通。LE 端的作用是通过高低电平控制8位输入与内部数据保持器输入端的连通与断开。当 LE=0 时,P0端口的8位数据线与74HC573内部数据保持器的输入端断开。当 LE=1 时,P0端口的8位数据线与74HC573内部数据保持器的输入端连通[9]。
电路原理图见附录I。
第5章 软件电路设计
本章重点阐述测量转速的汇编语言,以及软件设计的过程,软件需要解决的是单片机中断程序的设计,计算程序的设计、显示部分的程序的程序设计以及在我们这里非重点介绍的通信程序设计。
计算转速公式
n=60/NTC(r/min) (5-1)
其中,N是内部定时器的计数值,为三字节,分别由TH0、TLO、VTT构成:TC为时基,由于采用11.0592M晶振,所以TC不再是1um,而是12M/11.0592约为1.08um,代入上面公式,即可得到转速精确计算公式
N=60*11059200/12N=55296000/N (5-2)
再将55296000转化为二进制存入单片机的内存单元,下面介绍除数是如何获得的。单片机的转速测量完成,定时器T0作为内部定时器,外部中断来的时候读取THO和TLO,使定时器再次循环计内部脉冲。此外,对于低速情况下,我们还要设计一个软件计数器VTT,当外部中断还没来而内部定时器已经溢出,产生定时器0中断时,增加VTT,作为三字节中的高字节,三字节组成除数,上面的常数为四字节,所以计算程序实际上就是调用一个四字节除三字节商为两字节的程序。
为了数码管能够显示出来,需将二进制转换为十进制,再将十进制转换成非压缩BCD码后,才能调用查表程序,最后送给显示电路[10]。
由于本次设计的系统要实现的功能是将霍尔传感器的信号送到单片机的外部中断口,再对周期方波进行内部计数,调用计算程序把转速测出来,可以说是核心部分,该程序主要是完成10ms的定时任务,并且对变量buf-min进行加一处理,其中在对T0进行赋初始值时,选择为10236而不是10000。主要是c语言在经过反汇编后,一条c语句将会编译成几条语句,这样就增加了指令执行的时间,使定时产生误差,而在经过多次调试后,选择10236为T0初始值最接近10ms。定时服务程序流程图如图5-1所示。
图5-1 定时服务程序流程图
初始化T0,T1
开始定时T0
等待50ms 开启计数器T1
Buf-min=10
N
Y
关闭计数器
处理TH1,TH2数据
显示数据
开始
结束
图5-2 脉冲计数流程图
汇编语言源程序见附录II。
第6章 系统调试
电路调试是是整个系统功能能否实现的关键步骤,我们将整个调试过程分为三大部分,硬件调试、软件调试、综合调试。
6.1硬件调试
硬件调试主要是针对转速测量系统的单片机硬件电路分别进行调试,这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。
上电前调试:在上电前,必须保证电路中不存在断路或短路的情况,这一工作是整个调试工作的第一步,也是非常重要的一步,在这部分调试中主要使用的是万用表,用来完成检测电路中是否存在短路或断路情况等,特别是数码管连接部分,有PROTEL制作的PCB确保要和原理图一致,有些电路板上没法连接线路,要用短接线接好,对照着原理图部分,一部分一部分用万用表测量,注意焊点之间,确定焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及断路的现象出现。
上电后的调试:在确保硬件电路正常,无异常情况方可上电调试,上电调试目的是检验电路是否接错,同时还要检验原理是否正确,在本次课题设计中,上电调试主要对转速测量系统的单片机控制部分、数码管点亮部分、和上位机通信的电平转换和出口通信部分的硬件调试。
单片机控制部分硬件调试:这一部分调试主要是检测时钟电路、复位电路是否接对,单片机的电源以及地是否接好,以及其它的一些管脚的接法,看单片机通电后是否能正常工作等一系列问题。接上电源,使电路通电,检查各个芯片上的工作电压是否正常供电,以保证芯片正常工作。霍尔传感器1脚电压为5V、AT89C51的1脚31脚电压均为5V、uln2003的9脚电压5V则一切正常。
数码管LED电路调试:由于数码管采用的是动态扫描的方式点亮的,数码管的公共端接在74HC573驱动再接到单片机的P2口作为位选信号,字型是接在P0口,电路上电检查74HC573是否接上电源和地让其正常工作,在这一前提下,查看数码管能否点亮,只需要接仿真机上编写一个小程序让4位LED全亮,或者让它们其中某个亮,也可以显示不同的数字,根据要求给P0口、P2口分别赋值。即可检查数码管硬件电路是否正确,即可判断显示驱动电路整个完整首先排除这里的故障。
6.2软件调试
单片机程序调试思路:主要应用LCA51来完成,这一部分工作首先将转速测量系统中的各个模块调试,不断调试,不断修改直到正确为止,LCA软件是一种非常实用的多窗口编辑、调试软件。
调试过程如下:整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。
首先要对计算程序进行调试,其中关键就是那个四字节除三字节的程序显得尤为重要,在整个程序中,四字节的被除数是确定的数,而除数是测量计数的值,当各个模块调试时,我们可以先对除数赋值,利用查看内部数据的数据窗口观察并计算出来的结果和用计算器算的结果是否一致。
其次是二进制到十进制的转换,我们可以用上述举例方法,多次给出数据,然后运行程序,可以设置观察变量,观察出程序转换的结果。
最后观察30H-40H内部的数据,缓冲数据的观察检查完毕后,调用显示程序,观察数码管上显示的数据是否是内存缓冲中需要显示的数据。
6.3综合调试
在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:
1.使霍尔传感器有方波信号输出;
2.使单片机获得中断信号,计算出转速值并储存;
3.通过LED数码管把测量的数据显示出来;
4.在超速或低速会停止电动机,蜂鸣器是否发音。
6.4故障分析与解决方案
6.4.1故障出现情况
1.霍尔传感器不能产生有效的TTL电平,产生波形不稳;
2.单片机的中断服务程序不能执行,不管是定时中断还是外部中断;
3.中断执行低速情况也就是软件计数功能不对;
4.测得的转速不准确,而且在波形频率变化下显示转速却不变;
5.单片机显示部分无法工作,显示不稳定;
6.信号发生器模拟转速测量正确,按电机不稳定;
7.通信时单片机接收数据不正常,PC机接收乱码。
6.4.2解决方案
1.硬件电路中霍尔传感器工作在5V电压,中间引脚接地,数据线接单片机的外部中断0,在电机的转轴上还要贴上一些磁钢,利用霍尔效应产生方波,利用万用表检查时接5V和地的PCB上的线都坏了,重新用线接在电路板上,当波形出来后,显示的波形不稳,而且不够理想,后来在信号线与地之间接了472的瓷片电容滤波,波形得到了大大改善。
2.首先检查程序的开头,中断入口地址,发现中断定时0的地址写成中断定时1的入口地址,外部中断没有执行跟没有中断信号加入有关系,在前面没有解决的时候,我们暂时用信号发生器来代替外部中断9输入,由于中断执行我们无法知道,可以用设置中断点的方法或者利用滤波器,在终端服务程序中重新编写一些程序观察单片机的某一输出口的波形变换或者中断程序中让数码管点亮等直观可以看到的方法来检查中断的执行情况。
3.中断服务程序中程序设计有问题,要先读取反应转速的TH0、TLO,再去清0,软件记数的高字节VTT应该在定时中断0中的服务程序自增的,同时清TH0、TLO,在外部中断程序中要读取三字节的记数值后同时清三个计数器,再从中断返回。
4.在确定转速计算程序的正确性的条件下出现了转速不准确,就是在调用转换程序时出现了问题,观察程序时发现调用子程序是传送的参数不对,再用寄存器R时候出现了重复现象,导致转换过程中出现了混乱,在波形频率改变而转速不改变由于在调用显示程序时候再调用之后再显示这里死循环,不能适时进行计算了。
5.由于显示部分的程序是动态显示,是一位一位的显示,在为选信号这里出现了问题,在左移的时候出现了问题,以及显示完一个字型后调用的延时时间不合理导致显示不稳定,出现闪烁现象,改变时间到1毫秒左右就差不多了。
6.后来在接信号发生器时候要是接正弦波时候一样发生不稳定跳转现象,由此可以推断,在传感器输入的信号不是理想方波,而且电平值不够大,所以在霍尔传感器信号输出端接滤波电容以及一个10K的上拉电阻就可以解决问题了[12]。
第7章 结论
本设计完成了以单片机为核心设计一个电动机转速测定及数据显示控制系统,对转速范围在0-3000r/min的直流调速电动机或交流变频调速电动机进行测量并显示,转速数据显示精度要达到转速个位数,有转速高、低限报警提示。精度也在0.1﹪,都达到了比较理想状态。
根据系统要实现的功能以及要求,本设计实现单片机转速测量主要是各个模块的设计,定时器计数功能、以及LED驱动,单片机可通过编程控制外围部件,能实现较高的自动化程度,以它为系统核心的控制模块可实现主从控制,完成预定任务。
本设计主要研究直流电机的控制和测量方法,效率高,电路简单,使用也比较广泛,测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。从而对电机的控制精度、响应速度以及节约能源等都具有重要意义。
参 考 文 献
朱明程. 霍尔传感器及应用电路.北京电子报1994合订本P.1996.
[10] 高鹏,安涛. PROTEL99入门与提高[M]. 人民邮电出版社,2001.
致 谢
在此,我要十分感谢我的指导老师张冬梅老师,在刚刚拿到论文题目的情况下,我毫无头绪,后来在老师指点下去图书馆翻阅相关书籍,上网查看资料,才开始整理本设计课题内容。在本论文的写作过程中,我的导师倾注了大量的心血,从选题到开题报告,从写作提纲,到一遍又一遍地指出文稿中的具体问题,严格把关,循循善诱,在原理图的设计、硬件板制作及程序编制上都给我很大帮助。在指导我们过程中,老师不惜辛苦,专注地给我们讲解,在她指导下我终于完成学校交给我们的任务,我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友,深深的领悟到一点:老师说的话是有理的,遇到最多问题的总是那些闲麻烦的人。老师们的经验只是让我们避免走更多弯路。写作毕业论文是一次再系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始。
附 录Ⅰ
附 录Ⅱ
汇编语言源程序
展开阅读全文