根据小蜜蜂单片机学习总结的。。。。。纯属个人瞎写的。
让8路LED指示灯闪烁3遍然后熄灭,接着依次点亮led指示灯,最后依次熄灭指示灯,程序循环实现上述功能。
训练的重点是74HC138译码器,74hc573锁存器。
38译码器有6个输入端口,8个输出端口,其中有三个输入端口A,B,C控制最后Y0-Y7的输出。
573锁存器只有当LE为高电平时,输入等于输出,否则就锁存。
先写基础的main函数和延迟
#include "reg52.h" /*引入头文件*/
void Delay(unsigned int t) //延迟函数
{
while(t--);
while(t--);
void main() /*main函数*/
{
while(1) /*死循环*/
{
}
}
想让led闪烁,接端口,写Ledrunning函数
#include "reg52.h" /*引入头文件*/
HC138_A = P^5; //端口定义
HC138_B = P^6;
HC138_C = P^7;
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void Ledrunning()
{
HC138_C = 1;//选中Y4输出
HC138_B = 0;
HC138_A = 0;
P0 = 0x00;//点亮
Delay(60000);
Delay(60000);
P0 = 0xff;//熄灭
Delay(60000);
Delay(60000);
}
void main() /*main函数*/
{
while(1) /*死循环*/
{
Ledrunning();
}
}
然后实现闪烁3次然后熄灭
#include "reg52.h" /*引入头文件*/
HC138_A = P^5; //端口定义
HC138_B = P^6;
HC138_C = P^7;
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void Ledrunning()
{
int i;
unsigned char r; //定义一个循环变量
HC138_C = 1;//选中Y4输出
HC138_B = 0;
HC138_A = 0;
//循环3次,实现3次闪烁。
for(i=0;i<3;i++)
{
P0 = 0x00;//点亮
Delay(60000);
Delay(60000);
P0 = 0xff;//熄灭
Delay(60000);
Delay(60000);
}
//8个灯依次亮
for(i=1;i<=8;i++)
{
P0 = 0x00 <<i;//左移
Delay(60000);
Delay(60000);
}
//8个灯依次灭
for(i=1;i<=8;i++)
{
P0 = -(0x00 <<i);//左移
Delay(60000);
Delay(60000);
}
}
void main() /*main函数*/
{
while(1) /*死循环*/
{
Ledrunning();
}
}
常犯错误:P0中的P小写。