单片机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 需要触摸引脚才亮
【禁止转载!】
时间: 2024-10-22 08:28:33