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

蓝桥杯框架-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.xdnf.cn/news/535663.html

相关文章:

  • 大中型水闸安全监测系统解决方案
  • C++初阶-vector的底层
  • 解决RAGFlow部署中镜像源拉取的问题
  • 单点登录是是什么?具体流程是什么?
  • 计算圆周率 (python)
  • select * from 按时间倒序排序
  • AT_abc401_d [ABC401D] Logical Filling 题解
  • 经典密码学和现代密码学的结构及其主要区别(1)凯撒密码——附py代码
  • 酒店运营中一次性用品选购要点及扬州卓韵酒店用品的专业咨询服务
  • 初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
  • C++ 关于C++中IO流的相关内容 stringstream的相关介绍
  • 「卫星百科」四维高景系列卫星
  • 从API到UI:直播美颜SDK中的滤镜与贴纸功能开发与落地方案详解
  • 理解UDP协议
  • 【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+
  • 天才简史——Paolo Fiorini与他的速度障碍法
  • 禁止在Windows命令行输入python后跳转Microsoft Store
  • Java反射机制详解:原理、应用与实战
  • 使用for循环和字典功能,统计字符出现在一个英文句子中的次数(python)
  • 雷电模拟器安装 KitsuneMagisk (原 Magisk-delta)
  • Python训练营打卡DAY30
  • 关于在Unity项目中使用Post Processing插件打包到web端出现的问题
  • 6K型护套连接器DLJ0601(2000)-00
  • Java大厂面试三轮问答:微服务与数据库技术深度解析
  • token令牌
  • 自定义协议与序列化
  • 初学c语言16(内存函数)
  • 哈夫曼编码:数据压缩的优雅艺术
  • 【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器
  • 学习VS2022离线安装包的下载方法