蓝桥杯框架-LED蜂鸣器继电器
蓝桥杯框架-LED蜂鸣器继电器
- 一,新建工程文件
- 二,配置keil
- 三,完善框架
一,新建工程文件
在桌面上新建一个文件夹:用于存放所有工程文件
在文件夹中再建立一个文件夹DEMO_01:这是我们的第一个工程文件
在第一个工程文件中建立以下文件夹:
Driver用于存放底层框架
User用于存放main.c和keil生成的文件
在Driver中添加led.c和led.h文件
打开keil,按下图点击
然后会跳出一个弹窗,在这里选择工程存放的位置,一定要点进User中,取工程名字为DEMO_01
又会跳出一个选择芯片型号的弹窗:按下图选择芯片型号
出现下图的情况点击“是”
二,配置keil
点击“品”,建立两个组:这两个组是和桌面上的对应的
选中这个Driver,点击Add Files,找到桌面上的Driver,将led.c添加进来
可以看到keil的文件管理:led.c已经添加进来了,那led.h怎么添加呢?
在扳手中添加,如下图:将led.h文件的上一级文件Driver添加进来即可
接下来添加main.c文件:Ctrl N+Ctrl S,出现以下界面
左上角的Text1是我们Ctrl N是生成的文件,我们将他保存在User下面,并且命名为main.c,如下图操作
其实我们刚才只是将main.c添加到了桌面上,并没有添加到keil中:所有点击“品”,按下图操作
上面完成后出现下图就对了(因为led.c没有写东西,而且没有编译,所有led.h没有显现出来)
三,完善框架
在.c文件中右键,导入头文件:keil自动帮我们加入了单片机的头文件,我们将他Ctrl X下来,粘贴到led.h中
如何进入led.h?
在.c文件中右键,按下图按键,就可以进入.h文件;
同理.h文件进入.c也是相同的操作
main.c中
/*头文件区域*/
#include <STC15F2K60S2.H>//单片机寄存器专用头文件
#include <Led.h>//Led底层驱动专用头文件/*变量声明区域*/
unsigned char Led_Pos;
unsigned char ucLed[8] = {0,0,0,0,0,0,0,0};//Led显示数据存放数组/*任务函数区域*/
void Led_Proc()
{}
/* 定时器0中断初始化函数 */
void Timer0Init(void) //1毫秒@12.000MHz
{AUXR &= 0x7F; //定时器时钟12T模式TMOD &= 0xF0; //设置定时器模式TL0 = 0x18; //设置定时初始值TH0 = 0xFC; //设置定时初始值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时ET0 = 1; //定时器中断0打开EA = 1; //总中断打开
}
/* 定时器0中断服务函数 */
void Timer0Server() interrupt 1
{ if(++Led_Pos== 8) Led_Pos= 0;Led_Disp(Led_Pos,ucLed[Led_Pos]);
}/* Main */
void main()
{Timer0Init();while (1){Led_Proc();}
}
led.c中
#include <Led.h> //不频繁开关Led :防止电流响声和P0互斥,Seg没事void Led_Disp(unsigned char addr,enable)
{static unsigned char temp = 0x00; //重复调用时不会赋初值static unsigned char temp_old = 0xff;if(enable) //开-与1或 不变-与0或temp |= 0x01 << addr;else //关-与0与 不变-与1与temp &= ~(0x01 << addr);if(temp != temp_old) //temp改变才进入if{P0 = ~temp; //对P0赋值P2 = P2 & 0x1f | 0x80; //开译码器-开锁存器P2 &= 0x1f; //关译码器-关锁存器temp_old = temp; //使二者相等,下次temp改变才进入if}
}
led.h中
#include <STC15F2K60S2.H>void Led_Disp(unsigned char addr,enable);
框架移植完毕,我们可以随意操作led了:在框架中,Led_Proc函数是空的,加入以下三句话就可以点亮第一,三,四个led
相关文章:

蓝桥杯框架-LED蜂鸣器继电器
蓝桥杯框架-LED蜂鸣器继电器 一,新建工程文件二,配置keil三,完善框架 一,新建工程文件 在桌面上新建一个文件夹:用于存放所有工程文件 在文件夹中再建立一个文件夹DEMO_01:这是我们的第一个工程文件 在第…...

uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)
完成了商品的添加和展示,下面的文字将继续进行商品页面的处理,主要为商品信息的修改的页面以及后天逻辑的处理。 本文主要介绍了商品信息修改页面的实现过程。首先,页面布局包括编辑和删除功能,未来还可添加上架和下架按钮。通过c…...

