51单片机——LED 点阵点亮一个点,小白详解

news2024/12/23 17:57:21

LED点阵介绍:

       LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。

        通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如16*16点阵可以使用4个8*8点阵构成。因此理解了8*8LED点阵的工作原理,器他分辨率的LED点阵显示屏都一样的。

        8*8点阵共有64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如果将要左上角第一个点点亮亮,则1脚高电平a脚低电平,则第一个点就亮了;如果将要第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些 引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第 a 脚接低电平, 而(1、2、3、4、5、6、7、8)接高电平,那么第一列就会点亮。

LED硬件设计

使用的的资源有:①8*8LED点阵模块,②74HC595 模块

74HC595 模块、8*8LED 点阵模块电路如下:

        从上图中可以看出,74HC595需要用到的控制管脚是,SER、RCLK、SRCLK直接连接到51单片机的P3.4-P3.6 IO 口上,输出端则是直接连接到LED点阵模块的行端口上,即为LED发光二极管的阳极,LED点阵的列则为发光二极管的阴极。

        想要 控制LED点阵,可以以将单片机管脚按照74HC595 芯片的通信时序要求来 传输数据,这样即可控制LED点阵的行的数据,根据LED发光二极管的导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。因此通过单片机P0端口控制点阵列,74HC595可控制点阵行。

        如果要点亮左上角的一个点,那就需要P07这一列为低电平,其余列是高电平,DPh这一行为高电平,其余行为低电平。那P07--P00口输出就是 0111 1111(ox7f),DPh-DPa输出就是1000 0000(0x80)

软件设计如下:(74HC595部分和ID拓展的代码一样,但是RCLK时序有所改变,要让RCLK下降有效,之前是(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)这里为啥要更换,之前为啥不用,我也没有搞明白哦,知道的同学告诉我,谢谢!

/********************************************************************
****************** 实验名称:IO 扩展(串转并)实验-74HC595
接线说明
实验现象:下载程序后,8*8LED 点阵以一行循环滚动显示
注意事项:LED 点阵旁的 J24 黄色跳线帽短接到 GND 一端
*********************************************************************
******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;
//定义 74HC595 控制管脚
sbit SRCLK=P3^6; //移位寄存器时钟输入
sbit rCLK=P3^5; //存储寄存器时钟输入
sbit SER=P3^4; //串行数据输入
#define LEDDZ_COL_PORT P0 //宏定义LED点阵列控制端口
/********************************************************************
***********
* 函 数 名 : delay_10us
* 函数功能 : 延时函数,ten_us=1 时,大约延时 10us
* 输 入 : ten_us
* 输 出 : 无
*********************************************************************
**********/
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
/********************************************************************
***********
* 函 数 名 : delay_ms
* 函数功能 : ms 延时函数,ms=1 时,大约延时 1ms
* 输 入 : ten_us
* 输 出 : 无
* for(j=110;j>0;j--)在for(i=ms;i>0;i--)嵌套这,delay_ms(500),
* 时候ms=500,i=ms 所以i=500,进入for(i=ms;i>0;i--),
* 然后在执行for(j=110;j>0;j--),进行循环110次一直到j=0,
* 在退出for(j=110;j>0;j--),
* 在重新执行for(i=ms;i>0;i--),一直到到i=0时候,退出for(i=ms;i>0;i--)
*********************************************************************
**********/
void delay_ms(u16 ms)
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}
/********************************************************************
***********
* 函 数 名 : hc595_write_data(u8 dat)
* 函数功能 : 向 74HC595 写入一个字节的数据
* 输 入 : dat:数据
* 输 出 : 无
*********************************************************************
**********/
 
/********************************************************************
*******************SER=dat>>7(dat向右移7位后赋值给SER)详解*************
dat是后面要输入的一个字节的数据,hc595_write_data(0x00)如后面的
hc595_write_data(0x01),这时候dat就是(0x01)当dat=00000001(0x01)时候,
高位是0,低位是1 ,对应按照QH-QA,就是QH低电平,QA高电平,但是74HC595的传输
规律是先从高位在到低位的传输,左移1就传给了QH,这样QH高电平,QA为低电平,我们
想要QH输入低电平怎么办呢?就用把dat>>7,按照右移的规则(对于不带字符的数值,
向右移位时,会在左边的空位填充0。)那(0x01)就变成0(0X00)一个字节八位都是0
这样传输给QH就是低电平,
*********************************************************************
**********/
/********************************************************************
*******************dat<<=1(dat向左移一位后在赋值给dat)详解*************
但是for(i=0;i<8;i++)循环8次,八位就都是0,QH-QA都是低电平,这样是不对的,
我们是要QA输入高电平,这时候就需要每次循环的时候dat<<=1,每次SER=dat>>7;
执行完dat<<=1,例如开始dat=(0x01),执行完SER=dat>>7后,在把dat<<=1(dat向
左移一位后在赋值给dat),这样下次在进入SER=dat>>7时候,dat就是dat<<=1(0X02)
一直倒循环到第7次时候dat也左移了7位,dat变成了10000000(0x80),这时候在进入
SER=dat>>7时候,SER就等于1,对应QA传输,就按照hc595_write_data(0x01)的一样
低位1,其余都是0的输入。
*********************************************************************
**********/
/********************************************************************
*******************SRCLK=0,SRCLK=1详解*******************************
74HC595芯片的传输规则,SER写入数据后,要移位寄存器(SRCLK)时钟上升沿,才能把
数据送到存储寄存器进行输出,所有我们要先给SRCLK一个低电平,在给一个高电平,就产
生了上升沿,那我们就先SRCLK=0送入低电平;中间延时下,在SRCLK=1送入高电平,
一低一高,这样就产生时钟上升沿,就把数据送入到存储寄存器,每次循环都送入存储寄存器,
循环8次,就把8位的数据都送到存储寄存器中了。
中间的delay_10us(1);这里的延时,不要也可以,但是以防出错这里延时下
*********************************************************************
**********/
/********************************************************************
*******************rCLK=1,rCLK=0详解*******************************
74HC595芯片的传输规则,如果将前面写入存储寄存器数据输出,那存储寄存器时钟要
上升沿才能输出,那我们就先rCLK=0送入低电平;中间延时下,在rCLK=1送入高电平,
一低一高,这样产生时钟上升沿,就将前面写入到寄存器的数据输出了。这里和74HC595DE IO拓展代码有所不一样,RCLK时序有所改变,要让RCLK下降有效,之前是(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)
中间的delay_10us(1);这里的延时,不要也可以,但是以防出错这里延时下
*********************************************************************
**********/
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)//循环 8 次即可将一个字节写入寄存器中
    {
        SER=dat>>7;//优先传输一个字节中的高位
        dat<<=1;//将低位移动到高位        
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中
    }
/********************************************************************
    rCLK=0;
    delay_10us(1);
    rCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
    rCLK=0;
********************************************************************/
    rCLK=1;
    delay_10us(1);
    rCLK=0;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
}
/********************************************************************
***********
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*********************************************************************
**********/
/********************************************************************
*******************LEDDZ_COL_PORT=0x00详解*******************************
我们在DPa---DPh输入的是高电平,如果我们要将LED灯点亮,我们要把P0端口全部设为低电
平,即 LED 阴极为低电平,前面我们宏定义了P0端口,所以这里LEDDZ_COL_PORT=0x00就可以
*********************************************************************
**********/
/********************************************************************
*******************hc595_write_data(ghc595_buf[i])详解***************
我们定义了,数组ghc595_buf[],把每次输出的数据储存在里面,通过for循环,依次
输出,每次写入新数据之前,要先消除前面输出数据点亮LED进行消影,所以每次在输入
数据之前,我们先把所有DPa---DPh输入低电平,来消除前面寄存器缓存数据,之后在
在写入新的数据:这样就产生了,LED点阵,从下到上,每行依次点亮
*********************************************************************
**********/
void main()
{
    u8 i=0;
    LEDDZ_COL_PORT=0x7f;//将 LED 点阵左边第一列设置为 0,即 LED 阴极为低电平,其
余列为 1,即高电平
    while(1)
    {
        for(i=0;i<8;i++)
        {
            hc595_write_data(0x80);//将 LED 点阵上边第一行设置为 1,即 LED 阳极为高电平,其余行为 0,即低电平
        }
    }
}

显示数字,显示数字0:

数字取模和点亮一个灯类似,但是我们为了更方便的操作,我们借助一个文字取模软件”,来获取行的值,取模软件的使用方法就不在具体介绍了。在文字取模软件中,获取要显示数字0,然后将生成的数据复制到我们程序定义的数组中,如下:

u8 gled_row[8]={0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38};//LED 点阵 显示数字 0 的行数据

这些数据就是上述描绘的数字0从左到右依次每列对应的行数据。至于其他数字或字符及简单图形的显示取模方法与上述类似

既然是动态扫描,就需要不断的扫描每列,因此可以把LED点阵的列控制也用数组存储起来,为了后面循环调用提供方面。根据数字 0 取模的数据特点是从左至右每列对应的行数据,因此扫描时也应该从左至右的顺序,如下:

u8 gled_col [ 8 ]={ 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; //LED 点阵 显示数字 0 的列数据
列的的数据基本上都是固定的,都是从左到右,每列依次进行扫描,只用改变行的数据就可以生成不同的图案
/********************************************************************
****************** 实验名称:IO 扩展(串转并)实验-74HC595
接线说明
实验现象:下载程序后,8*8LED 点阵以一行循环滚动显示
注意事项:LED 点阵旁的 J24 黄色跳线帽短接到 GND 一端
*********************************************************************
******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;
//定义 74HC595 控制管脚
sbit SRCLK=P3^6; //移位寄存器时钟输入
sbit rCLK=P3^5; //存储寄存器时钟输入
sbit SER=P3^4; //串行数据输入
#define LEDDZ_COL_PORT P0 //宏定义LED点阵列控制端口
u8 gled_row[8]={0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00};//LED 点阵显示数字 0 的行数据
u8 gled_col[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED 点阵显示数字 0 的列数据
/********************************************************************
***********
* 函 数 名 : delay_10us
* 函数功能 : 延时函数,ten_us=1 时,大约延时 10us
* 输 入 : ten_us
* 输 出 : 无
*********************************************************************
**********/
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
/********************************************************************
***********
* 函 数 名 : delay_ms
* 函数功能 : ms 延时函数,ms=1 时,大约延时 1ms
* 输 入 : ten_us
* 输 出 : 无
* for(j=110;j>0;j--)在for(i=ms;i>0;i--)嵌套这,delay_ms(500),
* 时候ms=500,i=ms 所以i=500,进入for(i=ms;i>0;i--),
* 然后在执行for(j=110;j>0;j--),进行循环110次一直到j=0,
* 在退出for(j=110;j>0;j--),
* 在重新执行for(i=ms;i>0;i--),一直到到i=0时候,退出for(i=ms;i>0;i--)
*********************************************************************
**********/
void delay_ms(u16 ms)
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}
/********************************************************************
***********
* 函 数 名 : hc595_write_data(u8 dat)
* 函数功能 : 向 74HC595 写入一个字节的数据
* 输 入 : dat:数据
* 输 出 : 无
*********************************************************************
**********/
 
