工程建立、点亮1个LED灯、点亮任意几个LED灯、烧录

  • 一、 建立工程
    • 1、建立工程文件夹
    • 2、创建工程文件
    • 3、创建.c源文件
    • 4、添加.c源文件到工程
  • 二、点亮一个LED灯
    • 1、察看原理图,明确电路原理
    • 2、编写程序
    • 3、烧录
  • 三、点亮多个LED灯
  • 附录一 端口选择
  • 附录二 锁存器

一、 建立工程

1、建立工程文件夹

在学习51的时候,养成良好习惯,建立一个工程文件夹,将学习过程中写的代码源文件、生成的各类文件都放在该文件夹下。

在桌面新建文件夹(如命名【89C52】,我的板子芯片是89C52)

在工程文件夹下再创建文件夹,我们每进行一次实验或者一类实验,就新建一个子文件夹,方便代码管理。

2、创建工程文件

①打开keil软件(本博是keil2)


②点击【New Project…】

③选择文件夹,找到我们创建的文件夹【89C52】——>【lesson1】

文件名为本次实验的名称(如LED),格式唯一为【.uv2】,点击【保存】


③选择芯片类型(本博芯片为AT89C52)

芯片类型察看如下

找到AT89C52,点击【确定】


上图点击【确定】

此时状态栏有了下图所示信息,到这一步为止,我们建立了一个关于【AT89C52】的工程,但是还没有把代码与工程连接起来,整个工程就是一个空壳。

3、创建.c源文件

①点击【Flies】——>【new…】,建立文本

或者直接如下快捷键

②点击保存

保存位置为刚刚新建文件的位置,注意现在保存的文件是以后写C代码的文件,所以文件后缀为【.c】,名称与刚刚建立项目时的名称一样,故改为【LED.c】,点击保存。

建立了C代码文件,但是并不知道C代码是写给谁的,所以应该把C代码文件添加到工程中。

4、添加.c源文件到工程

①右击【Source Group 1】——>【Add Files to Group ‘Source Group 1’】

②选择刚刚的创建的.c文件,点击【Add】

此时状态栏有了.c源文件

到此,整个工程的建立结束。通过在.c源文件中编写代码,编译后形成单片机可执行的.hex文件,通过烧录软件将可执行文件烧录到单片机。

二、点亮一个LED灯

1、察看原理图,明确电路原理

①找到芯片

②找到LED

上图1是1k的排阻,2是8个LED,可以理解为每个LED接1K的电阻,如下图

3是锁存器,我用的单片机A/D实验与LED实验都是用的单片机的P1^0——P1 ^7,在进行A/D实验时,为了防止对LED形成干扰,就在LED与P1间加了一个锁存器,在进行A/D实验时,将LED锁住。

锁存器见本博附录,现只需知道当OE为低电平、LE为高电平时,锁存器的输入DB1——DB8与锁存器的输出Q0——Q7,电平同高、同低,即DB输入为高电平、对应Q输出为高电平,DB输入为低电平,对应Q输出为低电平。

由上图可知,单片机的P1的0——>7引脚连接锁存器的D0——>D7
P1的某一引脚编程序置0,则该引脚输出低电平,锁存器输出端Q对应引脚也变为低电平,此时对应的LED左边是VCC高电平,右边是低电平,LED点亮。
故LED1——>LED8 对应:Q0——>Q7; 对应D1——>D8; 对应单片机P1^0——P1 ^7
只需将P1^0——P1 ^7某个引脚置低电平就可点亮对应LED。

在.c文本下编写#include <reg52.h>,右键打开头文件


可以看到P0、P1、P2等被定义为8位寄存器(寄存器定义方法:sfr…(八位),sfr16…(16位)),则可以通过位定义语句:sbit led1=P1^0;
将P1寄存器某一位重新命名,程序中可以通过新名称对该位进行操作。

2、编写程序

#include <reg52.h>
sbit led1=P1^0;
void main()
{
led1=0;
}

