题目:在CT107D单片机综合训练平台上实现蜂鸣器与继电器的基本控制,首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述功能。
继电器原理图
蜂鸣器原理图
74H138使Y5输出低电平
完整代码
#include <reg52.h>
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
void delay(unsigned int t)
{
while(t--);
while(t--);
}
//打开Y4C
void open4()
{
HC138_A=0;
HC138_B=0;
HC138_C=1;
}
//闪烁3遍
void shanshuo()
{
unsigned int i;
open4();
for(i=0;i<3;i++)
{
P0=0x00;
delay(60000);
delay(60000);
delay(60000);
P0=0xff;
delay(60000);
delay(60000);
delay(60000);
}
}
//依次点亮led
void dianliang()
{
unsigned int i;
open4();
for(i=0;i<8;i++)
{
P0=0xff<<i;
delay(60000);
delay(60000);
delay(60000);
}
}
//打开Y5C
void open5()
{
HC138_A=1;
HC138_B=0;
HC138_C=1;
}
//继电器吸合
void xihe()
{
open5();
P0=0x10;
delay(60000);
delay(60000);
delay(60000);
}
//继电器断开
void duankai()
{
open5();
P0=0x00;
delay(60000);
delay(60000);
delay(60000);
}
//依次熄灭led指示灯
void ximie()
{
unsigned int i;
open4();
for(i=0;i<8;i++)
{
P0=~(0xff<<i);
delay(60000);
delay(60000);
delay(60000);
}
}
//蜂鸣器鸣叫
void mingjiao()
{
open5();
P0=0x40;
delay(60000);
delay(60000);
delay(60000);
}
//蜂鸣器关闭
void guanbi()
{
open5();
P0=0x00;
delay(60000);
delay(60000);
delay(60000);
}
//初始化,使板子刚上电时蜂鸣器等是处于关闭状态
void init()
{
open5();
P0=0x00;
}
void main()
{
while(1)
{
init();
shanshuo();
dianliang();
xihe();
duankai();
ximie();
mingjiao();
guanbi();
}
}