蓝桥杯开发板驱动led灯,和51可是不一样,但是也是有些一样的地方。在学习的过程中,一定要去翻阅数据手册和原理图来编写代码。路还长,走的越稳,你走才能越长。
前沿:我们要有举一反三的思想。这里我给大家说说点亮led的思路,然后附上我写的代码。然后大家可以进行去开发,比如跑马灯,流水灯。红绿灯,等内容的进阶。如果大家想要这些进阶的话可以私信吗。如果我放在这个博客上,大家就没有思考的过程了,没有思考的过程就为 零。
首先点亮一个LED灯:
首先,点亮一个led灯,我们需要通过锁存器来进行互通。比如。M74HC573上有Y4C这个输入数据的端口,我们要将这个端口要与下面的或非门相同,然后进入74HC138锁存器中。这样才能实现点亮一个led灯。
其次,我们应该想怎么才能让他们串联,也就是让Y4C打通,我们会看到,P25,P26,P27。三个引脚,C B A。
Y4 :1 0 0;对应LED锁存器。
Y5 : 1 0 1;对应蜂鸣器继电器的锁存器。
Y6: 1 1 0;对应数码管段选。
Y7: 1 1 1;对应数码管位选。
当我们打通Y4的通道之后,就可以,将数据输入的单片机当中,来进行编写了
下面是74HC138的数据手册中的真值表
给大家解释解释怎么看这个真值表。首先我们看Y4的行与列,它对应这的字母是L也就是低电平。然后看前面的Select中的CBA,为H L L 。我们用二进制翻译过来就是1 0 0 。也就是上面说的打开Y4通道。
在看74HC573的锁存器:
8为数据输入,输出,就是二进制转化为十六进制用bcd码来进行识别,然后点亮你所想点亮的灯。
#include <STC15F2K60S2.H>
sbit A_HC_573 = P2^5;//定义引脚
sbit B_HC_573 = P2^6;
sbit C_HC_573 = P2^7;#define uchar unsigned char
#define uint unsigned intvoid delay_led(uint z)//延时函数
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0; y--);}
uchar i;
void light_led()
{
C_HC_573 = 1;//Y4
B_HC_573 = 0;
A_HC_573 = 0;
for(i = 0; i <= 4;i++ )
{
P0 = 0x00;
delay_led(600);
delay_led(600);
P0 = 0xff;
delay_led(600);
delay_led(600);
P0 = 0x66;//蜂鸣器继电器
delay_led(600);
delay_led(600);
P0 = 0xff;
delay_led(600);
delay_led(600);
}
for(i = 1;i<=8;i++)
{
P0 = 0xff >> i;
delay_led(600);
delay_led(600);
}
for(i = 1;i<=8;i++)
{
P0 = (0xff >> i);
delay_led(600);
delay_led(600);
}}
void main()
{
//light_led();
//light();
while(1)
{
light_led();
//light();
}
}
到最后了,希望大家细心看看,慢慢钻研,可能我也有错误,请大家指出,互相交流。