以上代码,第二行:sbit led1=P1^0;是对 P1的第一引脚重命名,进行led1=0;操作后会点亮第一个LED。
如果需要点亮其他的LED,则可将P1^0改为 P1 ^1、P1 ^2…P1 ^7

3、烧录

①生成hex文件

点击下图图标

勾选下图选项,点击【确定】

再重新编译

此时显示生成了hex文件,它与.c源文件存放在相同位置

②打开stc-isp(下载地址:http://www.stcmcudata.com/)


芯片选择型号为89C52,端口号选择(见本博附录),打开程序文件,选择工程文件下的hex文件

点击【下载/编程】,再打开单片机开关(注意操作顺序),显示操作成功,此时单片机的第一个LED被点亮

三、点亮多个LED灯

我们之前是利用寄存器的位操作,将P1寄存器的某一位重新命名,再对该位置低电平来点亮对应的LED,我们还可以对整个P1寄存器进行操作。

之前总结过,在点亮LED实验中P1寄存器每一位的输出与锁存器的DB和Q同高电平、同低电平。现用一个16进制的数控制该寄存器。

例如需要LED灯的1、3、5、7灯亮,则Q0——>Q7或DB1——>DB8或者P1的0——>7引脚输出的电平分别是01010101,其中D1灯在低位,所以这串01数字看作是二进制数的话一个是10101010(从下往上读,下面是高位),变成16进制为0xaa,所以程序中只需进行P1=0xaa操作及可点亮1、3、5、7LED灯

代码如下:

#include <reg52.h>
void main()
{P1=0xaa;
}

同理,若点亮2、4、6、8,则需要输出分别是10101010,二进制为01010101(从下往上),十六进制为0x55


代码如下:

#include <reg52.h>
void main()
{P1=0x55;
}

附录一 端口选择

1、鼠标右键我的电脑——>【管理】

2、选择【设备管理器】,察看端口

3、若找不到端口,则选择【显示隐藏的设备】

4、电脑初次连接单片机可能需要安装相应的串口驱动,该驱动买单片机时卖家给的资料里会有,直接运行就好,或者直接网上搜索CH340下载

附录二 锁存器

上面俩图中,第一图的74HC573是锁存器,第二图是单片机芯片。俩图的连接方式是:

单片机P1的8个引脚P10——>P17依次接锁存器的输入,即D0——>D7。

锁存器的输出,即Q0——>Q7接8个LED,LED接排阻后接到VCC。

下图是锁存器的真值表,根据上图一,OE接地,所以锁存器只存在下图的前三种工作状态。

LE是在程序中置高、置低电平的,在进行LED实验时,将LE置高电平(LE默认高电平,所以LED实验时可以不对LE进行软件置1),上面真值表的D和Q,分别表示锁存器的输入和输出,可以看到输入和输出是同高电平、同低电平。

所以单片机的P1的某一引脚输出低电平,则锁存器的对应引脚的输入D为低电平,锁存器对应引脚的输出Q也为低电平,此时LED左边是VCC和排阻,右边是低电平,LED导通,LED点亮。

当进行A/D实验时,因为要用到单片机的P1,此时为了防止LED灯乱跑,将LE软件置低电平,此时无论P1的各个引脚输出为高电平还是低电平,锁存器的输出端始终为Q0,这个定值大于使LED导通的临界电平值,这样,LED左右俩边都为高电平,LED不导通,锁存器相当与将LED“锁了起来”。

51单片机(一)工程建立、点亮任意几个LED灯、烧录、锁存器相关推荐

  1. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...

  2. 51单片机:电脑向串口发送数据并控制LED灯

    电脑向串口发送数据后,控制LED灯,并返回发送的数据 程序如下 #include"regx52.h" #include"intrins.h" unsigned ...

  3. 树莓派65/100 - Pico W初体验,点亮板载的LED灯

    有一段时间没有折腾树莓派Pico,最近发现它又出新品了,树莓派Pico W,可以通过WIFI连接互联网了. Pico W的产品小册子可以从这里下载. 这篇文章介绍了Pico 和 Pico W的区别. ...

  4. 使用Arduino开发板点亮RGB全彩LED灯

    使用Arduino开发板点亮RGB全彩LED灯 我们将了解什么是RGB全彩LED灯以及如何使用Arduino开发板点亮它. 什么是RGB LED灯? RGB LED灯可以通过混合红色.绿色和蓝色这三种 ...

  5. 51单片机入学第一课———点亮自己的LED灯珠

    芜湖~起飞~ 点亮自己的小灯灯( ̄▽ ̄)" 理论基础 什么是**LED** 点亮电路板上LED的原理 实际操作 新建项目 编写程序 烧录程序 结果 总结 点亮自己的小灯灯( ̄▽ ̄)" ...

  6. STM32/51单片机实训day3——点亮LED灯、闪烁LED灯(一)理论

    内  容:编写代码实现LED灯的点亮功能 学  时:2学时 知识点:分析原理图.LED灯控制原理 重点:GPIO参数配置.LED原理图分析 难点:编写 GPIO参数配置函数.LED点亮函数 时间:20 ...

  7. 基于51单片机的简易6位密码锁(数码管 led 矩阵)

    本文章是基于51单片机的简易密码锁,无掉电保护,所以没有用到I^C总线协议,仅用到数码管显示,矩阵键盘扫描,led显示. 本例程主要实现功能为:定义一个六位数的初始密码,用矩阵输入,输入正确后led被 ...

  8. 初学单片机点亮第一个外设--LED灯

    1 单片机编程的一般步骤 (一).目标分析.我们的目标是点亮开发板上的LED灯. (二).原理图分析: 目标器件(LED)工作原理 相关模块电路连接 控制线路分析:相关IO端口是哪些? (三).软件安 ...

  9. 基于51单片机的汇编/C程序:拨码开关控制八位LED实现流水灯

    基于51单片机的汇编程序:拨码开关控制八位LED实现流水灯 2022-03-08,51单片机学习笔记 功能 打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮. ...

最新文章

  1. 安装配置mysql-proxy
  2. Spring进行表单验证
  3. 探秘区块链 - 头条新闻
  4. 手机访问PC网站自动跳转到手机网站代码
  5. c语言 五子棋 悔棋代码,跪求C语言五子棋悔棋部分实现
  6. mybaties xml 的头部
  7. ICH10R服务器主板是什么芯片,Intel ICH10R 芯片组 RAID配置
  8. Linux各个文件夹的作用~~~非常实用!!
  9. tensorflow的keras 与 原生keras几点比较
  10. Perl中删除或替换字符串中特殊字符(如空格)的方法
  11. BluetoothLE-Multi-Library 一个能够连接多台蓝牙设备的库,它可以作为client端,也可以为server端。支持主机/从机,外围设备连接。...
  12. Edge浏览器,设定主页(默认打开页面)方法
  13. POJ3169 Layout(差分约束)
  14. PowerShell中实现一个最基本的日志器logger
  15. 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
  16. 20 犹豫:灰度认知,黑白决策
  17. 分治法——最大子列和问题
  18. 学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
  19. springmvc ResponseEntity 下载文件损坏问题解决方法
  20. PDF是什么格式?如何在电脑上编辑PDF文件

热门文章

  1. Katalon使用介绍(1)
  2. 小学生计算机管理员寄语,小学生家长寄语50条
  3. 方波信号发生器(ne555)
  4. C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
  5. 防火墙去恶意软件去广告_如何删除可怕的BoBrowser广告软件/恶意软件
  6. 云解析DNS是什么意思?云解析DNS有什么用?(中科三方)
  7. gis 数据框裁剪_【GIS实操】如何用GIS提取“三调”数据?
  8. 【IT互联网系列】互联网术语、简称、缩写,持续输出中...
  9. Xshell与Xftp链接
  10. Webpack详细打包步骤