|
一个51单片机做的带过零检测的可控硅驱动,下面是仿真原理图:
利用单片机中断实现可控硅的过零检测,下面是源代码:
- #include <reg51.h>
- #include"intrins.h"
- sbit fan=P3^7;
- sbit pressed=P3^5;
- unsigned char fan_open=0;
- unsigned char int_time=0;
- unsigned char table[9]={20,30,40,50,60,70,80,90,100};
- unsigned char p=0;
- //中断子程序
- void ext0(void) interrupt 0
- {
- int_time++;
- fan_open--;
- if(fan_open==0) {fan_open=table[p];fan=0;}
- if(int_time>=100) {fan_open=table[p];int_time=0;fan=1;}
- }
- //延时子程序
- void delay(void)
- {
- unsigned int i,j;
- for(i=0;i<10000;i++)
- for(j=0;j<4;j++)
- _nop_();
- }
- /************主 程序*************/
- void main(void)
- {
- fan_open=table[p];
- IT0=1;
- EA=1;
- EX0=1;
- fan=1;
- while(1)
- {
- if(pressed==0) {if(p>=9) p=0;p++;}
- delay();
- }
- }
复制代码
|
评分
-
查看全部评分
|