继电器和蜂鸣器的初始化
备战2022蓝桥杯大赛记录自己学习过程 希望可以取得一个不错的名次 加油 记录内容大部分全来自b站小蜜蜂老师讲解 yyds 小蜜蜂老师
下面的实验基于Led中的代码进行完善,并对继电器和蜂鸣器进行初始化及相应功能操作。
从上面原理图中我们可以看出Buzzer 和realy是接到ULN2003上面的该芯片的内部电路
在引脚输出的时候会取反。而该锁存器的选通受Y5控制 Y5 由74HC138控制CBA分别为101的时候选通
#include "reg52.h"
sbit HC138_C = P2^7;
sbit HC138_B = P2^6;
sbit HC138_A = P2^5;
void Init_74HC138(unsigned char n)
{
switch(n)
{
case 4:P2 = P2 | 0x1f; P2 = 0x80; break;
case 5:P2 = P2 | 0x1f; P2 = 0xa0; break;
case 6:P2 = P2 | 0x1f; P2 = 0xc0; break;
case 7:P2 = P2 | 0x1f; P2 = 0xe0; break;
}
}
void InitSystem(void)
{
HC138_C = 1;
HC138_B = 0;
HC138_A = 1;
P0 = 0x00;
}
void delay(unsigned int t)
{
while(t--);
while(t--);
}
void LedRunning(void)
{
unsigned char i = 0;
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;
for(i =0;i<3;i++)
{
P0 = 0x00;
delay(20000);
delay(20000);
P0 = 0xff;
delay(20000);
delay(20000);
}
for(i = 0;i<8;i++)
{
P0 = 0xff << i;
delay(2000);
delay(2000);
}
HC138_C = 1;
HC138_B = 0;
HC138_A = 1;
P0 = 0x10;
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;
for(i = 0;i<8;i++)
{
P0 = ~(0xff <<i);
delay(2000);
delay(2000);
}
HC138_C = 1;
HC138_B = 0;
HC138_A = 1;
P0 = 0x40;
}
void main(void)
{
InitSystem();
while(1)
{
LedRunning();
}
}
每天进步一点点 加油 ^@^
|