点亮LED灯

新建一个工程

首先,打开keil,我们会看到一个空白页面。

这个时候需要我们新建一个工程,点击上方菜单栏的Project,选择 New uVersion Project

这个时候需要我们选择工程地址,为了方便学习,我建议在桌面建立一个Keil Project的文件夹,在里面存放我们的工程。建立工程之前,需要提前创建工程文件夹,不然我们的工程文件会散落在Keil Project的文件夹里。创建文件夹的快捷键:Ctrl+shift+n或者鼠标右键->w->f

这里我建立的工程名字叫做Light_led

接下来需要我们选择固件库,来生成工程所需的底层文件(这样的说法有些不太准确,不过可以先这样理解),我目前用到的开发板是ST89C51,是国产的开发板,而keil对我们国家的产品不太友好,我们不能直接找到对应的Decice。

我们需要选择Legacy Device Database [no RTE],他的意思是传统设备数据库

我们找到Atmel(较旧版本keil在这个文件夹下)或者Microchip(新版本的keil在这个文件夹下),选择AT89C51

接下来会询问我们是否赋值启动文件在工程内,一般启动文件我们不需要修改,所以选择,这个时候我们会看到如下页面

Target 1就是keil软件帮助我们生成的启动文件,接下来我们需要建立主函数文件。在Source Group 1文件夹处右键建立新的项目

建立一个C语言文件,命名为main.c

我们写如下C语言代码,然后编译,会看到下方0 Error(s),0 Warning(s)

这里分享一下调整字体的小方法:按住Ctrl,同时鼠标滚轮滚动,可以调节字体大小,或者在设置里面选择 “字体和颜色”,选择“C编辑器”,然后来改变字体大小

这样我们就完成了一个工程的建立,每次建立工程都可以按照这种方式。后续再来学习写代码的技巧。

LED简介

Light Emitting Diode,发光二极管,可以用于照明、广告灯、指引灯、屏幕

直插式LED

一般长脚为正极,短脚为负极

贴片或者板载LED

如下图,板子上已经有了Led,在板子的原理图中可以看到它的电路以及对应的管脚口。

点亮LED灯

现在来说说如何点亮LED。我用的开发板是淘宝上购买的STC89C52单片机实验板,实验板上已经外接了各种模块。从客服那里我要到了该实验板的原理图,在原理图中我们找到LED模块,就可以看到它的电路。原理图会在文末上传。

VCC代表5V电压,是MCU(以后就管单片机叫MCU)内置的电源。图中的电阻471代表47× 1 0 1 10^1 101,即470omh(欧姆),电阻的表示法以此类推。

我们可以看出,P20到P27共8个接口都接着LED灯,我们控制这八个接口的高低电平输出,就可以控制灯的亮灭。P2是这一系列寄存器组的代号,它有八位,分别命名为P20~P27.

说人话,如果我们的管脚口比如P20输出低电平,那么它就和VCC,470omh电阻以及我们的LED灯形成通路,灯就会亮;如果我们输出高电平,那么它的电压和VCC是一样的,电路没有通,灯就不会灭
而我们可以通过代码来控制一大堆寄存器,寄存器内保存的数据,就是我们管脚口的输出情况。

尝试写代码

假如我们要让P20亮,其它灭,我们需要给P20低电平,即置0,其它管脚口置1。我们说过MCU的管脚口可以用二进制数来表示,那么代码就可以这样写,意思很明了,就是P20赋值0,P21~P27赋值1:

P2 = 1111 1110

但是我们C语言一般是识别十进制的,这段代码会被认为是一个十进制的数据赋值给P2,显然不符合要求。

我们也知道,四位二进制数是可以转换为一位十六进制数,为了简单表示,我们仅用两位十六进制数来表示我们的数据。

在数字前面加上0x,就可以将它强制转换为十六进制。二进制11110000相当于十六进制FE,这样代码就可以写成这样:

P2 = 0xFE

头文件

上面的代码写好后,显然是不能直接运行的,因为keil是不认识P2这个变量的,我们需要加入头文件来让keil认识这些管脚口的名字。在main.c最上面加上:

#include<REGX52.H>

这个头文件我们之前提到过,里面是对芯片的基础配置,我们可以打开它看看:

在这里我们可以看到,头文件内对P2进行了地址配置,具体原理先不用了解,我们只需要知道,导入头文件后,我们就可以对管脚口进行操控和配置了。

这样看来,我们的程序是没有问题的啦,现在编译,是不会报错的。

下载(烧录)程序

**我们需要在keil里面设置自动生成HEX烧录文件,不然我们程序无法下载到板子里。**HEX程序最终会生成在Object文件夹内,是编译后的程序,可以直接被板子读取。

