您的位置:首页 > 其它

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

2015-10-01 16:11 302 查看
单片机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  需要触摸引脚才亮


【禁止转载!】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息