蓝桥杯单片机竞赛学习计划(一)

蓝桥杯单片机学习计划之点亮LED灯


前言

昨天学校开始放寒假,由于之前正好报名参加了十五届蓝桥杯单片机竞赛,所以想利用寒假这段时间准备一下蓝桥杯的比赛,同时计划每天写一篇博客记录一下每日所学。今天当然是从最基础的点亮LED灯开始勒,Ready Go!


一、竞赛板简介

使用的板子是国信长天的CT107D,板载芯片为IAPF15F2K61S2,具有61K的FLASH和2K的SRAM,芯片的内部资源就不介绍了,手册上都有,直接上图:
蓝桥杯单片机竞赛板——CT107D

二、LED灯部分原理图介绍

板子上共焊有8个贴片红色LED灯,这八个LED灯的阴极分别连接到74HC573锁存器的8个输出端,而锁存器的八个输入端又连接到单片机的P0端口,所以如果想要驱动这八个LED灯,只需要给P0端口输出高低电平即可。原理图如下:
在这里插入图片描述
大家可以看到,锁存器的锁存使能端LE连接到Y4C,那Y4C又连接到哪里呢?我们一起来看下:
在这里插入图片描述
可以看到Y4C连接到了或非门74HC02的输出端,而74HC02的两个输入端又连接了Y4和WR,我们再来看下Y4和WR又分别连到了哪里(搁这套娃呢是吧!!!):
在这里插入图片描述
在这里插入图片描述
从上面两幅图片可以看到,Y4连到了74HC138译码器的Y4端口,译码器的译码输入端A、B、C又分别连接到单片机的P2.5、P2.6、P2.7三个端口,WR连到了单片机的P4.2端口,到此为止和LED灯相关的端口已经寻找完毕,看来想要驱动个LED灯还是挺麻烦的。
现在我们来理一下思路,想要控制LED灯,则需要让锁存器输入和输出同步,那么就需要给锁存使能端LE一个高电平,想要LE获得高电平,则需要给或非门HC02两个输入端都给低电平,WR已经通过J13跳线帽置零(IO口模式),则我们只需要让Y4输出低电平即可,那又怎么让Y4输出低电平呢?这时候就需看138译码器的真值表了:
在这里插入图片描述
从138译码器的真值表上可以看出,想要让Y4输出低电平,需要让译码输入端C输出高电平,A和B输出低电平。那么到这里,想要让LED灯点亮的思路我们已经分析完毕了,再来快速捋一遍:
给A和B(P2.5和P2.6)输出低电平,给C(P2.7)输出高电平,此时Y4输出低电平,Y4C输出高电平,锁存器输入和输出同步,这时候我们控制P0端口输出高低电平就可以使LED灯闪烁了,下面开始写程序。

三、代码部分

这边包含了两个库文件,第一个就不用多说了,鼠标右击添加即可,第二个使用到里面的左右移函数用来实现流水灯。然后定义一下三个译码输入端。

#include <STC15F2K60S2.H>
#include "intrins.h"

sbit ADDR_A = P2^5;//74HC138译码输入端
sbit ADDR_B = P2^6;
sbit ADDR_C = P2^7;

这边的延时函数是从STC-ISP下载软件中的延时计算器生成的。
主函数中先对P0和P2端口进行初始化配置,然后设置三个译码输入端。在循环中实现闪烁和流水灯的功能。

void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 23;
	j = 205;
	k = 120;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
void main()
{
	unsigned char temp=0x01;
	unsigned char i;
	P0M1=0x00;//P0端口配置为准双向口模式
	P0M0=0x00;
	P2M1&=0x1F;//P2端口配置为准双向口模式
	P2M0&=0x1F;
	ADDR_A=0;//74HC138选择Y4
	ADDR_B=0;
	ADDR_C=1;
	while(1)
	{
		for(i=0;i<4;i++)//闪烁两次
		{
			P0=~P0;
			Delay500ms();
		}
		Delay500ms();
		for(i=0;i<8;i++)//流水灯一次
		{
			P0=~temp;
			temp=_crol_(temp,1);
			Delay500ms();
		}
		P0=0xFF;//熄灭
		Delay500ms();
	}
}

四、下载程序

时钟配置为12M,点击下载,按下板子上的下载按键即可将程序烧录到单片机中。
在这里插入图片描述

五、效果

下载完程序后可以看到板子上的LED灯开始闪烁,效果图如下:
在这里插入图片描述

总结

今天主要对板子有一个初步的认识,然后编写程序实现了最基础的效果——点亮LED灯。期待下次的学习!

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值