单片机原理实验
所示。当A点电位低于1.1V(光耦合器发光管为红外管,其正向导通电压约为1.1V)时,光敏三极管截止,集电极输出高电平;当A点电位略高于1.1V时,光敏三极管导通,集电极 输出低电平。将工频同步脉冲接到,INT0端,由脉冲下降沿触发“外部中断0”在“外部中断0”服务程序设置定时器,延时一定时间后输出控制脉冲从而实现导通时间(或导通角)的控制,如图6.2(d)和(e)所示,脉冲控制方式下单片机输出的控制脉冲必须与工频交流电同步,才能使可控硅的导通角稳定。
单片机对光耦合可控硅的控制也可采用电平(或开关)控制方式,如图6.2(f)和(g)所示,此时光耦合可控硅相当于一个交流开关。当某时间段单片机输出一个电平信号时,可控硅导通;当单片机的输出控制电平降为零时,可控硅将延迟至交流电压过零时关断。
2. 可控硅脉冲控制方式的控制原理
在实验五中,已将T0定时器用作为主程序循环的4mS定时,T1计数器已用于温度/频率转换电路(即555振荡电路)的输出脉冲计数,因此只能使用外部中断INT0和T2定时器配合才能实现可控硅导通时间的控制。具体方法如下:①在主程序中根据给定的控制温度和温度的实标测量值,由二者的误差计算好控制时间,并开放外部中断
图6.2:可控硅控制电路有关信号
(a)交流电压;(b)全波整流电压; (c)同步脉冲;(d)导通角控制脉冲;
(e)导通角控制时负载电压; (f)电平控制;(g)电平控制时负载电压 (f) (e) 控制时间 uKKG t uA u2 (a) t (b) uINT0 宽度约1.2mS t (c) uKKG t (d) uR5 导通时间 t t uR5 (g) t INT0,如图6.2(e)所示;②交流电过零时,产生同步信号,其下降沿向CPU请求中
断;③在外部中断服务程序中,将主程序预先算好的控制时间设置T2定时器的初值,开放T2定时器中断;④T2定时器定时时间到时,向CPU请求中断;⑤在T2中断服务程序中输出控制脉冲,触发光耦可控硅导通。
上述控制方法的核心问题是:如何由给定的控制温度和温度的实标测量值之间的误差计算控制时间?由于系统每100mS测量温度一次,每测量一次温度,根据误差对可控硅的控制时间作一次相应的调整。记tctrl(n?1)为上次温度测量后可控硅的控制时间,tctrl(n)为本次温度测量后可控硅的控制时间,若采用比例控制,则控制时间可表
33
单片机原理实验
示为:
tct(n)?KC[Cm(n)?Cg] (1) r)l?tct(nr?l1其中Cm(n)为本次测得温度脉冲数、Cg为设定温度脉冲数,二者的差值为本次温度的控制误差,KC为误差放大倍数(或控制的比例系数)。(1)式表明:若当前没得温度比设定温度低,即Cm(n)?Cg,则tctrl(n)?tctrl(n?1),即减小可控硅控制时间(或增大导通时间),增大加热器功率,最终导致温度上升;反之,若当前测得温度比设定温度高,即Cm(n)?Cg,则tctrl(n)?tctrl(n?1),即增大可控硅控制时间(或减小导通时间),减小加热器功率,最终导致温度下降;因此采用(1)式计算可控硅的控制时间,可实现温度的负反馈控制,可实现温度的稳定控制。
如前所述,在INT0外部中断中,根据tctrl(n)的值设置T2定时器的初值tini(n),并开放T2中断,在T2中断服务程序中输出控制脉冲可实现导通时间的控制,采用12M晶振时,tctrl(n)?216?tini(n),因此有
tini(n)?216?tctrl(n?1)?KC[Cg?Cm(n)] (2)
tini(n)?tini(n?1)?KC[Cg?Cm(n)] (3)
其中tini(n?1)?216?tctrl(n?1)上次温度测量后设置T2定时器的初值。
由图6.2(c)可见,由于我们采用的同步电路较简单,因此同步脉冲的宽度约为1.2mS,理论上tctrl(n)的取值范围为:0?tctrl(n)?9.4mS。此外,当可控硅的导通角很小时,负载获得的功率很小。本实验板使用9Vac的交流电,导通角为25°时,导通瞬间交流电压的瞬时值为1.414?9?sin25?5.3V,扣除可控硅的导通压降后,负载电压的有效值仅约0.3V,功率很小。因此tctrl(n)的有效取值范围可定为:
?0.2mS?tctrl(n)?8.0mS,即
E0C0H?tini(n)?FF00H (4)
由(3)、(4)二式可得计算tini(n)的程序流图,如图6.3所示。若设定温度保存在
单元,当前测得的脉冲数保存在
;====求控制时间或T2定时器初值子程序==== ;入口条件
FTCTRL:MOV A,SNUM1 ;设定温度(压缩BCD)转二进制 MOV R5,A
34
单片机原理实验
SWAP A 将设定温度转换为二进制; ANL A,#0FH 查表转换为脉冲数;计算误差 MOV B,#0AH
JNZ FTC5 ;偏差<-256则转移 FTC1:MOV A,R3 ;
MOV A,R5 ;
35
单片机原理实验
MOV R5,A 中断入口0003H转移 MOV A,R4 INT0中断服务子程序 JB ACC.7,FTC4 ;被加数为正?负则转移 ADDC A,TCTRL0 根据主程序中计算结 MOV R4,A 果设置T2定时器初值 JNC FTC3 ;和<最大值? FTC2:MOV R4,#0FFH ;
中断入口002BH转移 MOV A,R5
T2中断服务子程序 SUBB A,#TCMAX1
MOV A,R4
KKG引脚输出20uS负 SUBB A,#TCMAX0
脉冲;关闭T2;禁止 JNC FTC6
T2中断;清T2举出举FTC5:MOV R4,#TCMAX0 ;
出标志 MOV R5,#TCMAX1
FTC6:MOV C,EX0 ;保存外中断INT0设置 CLR EX0 ;关闭外中断INT0 返回 MOV TCTRL0,R4 ;
(b)
MOV TCTRL1,R5
图6.4:中断服务子程序 MOV EX0,C ;恢复外中断INT0设置
(a)外部中断;(b)T2中断 RET
3. 中断服务子程序
如前所述,可控硅控制时间(或导通时间)的控制需外部中断INT0和定时器T2中断配合使用才能实现,中断服务子程序是主程序的一部分。中断服务子程序应尽量简捷,避免将复杂的运法和逻辑判断放在中断服务子程序中,以使中断响应后需要现场保护的内容尽可能地少。图6.4为本实验的中断服务子程序流图,程序清单如下,由于中断服务子程序未使用到主程序可能使用的任何寄存器资源,因此不需要进行中断现场保护。
;====中断服务子程序====
INTS:MOV TL2,TCTRL1 ;外部中断;开启T2并允许中断 MOV TH2,TCTRL0 SETB TR2 SETB ET2 ;允许T2中断 CLR TF2
36
单片机原理实验
RETI
T2SER:CLR KKG ;T2中断触发可控硅 CLR TR2 CLR TF2 CLR ET2 NOP ???? ;共16个NOP指令 NOP
SETB KKG RETI
T0SER: RETI
四、 实验内容
1. 简易温度控制器设计
在实验板上设计一个系统,实现以下功能:①上电时4位数码管显示“8952”1秒,指示灯全亮。②紧接着转换为温度计模式,关闭加热器,显示当前测量的温度值,同时LD1灯亮表示当前显示内容为实测温度,此时按键K0~11无效,SW1和SW2键有效。③在温度计模式下,若按SW2键一次,转换为设置控制温度模式,此时关闭加热器,可开始对控制温度(有效范围0000~0099)进行设置,LD2亮表示此时可以利用数码显示和按键K0~9进行控制温度赋值,K0~9键代表“0~9”数值键,每按1次数值键后,原4位显示数值在显示器上左移1位,新输入的数值从右边进入,输入数值的位数不限,但显示器的最高两位始终为零。④在设置控制温度模式下,若再按“SW2”键一次,显示器上显示的数值保存,重新回到温度计模式,显示实测温度,LD1亮。⑤在温度计模式、LD1亮的情况下,若按SW1键一次,转换为开关方式温度控制器模式,此时显示器高两位显示设置的控制温度,低两位显示实测温度,LD3亮表示系统工作于开关式温控器模式,此时若实测温度达不至设定温度,则打开加热器及点亮LD8,反之关闭加热器及熄灭LD8。⑥在开关方式温度控制器模式下,再按SW1键一次,转换为脉冲式温度控制模式,此时显示器高两位显示设置的控制温度,低两位显示实测温度,LD4亮表示系统工作于脉冲式温控器模式,单片机根据控制误差实时调整可控硅控制时间(即调整加热器功率),实现温度控制。⑦在反馈式温控器模式下,按SW1键一次,重新回到温度计模式,关闭加热器,显示温度,LD1亮。
请根据上述功能描述,用实验四所述的“状态分析法”对系统的状态、状态转移条件进行分析,得出系统的状态及其转移表;画出系统主程序框图、各工作状态细化流程图,写出主程序、各工作模块程序清单。
建立工作文件夹“E:\\学号\\实验六”,使用“WAVE 3.2”集成开发软件,以“MAIN.ASM”文件名建立源程序文件,录入、编辑“温度控制器系统”的主程序。
2. 可控硅控制时间算法子程序设计
以“FTCTRL.ASM”文件名建立源程序文件,录入、编辑可控硅控制时间算法子程序。
3. 程序移植
37