电路说明:INT1端接单片机IO口(P33),当P33输出高电平时,TLP521(或PC817)内部发光二极管不导通,光耦内部光电三极管截止,光耦输出信号为高电平,此时D22灭。
当P33输出低电平时,TLP521(或PC817)内部发光二极管导通,光耦内部光电三极管导通,光耦输出信号为低电平,此时D22灭。
光耦的主要作用是将信号通过光传输,减少了电信号传输带来的干扰,在双电源的情况下使用光耦的效果非常好。如果在一个电源的情况下,可以将“数字地”和“模拟地”分开, 最后在一点使用“一点接地”方式,如上图。
程序代码如下:
/*
***************************************************************************
* (C) Copyright 2010,菁远科技
* All Rights reserved.
*项目名称: JY-100B单片机学习开发系统
*本文件名称:flash_led.c (光耦PC817/TLP521的实验程序)
* 完成作者 : 张工
* 当前版本 : V1.0
* 完成日期 : 2010年6月1日
*淘宝店铺:
http://jy51mcu.taobao.com/
*技术博客:
http://www.ednchina.com/blog/ahai0306/
* 描 述 : 此程序是练习光耦PC817的使用,光耦在实际应用中很广泛,可以主
要学习其硬件电路,程序与控制IO口类似。
实验时用杜帮线将P33和右下角螺钉处的G插针相连。
* 本程序结构简单、合理,有帮助于初学者养成良好的编
* 程风格。
****************************************************************************
*/
#include
//调用头文件(单片机内部的寄存器定义)
/******本段为硬件I/O口定义********/
sbit TLP0 = P3 ^ 3;//光耦端口
/**************************************************
** 函数名称: dellay
** 入口参数:h(双字节型)
** 出口参数:无
** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
void dellay(unsigned int h) //短延时函数,最大0.6秒
{
while(h--); //0.01MS
}
/************主程序**************/
main()
{
while(1) //单片机在此反复执行
{
TLP0=0; //光耦导通,发光二极管D22亮指示
dellay(50000); //约0.5秒
dellay(30000); //约0.3秒,共0.8秒
TLP0=1; //光耦光断,发光二极管D22灭
dellay(50000); //约0.5秒
dellay(30000); //约0.3秒,共0.8秒
}
}