如何使用单片机点亮LED灯,并使用按键控制[51单片机]
首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同
我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯
那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上,那么只需要操作这几个接口的高低电频,就可以让他亮起来,0是亮1是不亮
而这几个接口对应着二进制数字,比如我输入11111110,注意这里是8位数字,对应着板子上的8个灯,只有最后一位是0,那么就只有最后一位会亮,但是板子他不识别2进制代码,我们要转换为16进制代码
例如就刚刚的11111110,转换为2进制就是FE,因为F是1111,E是1110,两个加起来就对了
上代码
#include <REGX52.H>
void main(){//我是重复执行while(1){//我是注释,0x代表他是16进制P2=0xFE;}
}
结果:
接下来我们需要用按键来控制,那其实按键也是靠正低电平来区分
按键模块
我们可以看见按键模块是连接在p3.多少的位置,那如果你要控制p31的按键那么就要去找p3.1,要控制p32的按键,就要去找p3.2
那接下来我们来控制灯光,我们还要一种新的办法来控制灯,不用一直写二进制来找灯的位置,而是通过选中某个灯来决定,还是这张图,例如我们要控制p20的灯,那么就去单片机核心去找他连接的位置,我们可以看见p20连接的是p2.0,那么我们就可以对他进行控制
上代码:
这段代码很简单,就是按下的时候就亮,不按就不亮。
#include <REGX52.H>
void main(){while(1){//判断是否被按下,按下是0,不按是1if (P3_1==0){//如果按下就让他亮P2_0=0;}else{//否则,就等于是1,就不亮P2_0=1;}}
}
接下来我们要通过按键来控制,例如按下一次我们依次让灯亮起来,那其实按照我们之前给他设定二进制的值的时候,他的数值就是,11111110,11111101,这样依次往前变化,他就能实现了,关键我们要怎么去处理这件事情
>>> int('00000001',2)
1
>>> int('00000010',2)
2
>>> int('00000100',2)SyntaxError: unexpected indent
>>> int('00000100',2)
4
>>> int('00001000',2)
8
>>> int('00010000',2)
16
可以看到这个代码,2进制的数字是不是也每次向前动了一位,不过动的是1,但是1是不亮啊,0才是亮,所以最后我们可以对他们进行取反,0取反就是1,所以00000001,取反就是11111110,那么就可以完成了,再看他们的十进制数字的规律,每次都是乘以2,那么我们是不是可以用十进制的数字来解决这道题,(这里会有些绕,需要大家理解,或者直接看代码)
#include <REGX52.H>
#include <stdio.h>
void Delay1ms(unsigned int xms) //这是一个延时器,不用管他,每次调用延时
{unsigned char i, j;while(xms){i = 11;j = 190;do{while (--j);} while (--i);xms--;}}void main(){unsigned char LEDNum=1;//设置一个变量{while(1){//判断是否按下if (P3_1==0){//延时2o毫秒Delay1ms(20);while(P3_1==0);Delay1ms(20);//重要看这里,我们将值取反P2=~LEDNum;//然后每次乘以2LEDNum=LEDNum*2;}}}
}
这样我们每次按下按键就会依次点亮
如何使用单片机点亮LED灯,并使用按键控制[51单片机]相关推荐
- 按键控制LED定时点亮c语言,单片机定时中断循环点亮LED灯,我有个51单片机的实验,要求51单片机的P1口外接发光二极管依。...
网友问答: #include #include #define uchar unsigned char#define uint unsigned intsbit ds=P2^2;sbit dula=P ...
- STC89C52单片机 点亮LED灯
点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...
- 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁
点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...
- 51单片机点亮LED和使用定时器中断控制蜂鸣器发声
初学51单片机第一个实验一般都是以点亮LED灯开始,以下是使用Proteus仿真软件的实验效果. 实验需要仿真仪器: 示波器.LED.电压表.蜂鸣器.AT89C51 实验电路图: 实验代码 ...
- 51单片机,点亮LED灯和闪烁
1.关键字sfr与sbit的区别 sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址 例如:sfr P1 =0x90; sbit A = P1^0 sbit B = P1^1; 2. 单片机 ...
- 51单片机--点亮LED灯和流水灯
文章目录 前言 LED模块的原理 点亮一个LED灯 LED灯的闪烁 LED流水灯 前言 大家好,这里是诡异森林.我使用的是普中科技的A2的51开发板,适合新手入门.用到的应用是Keil5和Stc-is ...
- 单片机--点亮LED灯
目录 1.LED是什么 2. 点亮LED 2.1 点亮P0.0 2.2 实现流水灯 2.3 同时点亮和熄灭D1~D8 2.4 花式流水灯 1.LED是什么 LED是发光二极管,是一种半导体固体发光器件 ...
- 2021-08-29国信长天单片机点亮LED灯
题目:单元训练01:LED指示灯的基本控制,首次让8路LED指示灯闪烁3遍然后熄灭,接着依次点亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功能. 需使用到: #include"reg ...
- 51单片机led灯闪烁程序C语言,51单片机控制led灯闪烁程序
Keil 写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序. #include sbit LED = P ...
最新文章
- 尼克的任务 dp 洛谷1280
- SQL Server报“GUID应包含带4个短划线的32位数”
- java标识符与关键字_4、Java标识符和关键字
- 1027. Colors in Mars
- 什么是现代通用计算机的轴型,大学计算机基础(版)各章节习题+答案.doc
- XML内部DTD约束 Day24
- win7升级win10正式版_win7告退在即,如何升级到win10?
- Java十六进制浮点文字
- check GPU mem size on condor
- 浅析微信支付:1前篇大纲
- Mac下载配置aria2和baidudl
- Git 本地分支关联远程分支
- dex2jar java 1.8_dex2jar最新版下载-dex2jar下载 2.0官方版--pc6下载站
- [每日一题]128:四则运算(小米OJ)表达式求值
- Ps的一些小知识,还有快捷键
- 高等数学学习笔记——第七十六讲——直角坐标系下二重积分的计算
- 回顾一年的IT学习历程与大学生活
- 解决Docker镜像缺少字体的问题
- 在线生成安卓APP图标
- STM32F4开发板硬件平台简介
热门文章
- 【虚幻引擎】UE4 Spline(样条线)
- java版企业电子招投标系统源代码之了解电子招标投标全流程
- python 安装matplotlib error:could not find a version that satisfies the requirement xxx
- FFplay暂停分析
- PostgreSQL pg中 lpad函数使用
- 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
- python爬取B站up主全部视频封面
- 湖南大学数字电路与逻辑设计实验(含CPU设计)
- Instagram 爱好者必备:如何使用Inscarry浏览器扩展插件批量下载博主内容(照片视频)
- 灵魂拷问!Linux 命令 su 和 sudo 的区别?