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

蓝桥杯框架-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
在这里插入图片描述

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

相关文章:

  • uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)
  • Dify的大语言模型(LLM) AI 应用开发平台-本地部署
  • 使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线
  • 移动端前端调试调研纪实:从痛点出发,到 WebDebugX 的方案落地
  • 8 种快速易用的Python Matplotlib数据可视化方法
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】
  • C# 深入理解类(实例构造函数)
  • RabbitMQ——消息确认
  • 测试W5500的第2步_使用ioLibrary库创建TCP客户端
  • 深度学习之用CelebA_Spoof数据集搭建一个活体检测-训练好的模型用MNN来推理
  • 【Java】泛型在 Java 中是怎样实现的?
  • 开源安全大模型Foundation-Sec-8B实操
  • 【JavaWeb】MySQL
  • 微信小游戏流量主广告自动化浏览功能案例5
  • 【C++ Primer 学习札记】函数传参问题
  • 软件的技术架构、应用架构、业务架构、数据架构、部署架构
  • CSS 文字样式全解析:从基础排版到视觉层次设计
  • 【高德开放平台-注册安全分析报告】
  • [特殊字符] React Fiber架构与Vue设计哲学撕逼实录
  • RabbitMQ的简介
  • 混合学习:Bagging与Boosting的深度解析与实践指南
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第一部分)
  • 大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析
  • 物联网赋能7×24H无人值守共享自习室系统设计与实践!
  • 以太联Intellinet带您深度解析PoE交换机的上行链路端口(Uplink Ports)
  • 浏览器播放 WebRTC 视频流
  • 从零开始:使用 PyTorch 构建深度学习网络
  • 分类算法 Kmeans、KNN、Meanshift 实战
  • 【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题
  • 网络安全之身份验证绕过漏洞