Dify的大语言模型(LLM) AI 应用开发平台-本地部署
前言 今天闲着,捣鼓一下 Dify 这个开源平台,在 mac 系统上,本地部署并运行 Dify 平台,下面记录个人在本地部署Dify 的过程。 Dify是什么? Dify是一个开源的大语言模型(LLM)应用开发平台&#…...

使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线
以下通过点亮LED进行基本使用流程演示,实际可以连接复杂外设(SPI、CAN、ADC等) 单模块使用 RX、TX、5V和GND接到串口模块;X5接5V;Y2接LED;LED-接GND 串口模块插上电脑后,LED没有亮;因为此时模…...
移动端前端调试调研纪实:从痛点出发,到 WebDebugX 的方案落地
这个月我接到一个内部调研任务:为公司的新一代 Hybrid 框架选型合适的前端调试解决方案。初衷其实很简单——以前的调试方式效率太低,影响开发和测试协同,产品问题总是复现难、修复慢。 于是我花了两周时间,试用了包括 Eruda、Re…...

8 种快速易用的Python Matplotlib数据可视化方法
你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python 的 Matplotlib 库是你数据可视化的最佳伙伴!它简单易用、功能强大,能将枯燥的数字变成引人入胜的图表。无论是学生、数据分析师还是程序员&…...
【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】
1. 背景 本节主要讨论 高通 蓝牙 hal 中,的一些流程。 看看你是否都清楚如下问题: 高通芯片电如何控制?串口是在哪里控制的?固件如何下载?初始化流程是怎么样的? 如果你已经对上述讨论的问题,…...

C# 深入理解类(实例构造函数)
实例构造函数 实例构造函数是一个特殊的方法,它在创建类的每个新实例时执行。 构造函数用于初始化类实例的状态。如果希望能从类的外部创建类的实例,需要将构造函数声明为public。 图7-2阐述了构造函数的语法。除了下面这几点,构造函数看起…...

