基于51单片机的双向晶闸管触发

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于51单片机的双向晶闸管的导通实验实验环境:Proteus编程语言:汇编编程环境:KEIL单片机:AT89C51晶振:12MHz设计说明:本设计实现以下功能:1、通过单片机控制晶闸管的触发信号,从而实现晶闸管的触发2、通过七段数码管显示触发角大小3、通过键盘操作调节晶闸管导通触发角,并控制显示的开关仿真图:图(1)仿真效果图图(2)交流电过零检测电路图(3)数码管连接电路图(4)晶闸管触发电路图(5)键盘连接电路图(6)单片机最小系统电路图(7)系统总图部分源程序:ORG000HAJMPMAINORG0003H;外部中断0中断程序入口AJMPINT_0ORG000BHAJMPTMR0ORG001BHAJMPTMR1ORG0040H;以上参看51单片机中断系统介绍MAIN:ACALLINIT;调用初始化子程序。HERE:JNBFLAG1.7,HERE;100ms不到不进行键盘扫描CLRFLAG1.7;清标志位HERE2:MOVA,P2;********有无按键扫描,ORLA,#70H;MOVP2,AMOVA,P2ANLA,#70HXRLA,#70HJZNKEY;MOVKTEMP,AAJMPHERENKEY:JBKTEMP.KEY0,KSET;是SET键,转处理程序JBKTEMP.KEY1,KADD;加,转处理JBKTEMP.KEY2,DISOC;显示开关键AJMPKOUT;以上键都不是,不处理KSET:INCSHIFT;根据SHIFT的值做不同的处理SETBFLAG1.3;按键状态标志位SETBFLAG1.6;有键按下,开显示CLREX0;停止触发MOVA,SHIFTCLRCSUBBA,#4;SHIFT的范围是1~4,大于4归0,即按四次SET键保存设置退出按键模式JCKOUTMOVSHIFT,#0CLRFLAG1.3;MOVA,AERF;将导通角转化为时间单位MOVR5,AMOVB,#9DIVABMOVB,#2MULABMOVSCR,ASETBEX0AJMPKOUTDISOC:MOVA,SHIFT;显示关程序,在按键调节状态无效JNZKOUTCPLFLAG1.6AJMPKOUTKOUT:MOVKTEMP,#0;每次按键的结束要清该单元AJMPSCRDIS;***************************KADD:MOVA,SHIFT;加处理程序JZKOUTCJNEA,#1,ADDTMOVR5,#1;个位加1AJMPKADD1ADDT:CJNEA,#2,ADDCONMOVR5,#10;十位加1AJMPKADD1ADDCON:MOVR5,#100;百位加1KADD1:MOVA,AERFCLRCADDCA,R5MOVR5,ACLRCSUBBA,#170;最大值检测JCKADD2MOVR5,#10KADD2:MOVAERF,R5AJMPKOUTSCRDIS:MOVA,AERF;导通角显示处理,通过连续除10,求的各位值MOVB,#10DIVABMOVDIS3,BJBFLAG1.3,SHI;按键状态所以位都显示,非按键状态,从左侧不是零的那一位开始显示JZGEDISSHI:MOVB,#10DIVABMOVDIS2,BJBFLAG1.3,BAIJZSHIDISBAI:MOVB,#10DIVABMOVDIS1,BJBFLAG1.3,QIANJZBAIDISQIAN:MOVDIS0,AAJMPHERE;*******************GEDIS:MOVDIS2,#10;SHIDIS:MOVDIS1,#10BAIDIS:MOVDIS0,#10AJMPHERE;*************TMR0:PUSHPSWPUSHACCDJNZTM1T,RETIF;定时时间到否?SETBP3.0;导通晶闸管ACALLDELAYCLRP3.0;导通后关闭导通电压CLRET0;每周期只导通一次,故关闭定时器0CLRTR0RETIF:POPACCPOPPSWRETI;************TMR1:PUSHPSWPUSHACCMOVTH1,#0F0HMOVTL1,#60H;恢复定时器1初值SETBRS0;选择第二组R系列寄存器DJNZKDLY,T1DIS;键盘扫描定时检测MOVKDLY,#25SETBFLAG1.7CPLFLAG1.5;闪烁用T1DIS:MOVP1,#00H;每次更新显示数据前要清显示,以免花屏JNBFLAG1.6,RETIF1;显示开关检测MOVDPTR,#LEDBTB;查表MOVA,DSPC;DSPC动态扫描位控制指针MOVCA,@A+DPTRMOVB,AMOVA,P2ANLA,#0F0HORLA,BMOVP2,AJNBFLAG1.3,TMR11;检测是否是按键状态,以决定是否进行闪烁显示MOVA,#4CLRCSUBBA,SHIFTCJNEA,DSPC,TMR11JNBFLAG1.5,TMR11MOVP1,#0;闪烁,每0.2秒闪一次AJMPTMR12TMR11:MOVA,#DIS0ADDA,DSPCMOVR1,AMOVA,@R1MOVDPTR,#LEDTBMOVCA,@A+DPTRMOVP1,ATMR12:DECDSPCJNBDSPC.7,RETIF1MOVDSPC,#3;DSPC范围是0~3RETIF1:CLRRS0POPACCPOPPSWRETILEDTB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00HLEDBTB:DB14,13,11,7;***********;延时函数,用于满足晶闸管导通所需电流持续时间DELAY:MOVR7,#5DELAY1:MOVR6,#10DELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RET;************;外部中断0中断处理程序,启动定时器0,设置导通角INT_0:PUSHPSWPUSHACC;以上现场保护MOVTM1T,SCR;scr存储的是导通角SETBET0;开定时器0中断SETBTR0;开定时器0POPACC;以下恢复现场POPPSWRETI;**************INIT:MOVSP,#60H;设置中断等现场保护的堆栈区MOVTMOD,#12H;定时器0和1设置,此处定时器0设置为工作方式2,定时器1为方式1MOVTH0,#06H;12M晶振,方式2,定时250usMOVTL0,#06HMOVTH1,#0F0H;方式1,定时4ms,值由软件计算,也可以根据公式原理自己计算。MOVTL1,#60HMOVSCR,#2;开机设置导通角MOVAERF,#0;MOVSHIFT,#0;清零键盘移位单元SETBP3.3;外部中断0端口置1MOVFLAG1,#0;清零标志单元SETBFLAG1.6;置1,开机显示数据SETBIT0;下降沿中断SETBEX0;开外部中断0SETBET1;开定时器1中断SETBTR1;开定时器1SETBEA;开总中断,此位不开,则所有中断无效RETEND

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功