51单片机(一)工程建立、点亮任意几个LED灯、烧录、锁存器
工程建立、点亮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灯、烧录、锁存器相关推荐
- Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...
- 51单片机:电脑向串口发送数据并控制LED灯
电脑向串口发送数据后,控制LED灯,并返回发送的数据 程序如下 #include"regx52.h" #include"intrins.h" unsigned ...
- 树莓派65/100 - Pico W初体验,点亮板载的LED灯
有一段时间没有折腾树莓派Pico,最近发现它又出新品了,树莓派Pico W,可以通过WIFI连接互联网了. Pico W的产品小册子可以从这里下载. 这篇文章介绍了Pico 和 Pico W的区别. ...
- 使用Arduino开发板点亮RGB全彩LED灯
使用Arduino开发板点亮RGB全彩LED灯 我们将了解什么是RGB全彩LED灯以及如何使用Arduino开发板点亮它. 什么是RGB LED灯? RGB LED灯可以通过混合红色.绿色和蓝色这三种 ...
- 51单片机入学第一课———点亮自己的LED灯珠
芜湖~起飞~ 点亮自己的小灯灯( ̄▽ ̄)" 理论基础 什么是**LED** 点亮电路板上LED的原理 实际操作 新建项目 编写程序 烧录程序 结果 总结 点亮自己的小灯灯( ̄▽ ̄)" ...
- STM32/51单片机实训day3——点亮LED灯、闪烁LED灯(一)理论
内 容:编写代码实现LED灯的点亮功能 学 时:2学时 知识点:分析原理图.LED灯控制原理 重点:GPIO参数配置.LED原理图分析 难点:编写 GPIO参数配置函数.LED点亮函数 时间:20 ...
- 基于51单片机的简易6位密码锁(数码管 led 矩阵)
本文章是基于51单片机的简易密码锁,无掉电保护,所以没有用到I^C总线协议,仅用到数码管显示,矩阵键盘扫描,led显示. 本例程主要实现功能为:定义一个六位数的初始密码,用矩阵输入,输入正确后led被 ...
- 初学单片机点亮第一个外设--LED灯
1 单片机编程的一般步骤 (一).目标分析.我们的目标是点亮开发板上的LED灯. (二).原理图分析: 目标器件(LED)工作原理 相关模块电路连接 控制线路分析:相关IO端口是哪些? (三).软件安 ...
- 基于51单片机的汇编/C程序:拨码开关控制八位LED实现流水灯
基于51单片机的汇编程序:拨码开关控制八位LED实现流水灯 2022-03-08,51单片机学习笔记 功能 打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮. ...
最新文章
- 安装配置mysql-proxy
- Spring进行表单验证
- 探秘区块链 - 头条新闻
- 手机访问PC网站自动跳转到手机网站代码
- c语言 五子棋 悔棋代码,跪求C语言五子棋悔棋部分实现
- mybaties xml 的头部
- ICH10R服务器主板是什么芯片,Intel ICH10R 芯片组 RAID配置
- Linux各个文件夹的作用~~~非常实用!!
- tensorflow的keras 与 原生keras几点比较
- Perl中删除或替换字符串中特殊字符(如空格)的方法
- BluetoothLE-Multi-Library 一个能够连接多台蓝牙设备的库,它可以作为client端,也可以为server端。支持主机/从机,外围设备连接。...
- Edge浏览器,设定主页(默认打开页面)方法
- POJ3169 Layout(差分约束)
- PowerShell中实现一个最基本的日志器logger
- 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
- 20 犹豫:灰度认知,黑白决策
- 分治法——最大子列和问题
- 学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
- springmvc ResponseEntity 下载文件损坏问题解决方法
- PDF是什么格式?如何在电脑上编辑PDF文件
热门文章
- Katalon使用介绍(1)
- 小学生计算机管理员寄语,小学生家长寄语50条
- 方波信号发生器(ne555)
- C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
- 防火墙去恶意软件去广告_如何删除可怕的BoBrowser广告软件/恶意软件
- 云解析DNS是什么意思?云解析DNS有什么用?(中科三方)
- gis 数据框裁剪_【GIS实操】如何用GIS提取“三调”数据?
- 【IT互联网系列】互联网术语、简称、缩写,持续输出中...
- Xshell与Xftp链接
- Webpack详细打包步骤