/********************************************************************
*******************SER=dat>>7(dat向右移7位后赋值给SER)详解*************
dat是后面要输入的一个字节的数据,hc595_write_data(0x00)如后面的
hc595_write_data(0x01),这时候dat就是(0x01)当dat=00000001(0x01)时候,
高位是0,低位是1 ,对应按照QH-QA,就是QH低电平,QA高电平,但是74HC595的传输
规律是先从高位在到低位的传输,左移1就传给了QH,这样QH高电平,QA为低电平,我们
想要QH输入低电平怎么办呢?就用把dat>>7,按照右移的规则(对于不带字符的数值,
向右移位时,会在左边的空位填充0。)那(0x01)就变成0(0X00)一个字节八位都是0
这样传输给QH就是低电平,
*********************************************************************
**********/
/********************************************************************
*******************dat<<=1(dat向左移一位后在赋值给dat)详解*************
但是for(i=0;i<8;i++)循环8次,八位就都是0,QH-QA都是低电平,这样是不对的,
我们是要QA输入高电平,这时候就需要每次循环的时候dat<<=1,每次SER=dat>>7;
执行完dat<<=1,例如开始dat=(0x01),执行完SER=dat>>7后,在把dat<<=1(dat向
左移一位后在赋值给dat),这样下次在进入SER=dat>>7时候,dat就是dat<<=1(0X02)
一直倒循环到第7次时候dat也左移了7位,dat变成了10000000(0x80),这时候在进入
SER=dat>>7时候,SER就等于1,对应QA传输,就按照hc595_write_data(0x01)的一样
低位1,其余都是0的输入。
*********************************************************************
**********/
/********************************************************************
*******************SRCLK=0,SRCLK=1详解*******************************
74HC595芯片的传输规则,SER写入数据后,要移位寄存器(SRCLK)时钟上升沿,才能把
数据送到存储寄存器进行输出,所有我们要先给SRCLK一个低电平,在给一个高电平,就产
生了上升沿,那我们就先SRCLK=0送入低电平;中间延时下,在SRCLK=1送入高电平,
一低一高,这样就产生时钟上升沿,就把数据送入到存储寄存器,每次循环都送入存储寄存器,
循环8次,就把8位的数据都送到存储寄存器中了。
中间的delay_10us(1);这里的延时,不要也可以,但是以防出错这里延时下
*********************************************************************
**********/
/********************************************************************
*******************rCLK=1,rCLK=0详解*******************************
74HC595芯片的传输规则,如果将前面写入存储寄存器数据输出,那存储寄存器时钟要
上升沿才能输出,那我们就先rCLK=0送入低电平;中间延时下,在rCLK=1送入高电平,
一低一高,这样产生时钟上升沿,就将前面写入到寄存器的数据输出了。这里和74HC595DE IO拓展代码有所不一样,RCLK时序有所改变,要让RCLK下降有效,之前是(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)
中间的delay_10us(1);这里的延时,不要也可以,但是以防出错这里延时下
*********************************************************************
**********/
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)//循环 8 次即可将一个字节写入寄存器中
    {
        SER=dat>>7;//优先传输一个字节中的高位
        dat<<=1;//将低位移动到高位        
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中
    }
