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

51单片机——LED模块

LED模块中有8盏灯,从左到右为D1,D2,...,D8

8盏灯以二进制存储在单片机中,它们共同组成一个二进制

0     0     0    0    0     0     0    0

---------------------------------------------- 

D8  D7  D6  D5  D4  D3  D2  D1

即0位表示D1,1位表示D2,...,7位表示D8

P2端口控制LED模块

1、点亮第一个LED

#include "reg52.h"  //"reg52.h":51单片机的头文件
sbit LED1=P2^0;  //sbit:数据类型
                             //P一定为大写,将P2.0管脚定义为LED1
                             //P2.0管脚默认是高电平(逻辑1)
void main(){
    LED1=0;  //LED1端口设置为低电平(逻辑0)
    while(1){  //在51单片机程序开发中,main函数内通常都会有一个while循环,
                    //在循环体内不断执行我们所要实现的功能
        
    }
}

2、LED 闪烁实验 

 #include "reg52.h"
sbit LED1=P2^0;
typedef unsigned char u8;  //0-255
typedef unsigned int u16;  //0-65535
//当传入ten_us=1时,大约延时10us
void delay_10us(u16 ten_us){
    while(ten_us--);
}
//D1指示灯先亮一会后熄灭
void main(){
    while(1){
        LED1=0;  //亮
        delay_10us(50000);  //大约500ms
        LED1=1;  //熄灭
        delay_10us(50000);
    }
}

        在51单片机中最常使用unsigned int和unsigned char,其他数据类型不常使用

 3、流水灯实验

        使用移位和循环实现

 #include "reg51.h"
#include "intrins.h"
#define LED_PORT P2  //使用宏定义P2端口
typedef unsigned char u8;
typedef unsigned int u16;
void delay_10us(u16 ten_us){
    while(ten_us--);
}
/*
使用前引入"intrins.h"头文件
    左移函数:_crol_(LED_PORT,1) 
    右移函数:_cror_(LED_PORT,1)
*/
void main(){
    u16 i=0;
    while(1){
        LED_PORT=0XFE;  //1111 1110
        delay_10us(50000);
        //8盏灯
        for(i=0;i<7;i++){
            //左移
            LED_PORT=_crol_(LED_PORT,1);
            delay_10us(50000);
        }
        for(i=0;i<7;i++){
            //右移
            LED_PORT=_cror_(LED_PORT,1);
            delay_10us(50000);
        }
    }
}


http://www.kler.cn/a/467150.html

相关文章:

  • 一文详解YOLOv8多模态目标检测(可见光+红外图像,基于Ultralytics官方代码实现),轻松入门多模态检测领域!
  • Coroutine 基础八 —— Flow 操作符(二)
  • 美的空气净化器好用吗?拾梧、美的、戴森空气净化器除烟哪个好?
  • 一文讲明白朴素贝叶斯算法及其计算公式(入门普及)
  • C语言 递归编程练习
  • Scala 访问修饰符
  • NS4863 500mA 锂电池充放电管理IC
  • LeetCode算法题——有序数组的平方
  • UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
  • 049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
  • iOS 中performBatchUpdates 的机制
  • Day2 -- QingLuoPay基础功能搭建
  • window11 wsl mysql8 错误分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘
  • vue3 ui组件子组件封装v-model绑定props modelValue
  • 使用SSH建立内网穿透,能够访问内网的web服务器
  • 使用Docker部署最新版JupyterHub
  • 如何利用群晖NAS实现远程访问你的网页版Linux虚拟桌面环境
  • [gcc]代码演示-O使用场景
  • SQL中聚类后字段数据串联字符串方法研究
  • kernel32.dll动态链接库报错要怎解决?详细解析kernel32.dll文件缺失解决方案
  • 什么是 C++ 的序列化?
  • 【一文解析】新能源汽车VCU电控开发——能量回收模块
  • STM32-笔记23-超声波传感器HC-SR04
  • kubernets基础入门
  • 基于STM32的热带鱼缸控制系统的设计
  • 大模型数据采集和预处理:把所有数据格式,word、excel、ppt、jpg、pdf、表格等转为数据