去处理中断事件B,对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
单片机中断源:
(1)/INT0(P3.2):外部中断0。可由IT0选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0置1,向CPU申请中断。
(2)/INT1(P3.3):外部中断1。可由IT1选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1置1,向CPU申请中断。
(3)TF0:片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
(4)TF1:片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
(5)RI或TI:串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断,这两位必须由软件清零。
3、单片机定时器/计数器简介
51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成,这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 TMOD和一个8位的定时控制寄存器TCON。TMOD主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0 (P3.4)和T1(P3.5)输入。 3.2.2 按键电路
11
图3.3 按键电路图
按键电路图如上所示,总共三个按键S0、S1和S3,分别接在单片机的P2.0、INT0和INT1端口上,另一端都接地。首先介绍S0的作用,其功能为开启电机,当按下时整个程序才会启动。再者是S1,其功能是加速,在图中连接外部中断0,在主程序中不断查询键是否被按下,如果键被按下则调用相应的子程序,改变高低电平的软件计数次数,则可以改变占空比,从而实现电机转速的增加。同理,S2使用的是外部中断1,作用是减速。 3.2.3 显示电路
图3.4 显示电路图(部分)
显示电路如上所示,采用的是ZLG7290的芯片,由于采用了I2C总线接口,因而硬件电路连接非常简单。它的数据线SDA引脚接到AT89C51的2.7引脚上,时钟信号线SCL引脚接到AT89C51的2.6引脚上,RST引脚接到AT89C51的2.5引脚上。(由于此次实验只用到三个数码管,故原理图只画出三个数码管) ZLG7290的工作原理
ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。此外,ZLG7290B的电路简单,使用也很方便。
用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。微控制器可通过两种方式得到用户的键盘输入信息。其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根I/O口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。
由于采用了I2C总线接口,因而用ZLG7290与微控制器设计电力仪表的硬件电路连接非常简单。它只需要两根信号线(一根数据线SDA,一根时钟信号线SCL)。但应注意进行I2C通信的双方要共地,并应用,INT传递键盘中断信号。微控制器通过RST可以将ZLG7290复位。
12
ZLG7290的功能
ZLG7290能够直接驱动8 位共阴式数码管(或64 只独立的LED),同时还可以扫描管理多达64 只按键。其中有8 只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt 键一样。另外ZLG7290B 内部还设置有连击计数器,能够使某键按下后不松手而连续有效。采用I2C 总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可控任一数码管闪烁。
3.2.4 电动机及驱动电路
图3.5 电动机及驱动电路图
直流电动机及驱动电路接线图如上所示。H桥功率驱动电路是一种典型的智能功率集成电路,4个三极管组成H的4条垂直腿,而电机就是H中的横杠。H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的运转。ZDJ_A的电平为高、ZDJ_B为低电平则电机正转,反之则电机反转,如果两端电平相同则电机不转。本实验目的是PWM调速,所以忽略正转反转问题,直接把ZDJ_B接入p1.0口,其输出的方波进而控制直流电机转速,虽然不是精准控制但粗略可达到调速效果。
4直流电机的转速控制软件编程设计
4.1 程序总设计思路
在主程序内部进行AT89S51单片机内部的定时器T0初始化,并且设置定时开始 器中断,产生PWM波形。然后不断查询键是否被按下,如果没有,继续查键;如果有键被按下了,则判断是键1还是键2,接着执行相关操作(增加或减少高低电平软件计数的次数),改变PWM波形的初始化 占空比,从而改变电动机的转速,并且在数码管上显示占空比。
4.2 程序分段介绍
设置占空比初始值 4.2.1 主程序
主程序中主要进行定时器初始化,设置占空比初值(电动机转速初值),调用序,然后不断查询按键,如果键被按下,则调用相应改变转速的子程序。主
13
启动定时器 显示程程序流程调用显示程序 查键并执行相应子程序 图如右所示。
MAIN:MOV SP,#70H LCALL RE7290
MOV TMOD,#01H MOV TH0,#0FCH ;1MS MOV TL0, #018H
S1: MOV P2,#0FFH ;总开关 JB P2.0,S1
SETB EA SETB ET0
SETB TR0 ;开中断 SETB EX0 SETB IT0 SETB EX1 SETB IT1
MOV R1,#0 ;计数值初值 MOV R2,#50 ;占空比初值
LJMP $
4.2.2 定时器中断程序 1、定时中断程序总体介绍
定时中断程序是用来产生PWM波形的。整个程序是把一个波形周期分为100份,每份1ms,也就是说单片机产生的是周期为100ms的方波。用寄存器R1表示扫描次数,即分成100份,总共扫描100次。R2为占空比的份数,即为高电平占得百分比。每当定时中断产生,先判断R1和R2大小,即R1小于R2(扫描次数还未达到占空比的数值)让P1.1口置高电平即方波的高电平波形部分。反之R1大于R2就置0,为低电平部分。然后判断R1有没有到100,即一个周期的100份有没有走完,没有会继续累加R1,有的话清零,一个周期结束。
IT00:MOV TH0,#0FBH
14
MOV TL0, #0AEH
INC R1 CLR C
MOV 30H,R2 MOV A,R1
CJNE A,30H,P_OUT
P_OUT: JC P_OUT1 ;计数值小于预置r2高电平 CLR P1.1 ;计数值大于预置r2低电平 AJMP OUT_END
P_OUT1: SETB P1.1
LJMP OUT_END
OUT_END: CJNE R1,#100,NEXT ;判断一个周期结束 MOV R1,#0 NEXT: RETI
4.2.3 外部中断程序(加速减速)
外部中断程序0和1分别是用来控制电机加速与减速的。在定时中断程序中提到R1是一个100份扫描的计数寄存器,R2是高电平所占份数。所以可以利用中断产生改变R2的值从而达到改变占空比的目的。程序中为每次按下按键,就行中断。当加速时,会使R2值加1,如达到100则保持不变。加速时对应R2会减1,变为1时保持不变。
UP: INC R2 ;加速 CLR C
CJNE R2,#100,UP1
UP1: JC UP_END ;未到最大值返回 MOV R2,#100 ;否则保持最大值 UP_END:LCALL PLAY RETI
DOWN: DEC R2 ;减速 CLR C
CJNE R2,#1,DOWN1
DOWN1: JNC DOWN_END ;未到最小值返回 MOV R2,#1 ;否则保持最小值
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库扬州大学单片机课设直流电机控制调速硬件 - 图文(3)在线全文阅读。
相关推荐: