基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。

目录

仿真效果图

仿真图

代码

系统论文

资源下载


设计的内容和要求

熟悉51系列(兼容)单片机软件开发系统Keil C51集成开发环境(u Vison系列编译器)和Proteus电路分析与实物仿真软件。

了解点阵LED显示器结构及字符字模(字符代码),熟悉点阵LED显示器驱动的基本原理。设计16×16点阵LED显示器的驱动电路,并编写程序实现在16×16点阵LED显示器上的字符滚动显示。16×16点阵LED显示器可由4块8×8点阵LED显示器构成。可采用单片机并行端口、移位寄存器、译码器或锁存器等4种驱动方式中的组合实现对16×16点阵LED显示器的驱动。电路方面主要包括以下3部分。

(a)设计单片机的最小系统(包括复位电路和外接的晶振电路),并确定相关元器件参数。

(b)采用动态驱动的方式,设计单片机并行端口、移位寄存器、译码器或锁存器等与16×16点阵LED显示器的驱动电路,主要包括控制点阵LED行和列的连线。

(c)采用移位寄存器、译码器或锁存器驱动点阵LED显示器时,设计单片机与移位寄存器、译码器或锁存器间的控制连线。  编写16×16点阵LED显示器字符(串)滚动显示程序,实现数字(0—9)或英文字符的滚动显示。        

仿真效果图


仿真图


代码(部分)


