找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1179|回复: 0
打印 上一主题 下一主题
收起左侧

这个单片机晶闸管触发电路程序电路缺些什么?为什么运行不了

[复制链接]
跳转到指定楼层
楼主
基于 51 单片机的双向晶闸管的导通实验实验环境: Proteus编程语言: 汇编编程环境: KEIL单片机: AT89C51晶振: 12MHz设计说明:本设计实现以下功能:1、 通过单片机控制晶闸管的触发信号,从而实现晶闸管的触发2、 通过七段数码管显示触发角大小3、 通过键盘操作调节晶闸管导通触发角,并控制显示的开关仿真图:图(1)仿真效果图图(2)交流电过零检测电路图(3)数码管连接电路图(4)晶闸管触发电路图(5)键盘连接电路图(6)单片机最小系统电路图(7)

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

系统总图部分源程序:
  1. ORG 000H
  2. AJMP MAIN
  3. ORG 0003H ;/外部中断 0 中断程序入口
  4. AJMP INT_0
  5. ORG 000BH
  6. AJMP TMR0
  7. ORG 001BH
  8. AJMP TMR1
  9. ORG 0040H ;/以上参看 51 单片机中断系统介绍
  10. MAIN: ACALL INIT;/调用初始化子程序。
  11. HERE: JNB FLAG1.7,HERE;/100ms 不到不进行键盘扫描
  12. CLRFLAG1.7;/清标志位
  13. HERE2:MOV A,P2;
  14. /1********有无按键扫描,
  15. ORL A,#70H;
  16. MOV P2,A
  17. MOV A,P2
  18. ANL A,#70H
  19. XRLA,#70H
  20. JZ NKEY;
  21. MOV KTEMP,A
  22. AJMP HERE
  23. NKEY: JB KTEMP.KEY0,KSET;/是 SET 键,转处理程
  24. AJMP KOUT;/以上键都不是,不处理
  25. KSET: INCSHIFT;/根据 SHIFT 的值做不同的处理
  26. SETB FLAG1.3;/按键状态标志位
  27. SETB FLAG1.6;/有键按下,开显示
  28. CLREX0 ; /停止触发
  29. MOV A,SHIFT
  30. CLRC
  31. SUBB A,#4;/SHIFT 的范围是 1~4,大于 4 归 0,即按四次 SET键保存设置退出按键模式
  32. JC KOUT
  33. MOV SHIFT,#0
  34. CLRFLAG1.3;
  35. MOV A,AERF;/将导通角转化为时间单位
  36. MOV R5,A
  37. MOV B,#9
  38. DIVAB
  39. MOV B,#2
  40. MUL AB
  41. MOV SCR,A
  42. SETB EX0
  43. AJMP KOUT
  44. DISOC:MOV A,SHIFT;/显示关程序,在按键调节状态无效
  45. JNZ KOUT
  46. CPLFLAG1.6
  47. AJMP KOUT
  48. KOUT: MOV KTEMP,#0;/每次按键的结束要清该单元
  49. AJMP SCRDIS;/1***************************
  50. KADD: MOV A,SHIFT;/加处理程序
  51. JZ KOUT
  52. CJNE A,#1,ADDT
  53. MOV R5,#1 ;/个位加 1
  54. AJMP KADD1
  55. ADDT: CJNE A,#2,ADDCON
  56. MOV R5,#10;/十位加 1
  57. AJMP KADD1
  58. ADDCON: MOV R5,#100;/百位加 1
  59. KADD1: MOV A,AERF
  60. CLRC
  61. ADDC A,R5
  62. MOV R5,A
  63. CLRC
  64. SUBB A,#170;/最大值检测
  65. JC KADD2
  66. MOV R5,#10
  67. KADD2: MOV AERF,R5
  68. AJMP KOUT
  69. SCRDIS: MOV A,AERF;/导通角显示处理,通过连续除 10,求的各位值
  70. MOV B,#10
  71. DIVAB
  72. MOV DIS3,B
  73. JB FLAG1.3,SHI;/按键状态所以位都显示,非按键状态,从左侧不是零的那一位开始显示
  74. JZ GEDIS
  75. SHI: MOV B,#10
  76. DIVAB
  77. MOV DIS2,B
  78. JB FLAG1.3,BAI
  79. JZ SHIDIS
  80. BAI: MOV B,#10
  81. DIVAB
  82. MOV DIS1,B
  83. JB FLAG1.3,QIAN
  84. JZ BAIDIS
  85. QIAN: MOV DIS0,A
  86. AJMP HERE;
  87. //;*******************
  88. GEDIS: MOV DIS2,#10;
  89. SHIDIS:MOV DIS1,#10
  90. BAIDIS:MOV DIS0,#10
  91. AJMP HERE;
  92. //;*************
  93. TMR0: PUSH PSW
  94. PUSH ACC
  95. DJNZ TM1T,RETIF;/定时时间到否?
  96. SETB P3.0;/导通晶闸管
  97. ACALL DELAY
  98. CLRP3.0;/导通后关闭导通电压
  99. CLRET0;/每周期只导通一次,故关闭定时器 0
  100. CLRTR0
  101. RETIF: POP ACC
  102. POP PSW
  103. RETI;
  104. //;************
  105. TMR1: PUSH PSW
  106. PUSH ACC
  107. MOV TH1,#0F0H
  108. MOV TL1,#60H;/恢复定时器 1 初值
  109. SETB RS0;/选择第二组 R 系列寄存器
  110. DJNZ KDLY,T1DIS;/键盘扫描定时检测
  111. MOV KDLY,#25
  112. SETB FLAG 1.7
  113. CPLFLAG 1.5;/闪烁用
  114. T1DIS: MOV P1,#00H;/每次更新显示数据前要清显示,以免花屏
  115. JNB FLAG1.6,RETIF1;/显示开关检测
  116. MOV DPTR,#LEDBTB;/查表
  117. MOV A,DSPC;DSPC //动态扫描位控制指针
  118. MOVC A,@A+DPTR
  119. MOV B,A
  120. MOV A,P2
  121. ANL A,#0F0H
  122. ORL A,B
  123. MOV P2,A
  124. JNB FLAG1.3,TMR11;/检测是否是按键状态,以决定是否进行闪烁显示
  125. MOV A,#4
  126. CLRC
  127. SUBB A,SHIFT
  128. CJNE A,DSPC,TMR11
  129. JNB FLAG1.5,TMR11
  130. MOV P1,#0;/闪烁,每 0.2 秒闪一次
  131. AJMP TMR12
  132. TMR11: MOV A,#DIS0
  133. ADD A,DSPC
  134. MOV R1,A
  135. MOV A,@R1
  136. MOV DPTR,#LEDTB
  137. MOVC A,@A+DPTR
  138. MOV P1,A
  139. TMR12: DEC DSPC
  140. JNB DSPC.7,RETIF1
  141. MOV DSPC,#3;/DSPC 范围是 0~3
  142. RETIF1: CLRRS0
  143. POP ACC
  144. POP PSW
  145. RETI
  146. LEDTB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H;
  147. LEDBTB: DB 14,13,11,7;/1*********** ;延时函数,用于满足晶闸管导通所需电流持续时间
  148. DELAY: MOV R7,#5
  149. DELAY1: MOV R6,#10
  150. DELAY2: DJNZ R6,DELAY2
  151. DJNZ R7,DELAY1
  152. RET;/1************;外部中断 0 中断处理程序,启动定时器 0,设置导通角
  153. INT_0: PUSH PSW
  154. PUSH ACC;/以上现场保护
  155. MOV TM1T,SCR;/scr存储的是导通角
  156. SETB ET0;/开定时器 0 中断
  157. SETB TR0;/开定时器 0
  158. POP ACC ;/以下恢复现场
  159. POP PSW
  160. RETI;
  161. //;**************
  162. INIT: MOV SP,#60H;/设置中断等现场保护的堆栈区
  163. MOV TMOD,#12H;/定时器 0 和 1 设置,此处定时器 0 设置为工作方式 2,定时器 1 为方式 1
  164. MOV TH0,#06H;12M //晶振,方式 2,定时 250us
  165. MOV TL0,#06H
  166. MOV TH1,#0F0H;/方式 1,定时 4ms,值由软件计算,也可以根据公式原理自己计算。
  167. MOV TL1,#60H
  168. MOV SCR,#2;/开机设置导通角
  169. MOV AERF,#0;
  170. MOV SHIFT,#0;/清零键盘移位单元
  171. SETB P3.3;/外部中断 0 端口置 1
  172. MOV FLAG1,#0;/清零标志单元
  173. SETB FLAG1.6;/置 1,开机显示数据
  174. SETB IT0;/下降沿中断
  175. SETB EX0;/开外部中断 0
  176. SETB ET1;/开定时器 1 中断
  177. SETB TR1;/开定时器 1
  178. SETB EA;/开总中断,此位不开,则所有中断无效
  179. RET
  180. END
复制代码

晶闸管触发电路.7z (60.28 KB, 下载次数: 9)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表