51 마이크로 컨트롤러는 I/O 포트의 고임피던스 상태를 사용하여 LED 조명의 터치 제어를 실현합니다.

51 마이크로 컨트롤러는 I/O 포트의 고임피던스 상태를 사용하여 LED 조명의 터치 제어를 실현합니다.

1. 개요

이 기사에서는 I/O 포트의 높은 임피던스 상태를 사용하여 터치 제어 LED 조명을 구현하는 실험을 소개합니다. 이 실험에서는 손이 P3.7 핀을 터치하고 레벨 신호를 변경하여 조명을 켜고 끄는 것을 제어합니다.

2. 실험과정

2.1.실험재료

이름 모델 수량
마이크로컨트롤러 STC12C2052 1
LED 랜턴 없음 1
수정 발진기 12MHZ 1
정전 용량 30pf 2
저항 100옴 1
브레드보드 없음 1
연결선 없음 5

2.2 회로 원리

P3.7 인터페이스의 표시등을 P1.7 인터페이스에 연결하고 회로도에 따라 다른 인터페이스를 연결하십시오.
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

2.3 실험절차

/*************************************************************
* 程序名: IO口高阻模式实现触控控制LED灯
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/

#include<STC12C2052AD.H>

// 定义P1.3 和 P1.2接口
sbit LED1 = P1^7;
sbit KEY = P3^7;


void main(void){
    
    
	//设置P1接口为准双口模式
	P1M0 = 0X00;
	P1M1 = 0X00;
	//设置P3.7接口为高阻模式
	P3M0 = 0X80;
	P3M1 = 0X00;
	// 定义接口高电平
	LED1 = 1;

	while(1){
    
    
		LED1 = ~KEY;
	}

}

P3.7 인터페이스에 손가락을 대면 표시등이 켜지고 떠나면 꺼집니다. 그러나 실제 사용에서는 손가락이 P3.7 인터페이스에 닿기 전에 조명이 켜지는데 이는 간섭으로 인해 발생합니다. 아래에 최적화되어 있습니다.

  • 먼저 P3.7을 준이중 포트 + 지연으로 설정하여 P3.7을 건드리지 않고 낮은 수준의 제어 표시등이 켜지는 것을 방지합니다. 손이 P3.7에 닿기 시작하면 인터페이스는 준이중 포트에 있고 간섭 전류를 GND로 끌어와 간섭의 일부를 제거할 수 있는 출력 기능이 있습니다.
  • P3.7을 고임피던스 상태로 설정할 때 지연을 추가하여 일부 간섭을 다시 제거하십시오.
  • 최적화 후에는 이전보다 훨씬 안정적이며, 손가락이 P3.7 및 P1.0 핀에 닿을 때만 LED 표시등이 켜집니다.
/*************************************************************
* 程序名: IO口高阻模式实现触控控制LED灯
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/

#include<STC12C2052AD.H>

// 定义P1.3 和 P1.2接口
sbit LED1 = P1^7;
sbit KEY = P3^7;

/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
    
    
	unsigned int i;
	while( --a != 0){
    
    
		for(i = 0; i < 600; i++);
	}
}

void main(void){
    
    
	//设置P1接口为准双口模式
	P1M0 = 0X00;
	P1M1 = 0X00;
	//设置P3.7接口为高阻模式
	P3M0 = 0X80;
	P3M1 = 0X00;
	//初始化高低电平
	LED1 = 1;
	KEY = 0;

	while(1){
    
    
		//当手靠近还未触摸到P3.7引脚,感应到微电流后就会改变状态使控制灯的开关不稳定。
		//设置为准双口,+ 延迟 过滤微电流影响触摸不稳定现象。
		P3M0 = 0X00;
		DELAY_MS(2);
		P3M0 = 0X80;
		DELAY_MS(2);
		LED1 = ~KEY;
	}

}
터치 조명 효과

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/m0_38039437/article/details/134585185