码迷,mamicode.com
首页 > 其他好文 > 详细

单片机IO口标准双向,推挽,高阻,开漏模式 ,LED感应亮灭实验【原创!】

时间:2015-10-01 19:19:37      阅读:977      评论:0      收藏:0      [点我收藏+]

标签:单片机io口标准双向   高阻   开漏模式   led感应亮灭实验   

单片机IO口标准双向,推挽,高阻,开漏模式 ,LED感应亮灭实验 

 

 

 十一长假在家快烂了,没事儿做,DIY技术搞起来!


 【关于12C增强型单片机I/O口的工作类型实验研究】

 

文中动画视频效果下载: STC单片机头文件【51CTO-->单片机-->LED感应亮灭实验】

下载链接 链接:http://pan.baidu.com/s/1pJKK4w7   密码:a0re

   



 1、用强推模式,点亮一个LED 

 

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C4052AD
晶振:无要求
功能:用强推模式,点亮一个LED
连接说明:LED正极串接1K 电阻接P1 ^ 7,负极接到 MCU的P1 ^ 6
      对应的P1口  7654 3210
	P1M0 = 0x00; -->0000 0000
	P1M1 = 0xC0; -->1100 0000
P1^7,P1^6都设置为强推模式,可提供20ma的上拉电流

*/
#include <STC12C2052AD.H>
sbit LED1 = P1 ^ 7;
sbit LED2 = P1 ^ 6;
void main (void) {
  P1M0 = 0x00;P1M1 = 0xC0; 
  	LED1=1;
    LED2=0;
}



2、高阻模式,不输出电流

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C4052AD
晶振:无要求
功能:高阻模式,不输出电流
连接说明:LED正极串接1K 电阻接P1 ^ 7,负极接到 MCU的P1 ^ 6
      对应的P1口  7654 3210
	P1M0 = 0xC0; -->1100 0000
	P1M1 = 0x00; -->0000 0000


*/
#include <STC12C2052AD.H>
sbit LED1 = P1 ^ 7;
sbit LED2 = P1 ^ 6;
void main (void) {
  P1M0 = 0xC0;P1M1 = 0x00; 
  	LED1=1;
    LED2=0;
}



3、高阻模式,LED感应亮灭

技术分享

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C4052AD
晶振:无要求
功能:高阻模式,手指距离P3^7 2毫米远,LED感应亮灭,不需要手去碰到P3^7脚

连接说明:LED正极串接1K 电阻接VCC,负极接到 MCU的P1 ^ 7

供电说明:电脑的USB干扰要比移动电源的干扰要大,使用电脑USB与移动电源供电,效果对比明显!
*/

#include <STC12C2052AD.H>
sbit LED = P1^7;
sbit KEY = P3^7;

void main (void) {
   P3M0 = 0x80;P3M1 = 0x00;	//高阻
   LED=1; // LED = P1^7; 无需设定KEY的状态,因为不会被输出!


	while (1)
	{
		LED=~KEY;
	}

}








4、高阻模式,调整LED灯的感应距离


先放测试图!

// 电脑USB供电,测试报告:

// 分别调为 DELAY_MS 6 4  不用碰,周围干扰的就触发LED亮

看下图!


技术分享


// 分别调为 DELAY_MS 7 3  隔离2厘米 LED亮

看下图!


技术分享


// 分别调为 DELAY_MS 8     2  隔离2毫米 LED亮

看下图!

技术分享






// 分别调为 DELAY_MS 9 1  需要触摸引脚才亮

技术分享




上图感应灯,调整LED灯的感应距离 源代码!

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C4052AD
晶振:无要求
功能:高阻模式,手指距离P3^7 2毫米远,LED感应亮灭,不需要手去碰到P3^7脚

连接说明:LED正极串接1K 电阻接VCC,负极接到 MCU的P1 ^ 7

供电说明:电脑的USB干扰要比移动电源的干扰要大,使用电脑USB与移动电源供电,效果对比明显!
*/

#include <STC12C2052AD.H>
sbit LED = P1^7;
sbit KEY = P3^7;
 
void DELAY_MS (unsigned int a) {
    unsigned int i;
    while ( --a != 0 )  {
        for (i=0;i<=600;i++);
    }
}

void main (void) {
  P1M0 = 0x00;P1M1 = 0x00;  //普通
  P3M0 = 0x80;P3M1 = 0x00;	//高阻
 	LED=1;// LED = P1^7; 无需设定KEY的状态,因为不会被输出!
  KEY=0;// 始终拉低

	
	//调整感应灵敏度,从距离两厘米到必须触碰到引脚,LED感应灯亮
	while (1)	{
		P3M0 = 0x00;
		DELAY_MS(6);  
		P3M0 = 0x80;
	  DELAY_MS(4);		
		LED=~KEY;
		
	}

}
// 电脑USB供电,测试报告:
// 分别调为 DELAY_MS 6 4  不用碰,周围干扰的就触发LED亮
// 分别调为 DELAY_MS 7 3  隔离2厘米 LED亮
// 分别调为 DELAY_MS 8 2  隔离2毫米 LED亮
// 分别调为 DELAY_MS 9 1  需要触摸引脚才亮


【禁止转载!】




本文出自 “生命不息,折腾不止。” 博客,谢绝转载!

单片机IO口标准双向,推挽,高阻,开漏模式 ,LED感应亮灭实验【原创!】

标签:单片机io口标准双向   高阻   开漏模式   led感应亮灭实验   

原文地址:http://990487026.blog.51cto.com/10133282/1699765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!