IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机--点亮LED灯 -> 正文阅读

[嵌入式]单片机--点亮LED灯

目录

1.LED是什么

2. 点亮LED

2.1 点亮P0.0

2.2 实现流水灯

2.3 同时点亮和熄灭D1~D8

2.4 花式流水灯


1.LED是什么

LED是发光二极管,是一种半导体固体发光器件。

二极管的特点是单向导电性,电流只允许从一个方向通过,二极管当中的正向电流从无色环流向有色环当中。

对LED来说,亮灯的条件是两端有电势差

如下是普中STC89C52单片机上的LED模块的电路图,8个LED灯阳极接电源VCC,阴极串联一个电阻,然后与单片机的P2口连接,如果要点亮某个灯,只需把对应的IO口赋为低电平(即=0),这是共阳极LED。

LED共阴极指的是LED共同的接点是GND,共阳极指LED共同的接点是电源(如上图)。

LED亮度的颜色和工作电压根据所选择的发光二极管来决定,越鲜艳的颜色二极管的工作电压也就越高。

2. 点亮LED

要点亮LED首先要看LED的电路是怎样的。

分析 如下电路图中,D1~D8是共阳极LED,阴极分别连接到P0口的0~7端口,所以对D1~D8操作时,需要对应的IO口赋为低电平。

2.1 点亮P0.0

点亮P0.0,只需使P0.0端口为低电平。

sbit LEDP00 = P0^0;  // P0.0端口
void ledp00_light_up()
{
	LEDP00 = 0;
	while(1){}
}

2.2 实现流水灯

流水灯就是D1~D8依次点亮,D8电流后,D7~D1依次,点亮,D1点亮后,D2~D8依次点亮....如此循环。如下代码需要添加头文件:#include "intrins.h"

#define LED0 P0  // P0口
void loop_led0()
{
	u8 i;
	u16 deley_times = 300;
	LED0 = ~0x01;
	delay_ms(deley_times);
	while(1)
	{
		LED0 = ~0x01;
		delay_ms(deley_times);
		for(i=0;i<7;i++)
		 {
		 	LED0 = _crol_(LED0,1);   // 左移一位,如11111110变为11111101
			delay_ms(deley_times);	
		 }
		 for(i=0;i<7;i++)
		 {
		 	LED0 = _cror_(LED0,1);   // 右移一位  01111111变为10111111
			delay_ms(deley_times);	
		 }
	}	
}

2.3 同时点亮和熄灭D1~D8

#define LED0 P0  // P0口
void led0_ctr_sync()
{
	LED0 = 0;
	while(1)
	{
		LED0 = ~LED0;
		delay_ms(500);
	}
}

2.4 花式流水灯

花式流水灯结合连接P2口的D9~D16 ,实现的功能:

? P0口为共阳极(低电平点亮),P2口为共阴极(高电平点亮),
? 1. 从D1开始依次点亮,直到D16,间隔0.3s;
? 2. 流水灯结束后,D9~D16全部点亮,D1~D8全部不亮,间隔0.3s;
? 3. 然后D1~D8全部点亮,D9~D16全部不亮;间隔0.3s;
? 4. D1~D8和D9~D16全部不亮,间隔0.3s

如下代码也需要添加头文件:#include "intrins.h"

#define LED0 P0  // P0口
#define LED2 P2  // P2口
/*
  P0口为共阳极(低电平点亮),P2口为共阴极(高电平点亮),
  1. 从P0.0开始依次点亮,直到p2.7,间隔0.3s;
  2. 流水灯结束后,P2口全部点亮,P0口全部不亮,间隔0.3s;
  3. 然后P0口全部点亮,P2口全部不亮;间隔0.3s;
  4. P0口和P2口全部不亮,间隔0.3s

*/

void anode_po_cathode_p2()
{
	u8 i;
	u16 delay_times = 300;

	// 初始状态
	LED2 = 0x00;  // P2口全部不亮

	LED0 = ~0x01;
	delay_ms(delay_times);
	while(1)
	{
		LED0 = ~0x01;
		delay_ms(delay_times);
		for(i=0;i<7;i++)
		 {
		 	LED0 = _crol_(LED0,1);   // 左移一位,如11111110变为11111101
			delay_ms(delay_times);	
		 }
		LED0 = 0xFF;
		delay_ms(delay_times);
		LED2 = ~0xFE;
		delay_ms(delay_times);
		for(i=0;i<7;i++)
		{
			LED2 = _crol_(LED2,1);
			delay_ms(delay_times);
		}
		LED2 = 0x00;  // P2口全部不亮
		delay_ms(delay_times);
		// 流水灯结束
		
		LED2 = 0xff;  // P2口全部点亮
		LED0 = 0xFF;  // P0口全部不亮
		delay_ms(delay_times);

		LED2 = 0x00;  // P2口全部不亮
		LED0 = 0x00;  // P0口全部点亮
		delay_ms(delay_times);

		LED2 = 0x00;  // P2口全部不亮
		LED0 = 0xff;  // P0口全部不亮
		delay_ms(delay_times);
	}	
}

使用Proteus仿真+keil编译的结果:

参考:

1.?(4条消息) 【Proteus】梦开始的地方〔LED灯〕_謓泽的博客-CSDN博客

2.?LED 共阴共阳的区别 - 风吹来的砂 - 博客园 (cnblogs.com)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 23:06:12  更:2022-06-20 23:06:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:10:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计