《设计说明书》word版.doc

上传人:wux****ua 文档编号:9022545 上传时间:2020-04-02 格式:DOC 页数:19 大小:914.50KB
返回 下载 相关 举报
《设计说明书》word版.doc_第1页
第1页 / 共19页
《设计说明书》word版.doc_第2页
第2页 / 共19页
《设计说明书》word版.doc_第3页
第3页 / 共19页
点击查看更多>>
资源描述
电路设计原理及原理图1、 设计方案 本电路设计主要是想通过AT89C51单片机的I/O口来给ULN2003A电机驱动芯片赋值达到控制步进电机(带动凸轮轴的转动)的正传启动,反转启动,停止等功能。单片机的P1口的低四位作为控制电机的控制输出,对于输入我们采用两种方式,方式一:硬件开关控制。方式二:上位机(采用vb编程)控制。P0.0,P0.1连接两路开关,上位机和下位机单片机采用串行通信。PC机电平转换晶振电路FREQ=12MHZ复位电路步进电机MOTOR STEPPER电机驱动芯片ULN2003A正/反转控制开关单片机AT89C51电机正/反转单片机AT89C51电机驱动器ULN2003A正/反转开关闭合脉冲 系统框图系统功能图2、硬件选择以及分析 2.1硬件方案选择 2.1.1单片机 单片机的选择本设计采用的是AT89C51单片机,AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。它是一种高效微控制器,因为它更经济实惠,用起来灵活方便,而且习惯了用这种型号的单片机,所以选择AT89C51单片机。 单片机的分析单片机的主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路单片机AT89C51的引脚说明: 图3.1 AT89C51的引脚排列引脚描述:VCC:电源电压 GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示端口引脚第二功能P3.0RXDP3.1TXDP3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RD表2.1 P3口第二功能P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。RST:复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。ALE/:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:震荡器反相放大器及内部时钟发生器的输入端。XTAL2:震荡器反相放大器的输出端。时钟震荡器:AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。 外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用外部时钟的电路如图3.2示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 图3.2内部振荡电路 2.1.2电平转换 转换芯片的选择 本设计采用MAX232芯片进行电平转换,MAX232芯片是美信公司专门为电脑的RS232标准串口设计的接口电路,使用+5V单电源供电,它的作用就是完成TTL电平与RS232电平的转换。PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。 M32芯片的分析 MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。 内部结构基本可分三个部分: 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚DNG、16脚VCC(+5v)。电平转换电路如下:2.1.3 计数器 计数器的选择 本设计采用的计数器是8253A,由此计数器来记录下光栅位移传感器和光电编码盘的脉冲信号,达到计数的功能,然后由它把记录下得脉冲数传输给单片机,由单片机记录保存下来。计数器的分析 8253A是可编程定时计数器,它是INTEL公司专为x86系列CPU配置的外围接口芯片。它在微机系统中可用作定时器和计数器。定时时间和计数次数有用户事先设定。1.8253A内部结构四大部分:数据总线缓冲器、读写控制逻辑、控制字寄存器以及三个独立的16位计数器通道。这三个计数器分别是计数器0通道、计数器1通道和计数器2通道。(1)数据总线缓冲器:8位的双向三态缓冲器。用于暂存数据,使用在以下几个方面:CPU在初始化编程时,向8253写入控制字。CPU向某一通道写计数初值。CPU从某一通道读计数初值。(2)读/写控制逻辑电路:接受输入的RD、WR、CS、A1、A0等信号组合产生出对8253要执行的操作,见操作表。(3)控制字寄存器:只能写入,不能读出。8初始化编程时,写入控制字决定通道的工作方式。(4)3个计数器:分别是0、1和2,是3个独立的计数定时通道,都可以按照不同的方式工作。每个计数器内部都包含一个16位的预置初始寄存器。一个可预置数减法计数器和一个锁存器。 2.1.4 步进电机驱动芯片 在设计中我们采用的步进电机驱动芯片为ULN2003A,此芯片通过将单片机来的控制信号进行功率的放大来驱动步进电机的转动。 ULN2003A驱动芯片的分析 ULN2003A是高耐压、大电流、内部由七个硅NPN 达林顿管组成的驱动芯片。 经常在以下电路中使用,作为: 1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。ULN2003A 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它 能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来 处理的数据。ULN2003A 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。ULN2003A 的封装采用DIP16 或SOP16 ULN2003A在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。ULN2003的输出端允许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。ULN2003A可以驱动7个继电器,具有高电压输出特性,并带有共阴极的续流二极管使器件可用于开关型感性负载。每对达林顿管的额定集电极电流是500mA,达林顿对管还可并联使用以达到更高的输出电流能力。ULN2003A中每对达林顿管的基极都串联有一个2.7k的电阻,可直接与TTL或5V CMOS器件连接ULN2003可以并联使用,在相应的OC输出管脚上串联几个欧姆的均流电阻后再并联使用,防止阵列电流不平衡。 2.1.5 其他元器件 此外我们设计的电路中还采用了细分电路、复位电路、晶震电路,这些都用到了与门,非门等基本元器件,不再赘述。3. 电路原理 AT89C51是集成40个I/O口的单片机,拥有12MHZ的晶振周期,电路拥有可控复位电路。ULN2003A电机驱动电路可以实现电机的速度调整。本电路实现电机调速主要利用了ULN2003A的引脚的电平控制,让其电平的高低变化可以根据单片机的程序来进行调节。本电路分别进行了设置,当正转开关闭合都时,可以控制电机正转,当反转电机闭合时,可以控制电机反转。在电路中我们还加了上位机,通过vb编程来实现PC机和单片机的通信,通过vb来给单片机发送指令,达到控制步进电机的目的,这样可以减轻单片机的负担,单片机就值充当了数据的采集和指令的传送。3.1开关控制 当正转开关闭合时,电机正转;当反转开关闭合时,电机反转;当两个开关都断开时,电机停止转动。图3:开关控制电路3.2 晶振电路 为AT89C51提供晶振 图4:晶振电路3.3 复位电路 给单片机提供复位功能图5:复位电路3.4 电机驱动电路图6:电机驱动电路3.5 串行通信电路图7:串行通信电路3.6计数电路图8:计数电路3.7细分电路图9:细分电路3.8 电路总图4、 软件设计 4.1驱动步进电机转动的程序 步进电机的驱动编码是通过时下最流行的KEIL UV ISION3一体化集成编程软件完成,在KEIL环境下编写程序并生成二进制文件。只要是设置两个按键对电机进行正反转控制,在驱动程序中设定每次按键的步进值。在软件设计部分,首先要进行数据初始化,然后进行首要操作判决,执行如下语句即可实现对按键的扫描,其中每一句为步进电机的初始角度定义,一般定义起始角度为0.POS为正转控制子程序,NEG为反转控制子程序。 WAIT: MOV P1,R0 MOV P0,#0FFH JNB P0.0,POS JNB P0.1,NEG SJMP WAIT 在按键判断完成后,进行数据处理,如下为正转子程序,在执行以下语句后还要判断按键是否持续,若持续按键,则步进值递增,对步进电机进行连续驱动,否则当按键松开时按键步进电机停止转动。 POS: MOV A,R4 MOVC A,A+DPTR MOV P1,A ACALL DELAY INC R4当为反转控制时,控制方式同正转相同。下面为反转处理子程序。在此次设计中将步进设置为9度。 NEG: MOV R4,#6 MOV A,R4 MOVC A,A+DPTR MOV P1,A在初始化中必须包含步进数据模型TAB1,在数据处理过程中进行不断查表输出控制量,从而实现电机的正反转控制。在数据处理完成后送出P1口低四位,经电机驱动器驱动电机运转。TAB1:DB 02H,06H,04H,0CH DB 08H,09H,01H,03H 4.2上位机(PC机)与下位机(单片机)的通信程序 4.2.1下位机(单片机)的接受指令的框图和程序单片机程序接受框图:串口中断 保护出栈接收完毕?中断返回第一次接收?中断返回送缓冲保护入栈清中断送缓冲清第一次接收标志置第一次接收标志置接收计数值清中断是接收?NYYNYN单片机接受程序:;-;-;设置串行口 波特率9600;串行口设置MODE1,SM1=0,REN=1,SMOD=1;晶振11.0592,定时设置为0FDH;常用端口设置参数;FD 9600;FA 4800;F4 2400;E8 1200;-;*ORG 00HJMP STARTORG 23HJMP UARTORG 30HSTART: MOV SP,#70HMOV SCON,#50HMOV TMOD,#00100001B ;TIM1在模式2 TIM0在模式1MOV TH1,#0F4H ;设置定时时间SETB TR1 ;启动定时器1SETB ES ;允许串口中断SETB EA ;允许总中断MOV P0,#0 ;P0、P2输出低电平MOV P2,#0JMP $ ;等待状态;*;串行口中断;*UART: PUSH ACCPUSH PSWCLR ES ;关闭串行口中断MOV TH0,#HIGH(65536-65536)MOV TL0,#LOW(65536-65536)SETB TR0 ;开定时器0MOV 30H,#00 ;同步位MOV 31H,#00 ;数据1MOV 32H,#00 ;数据2MOV 33H,#00 ;结束位MOV R0,#30HREC: jbc tf0,FS ;接收时间是否超时?是则执行FSJNB RI,REC ;接收数据CLR RIMOV A,SBUFMOV R0,AINC R0JMP RECFS: CLR TR0 ;关定时器0;* CALL FUN ;解码并控制继电器SETB ES ;开串行口中断POP PSWPOP ACCRETI ;中断子程序返回;*;解码并控制继电器;下面的程序可以更简洁,但为了方便,展开来编制;*FUN: MOV A,#0AH ;判断第1字节即同步位CJNE A,30H,ERRMOV A,#0DH ;判断第4字节即结束位CJNE A,33H,ERR;*;第2字节即数据位1,代表继电器J1-8;第3字节即数据位2,代表继电器J9-16;*MOV A,31HMOV P0,AMOV A,32HMOV P2,ARET;*; 数据错误处理;* ERR:MOV 30H,#00 ;同步位MOV 31H,#00 ;数据1MOV 32H,#00 ;数据2MOV 33H,#00 ;结束位RETEND ;程序结束;-;- 4.2.2上位机的指令发送程序和人机界面的设计 上位机我们用的是vb编的程序,程序如下: Private Sub Command1_Click()Dim outbet(0 To 3) As Byteoutbet(0) = &HAoutbet(1) = &HFEoutbet(2) = &H0outbet(3) = &HDMSComm1.OutBufferCount = 0MSComm1.Output = outbetEnd SubPrivate Sub Command2_Click()Dim outbet(0 To 3) As Byteoutbet(0) = &HAoutbet(1) = &HFDoutbet(2) = &H0outbet(3) = &HDMSComm1.OutBufferCount = 0MSComm1.Output = outbetEnd SubPrivate Sub Command3_Click()Dim outbet(0 To 3) As Byteoutbet(0) = &HAoutbet(1) = &HFFoutbet(2) = &H0outbet(3) = &HDMSComm1.OutBufferCount = 0MSComm1.Output = outbetEnd SubPrivate Sub Form_Load()MSComm1.CommPort = 3MSComm1.Settings = 9600,n,8,1MSComm1.PortOpen = TrueMSComm1.RThreshold = ValueEnd Sub人机界面的设计:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!