Prefacio -----

Debido a que quiero participar en la competencia eléctrica, entré en contacto con la microcomputadora de un solo chip STC89C52RC (A51) 

 

 

STC89C52RC pin función  

1 fuente de alimentación:
①VCC - fuente de alimentación del chip, conectada a +5V 
②VSS - terminal de tierra 

2. Reloj:   XTAL1, XTAL2 - entrada y salida de inversión   del circuito
del oscilador de cristal . 3. Línea de control:   hay 4 líneas de control:           ALE/PROG: permiso de bloqueo de dirección/pulso de programación de EPROM en chip            ① Función ALE: se utiliza para bloquear la dirección inferior de 8 bits enviada por el puerto P0            ② Función PROG: EPROM en chip Chip, durante la programación de EPROM, este pin ingresa pulsos de programación.          PSEN: señal estroboscópica de lectura de ROM externa .          RST/VPD: fuente de alimentación de reinicio/espera.                   ① Función RST (Reinicio): reinicio del terminal de entrada de señal.                   ② Función VPD: en caso de falla de energía Vcc, conéctese a la fuente de alimentación de respaldo.          EA/Vpp: selección de ROM interna y externa/fuente de alimentación de programación de EPROM en chip.               ① Función EA: terminal de selección de ROM interna y externa.               ② Función Vpp: para chips con EPROM en chip, la fuente de alimentación de programación Vpp se aplica durante la programación de EPROM. 4. Líneas de puertos de E/S: P0, P1, P2 y P3 son cuatro puertos de 8 bits.  















    El puerto P0 es un puerto bidireccional de tres estados, comúnmente conocido como puerto de bus de datos, porque solo este puerto se puede usar directamente para operaciones de lectura/escritura en la memoria externa. El puerto 0 también se utiliza para dar salida a la dirección inferior del mapa 1 de 8 bits de la memoria externa. Dado que es una salida de tiempo compartido, se debe agregar un latch externamente para enclavar los datos de la dirección, la dirección se enclava y la señal usa ALE.  
     El puerto P1 es un puerto de E/S especialmente para usuarios y es un puerto casi bidireccional.  
     El puerto P2 se utiliza como línea de dirección de 8 bits cuando se amplía el sistema esclavo. Cuando la memoria externa no está expandida, el puerto P2 también se puede usar como una línea de puerto de E/S de usuario, y el puerto P2 también es un puerto casi bidireccional.  
     El puerto P3 es un puerto de doble función, y cada bit de este puerto se puede definir de forma independiente como la primera función de E/S o la segunda función de E/S. Cuando se utiliza como primera función, el funcionamiento es el mismo que el del puerto P1.

1. Marquesina

 

 Utilice el programa para controlar el nivel de salida de P20-P27 (0,1) para realizar el ciclo de iluminación de los diodos emisores de luz del módulo LED D1-D8 y completar el efecto de marquesina.

/*定义LED引脚*/
 #define LED P2

/*延迟函数*/
void Delay(unsigned int a)
{
	while(a--);
}

//流水灯
void Running()
{
	 u8 i;
	 LED = 0xfe;
	 Delay(50000);//大约延时450ms	
	 while(1)
	 {
		 for(i = 0;i<7;i++)
		 {
			 LED = _crol_(LED,1);	//左移一位  0xfe(11111110)--->0xfd(11111101)
			 Delay(50000);
		 }
		 for(i = 0;i<7;i++)
		 {
			 LED = _cror_(LED,1);	//右移一位  0x7f(01111111)--->0xbf(10111111)
			 Delay(50000);
		 }
	 }
}

Defina el LED como pin P2, a P2 se le asigna un valor de 0xfe, el binario es 11111110, un total de ocho bits son respectivamente para P27-P20, cuando el pin P20 es 0-bajo voltaje, la luz está encendida y 1-alto el voltaje está apagado. Cicle a la izquierda, a la derecha y espere 450 ms para encender el siguiente

2. Botón independiente para controlar el zumbador

 

 En la versión experimental, existen 4 botones independientes k1-k4, respectivamente para los pines P30-33 del STC80C51, cuando se presiona el botón se pone a tierra el pin correspondiente, es decir, se le asigna un valor de 0. Determine cuál de P30-P33 es 0 a través del programa, correspondiente a la pulsación de la tecla.

El BEEF del zumbador está conectado al pin OUT5 del motor paso a paso de cuatro fases inalámbrico ULN2003D, y la señal de este pin se ve afectada por el pin P25 correspondiente a IN5.

 /*定义蜂鸣器*/
 sbit BEEP = P2^5;

void C_buzzer()
{
		 while(1)
	 {
		 if(P31==0)//按下关闭
		 {
			 BEEP=1;
			 while(1)
			 {
				 if(P31==0)//当再次按下时,再次启动
				 {
					 break;
				 }
			 }
		 }
		 else
		 {
			 BEEP = ~BEEP;
			 Delay(50000);
		 }
	 }
}

Supongo que te gusta

Origin blog.csdn.net/m0_61598337/article/details/131465603
Recomendado
Clasificación