#include <reg51.h>		  //头文件//
#define  u8	  unsigned char  //定义无符号字符型变量//
#define  u16  unsigned int     //定义无符号整数型变量//
#define  SPEED   10       
//端口定义//
sbit DS=P2^0;
sbit SH=P2^1;
sbit ST=P2^2;u8 code table1[]={	          //定义高八位数组//	 //字模定义//
/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0x1F,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0E,0x10,0x10,0x10,0x11,0x0E,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0C,0x10,0x11,0x11,0x12,0x0C,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x03,0x04,0x08,0x1F,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x1F,0x10,0x11,0x11,0x10,0x10,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x11,0x11,0x18,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x1C,0x10,0x10,0x13,0x1C,0x00,0x00,
/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };u8 code table2[]={            //定义低八位数组///*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x0C,0x14,0x24,0x44,0x84,0x0C,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0xE0,0x20,0x24,0x24,0xFC,0x24,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x98,0x84,0x04,0x04,0x88,0x70,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0xF0,0x88,0x04,0x04,0x88,0x70,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x38,0x44,0x84,0x84,0x44,0x38,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x8C,0x44,0x44,0x88,0xF0,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };void senddata(u8,u8);        //定义函数//
void delay(u8);void main()
{u8	i,j,k,m,n=0;          //定义无符号字符型变量//while(1){for(i=0;i<168;i++)        //i确定16列的起点,一共2323*8-16=168//{for(j=0;j<SPEED;j++)  //控制显示速度,每一幅循环显示几次,达到稳定作用//{for(k=0;k<16;k++)       //K确定列,控制每个屏幕//{m=i+k;P1=k;					 //控制ABCD端口//senddata(table1[m],table2[m]);   //发送数据,第一行高8 位,低8位全部移入595//delay(70);senddata(0,0);     //清屏//}}}}
}

系统论文(由于论文字数太多,在这里只介绍部分)


1选题背景

LED显示屏是一种通过控制半导体发光二极管的显示方式, 用来显示文字、 图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、 VCD节目以及现场实况。

LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法[1]

2 方案论证

2.1 课题要求

 了解点阵LED显示器结构及字符字模(字符代码),熟悉点阵LED显示器驱动的基本原理。设计16×16点阵LED显示器的驱动电路,并编写程序实现在16×16点阵LED显示器上的字符滚动显示。16×16点阵LED显示器可由4块8×8点阵LED显示器构成。        

电路方面主要包括以下3部分。设计单片机的最小系统(包括复位电路和外接的晶振电路),并确定相关元器件参数。采用动态驱动的方式,设计单片机并行端口、移位寄存器、译码器或锁存器等与16×16点阵LED显示器的驱动电路,主要包括控制点阵LED行和列的连线。采用移位寄存器、译码器或锁存器驱动点阵LED显示器时,设计单片机与移位寄存器、译码器或锁存器间的控制连线。 

编写16×16点阵LED显示器字符(串)滚动显示程序,实现数字(0—9)或英文字符的滚动显示。

2.2 设计方案

2.2.1硬件设计方案

以PC机作为上位机存储和处理显示内容用串行通信的方式将显示内容和控制指令传输到单片机系统,单片机根据上位机传输来的内容和指令通过端口译码扩展后驱动4块8×8LED点阵模块构成的16×16的LED点阵显示屏。题目将以此方案为指导思想展开具体的硬件电路设计。

图2-1  硬件设计方案

2.2.1软件设计方案

(1)单片机编程语言选择

现在主要运用的单片机编程语言为汇编语言和C语言。

两种语言相比较各有优点汇编语言是面向机器的程序设计语言,是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。其具有执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。

C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生压缩代码。C语言结构是以括号{ }而不是子和特殊符号的语言。C可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数。这种方式可使程序结构化;将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。

基于以上理由决定采用C语言为该显示系统的编程语言。

(2)系统软件编译工具选择

C语言编写的程序并不能被单片机直接执行还需要编译为单片机可执行的机器语言。因此在系统软件设计中,编译器必不可少。支持MCS-51用C语言编程的编译器主要有两种:Franklin C51编译器和KEILC51编译器。目前在单片机开发中普遍都是使用KEIL C51来进行编译。

因此软件设计最终方案为采用C语言为程序语言,KELC为编译工具按照控制、通信、显示等几个功能模块来编写程序。

3 设计过程

3.1 系统框图

 图3-1  硬件原理图

3.2  控制单元设计

控制电路设计中采用的是单片机系统,该系统必须要是工作在一个最小系统(指单片机的可以的最小配置系统)。根据功能选择一定的单片机端口添加外围的器件在该系统中,P1各口主要用作LED显示数据的控制输出。具体接法为:P1.0,P1.1,P1.2,P1.3分别接74HC138的A端,B,CD端。C端向74HC138送入串行数据经过其转换后并行输出;P2各口主要用作LED显示数据的控制输出P2.1,P2.2接595的SH_CP端,ST_CP端,P2.0接DS端控件系统的输入

图3-2  控制部分电路图

3.3  行驱动单元设计

驱动电路由74HC595构成,它可以实现在显示本数据的同时,传送下一数据。数据在SH_CP的上升沿输入,在ST_CP的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线

图3-3  行驱动部分电路图

3.4. 列驱动单元设计

译码电路的功能是为了解决单片机I/O端口不足。译码所用器件为串并转换器74HC138如果不采用译码电路完全依靠单片机的端口输出来控制16×16的LED点阵屏显示,需要32个端口。而采用了译码电路后仅仅需要7~9个端口便可实现控制显示。大大减少了I/O口的占用数目,为单片机扩展其他功能预留下来了空间。两个74HC138联成4线-16线译码器,三级管接显示屏可以解决显示屏供电不足的问题。锁存器74HC59574HC138的使能端,实现对74HC138的使能控制,达到锁存功能,A,B,C为138译码器的三个地址输入。

图3-4  列驱动部分电路图

3.5  元器件清单

电路设计需要的元器件包括电阻、电容、单片机、8×8点阵LED、74HC138、74HC595等,具体元器件数量及规格如下表所示。

表3-1 元器件清单

元器件型号

规格参数

数量

电阻

电容

电容

单片机

8×8点阵LED

74HC138

74HC595

10KΩ

30uf

30pf

AT89C51

1个

1个

2个

1个

4个

2个

2个

3.6 系统软件设计

3.6.1 程序框图简介

程序主要由头文件、端口定义、字模定义、函数等组成。根据程序的设计原理,主函数流程如图3-5所示。

图3-5  流程图


资源下载


如果有需要这个系统的源码、仿真、论文等资源的可以私信我。感谢你的阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/378295.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 在三维图中&#xff0c;幅度越大&#xff0c;则表示人员更习惯的行走路线。 2.算法运行软件版本 matlab2022a 3.部分核…

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器&#xff08;根据名称、id、类选择元素&#xff09; //页面上的所有 …

【经验分享】关于静态分析工具排查 Bug 的方法

文章目录 编译器的静态分析cppcheck安装 cppcheck运行 cppcheck 程序员的日常工作&#xff0c;不是摸鱼扯皮&#xff0c;就是在写 Bug。虽然这是一个梗&#xff0c;但也可以看出&#xff0c;程序员的日常一定绕不开 Bug。而花更少的时间修复软件中的 Bug&#xff0c;且不引入新…

Bug:时间字段显示有问题

Bug&#xff1a;时间字段显示有问题 文章目录 Bug&#xff1a;时间字段显示有问题1、问题2、解决方法一&#xff1a;添加注解3、解决方法二&#xff1a;消息转换器自定义对象映射器配置消息转换器 1、问题 ​ 在后端传输时间给前端的时候&#xff0c;发现前端的时间显示有问题…

汽车开发阶段(OTS/VFF/PVS/OS/SOP)

OTS&#xff1a;即英语中的Off Tooling Sample&#xff0c;通常被称为工装样件。它指的是通过配套设备、工装夹具以及模具制造出来的样品&#xff0c;但并不强调生产的时间效率&#xff0c;主要用于验证产品的设计能力。 VFF&#xff1a;在德语中表示为Vorserien Freigabefahr…

太速科技-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP光纤收发子卡 一、板卡概述 本卡是一个FPGA夹层卡&#xff08;FMC&#xff09;模块&#xff0c;可提供高达2个QSFP / QSFP 模块接口&#xff0c;直接插入千兆位级收发器&#xff08;MGT&#xff09;的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kin…

eNsp公司管理的网络NAT策略搭建

实验拓扑图 实验需求&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9&#xff0c;多出口环境基于带…

JavaWeb(四:Ajax与Json)

一、Ajax 1.定义 Ajax&#xff08;Asynchronous JavaScript And XML&#xff09;&#xff1a;异步的 JavaScript 和 XML AJAX 不是新的编程语言&#xff0c;指的是⼀种交互方式&#xff1a;异步加载。 客户端和服务器的数据交互更新在局部页面的技术&#xff0c;不需要刷新…

VUE:跨域配置代理服务器

//在vite.config。js中&#xff0c;同插件配置同级进行配置server:{proxy:{"/myrequest":{//代理域名&#xff0c;可自行修改target:"https://m.wzj.com/",//访问服务器的目标域名changeOrigin:true,//允许跨域configure:(proxy,options) > {proxy.on(&…

未知物材料成分配方检测分析

材料成分配方分析是一种通过分析材料的化学成分、结构和性质来确定其组成和配方的方法。这对于产品质量控制、新产品研发、工业问题解决和环保等领域具有重要意义。进行材料成分配方分析通常需要以下步骤&#xff1a; 1. 样品采集&#xff1a;采集需要分析的材料样品&#xff0…

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起&#xff0c;这些库的受欢迎程度呈指数级增长。 在这篇文章中&#xff0c;我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…

再谈有关JVM中的四种引用

1.强引用 强引用就是我们平时使用最多的那种引用&#xff0c;就比如以下的代码 //创建一个对象 Object obj new Object();//强引用 这个例子就是创建了一个对象并建立了强引用&#xff0c;强引用一般就是默认支持的当内存不足的时候&#xff0c;JVM开始垃圾回收&#xff0c…

【Linux系统编程】软硬链接和动静态库

一&#xff0c;硬链接 1-1&#xff0c;硬链接的认识 Linux下的硬链接本质是在指定的目录下&#xff0c;插入新的文件名和目标文件的眏射关系&#xff0c;并让inode的引用计数加一&#xff0c;这里我们通过 ls 指令可查看到文件详细信息种的硬链接数。这里可参考文件系统的文章…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配&#xff0c;市面上有N多基于webGL的3D引擎&#xff0c;WebGPU作为挑战者&#xff0c;在渲染性能上确实改过webGL一头&#xff0c;由于起步较晚&#xff0c;想通过这个优势加持&#xff0c;赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

【微信小程序知识点】自定义构建npm

在实际开发中&#xff0c;随着项目的功能越来越多&#xff0c;项目越来越复杂&#xff0c;文件目录也变得很繁琐&#xff0c;为了方便进行项目的开发&#xff0c;开发人员通常会对目录结构进行优化调整&#xff0c;例如&#xff1a;将小程序源码放到miniprogram目录下。 &…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统&#xff0c;缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存&#xff0c;再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互&#xff0c;采用缓存技…

SAP PP学习笔记28 - 生产订单的收货及品质管理

上一章讲了生产订单的很多概念&#xff0c;比如确认&#xff08;报工&#xff09;以及报工的各种形式&#xff0c;反冲&#xff0c;自动入库等。 SAP PP学习笔记27 - Confirmation(报工/确认&#xff09;(CO11&#xff0c;CO11N&#xff0c;CO15&#xff0c;CO12)&#xff0c;…

【算法】LRU缓存

难度&#xff1a;中等 题目&#xff1a; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;…

【HarmonyOS】关于鸿蒙消息推送的心得体会 (一)

【HarmonyOS】关于鸿蒙消息推送的心得体会&#xff08;一&#xff09; 前言 这几天调研了鸿蒙消息推送的实现方式&#xff0c;形成了开发设计方案&#xff0c;颇有体会&#xff0c;与各位分享。 虽然没做之前觉得很简单的小功能&#xff0c;貌似只需要和华为服务器通信&…