/********************************************************************
    rCLK=0;
    delay_10us(1);
    rCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
    rCLK=0;
********************************************************************/
    rCLK=1;
    delay_10us(1);
    rCLK=0;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
}
/********************************************************************
***********
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*********************************************************************
**********/
/********************************************************************
*******************LEDDZ_COL_PORT=0x00详解*******************************
我们在DPa---DPh输入的是高电平,如果我们要将LED灯点亮,我们要把P0端口全部设为低电
平,即 LED 阴极为低电平,前面我们宏定义了P0端口,所以这里LEDDZ_COL_PORT=0x00就可以
*********************************************************************
**********/
/********************************************************************
*******************hc595_write_data(ghc595_buf[i])详解***************
我们定义了,数组ghc595_buf[],把每次输出的数据储存在里面,通过for循环,依次
输出,每次写入新数据之前,要先消除前面输出数据点亮LED进行消影,所以每次在输入
数据之前,我们先把所有DPa---DPh输入低电平,来消除前面寄存器缓存数据,之后在
在写入新的数据:这样就产生了,LED点阵,从下到上,每行依次点亮
*********************************************************************
**********/
void main()
{
    u8 i=0;
    LEDDZ_COL_PORT=0x7f;//将 LED 点阵左边第一列设置为 0,即 LED 阴极为低电平,其
余列为 1,即高电平
    while(1)
    {
        for(i=0;i<8;i++)
        {
            LEDDZ_COL_PORT=gled_col[i];//传送列选数据
            hc595_write_data(gled_row[i]);//传送行选数据
            delay_10us(100);//延时一段时间,等待显示稳定
            hc595_write_data(0x00);//消影
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes--kube-proxy组件深入理解

文章目录kube-proxy的工作原理netfilter的运行机制ipvs和iptables有什么区别&#xff1f;iptables在网络栈的hook点更多&#xff0c;而ipvs的hook点很少iptables的hook点ipvs的hook点如何切换&#xff1f;ipvs安装为何推荐ipvs&#xff1f;为什么iptables或者ipvs在每个节点上都…

面试官:你会几种分布式 ID 生成方案???

1. 为什么需要分布式 ID 对于单体系统来说&#xff0c;主键 ID 常用主键自动的方式进行设置。这种 ID 生成方法在单体项目是可行的&#xff0c;但是对于分布式系统&#xff0c;分库分表之后就不适应了。比如订单表数据量太大了&#xff0c;分成了多个库&#xff0c;如果还采用…

基于java+springboot+mybatis+vue+mysql的福聚苑社区团购

项目介绍 随着互联网的发展&#xff0c;各种团购模式也越来越多&#xff0c;尤其是最近几年的社区团购模式更是如火如荼的在进行着&#xff0c;我了能够让大家品味到更多的瓜果蔬菜&#xff0c;我们通过java语言&#xff0c;springboot框架、前端vue技术、数据库mysql开发了本…

使用Hilt搭建隔离层架构

在我们的日常编码的过程中&#xff0c;常常会遇到这种需求。例如&#xff1a;这个版本我们使用okhttp作为网络通信库&#xff0c;如果下个版本我们想要用volley作为网络通信库&#xff0c;那该怎么办呢&#xff1f;我们总不能对使用okhttp的地方一个个改成volley吧&#xff01;…

上班都在刷的Java八股文,老板都想要一份?

今天心血来潮刷刷牛客看到这&#xff0c;小伙在上班刷八股文被老板逮到&#xff01;真行啊&#xff0c;结果还让他给老板也发一份&#xff0c;感觉过不了多久就跟老板一起提桶跑路了 说到这&#xff0c;我最近也整理了GitHub上高标星的面试八股文&#xff0c;这种金九银十的节骨…

Java并发编程之Condition await/signal原理剖析

Java并发编程之Condition await/signal原理剖析 文章目录Java并发编程之Condition await/signal原理剖析Condition与Lock的关系Condition实现原理await()实现分析signal()实现分析Condition接口与Object监听器的区别Condition与Lock的关系 Condition本身也是⼀个接口&#xff…

OpenStack的简单部署

OpenStack的简单部署 文章目录OpenStack的简单部署一、OpenStack概述二、环境准备三、搭建流程1. 更新 & 升级2. 安装好用的vim VimForCpp3. 安装必要依赖4. 关闭防火墙、核心防护、NetworkManager5. 配置静态IP地址6.配置yum源7. 安装时间同步服务8. 使用packstack 一键部…

C罗老矣,我的程序人生还有多远

☆ 随着12月11号摩洛哥1-0葡萄牙比赛的结束&#xff0c;不仅说明葡萄牙对要结束本届卡塔尔世界杯了&#xff0c;就连C罗此生的世界杯之旅也将画上句号了。 ☆ 37岁的球星本该是人生最璀璨的阶段&#xff0c;但在足球生涯中&#xff0c;这已经是大龄了。不禁让我想到&#xff0c…

机器视觉(五):机器视觉与世界杯

11月22日晚上&#xff0c;球迷再次为阿根廷而惋惜。在当天晚上进行的世界杯小组赛C组首轮比赛中&#xff0c;阿根廷队1:2不敌沙特阿拉伯队&#xff0c;爆出了本届世界杯开赛至今最大的冷门。 天台好冷不仅如此&#xff0c;阿根廷队全场比赛总计被吹罚了10次越位&#xff0c;刷新…

SpringMVC(一) 构建项目

SpringMVC(一) 构建项目 1.创建项目 创建一个空的Maven项目 删除src目录&#xff0c;将新建的项目作为一个工作空间使用&#xff0c;然后在里面创建Module。 2.创建Module 选中刚才创建的项目&#xff0c;右键创建Module 选择Java语言的Maven 项目 3.添加SpringMVC依赖 在…

1-48-mysql-基础篇-DML-select

1-mysql-基础篇&#xff1a; 推荐网站 mysql&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/ 算法&#xff1a;https://www.cs.usfca.edu/~galles/visualization/about.html 数据库 1、数据库概述相关 1、 数据库的相关概念 DB&#xff1a;数据库&#xff08;Data…

git 多用户配置(公司/个人)

背景 张三是一个程序员&#xff0c;他的英文名叫 outlaw&#xff0c;emial: outlaw163.com。 张三入职了一家公司&#xff0c;公司给张三的企业邮箱是 zhangsancompany.com 这一次&#xff0c;他 0 元购了一台新笔记本&#xff0c;需要配置一下 git git 账号配置 配置全局用…

微信公众号开发,获取openid,授权登录 WeChat-official-account-openid

微信公众号开发 功能&#xff1a;自动登录&#xff0c;获取个人信息&#xff0c;上传图片 超多麻烦的情况&#xff0c;怎样获取openid呢&#xff1f; 以下我给大家提供源码&#xff0c;文本&#xff0c;视频资料 保证让你看了就明白哈 look效果 1.拉起用户授权 2.后台获取到…

微服务雪崩问题解决 Sentinel

雪崩问题以及解决方案 限流设置 达到阈值的效果 隔离和降级 熔断 授权规则 设置规则持久化 雪崩问题以及解决方案雪崩微服务调用链路中的某个服务出现故障&#xff0c;引起链路上其他服务都不可用&#xff0c;这就是雪崩解决方案超时处理&#xff0c;设定超时时间&#xff0c;请…

【软件工程期末复习内容】

前言 时不可以苟遇&#xff0c;道不可以虚行。 一、软件工程的概念 软件是计算机系统运行的 指令、数据 和 相关文档 的集合&#xff0c;即软件等于程序、数据、加上文档。程序&#xff1a;是事先按照预定功能性能等要求设计和编写的指令序列&#xff1b;数据&#xff1a;是使…

Python编程 while循环

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.循环控制 1.循环控制介绍 2.while循环表达式 3.while循环表达式 4.b…

Python实现ALO蚁狮优化算法优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer&#xff0c;ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…

47-linux-vim-安装以及权限等-缺少

47-linux-vim-安装以及权限等&#xff1a; vi编辑器简介 vim是一个全屏幕纯文本编辑器&#xff0c;是vi编辑器的增强版&#xff0c;我们主要讲解的是vim编辑器。可以利用别名让输入vi命令的时候&#xff0c;实际上执行vim编辑器&#xff0c;例如: [rootlocalhost ~]# alias v…

HTTP协议介绍

了解HTTP HTTP是什么呢&#xff1f;它是超文本传输协议&#xff0c;HTTP是缩写&#xff0c;它的全英文名是HyperText Transfer Protocol。 那么什么是超文本呢&#xff1f; 超文本指的是HTML&#xff0c;css&#xff0c;JavaScript和图片等&#xff0c;HTTP的出现是为了接收和…

一位全栈工程师转岗项目经理的初体验与总结

从上周开始&#xff0c;公司这边把我从全栈工程师的岗位调到了项目经理的岗位&#xff0c;开始尝试管理岗位&#xff0c;感觉换了一个岗位像是换了一份工作一样&#xff0c;又在次充满了干劲。开始新的项目&#xff0c;招纳新的项目成员&#xff0c;虽然都是在做软件开发的事情…