RabbitMQ——消息确认
一、消息确认机制 生产者发送的消息,可能有以下两种情况: 1> 消息消费成功 2> 消息消费失败 为了保证消息可靠的到达消费者(!!!注意:消息确认机制和前面的工作模式中的publisher confi…...

测试W5500的第2步_使用ioLibrary库创建TCP客户端
ioLibrary库下载地址:文件下载地址:https://gitee.com/wiznet-hk/STM32F10x_W5500_Examples 源文件下载地址:https://gitee.com/wiznet-hk 没有注册的,只能复制粘贴了。 本文介绍了如何初始化STM32的硬件资源,配置W5500的网络参数ÿ…...

深度学习之用CelebA_Spoof数据集搭建一个活体检测-训练好的模型用MNN来推理
一、模型转换准备 首先确保已完成PyTorch到ONNX的转换:深度学习之用CelebA_Spoof数据集搭建活体检测系统:模型验证与测试。这里有将PyTorch到ONNX格式的模型转换。 二、ONNX转MNN 使用MNN转换工具进行格式转换:具体的编译过程可以参考MNN的…...
【Java】泛型在 Java 中是怎样实现的?
先说结论 , Java 的泛型是伪泛型 , 在运行期间不存在泛型的概念 , 泛型在 Java 中是 编译检查 运行强转 实现的 泛型是指 允许在定义类 , 接口和方法时使用的类型参数 , 使得代码可以在不指定具体类型的情况下操作不同的数据类型 , 从而实现类型安全的代码复用 的语言机制 . …...

开源安全大模型Foundation-Sec-8B实操
一、兴奋时刻 此时此刻,晚上22点55分,从今天早上6点左右开始折腾,花费了接近10刀的环境使用费,1天的休息时间,总算是把Foundation-Sec-8B模型跑起来了,中间有两次胜利就在眼前,但却总在远程端口转发环节出问题,让人难受。直到晚上远程Jupyter访问成功那一刻,眉开眼笑,…...

【JavaWeb】MySQL
1 引言 1.1 为什么学? 在学习SpringBootWeb基础知识(IOC、DI等)时,在web开发中,为了应用程序职责单一,方便维护,一般将web应用程序分为三层,即:Controller、Service、Dao 。 之前的案例中&am…...

微信小游戏流量主广告自动化浏览功能案例5
功能需求: 支持APP单行文本框输入1个小程序链接,在“文件传输助手”界面发送小程序链接并进入。 主要有“文章列表首页”和“文章内容”页面。每个页面支持点击弹窗广告、槽位广告、视频广告入口、视频广告内第三方广告。 弹窗广告、槽位广告、视频广…...
【C++ Primer 学习札记】函数传参问题
参考博文: https://blog.csdn.net/weixin_40026739/article/details/121582395 什么是形参(parameter),什么是实参(argument) 1. 形参 在函数定义中出现的参数可以看做是一个占位符,它没有数据…...

软件的技术架构、应用架构、业务架构、数据架构、部署架构
一、各架构定义 1. 技术架构(Technical Architecture) 定义:技术架构关注的是支撑系统运行的底层技术基础设施和软件平台,包括硬件、操作系统、中间件、编程语言、框架、数据库管理系统等技术组件的选择和组合方式。它描述了系统…...

CSS 文字样式全解析:从基础排版到视觉层次设计
CSS 文字样式目录 一、字体家族(font-family) 二、字体大小(font-size) 三、字体粗细(font-weight) 四、字体样式(font-style) 五、文本转换(text-transform…...

【高德开放平台-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
[特殊字符] React Fiber架构与Vue设计哲学撕逼实录
1. React这逼为什么搞Fiber? 他妈的DOM树太深:16版本前递归遍历组件树就像便秘,卡得页面直接阳痿调度器不给力:老子要打断渲染过程搞优先级调度,旧架构跟智障一样只会死循环增量渲染需求:Fiber链表结构让老…...

RabbitMQ的简介
三个概念 生产者:生产消息的服务消息代理:消息中间件,如RabbitMQ消费者:获取使用消息的服务 消息队列到达消费者的两种形式 队列(queue):点对点消息通信(point-to-point) 消息进入队…...
混合学习:Bagging与Boosting的深度解析与实践指南
引言 在机器学习的世界里,模型的性能优化一直是研究的核心问题。无论是分类任务还是回归任务,我们都希望模型能够在新的数据上表现出色,即具有良好的泛化能力。然而,实际应用中常常遇到模型过拟合(高方差)…...

使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第一部分)
第一部分:数据处理 import kagglehub# Download latest version path kagglehub.dataset_download("dylanjcastillo/7k-books-with-metadata")print("Path to dataset files:", path)自动下载该数据集的 最新版本 并返回本地保存的路径 impo…...

大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析
写在前面 Manus 是由中国初创公司 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体(AI Agent),旨在实现“知行合一”,即不仅具备强大的语言理解和推理能力,还能自主执行复杂任务,直接交付完整成…...
物联网赋能7×24H无人值守共享自习室系统设计与实践!
随着"全民学习"浪潮的兴起,共享自习室市场也欣欣向荣,今天就带大家了解下在物联网的加持下,无人共享自习室系统的设计与实际方法。 一、物联网系统整体架构 1.1 系统分层设计 层级技术组成核心功能用户端微信小程序/H5预约选座、…...

以太联Intellinet带您深度解析PoE交换机的上行链路端口(Uplink Ports)
在当今网络技术日新月异的时代,以太网供电(PoE)交换机已然成为现代网络连接解决方案中不可或缺的“利器”。它不仅能够出色地完成数据传输任务,还能为所连接的设备提供电力支持,彻底摆脱了单独电源适配器的束缚,让网络部署更加简洁…...
浏览器播放 WebRTC 视频流
源码(vue) <template><video ref"videoElement" class"video" autoplay muted playsinline></video> </template><script setup lang"ts">import { onBeforeUnmount, onMounted, ref } fr…...
从零开始:使用 PyTorch 构建深度学习网络
从零开始:使用 PyTorch 构建深度学习网络 目录 PyTorch 简介环境配置PyTorch 基础构建神经网络训练模型评估与测试案例实战:手写数字识别进阶技巧常见问题解答 PyTorch 简介 PyTorch 是一个开源的深度学习框架,由 Facebook(现…...

分类算法 Kmeans、KNN、Meanshift 实战
任务 1、采用 Kmeans 算法实现 2D 数据自动聚类,预测 V180,V260 数据类别; 2、计算预测准确率,完成结果矫正 3、采用 KNN、Meanshift 算法,重复步骤 1-2 代码工具:jupyter notebook 视频资料 无监督学习ÿ…...
【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题
一、razor的echo程序 根据对 yuanrongxi/razor 仓库的代码和 echo 测试程序相关实现的分析,下面详细解读 echo 程序中 RTCP sender report(SR)、receiver report(RR)回显的问题及项目的解决方式。 1. 问题背景 在 RTP/RTCP 体系下,SR(Sender Report)由发送端周期性发…...