单片机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  需要触摸引脚才亮

【禁止转载!】

时间: 2024-10-22 08:28:33

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

单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态

由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在51单片机的P0口工作在普通IO口模式下,为准双向IO口.而工作在第二功能状态下时,则为标准的双向IO口.由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路. 在第二功能状态下,51单片机P0口采用的是互补推挽的输出方式.何为互补推挽呢?下面是它的等效电路图. 当P0第二功能作为输出时

STM32的推挽(push-pull)和开漏(open-drain)

[Open-Drain与Push-Pull]GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出.(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C.SMBus™或SPI™接口简化了I/O口的扩展.当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能.)但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)

单片机 IO口配置模式介绍

1.准双向口 2.双向口 双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来导致出错.而双向口则不需要做此动作,因为双向口有悬浮态. 准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口. 真正的双向口不需要任何预操作可直接读入读出. 1>准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低. 2>双向除用于数字输入输出外还可用于模拟输入输出,模拟

把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式

/**原理图以及各74HC595的IO口功能见上一例****/ #include "REG52.H"#define const_time_level 200 void initial_myself();void initial_peripheral();void delay_short(unsigned int uiDelayShort);void delay_long(unsigned int uiDelayLong);void led_flicker();void hc595_dr

STM32系列单片机IO口模式设置

STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和输出寄存器GPIOx_IDR和GPIOx_ODR,1个32位置位复位寄存器GPIOx_BSRR,1个32位锁定寄存器GPIOx_LCKR和2个32位复用功能选择寄存器GPIOx_AFRH和GPIOx_AFRL. GPIO的输出状态可以配置为推挽或开漏加上上拉或下拉.输出数据既可以来自输出数据寄存器,

51单片机IO口模拟UART串口通信

#include <reg52.h>#include "main.h"#include "smartcard.h"#include "stdio.h" typedef enum { false, true }bool; #if 0sbit PIN_RXD = P1^0; //接收发送同一个引脚定义sbit PIN_TXD = P1^0; //接收发送同一个发送引脚定义sbit PIN_CLK = P3^1; //智能卡时钟引脚定义sb

单片机小白学步系列(二十) IO口原理

IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理.也是查阅了不少资料,确保内容正确无误,花了很长时间写的.IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了简化方便理解.这样对于以后解决各种IO口相关的问题会有很大的帮助. IO口等效模型是本人独创的方法,通过此模型,能有效的降低对IO口内部结构理解的难度.并且经查阅资料确认,这种模型和实际工作原理基本一致. ========================================== 前面说了

单片机小白学步系列(二十二) IO口:蜂鸣器的使用/三极管的工作原理

2014-11-22更新:感谢Ireland同学的提醒,修改了PNP型三极管驱动电路,蜂鸣器从三极管的发射极改到了集电极,这样效果会更好,电路也更合理.同时增加了备注4. ====================================== 这一篇继续上一篇的内容,我们来做实验四:按键控制有源蜂鸣器,按下按键蜂鸣器响,释放按键不响. 蜂鸣器 实验四之前简单介绍下蜂鸣器.蜂鸣器有两种,无源蜂鸣器和有源蜂鸣器,一般用于发出报警的声音.声音是由震动产生的,大家都见过喇叭,喇叭里面有磁铁和线圈.

单片机小白学步系列(二十一) IO口:基本的LED和按键操作

本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮LED 2.一个按键控制LED,按下灯亮,释放灯灭 3.两个按键控制一个LED,一个键开灯,一个键关灯 实验一 点亮LED的例子前面入门篇已经讲过了,程序写起来很简单,Keil编写程序并编译生成HEX文件,烧写进单片机的过程,也做了完整详细的介绍. 点亮LED利用了IO口输出操作.简单复习一下,最核心的两句代码是: sbit LED = P1^0; LED = 0; 第一句定义LED为sbit型变量,对应