|
基于 51 單片機(jī)的雙向晶閘管的導(dǎo)通實(shí)驗(yàn)實(shí)驗(yàn)環(huán)境: Proteus編程語言: 匯編編程環(huán)境: KEIL單片機(jī): AT89C51晶振: 12MHz設(shè)計說明:本設(shè)計實(shí)現(xiàn)以下功能:1、 通過單片機(jī)控制晶閘管的觸發(fā)信號,從而實(shí)現(xiàn)晶閘管的觸發(fā)2、 通過七段數(shù)碼管顯示觸發(fā)角大小3、 通過鍵盤操作調(diào)節(jié)晶閘管導(dǎo)通觸發(fā)角,并控制顯示的開關(guān)仿真圖:圖(1)仿真效果圖圖(2)交流電過零檢測電路圖(3)數(shù)碼管連接電路圖(4)晶閘管觸發(fā)電路圖(5)鍵盤連接電路圖(6)單片機(jī)最小系統(tǒng)電路圖(7)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (36.56 KB, 下載次數(shù): 70)
下載附件
2021-5-3 01:05 上傳
系統(tǒng)總圖部分源程序:
- ORG 000H
- AJMP MAIN
- ORG 0003H ;/外部中斷 0 中斷程序入口
- AJMP INT_0
- ORG 000BH
- AJMP TMR0
- ORG 001BH
- AJMP TMR1
- ORG 0040H ;/以上參看 51 單片機(jī)中斷系統(tǒng)介紹
- MAIN: ACALL INIT;/調(diào)用初始化子程序。
- HERE: JNB FLAG1.7,HERE;/100ms 不到不進(jìn)行鍵盤掃描
- CLRFLAG1.7;/清標(biāo)志位
- HERE2:MOV A,P2;
- /1********有無按鍵掃描,
- ORL A,#70H;
- MOV P2,A
- MOV A,P2
- ANL A,#70H
- XRLA,#70H
- JZ NKEY;
- MOV KTEMP,A
- AJMP HERE
- NKEY: JB KTEMP.KEY0,KSET;/是 SET 鍵,轉(zhuǎn)處理程
- AJMP KOUT;/以上鍵都不是,不處理
- KSET: INCSHIFT;/根據(jù) SHIFT 的值做不同的處理
- SETB FLAG1.3;/按鍵狀態(tài)標(biāo)志位
- SETB FLAG1.6;/有鍵按下,開顯示
- CLREX0 ; /停止觸發(fā)
- MOV A,SHIFT
- CLRC
- SUBB A,#4;/SHIFT 的范圍是 1~4,大于 4 歸 0,即按四次 SET鍵保存設(shè)置退出按鍵模式
- JC KOUT
- MOV SHIFT,#0
- CLRFLAG1.3;
- MOV A,AERF;/將導(dǎo)通角轉(zhuǎn)化為時間單位
- MOV R5,A
- MOV B,#9
- DIVAB
- MOV B,#2
- MUL AB
- MOV SCR,A
- SETB EX0
- AJMP KOUT
- DISOC:MOV A,SHIFT;/顯示關(guān)程序,在按鍵調(diào)節(jié)狀態(tài)無效
- JNZ KOUT
- CPLFLAG1.6
- AJMP KOUT
- KOUT: MOV KTEMP,#0;/每次按鍵的結(jié)束要清該單元
- AJMP SCRDIS;/1***************************
- KADD: MOV A,SHIFT;/加處理程序
- JZ KOUT
- CJNE A,#1,ADDT
- MOV R5,#1 ;/個位加 1
- AJMP KADD1
- ADDT: CJNE A,#2,ADDCON
- MOV R5,#10;/十位加 1
- AJMP KADD1
- ADDCON: MOV R5,#100;/百位加 1
- KADD1: MOV A,AERF
- CLRC
- ADDC A,R5
- MOV R5,A
- CLRC
- SUBB A,#170;/最大值檢測
- JC KADD2
- MOV R5,#10
- KADD2: MOV AERF,R5
- AJMP KOUT
- SCRDIS: MOV A,AERF;/導(dǎo)通角顯示處理,通過連續(xù)除 10,求的各位值
- MOV B,#10
- DIVAB
- MOV DIS3,B
- JB FLAG1.3,SHI;/按鍵狀態(tài)所以位都顯示,非按鍵狀態(tài),從左側(cè)不是零的那一位開始顯示
- JZ GEDIS
- SHI: MOV B,#10
- DIVAB
- MOV DIS2,B
- JB FLAG1.3,BAI
- JZ SHIDIS
- BAI: MOV B,#10
- DIVAB
- MOV DIS1,B
- JB FLAG1.3,QIAN
- JZ BAIDIS
- QIAN: MOV DIS0,A
- AJMP HERE;
- //;*******************
- GEDIS: MOV DIS2,#10;
- SHIDIS:MOV DIS1,#10
- BAIDIS:MOV DIS0,#10
- AJMP HERE;
- //;*************
- TMR0: PUSH PSW
- PUSH ACC
- DJNZ TM1T,RETIF;/定時時間到否?
- SETB P3.0;/導(dǎo)通晶閘管
- ACALL DELAY
- CLRP3.0;/導(dǎo)通后關(guān)閉導(dǎo)通電壓
- CLRET0;/每周期只導(dǎo)通一次,故關(guān)閉定時器 0
- CLRTR0
- RETIF: POP ACC
- POP PSW
- RETI;
- //;************
- TMR1: PUSH PSW
- PUSH ACC
- MOV TH1,#0F0H
- MOV TL1,#60H;/恢復(fù)定時器 1 初值
- SETB RS0;/選擇第二組 R 系列寄存器
- DJNZ KDLY,T1DIS;/鍵盤掃描定時檢測
- MOV KDLY,#25
- SETB FLAG 1.7
- CPLFLAG 1.5;/閃爍用
- T1DIS: MOV P1,#00H;/每次更新顯示數(shù)據(jù)前要清顯示,以免花屏
- JNB FLAG1.6,RETIF1;/顯示開關(guān)檢測
- MOV DPTR,#LEDBTB;/查表
- MOV A,DSPC;DSPC //動態(tài)掃描位控制指針
- MOVC A,@A+DPTR
- MOV B,A
- MOV A,P2
- ANL A,#0F0H
- ORL A,B
- MOV P2,A
- JNB FLAG1.3,TMR11;/檢測是否是按鍵狀態(tài),以決定是否進(jìn)行閃爍顯示
- MOV A,#4
- CLRC
- SUBB A,SHIFT
- CJNE A,DSPC,TMR11
- JNB FLAG1.5,TMR11
- MOV P1,#0;/閃爍,每 0.2 秒閃一次
- AJMP TMR12
- TMR11: MOV A,#DIS0
- ADD A,DSPC
- MOV R1,A
- MOV A,@R1
- MOV DPTR,#LEDTB
- MOVC A,@A+DPTR
- MOV P1,A
- TMR12: DEC DSPC
- JNB DSPC.7,RETIF1
- MOV DSPC,#3;/DSPC 范圍是 0~3
- RETIF1: CLRRS0
- POP ACC
- POP PSW
- RETI
- LEDTB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H;
- LEDBTB: DB 14,13,11,7;/1*********** ;延時函數(shù),用于滿足晶閘管導(dǎo)通所需電流持續(xù)時間
- DELAY: MOV R7,#5
- DELAY1: MOV R6,#10
- DELAY2: DJNZ R6,DELAY2
- DJNZ R7,DELAY1
- RET;/1************;外部中斷 0 中斷處理程序,啟動定時器 0,設(shè)置導(dǎo)通角
- INT_0: PUSH PSW
- PUSH ACC;/以上現(xiàn)場保護(hù)
- MOV TM1T,SCR;/scr存儲的是導(dǎo)通角
- SETB ET0;/開定時器 0 中斷
- SETB TR0;/開定時器 0
- POP ACC ;/以下恢復(fù)現(xiàn)場
- POP PSW
- RETI;
- //;**************
- INIT: MOV SP,#60H;/設(shè)置中斷等現(xiàn)場保護(hù)的堆棧區(qū)
- MOV TMOD,#12H;/定時器 0 和 1 設(shè)置,此處定時器 0 設(shè)置為工作方式 2,定時器 1 為方式 1
- MOV TH0,#06H;12M //晶振,方式 2,定時 250us
- MOV TL0,#06H
- MOV TH1,#0F0H;/方式 1,定時 4ms,值由軟件計算,也可以根據(jù)公式原理自己計算。
- MOV TL1,#60H
- MOV SCR,#2;/開機(jī)設(shè)置導(dǎo)通角
- MOV AERF,#0;
- MOV SHIFT,#0;/清零鍵盤移位單元
- SETB P3.3;/外部中斷 0 端口置 1
- MOV FLAG1,#0;/清零標(biāo)志單元
- SETB FLAG1.6;/置 1,開機(jī)顯示數(shù)據(jù)
- SETB IT0;/下降沿中斷
- SETB EX0;/開外部中斷 0
- SETB ET1;/開定時器 1 中斷
- SETB TR1;/開定時器 1
- SETB EA;/開總中斷,此位不開,則所有中斷無效
- RET
- END
復(fù)制代碼
晶閘管觸發(fā)電路.7z
(60.28 KB, 下載次數(shù): 10)
2021-5-3 01:06 上傳
點(diǎn)擊文件名下載附件
|
|