当前位置: 首页 > news >正文

【蓝桥杯单片机记录】IO基础与LED控制

目录

一、IO基础

1.1 IAP15F2K61S2芯片原理图

1.2不同工作模式

二、新建工程的一些补充

2.1 keil中没有IAP15F2K61S2的头文件

解决:在isp软件中找到如下​编辑

2.2keil中的芯片选择

2.3推荐字体

三、sbit关键字

四、LED控制

4.1原理图

4.2不能直接通过IO口对LED进行控制

4.3找到“钥匙”->打开通往LED的“门”

4.3.1 74HC138译码器

4.4部分代码解读

4.5例子


一、IO基础

1.1 IAP15F2K61S2芯片原理图

  • 封装:LQFP44
  • IO数量:42 6组(P00-P07,P10-P17......),其余两个IO口 VCC供电,GND接地;
  • P10/RXD2/CCP1/ADC0 意味着单片机每个引脚有多个功能;串口2的引脚/ADC模拟信号采集/CCP的输出/普通的IO接口
  • 由于封装的限制(只有44个IO口),所以一个IO口具有多个功能;
  • P17 XTAL == 外接的晶振引脚
  • 外接晶振的需求:用外接晶振作为时钟源,比较稳定
  • 工作模式:准双向口/弱上拉(标准51模式/默认),推挽输出/强上拉,高阻输入,开漏输出

1.2不同工作模式

  • 准双向口读取外部数据,需要先锁存一个1

二、新建工程的一些补充

新建工程

2.1 keil中没有IAP15F2K61S2的头文件

解决:在isp软件中找到如下

2.2keil中的芯片选择

2.3推荐字体

三、sbit关键字

sbit L1 = P0^0; //P0可位寻址 L1=1;//P0不可位寻址 P0 = 0x01;
//sbit -> 特殊功能寄存器某一位(可位寻址)

四、LED控制

4.1原理图

4.2不能直接通过IO口对LED进行控制

控制LED,不能直接对IO口进行操作,因为P0口可以同时驱动多个外设

4.3找到“钥匙”->打开通往LED的“门”

4.3.1 74HC138译码器

  • 如果想要控制LED,那么需要给Y4置低电平,如果想要给Y4置低电平,那么就需要了解译码器的“密码”:
  • 再经过或非门,Y4C就可以置高电平“1”
  • 或非门:具有多端输入和单端输出的门电路。当任一输入端(或多端)为高电平(逻辑“1”)时,输出就是低电平(逻辑“0”);只有当所有输入端都是低电平(逻辑“0”)时,输出才是高电平(逻辑“1”)

4.4部分代码解读

  • 打开锁存器: P2 = ((P2 & 0x1f) | 0x80); //P2 ->100XXXX X //开
  • 0x1f:0001 1111
  • 0x80 1000 0000
  • &:用来清零
  • |:用来置1
  • 关闭锁存器: P2 &= 0x1f; //P2 ->000XXXX X //关

4.5例子

(LED间隔交替闪烁)

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//函数定义区域
//蜂鸣器关闭
void cls_buzz(void)
{P2 = (P2 & 0x1F | 0xA0);P0 = 0x00;P2 &= 0x1F;
}//延时函数
void Delay100ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();_nop_();i = 5;j = 144;k = 71;do{do{while (--k);} while (--j);} while (--i);
}//LED
void LED(unsigned int x)
{P2 = ((P2 & 0x1f) | 0x80);P0 = x;P2 &= 0x1f;}//程序主体
void main()
{cls_buzz();while(1){LED(0x55);Delay100ms();LED(~0x55);Delay100ms();			}
}

http://www.lryc.cn/news/296440.html

相关文章:

  • java 回答问题
  • 彻底学会系列:一、机器学习之线性回归(一)
  • FPGA:我的零基础学习路线(2022秋招已上岸)持续更新中~
  • 阿里云游戏服务器多少钱一个月?
  • Win32 SDK Gui编程系列之--ListView自绘OwnerDraw(续)
  • Android 应用添加系统签名权限的几种方式实现介绍
  • 麒麟V10+飞腾处理器源码编译qt
  • MacOS 查AirPods 电量技巧:可实现低电量提醒、自动弹窗
  • python介绍,安装Cpython解释器,IDE工具pycharm的使用
  • 服务器安装Docker (centOS)
  • 解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)
  • 备战蓝桥杯---搜索(进阶4)
  • 51单片机基础(C语言):定时器时钟
  • 单片机无线发射的原理剖析
  • Redis的过期键的删除策略
  • 放假--寒假自学版 day1(补2.5)
  • LLM(5) | Encoder 和 Decoder 架构
  • CV | Medical-SAM-Adapter论文详解及项目实现
  • C++初阶:容器(Containers)vector常用接口详解
  • flink写入es的参数解析
  • 逆向工程:揭开科技神秘面纱的艺术
  • 决策树的相关知识点
  • 【数据结构】单向链表实现 超详细
  • Opencc4j 开源中文繁简体使用介绍
  • vue 下载二进制文件
  • 数据结构之堆排序
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件
  • 读论文:DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior
  • 基于微信小程序的新生报到系统的研究与实现,附源码
  • 分享一下 uniapp 打包安卓apk