模块训练题目:
一、蜂鸣器电路图
1.电路图
2.电路分析
138译码器控制Y5,Y5控制Y5C,Y5C低电平控制芯片开启P0口控制ULN2003继而控制蜂鸣器端口和继电器端口
二、程序代码
1.138译码器控制端口函数
建立初始化函数选择锁存器
2.实现题目功能
在LED代码的基础上写整个代码
void InitHC138(unsigned char n)
{
switch(n)
{
case 4:
HC138_C=1;
HC138_A=0;
HC138_B=0; //Y4输出低电平
break;
case 5:
HC138_C=1;
HC138_A=0;
HC138_B=1;
break;
case 6:
HC138_C=1;
HC138_A=1;
HC138_B=0;
break;
case 7:
HC138_C=1;
HC138_A=1;
HC138_B=1;
break;
}
}
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDRunning()
{
unsigned char i;
InitHC138(4);
for(i=0;i<3;i++)
{
P0=0x00;
Delay(60000);
Delay(60000);
P0=0XFF;
Delay(60000);
Delay(60000);
}
for(i=0;i<=7;i++)
{
P0=0xFE<<i;
Delay(60000);
Delay(60000);
}
InitHC138(5);
P0=0x10;
Delay(60000);
Delay(60000);
P0=0x00;
InitHC138(4);
for(i=0;i<=8;i++)
{
P0=~(0xFF<<i);
Delay(60000);
Delay(60000);
}
InitHC138(5);
P0=0X40;
Delay(60000);
Delay(60000);
P0=0x00;
}
void main()
{
while(1)
{
LEDRunning();
}
}
3.优化代码
初始化138译码器函数的优化