单片机MISSION1 2021.3.13

前言

蓝桥杯单片机竞赛 而学单片机。
开发板是 国信长天单片机竞赛实训平台 搭载有 IAP15F2K61S2单片机
软件采用的是 Keil uVision4 (V4.60.6.10) 以及 STC-ISP (V6.86R)。

Mission 1 LED

原理

LED模块原理图

LED,即发光二极管。有亮(1)和灭(0)两种状态。原理图中,VCC的值一般为5V,代表逻辑1。以最上方的LED灯 L1 为例,右侧电压为 1 ,高电平。若左侧电压为 1 高电平,则 L1 熄灭;为 0 低电平,则 L1 亮。因此, L1 的亮灭取决于 Q119 管脚,其他同理。

发光二极管通过 锁存器U6 与单片机相连。单片机的数据不会直接送到发光二级管上,而是送到锁存器上。

Y4C 是 锁存器U6 的选择端。只有当 Y4C 为 1 的时候,锁存器U6才会被选中。(之所以有选中之说,是因为除了U6还有U7、U8等锁存器,选中哪个,哪个工作)

如果锁存器没有被选中,那么数据不会从锁存器输出。也就是说,我们要使得有数据输出到LED上,那么 Y4C 必须是 1 。

如何选中锁存器

Y4C由单片机控制。
Y4C
若要使得 Y4C=1 ,那么Y4=0、WR=0 同时成立。比赛时,WR默认接地即为0 。 因此,Y4C=1 的充要条件是 Y4=0。

Y4
译码器74HC138 的工作特点是,工作时,只有一个端口会输出 0 ,其余输出 1 。因此,在这里我们要让 Y4 端输出 0 。
输出端口的选择由 P27 P26 P25 决定,当 P27 P26 P25 = 1 0 0 (二进制的 4)时,Y4端输出 0 。

至此,我们完成了锁存器的选择。

总结,单片机用 P2 口的高三位来选择锁存器。

锁存器的数据输出

锁存器的数据输出由 P0 口决定。
P0
以上图为例,当 P0=0 0 0 0 1 1 1 1 时,那么Q8 Q7 Q6 Q5为低电平,LED亮, Q4 Q3 Q2 Q1为高电平,LED灭。

代码

下面展示 示范代码

* 硬件环境:IAP15F2K61S2单片机,单片机内部振荡器频率:11.0592M
* 注意事项:包含STC15F2K60S2.H头文件,里面包含了所有的STC15系列的寄存器定义,
            此头文件可在STC-ISP软件中生成,要用到_nop_()必须要包含intrins.h
			头文件
* 日期版本:2019-6-24/V2.0
*******************************************************************************/
#include "STC15F2K60S2.H" 
#include "intrins.h"

//定义关闭蜂鸣器
void cls_buzz(void)
{
	P2 = (P2&0x1F|0xA0);
	P0 = 0x00;
	P2 &= 0x1F;
}

//定义延时200ms
void delay()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 9;
	j = 104;
	k = 139;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main(void)
{
	cls_buzz(); //关蜂鸣器
    while(1) 
    {
        P2 = ((P2&0x1f)|0x80);   //选择U6锁存器
		P0 = 0xff;  //LED关 P0=11111111
		P2 &= 0x1f;  //不选U6锁存器
        delay(); //延时
        
        P2 = ((P2&0x1f)|0x80);
		P0 = 0x00;  //LED开 P0=00000000
		P2 &= 0x1f; //不选U6锁存器
        delay(); //延时
    }
}

代码简析

关蜂鸣器是基本操作,用不到蜂鸣器的时候最好都用上面的代码关掉。

这里要用到延时函数 delay(),如果不延时,那么很快LED就会熄灭,我们为了让LED的状态保持一段时间,所有要用到延时函数。

延时函数 delay() 可以由stc-isp软件自动生成。(比赛可用)
delay()
接下来我们来看 main

第一部分调用上面定义的 cls_buzz() 关蜂鸣器

第二部分 while(1) 循环 一直执行
while(1)中 就是上面原理部分讲到的对 P2 P0 的控制,可以不用逻辑运算的形式给出,可以直接用二进制赋值。

总结

LED亮灭控制,只要控制 P2 P0 口就可以完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值