今天忽然之间用到了继电器,一时间心血来潮,疯的人就是这样 ,做事情总是这样的不可理喻!
其实对于初学者来说,继电器比流水灯还简单,流水灯有很多花样可以玩,而继电器他就是一个IO口控制,你只要往这个IO口输入一或者零它就工作了,很简单吧! 下面是我从网上复制过来的原理图 ,由于我电脑上的PROTEL没装上也就不自己画了, 偷懒下, 其实学会抄人家的东西也是一种不错的学习方法来的, 抄多了也就有手感了,所以我一直以来都是一不放对抄的, 但要抄得有价值对自己有好处这才叫不费工夫。
这个图是我从网上下来的 由于疯子的硬件连接的是P1^3口 所以程序上的大家注意点就行了。
继电器的外围电路也不难, 就一个三极管一个二极管就行了,三极管起到的是开关作用当你给他1的时候他就不导通。当你给它0的时候它就导通了,也就是继电器工作了, 还有那个二极管,它主要的作用是保护三极管的作用 ,因为线圈一停电的瞬间会有反电动势,不过要记得这里的二极管一定要反过来接!
/******************************
单片机疯子实验基地
SCM疯子
2009.9.3
用单片机控制继电器的闭合
献给初学单片机的朋友们希望我的
出现能够带给你们更多的帮助
*******************************/
#include<reg52.h>//头文件
#define uint unsigned int//宏定义 为下面的程序书写方便
#define uchar unsigned char//宏定义 为下面的程序书写方便
sbit key_1=P1^0;//定义按键1
sbit key_2=P1^1;//定义按键2
sbit jidianqi=P1^3;//定义控制继电器的IO口
/*******************************
以下是K毫秒的延时函数
工作环境12M
最大可延时65536秒
*******************************/
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
{;}
}
}
/**********主函数*************/
void main()
{
if(!key_1)//判断key_1按键是否有按下
{
delay(10);//延时10毫秒再判断,此句是为了消除按键的抖动效应
if(!key_1)//重新判断key_1按键是否有按下 ,如果有按下了 就执行括号里面的内容
{
jidianqi=0;//让变量jidianqi为0,启动继电器工作
}
}
if(!key_2) //判断key_2按键是否有按下
{
delay(10);//延时10毫秒再判断,此句是为了消除按键的抖动效应
if(!key_2)//重新判断key_2按键是否有按下 ,如果有按下了 就执行括号里面的内容
{
jidianqi=1;//让变量jidianqi为1,关闭继电器工作
}
}
}