当前位置:首页 > JavaScript

js实现led

2026-04-06 16:56:22JavaScript

LED 数字显示实现

使用 JavaScript 和 Canvas 绘制 LED 风格的七段数字显示。七段显示由 a-g 七个段组成,每个段的亮灭状态组合可显示 0-9 的数字。

// 七段数码管配置
const segments = {
  a: { x: 60, y: 20, w: 80, h: 10, on: false },
  b: { x: 140, y: 30, w: 10, h: 80, on: false },
  c: { x: 140, y: 120, w: 10, h: 80, on: false },
  d: { x: 60, y: 200, w: 80, h: 10, on: false },
  e: { x: 50, y: 120, w: 10, h: 80, on: false },
  f: { x: 50, y: 30, w: 10, h: 80, on: false },
  g: { x: 60, y: 110, w: 80, h: 10, on: false }
};

// 数字对应的段亮灭配置
const digitSegments = [
  [1, 1, 1, 1, 1, 1, 0], // 0
  [0, 1, 1, 0, 0, 0, 0], // 1
  [1, 1, 0, 1, 1, 0, 1], // 2
  [1, 1, 1, 1, 0, 0, 1], // 3
  [0, 1, 1, 0, 0, 1, 1], // 4
  [1, 0, 1, 1, 0, 1, 1], // 5
  [1, 0, 1, 1, 1, 1, 1], // 6
  [1, 1, 1, 0, 0, 0, 0], // 7
  [1, 1, 1, 1, 1, 1, 1], // 8
  [1, 1, 1, 1, 0, 1, 1]  // 9
];

绘制七段数码管

创建 Canvas 元素并设置显示数字的函数:

function drawDigit(ctx, digit, x, y, color = '#ff0000') {
  // 设置数字对应的段状态
  const segStates = digitSegments[digit];
  Object.keys(segments).forEach((key, i) => {
    segments[key].on = segStates[i] === 1;
  });

  // 绘制各段
  Object.values(segments).forEach(seg => {
    ctx.fillStyle = seg.on ? color : '#333333';
    ctx.fillRect(x + seg.x, y + seg.y, seg.w, seg.h);
  });
}

// 初始化 Canvas
const canvas = document.createElement('canvas');
canvas.width = 300;
canvas.height = 300;
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');

// 示例:显示数字 8
drawDigit(ctx, 8, 50, 50, '#00ff00');

动态显示数字

实现一个从 0 到 9 循环显示的数字 LED 效果:

let currentDigit = 0;
setInterval(() => {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  drawDigit(ctx, currentDigit, 50, 50);
  currentDigit = (currentDigit + 1) % 10;
}, 1000);

多位数显示

扩展功能以显示多位数字:

function drawNumber(ctx, num, x, y, color) {
  const digits = String(num).split('').map(d => parseInt(d));
  digits.forEach((d, i) => {
    drawDigit(ctx, d, x + (i * 100), y, color);
  });
}

// 显示数字 123
drawNumber(ctx, 123, 20, 50, '#ffff00');

CSS 样式优化

为 LED 数字添加发光效果:

js实现led

canvas {
  background-color: #111;
  box-shadow: 0 0 20px rgba(255, 0, 0, 0.5);
}

以上代码实现了一个完整的 LED 数字显示效果,支持单个数字、动态变化和多位数显示。可通过调整颜色参数和位置参数来自定义显示效果。

标签: jsled
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…

vue.js实现拍照

vue.js实现拍照

Vue.js 实现拍照功能 在 Vue.js 中实现拍照功能通常需要结合浏览器的媒体 API(如 getUserMedia)和 Canvas 元素。以下是实现步骤: 准备工作 确保项目已安装 Vue…

vue.js watch实现

vue.js watch实现

使用 watch 监听数据变化 在 Vue.js 中,watch 用于监听响应式数据的变化,并在数据变化时执行回调函数。 基本语法 export default { data() {…