前言
学习资料参考
课程资料:
【【小蜜蜂笔记】蓝桥杯大赛-单片机设计与开发基础技能与进阶强化教程】https://www.bilibili.com/video/BV1Bt41187hw?p=3&vd_source=c7e5b42e6c1438daf4523dc34387738c
LED基本控制可以参考以下笔记:
https://blog.csdn.net/zicheng_G/article/details/142025188?fromshare=blogdetail&sharetype=blogdetail&sharerId=142025188&sharerefer=PC&sharesource=zicheng_G&sharefrom=from_link
本节训练重点
让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述操作。
蜂鸣器与继电器的基本控制
1.原理图
在平台上调用蜂鸣器与继电器时,要注意板子上J6的连接情况。
1.1 继电器
NRELAY为低电平时,继电器通电吸合。
NRELAY受到ULM2003控制,ULM2003又受到了CH573控制,CH573又受到Y5C控制。
Y5C受到或非门控制,或非门受到Y5控制。
Y5受到三八译码器的控制。
关于三八译码器、或非门的内容可以参看LED基本控制的笔记。
ULM2003
2003也是一个7路反向器电路,即当输入端为高电平时,ULN2003输出端为低电平。
关于ULM2003的详细介绍,可以参考下方资料:
https://yngzmiao.blog.csdn.net/article/details/79787766?fromshare=blogdetail&sharetype=blogdetail&sharerId=79787766&sharerefer=PC&sharesource=zicheng_G&sharefrom=from_link
1.2 蜂鸣器
NBUZZ为低电平时,蜂鸣器响。
关于NBUZZ受控情况参看继电器。
2.编程思路
/*头文件声明区域*/
#include <REGX52.H>
/*变量声明区域*/
sbit HC138_A0_A = P2^5;
sbit HC138_A1_B = P2^6;
sbit HC138_A2_C = P2^7;
unsigned char i;
/*延时函数*/
void Delay(unsigned int xms) //@12.000MHz
{
while(xms--);
while(xms--);
}
/*138译码器Y口选中情况*/
void HC138_NumberY(unsigned char x)
{
switch(x)
{
case 4:
{
HC138_A0_A=0;
HC138_A1_B=0;
HC138_A2_C=1;
break;
}
case 5:
{
HC138_A0_A=1;
HC138_A1_B=0;
HC138_A2_C=1;
break;
}
}
}
/*初始化设置关闭无关影响*/
void Init()
{
HC138_NumberY(5);
P0=0x00;
}
/*LED基本控制*/
void LED_StartShow() //LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯
{
HC138_NumberY(4); //选中138译码器
for(i=1;i<=3;i++) //闪烁三次
{
P0=0x00;
Delay(10000);
P0=0xff;
Delay(10000);
}
for(i=0;i<9;i++) //依次点亮LED
{
P0=0xff>>i;
Delay(10000);
}
}
void LED_EndShow() //依次熄灭LED指示灯
{
HC138_NumberY(4); //选中138译码器
for(i=0;i<9;i++)
{
P0=~(0xff>>i);
Delay(10000);
}
}
/*继电器的基本控制*/
void Relay()
{
HC138_NumberY(5); //选中CH573
P0=0x10; //继电器吸合
Delay(10000);
P0=0x00; //继电器断开
}
/*蜂鸣器的基本控制*/
void Bell()
{
HC138_NumberY(5); //选中CH573
P0=0x40; //蜂鸣器响
Delay(10000);
P0=0x00; //蜂鸣器不响
}
/*主函数*/
void main()
{
while(1)
{
Init();
LED_StartShow();
Delay(1000);
Relay();
LED_EndShow();
Delay(1000);
Bell();
}
}