打开软件STC-ISP软件,选择MCU型号:STC89C52, 插上实验板,电脑会自动识别串口号(这里一定要看我之前发的博客,提到了CH340的下载,下载后才能被电脑识别)。点击打开程序,选择我们的HEX文件,就可以了。

现象

我们可以看到第一个led灯亮了,而其他led都灭了。

原理图文件

链接:https://pan.baidu.com/s/1KNwZTbMCql8GgxdCFtteJA?pwd=g831
提取码:g831
–来自百度网盘超级会员V2的分享

有问题请朋友们在评论区留言讨论,我看到后会及时回复!!

感谢阅读!

51单片机点亮LED相关推荐

  1. 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...

  2. 51单片机点亮LED和使用定时器中断控制蜂鸣器发声

      初学51单片机第一个实验一般都是以点亮LED灯开始,以下是使用Proteus仿真软件的实验效果.   实验需要仿真仪器:   示波器.LED.电压表.蜂鸣器.AT89C51 实验电路图: 实验代码 ...

  3. 51单片机--点亮LED灯和流水灯

    文章目录 前言 LED模块的原理 点亮一个LED灯 LED灯的闪烁 LED流水灯 前言 大家好,这里是诡异森林.我使用的是普中科技的A2的51开发板,适合新手入门.用到的应用是Keil5和Stc-is ...

  4. 51单片机-点亮LED的多种方式

    哈喽大家好!开篇即首创! 在此分享一些51单片机关于点亮LED的方式,希望大家喜欢! 对于刚入门的小白,难免会对点灯感到疑惑,在此举几个常用的例子,并进行对比. 如下: 方法一 定义指针(对寄存器操作 ...

  5. 51单片机点亮LED的5中方法(由简单到困难)

    本文将介绍用各种不同的方法和算法点亮51单片机LED的程序,包括详细的注释和说明. 方法1:使用GPIO口点亮LED #include<reg52.h> //头文件 sbit LED=P1 ...

  6. 51单片机,点亮LED灯和闪烁

    1.关键字sfr与sbit的区别 sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址 例如:sfr P1 =0x90; sbit A = P1^0 sbit B = P1^1; 2. 单片机 ...

  7. 用51单片机中断控制LED灯亮灭

    用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...

  8. 51单片机入门篇-LED点亮以及流水灯

    目录 一.发光二极管简介 1.二极管工作工作原理 2.单片机点亮LED原理 二.硬件电路连接 三.程序部分 3.1 点亮一个LED 3.2 点亮多个LED 3.3 闪烁一个LED 3.4 不同频率闪烁 ...

  9. 用51单片机点亮流水灯

    用51单片机点亮流水灯的几种方法 1. 直接按位操作一个一个点亮 #include<reg51.h>//头文件 sbit LED0=P2^0; //位定义单片机接LED灯的端口 sbit ...

最新文章

  1. C++向量类模板(支持实数向量与复数向量的各种运算)
  2. Linux System Programming --Chapter Six
  3. 贪心算法之——独木舟上的旅行(nyoj71)
  4. DRBD+HeartBeat+NFS 架构
  5. 给不起钱的大公司,算不上大公司
  6. 特斯拉涨价:Model 3价格上调1万元 Model Y上调2.1万
  7. npumpy.insert(arr, obj, values[, axis])
  8. Docker-Compose 基础与实战,看这一篇就够了 | 原力计划
  9. acer台式电脑怎么重装系统_电脑怎么重装系统 手把手教你
  10. 【NLP 算法岗】提前批暑期实习面(试)经(历)
  11. java矩形类_Java定义矩形类
  12. maven安装oracle驱动,maven 安装 Oracle 驱动 ojdbc14.jar
  13. CAS5.3版本对接Jenkins单点登录
  14. 2022-2027年(新版)中国石油化工行业发展建议及投资前景展望报告
  15. 《K8s与云原生应用》之K8s的系统架构与设计理念
  16. 怎么改变ADS1.2的字体大小
  17. 浅谈:前端如何赋能业务?
  18. 怎么样很快的速度锁定计算机,怎样让电脑速度变快
  19. 【openlayer2】清理图层OpenLayers.Layer.WMS
  20. Unity商业开发必备插件

热门文章

  1. python爬虫初步了解 定时任务 以及浏览器自动工作
  2. SSVEP方块闪烁刺激界面编写
  3. 在线考试教学系统平台系统源码/视频教学系统PHP源码/在线考试系统PHP源码
  4. 推挽输出和开漏输出-三极管-mos管
  5. 组装锂电48V20A/H
  6. 005-关于win10系统更新后,无法登录你的账户,通常可以通过请注销。。。。。
  7. 禅道客户端服务端部署xxd守护进程运行
  8. 实现Android桌面的App快捷方式
  9. mysql 行列转换
  10. 深度洞见|罗兰贝格联合天猫发布《车企数字化营销白皮书》:围绕用户全生命周期,引领数字化创新之路...