基于51单片机俄罗斯方块小游戏

基于51单片机俄罗斯方块游戏

(仿真+程序)

功能介绍

具体功能:

1.用LCD12864显示游戏界面;

2.用四个按键控制游戏(左、右移、下移、翻转);

3.游戏规则和平时玩的俄罗斯方块一样;

​演示视频:

基于51单片机俄罗斯方块游戏 

添加图片注释,不超过 140 字(可选)

程序

#include <AT89X51.H>
/***公众号:木子单片机****/
#define DOWNTIME 30
#define MAXHANG 20
#define MAXLIE  16
#define MAXPIX  3
#define PUSHON  50#define LCD P2
#define EN  P3_0
#define RW  P3_1
#define RS  P3_2
#define CS1 P3_3
#define CS2 P3_4#define KEYLEFT P1_0
#define KEYDOWN P1_7
#define KEYRIGH P1_6
#define KEYROTATION P1_1unsigned char gkey=0xff,keystate=0,t0ms1=0,t0ms=0,downtimegap=0;
unsigned char miao=0,fen=0;
unsigned char downok;
bit keyflag,timeupdate,fashionupdate;
unsigned char idata cubeMap[MAXHANG][2];
typedef struct{unsigned char code * box;unsigned char cube : 4;unsigned char state : 4;char row;char column;} block;
block this;
unsigned int score=0;
unsigned char speed=1;
unsigned char code bittable[8]={1,2,4,8,0x10,0x20,0x40,0x80};
unsigned char code cube[]=
{
/*  ■■■■
*/
0,4,0xe,0,  0,2,6,2,     0,7,2,0,     4,6,4,0,/*■■■■ 
*/
0,8,0xe,0,  0,4,4,0xc,   0,0,0xe,2,   0,6,4,4,
/*■■■■    
*/
0,0xe,8,0,  0,4,4,6,     0,1,7,0,     6,2,2,0,
/*■■■■
*/
0,0xc,6,0,  0,2,6,4,     0,6,3,0,     2,6,4,0,
/*  ■■■■  
*/
0,6,0xc,0,  0,4,6,2,     0,3,6,0,     4,6,2,0,
/*■■■■ 
*/
0,0xf,0,0,  4,4,4,4,     0,0,0xf,0,   2,2,2,2,
/*■■■■ 
*/
0,6,6,0,    0,6,6,0,     0,6,6,0,     0,6,6,0
}; 
unsigned char code asii[]=
{0x3E,0x51,0x49,0x45,0x3E, // -0-0x00,0x42,0x7F,0x40,0x00, // -1-0x62,0x51,0x49,0x49,0x46, // -2-0x21,0x41,0x49,0x4D,0x33, // -3-0x18,0x14,0x12,0x7F,0x10, // -4-0x27,0x45,0x45,0x45,0x39, // -5-0x3C,0x4A,0x49,0x49,0x31, // -6-0x01,0x71,0x09,0x05,0x03, // -7-0x36,0x49,0x49,0x49,0x36, // -8-0x46,0x49,0x49,0x29,0x1E, // -9-0x00,0x36,0x36,0x00,0x00, // -:-10
//next0x7F,0x04,0x08,0x10,0x7F, // -N-110x7F,0x49,0x49,0x49,0x41, // -E-120x63,0x14,0x08,0x14,0x63, // -X-130x01,0x01,0x7F,0x01,0x01, // -T-14
//speed0x26,0x49,0x49,0x49,0x32, // -S-150x7F,0x09,0x09,0x09,0x06, // -P-160x7F,0x49,0x49,0x49,0x41, // -E-170x7F,0x41,0x41,0x41,0x3E, // -D-18
//score0x3E,0x41,0x41,0x41,0x22, // -C-19   0x3E,0x41,0x41,0x41,0x3E, // -O-200x7F,0x09,0x19,0x29,0x46, // -R-210x00,0x00,0x00,0x00,0x00,  // - -22
//GAME OVER0x3E,0x41,0x51,0x51,0x72, // -G-230x7C,0x12,0x11,0x12,0x7C, // -A-240x7F,0x02,0x0C,0x02,0x7F, // -M-250x1F,0x20,0x40,0x20,0x1F, // -V-26
//TIME
//  0x00,0x41,0x7F,0x41,0x00  // -I-27
};void lcdCmd(unsigned char cmd)
{bit ea;ea=EA;EA=0;EN=0;RW=0;RS=0;LCD=cmd;EN=1;EN=1;EN=0;EA=ea;
}
//-------------------------------------------------------------------------------
void lcdWriteByte(unsigned char ch)
{EN=0;RS=1;RW=0;LCD=ch;EN=1;EN=1;EN=0;
}
//--------------------------------------------------------------------------------
void lcdSetPage(unsigned char page)
{page &=0x7;page +=0xb8;lcdCmd(page);
}
//--------------------------------------------------------------------------------
void lcdSetColumn(unsigned char column)
{column &=0x3f;column +=0x40;lcdCmd(column);
}
//--------------------------------------------------------------------------------
//character fron=5*8
void lcdPlayChar(unsigned char index,unsigned char page,unsigned char colume)
{unsigned char i,temp;unsigned int p;p=5*index;for(i=colume;i<colume+5;i++){if(i<64){CS1=1;CS2=0;temp=i;}else{CS1=0;CS2=1;temp=i-64;}lcdSetPage(page);lcdSetColumn(temp);lcdWriteByte(asii[p++]);}
}
//---------------------------------------------------------------------------------
//rectangle(3,0,50,60)
void rectangle(void)
{unsigned char i,page;CS1=1;CS2=0;lcdSetPage(0);  lcdSetColumn(2); EN=0;RS=1;RW=0;LCD=0xff;EN=1;EN=1;EN=0;for(i=3;i<51;i++){EN=0;RS=1;RW=0;LCD=0x1;EN=1;EN=1;EN=0;   }EN=0;RS=1;RW=0;LCD=0xff;EN=1;EN=1;EN=0;
//---------------------------
for(page=1;page<7;page++){ lcdSetPage(page);  lcdSetColumn(2); EN=0;RS=1;RW=0;LCD=0xff;EN=1;EN=1;EN=0;for(i=3;i<51;i++){EN=0;RS=1;RW=0;LCD=0x0;EN=1;EN=1;EN=0;   }EN=0;RS=1;RW=0;LCD=0xff;EN=1;EN=1;EN=0;}
//---------------------------lcdSetPage(7);  lcdSetColumn(2); EN=0;RS=1;RW=0;LCD=0x1f;EN=1;EN=1;EN=0;for(i=3;i<51;i++){EN=0;RS=1;RW=0;LCD=0x10;EN=1;EN=1;EN=0;   }EN=0;RS=1;RW=0;LCD=0x1f;EN=1;EN=1;EN=0;
}
//--------------------------------------------------------------------
//x:列;y行,页 3*3
void lcdPutPix(unsigned char x, unsigned char y,unsigned char flag)
{unsigned char i,dat,bitmask,nextbit;bit bflag,pflag,ea;x=x*MAXPIX;y=y*MAXPIX;bflag=0;pflag=0;i=y%8;if(i==0)bitmask=0x7;else if(i==1)bitmask=0xe;else if(i==2)bitmask=0x1c;else if(i==3)bitmask=0x38;else if(i==4)bitmask=0x70;else if(i==5)bitmask=0xe0;else if(i==6){bflag=1;bitmask=0xc0;nextbit=1;}else if(i==7){bflag=1;bitmask=0x80;nextbit=3;}if(x<62){CS1=1;CS2=0; }else if(x>63){x-=64;CS1=0;CS2=1;}elsepflag=1;lcdSetPage(y/8);for(i=x;i<x+MAXPIX;i++){if(pflag){if(i==62 || i==63){CS1=1;CS2=0;lcdSetPage(y/8);}else if(pflag && i==64){CS1=0;CS2=1;lcdSetPage(y/8);}} lcdSetColumn(i); ea=EA;EA=0;EN=0;LCD=0xff;RS=1;RW=1; EN=1; EN=0;EN=1; dat=LCD;EN=0;if(flag==1)dat|=bitmask;elsedat&=~bitmask;lcdSetColumn(i);  EN=0;RW=0;RS=1;LCD=dat;EN=1;EN=1;EN=0;EA=ea;}if(bflag){lcdSetPage(y/8+1);for(i=x;i<x+MAXPIX;i++){if(pflag){if(i==62 || i==63){CS1=1;CS2=0;lcdSetPage(y/8+1);}else if(pflag && i==64){CS1=0;CS2=1;lcdSetPage(y/8+1);}} lcdSetColumn(i); ea=EA;EA=0;EN=0;LCD=0xff;RS=1;RW=1; EN=1; EN=0;EN=1; dat=LCD;EN=0;if(flag==1)dat|=nextbit;elsedat&=~nextbit;lcdSetColumn(i);  EN=0;RW=0;RS=1;LCD=dat;EN=1;EN=1;EN=0;EA=ea;  }}
}
//------------------------------------------------------------------
void lcdClear(void)
{unsigned char i,page;CS1=1;CS2=0;for(page=0;page<8;page++){lcdSetPage(page);lcdSetColumn(0);for(i=0;i<64;i++)lcdWriteByte(0);}CS1=0;CS2=1;for(page=0;page<8;page++){lcdSetPage(page);lcdSetColumn(0);for(i=0;i<64;i++)lcdWriteByte(0);}
}
//-----------------------------------------------------------------
#define STAR 53
#define WIDE 6
void lcdIni(void)
{lcdCmd(0x3f);lcdCmd(0xc0);lcdClear();rectangle();
//NEXTlcdPlayChar(11,0,STAR);lcdPlayChar(12,0,STAR+1*WIDE);lcdPlayChar(13,0,STAR+2*WIDE);lcdPlayChar(14,0,STAR+3*WIDE);
//SPEEDlcdPlayChar(15,3,STAR);lcdPlayChar(16,3,STAR+1*WIDE);lcdPlayChar(17,3,STAR+2*WIDE);lcdPlayChar(17,3,STAR+3*WIDE);lcdPlayChar(18,3,STAR+4*WIDE);
//01lcdPlayChar(0,4,STAR+2*WIDE);lcdPlayChar(1,4,STAR+3*WIDE);//SCORElcdPlayChar(15,5,STAR);lcdPlayChar(19,5,STAR+1*WIDE);lcdPlayChar(20,5,STAR+2*WIDE);lcdPlayChar(21,5,STAR+3*WIDE);lcdPlayChar(12,5,STAR+4*WIDE);lcdPlayChar(0,6,STAR+1*WIDE);lcdPlayChar(0,6,STAR+2*WIDE);lcdPlayChar(0,6,STAR+3*WIDE);lcdPlayChar(0,6,STAR+4*WIDE);
//TIMElcdPlayChar(0,7,STAR);lcdPlayChar(0,7,STAR+1*WIDE);lcdPlayChar(10,7,STAR+2*WIDE);lcdPlayChar(0,7,STAR+3*WIDE);lcdPlayChar(0,7,STAR+4*WIDE);
}
//-----------------------------------------------------------------
void showScoreSpeed(void)
{unsigned char num[5];char i;unsigned int temp;temp=score;for(i=0;i<5;i++){num[i]=temp%10;temp=temp/10;}for(i=4;i>0;i--){if(num[i]==0)num[i]=22;elsebreak;}for(i=4;i>-1;i--)lcdPlayChar(num[i],6,STAR+(4-i)*WIDE);lcdPlayChar(speed/10,4,STAR+2*WIDE);lcdPlayChar(speed%10,4,STAR+3*WIDE);
}
//-------------------------------------------------------------------
void timeServer(void)
{if(timeupdate){timeupdate=0;lcdPlayChar(fen/10,7,STAR);lcdPlayChar(fen%10,7,STAR+1*WIDE);lcdPlayChar(10,7,STAR+2*WIDE);lcdPlayChar(miao/10,7,STAR+3*WIDE);lcdPlayChar(miao%10,7,STAR+4*WIDE);    }if(fashionupdate){fashionupdate=0;lcdPlayChar(22,7,STAR+2*WIDE);}
}
//===================================================================
void t0isr(void) interrupt 1
{unsigned char key;TH0=(65536-10000)/256;TL0=(65536-10000)%256;downtimegap++;t0ms=++t0ms%100;if(t0ms==0){timeupdate=1;miao=++miao%60;if(miao==0)fen=++fen%60;}if(t0ms==50)fashionupdate=1;
//----------------------------key=0xff;KEYLEFT=1;KEYRIGH=1;KEYROTATION=1;KEYDOWN=1;if(!KEYLEFT)key=0;if(!KEYRIGH)key=1;if(!KEYROTATION)key=2;if(!KEYDOWN)key=3;switch(keystate){case 0: if(key!=gkey){gkey=key;keystate=1;}break;case 1: if(key==gkey){t0ms1=0;keystate=2;if(key!=0xff)keyflag=1;}elsekeystate=0;break;case 2: if(key==gkey){if(t0ms1<PUSHON)t0ms1++;}else{keystate=0;keyflag=0;gkey=0xff;}break;}}
//===================================================================
void showNextCube(unsigned char code * p,unsigned char x,unsigned char y)
{unsigned char i,j,temp;for(i=0;i<4;i++){  temp=1;for(j=0;j<4;j++){if(p[i] & temp)lcdPutPix(x+j,y+i,1); elselcdPutPix(x+j,y+i,0); temp<<=1;}}  
}
//------------------------------------------------------------------
void createCube(void)
{static unsigned char next;this.cube=next;next=TL0%7;this.row=0;this.column=6;this.state=0;this.box=cube+16*this.cube;showNextCube(cube+16*next,19,3);
}
//------------------------------------------------------------------
void showCubeMap(void)
{unsigned char hang,lie,temp; for(hang=MAXHANG-1;hang>0;hang--){if(cubeMap[hang][0]==0 && cubeMap[hang][1]==0)break;for(lie=0;lie<(MAXLIE/8);lie++){temp=8*lie;if(cubeMap[hang][lie]&0x01)lcdPutPix(temp+1,hang,1);if(cubeMap[hang][lie]&0x02)lcdPutPix(temp+2,hang,1);if(cubeMap[hang][lie]&0x04)lcdPutPix(temp+3,hang,1);if(cubeMap[hang][lie]&0x08)lcdPutPix(temp+4,hang,1);if(cubeMap[hang][lie]&0x10)lcdPutPix(temp+5,hang,1);if(cubeMap[hang][lie]&0x20)lcdPutPix(temp+6,hang,1);if(cubeMap[hang][lie]&0x40)lcdPutPix(temp+7,hang,1);if(cubeMap[hang][lie]&0x80)lcdPutPix(temp+8,hang,1);}}
}
//-------------------------------------------------------------------
void writeCubeToMap(void)
{unsigned char row,column,temp;unsigned char hang,lie;for(row=0;row<4;row++){temp=1;for(column=0;column<4;column++){if(this.box[row] & temp){hang=this.row+row;lie=this.column+column;cubeMap[hang][lie/8] |=bittable[lie%8];lcdPutPix(lie+1,hang,1);			  }temp<<=1;}}
}
//-------------------------------------------------------------------
void clearCubeFromMap(void)
{unsigned char row,column,temp;unsigned char hang,lie;for(row=0;row<4;row++){temp=1;for(column=0;column<4;column++){if(this.box[row] & temp){hang=this.row+row;lie=this.column+column;cubeMap[hang][lie/8] &=~bittable[lie%8];lcdPutPix(lie+1,hang,0);		  }temp<<=1;}}
}
//-------------------------------------------------------------------
unsigned char checkBorder(void)
{if(this.box[3]!=0 && this.row>(MAXHANG-4)) return 1;else if(this.box[2]!=0 && this.row>(MAXHANG-3))return 1;else if(this.box[1]!=0 && this.row>(MAXHANG-2))return 1;else if(this.box[0]!=0 && this.row>(MAXHANG-1))return 1;
//---------------------if((this.box[0] & 0x01) || (this.box[1] & 0x01) || (this.box[2] & 0x01) ||(this.box[3] & 0x01) ) {if(this.column<0)return 1;}   else if((this.box[0] & 0x02) || (this.box[1] & 0x02) || (this.box[2] & 0x02) ||(this.box[3] & 0x02) ) {if(this.column<-1)return 1;}else if((this.box[0] & 0x04) || (this.box[1] & 0x04) || (this.box[2] & 0x04) ||(this.box[3] & 0x04) ) {if(this.column<-2)return 1;}else if((this.box[0] & 0x08) || (this.box[1] & 0x08) || (this.box[2] & 0x08) ||(this.box[3] & 0x08) ) {if(this.column<-3)return 1;}
//---------------------if((this.box[0] & 0x08) || (this.box[1] & 0x08) || (this.box[2] & 0x08) ||(this.box[3] & 0x08) ) {if(this.column>(MAXLIE-4))return 1;}   else if((this.box[0] & 0x04) || (this.box[1] & 0x04) || (this.box[2] & 0x04) ||(this.box[3] & 0x04) ){if(this.column>(MAXLIE-3))return 1;}else if((this.box[0] & 0x02) || (this.box[1] & 0x02) || (this.box[2] & 0x02) ||(this.box[3] & 0x02) ) {if(this.column>(MAXLIE-2))return 1;}else if((this.box[0] & 0x08) || (this.box[1] & 0x08) || (this.box[2] & 0x08) ||(this.box[3] & 0x08) ) {if(this.column>(MAXLIE-1))return 1;}
//--------------------return 0;
}
//------------------------------------------------------------------
unsigned char checkClask(void)
{unsigned char row,column,temp;unsigned char hang,lie;for(row=0;row<4;row++){temp=1;for(column=0;column<4;column++){if(this.box[row] & temp){hang=this.row+row;lie=this.column+column;if(cubeMap[hang][lie/8] & bittable[lie%8])return 1;}temp<<=1;}}return 0;
}
//-------------------------------------------------------------------
void checkMap(void)
{unsigned char i,j,delete;bit full;full=0;delete=0;for(i=MAXHANG-1;i>0;i--){if(cubeMap[i][0]==0 && cubeMap[i][1]==0)break;if(cubeMap[i][0]==0xff && cubeMap[i][1]==0xff){delete++;full=1;for(j=i;j>0;j--){cubeMap[j][0]=cubeMap[j-1][0];cubeMap[j][1]=cubeMap[j-1][1];}i++;cubeMap[0][0]=0;cubeMap[0][1]=0;}}if(full){if(delete==1)score++;else if(delete==2)score+=4;else if(delete==3)score+=9;else if(delete==4)score+=16;rectangle();showCubeMap();if(score<50)speed=1;else if(score<100)speed=2;else if(score<500)speed=3;else if(score<1000)speed=4;else if(score<5000)speed=5;else if(score<10000)speed=6;else if(score<20000)speed=7;else if(score<30000)speed=8;else if(score<40000)speed=9;else if(score<50000)speed=10;else if(score<60000)speed=11;else speed=12;  showScoreSpeed();}
}
//-------------------------------------------------------------------
void moveLeft(void)
{clearCubeFromMap();this.column--;if(checkBorder() || checkClask())this.column++;writeCubeToMap();
}
//-------------------------------------------------------------------
void moveRigh(void)
{clearCubeFromMap();this.column++;if(checkBorder() || checkClask())this.column--;writeCubeToMap();
}
//-------------------------------------------------------------------
void moveDown(void)
{clearCubeFromMap();this.row++;if(checkBorder() || checkClask()){this.row--;downok=1;}elsedownok=0;writeCubeToMap();if(downok)checkMap();
}
//------------------------------------------------------------------
void cubeRotation(void)
{unsigned char temp;temp=this.state;clearCubeFromMap();this.state=++this.state%4;this.box=cube+16*this.cube+4*this.state;if(checkBorder() || checkClask()){this.state=temp;this.box=cube+16*this.cube+4*this.state;}writeCubeToMap(); 
}
/

硬件设计

使用元器件:

单片机:AT89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

        资料获取请关注同名公众号,全部资料包括仿真源文件 、程序等。具体内容如下,全网最全! !

可以关注下方公众号!

点赞分享一起学习成长。

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

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

相关文章

点估计参数估计

点估计&#xff08;Point Estimation&#xff09;是一种统计推断的方法&#xff0c;用于通过样本统计量来估计总体参数。在概率论和数理统计中&#xff0c;点估计是将总体的未知参数估计为某个确定的值或在某个确定的点上&#xff0c;因此也被称为定值估计。 定义&#xff1a; …

AXI Quad SPI IP核中命令的使用

1 双通道SPI和混合内存模式下支持的常用命令 对于配置中Mode设置为Dual且Slave Device设置为Mixed的情况&#xff0c;IP核支持表3-1中列出的命令。这些命令在Winbond、Micron和Spansion内存设备上具有相同的命令、地址和数据行为。 某些命令&#xff0c;如fast read、dual I/…

从年金理论到杠杆效应,再到财务报表与投资评估指标

一、解释普通年金终值和普通年金现值的概念。 普通年金终值&#xff1a;以利率为1%&#xff0c;每期收款100元&#xff0c;5期为例&#xff0c;普通年金终值的折算过程如图&#xff1a; 普通年金现值&#xff1a;以利率为1%&#xff0c;每期收款100元&#xff0c;5期为例&am…

【RabbitMQ】RabbitMQ配置与交换机学习

【RabbitMQ】RabbitMQ配置与交换机学习 文章目录 【RabbitMQ】RabbitMQ配置与交换机学习简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收&#xff08;监听&#xff09;类3. 实现能者多劳 交换机F…

C++类与对象(拷贝与类的内存管理)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 文章目录 前言一.对象的动态建立和释放二.多个对象的构造和析构三.深拷贝与浅拷贝四.C类的内存管理总结 前言 …

element-plus日历组件el-calendar自定义内容,每天绑定不同的值

效果 代码 <template><el-calendar v-model"calendarDate"><template #date-cell"{ data }"><p :class"data.isSelected ? is-selected : ">{{ data.day.split("-").slice(1).join("-") }}{{ d…

IDEA创建SpringBoot项目的时候,如何使用Java8,怎么办?

在创建springboot项目的时候,IDEA提示&#xff0c;最低Java版本要求17&#xff0c;但是实际上我们可能不需要这么高的版本&#xff0c;怎么使用Java8呢&#xff1f; 解决办法 修改Server URL地址即可&#xff1a;https://start.aliyun.com

天才程序员周弈帆 | Stable Diffusion 解读(二):论文精读

本文来源公众号“天才程序员周弈帆”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;Stable Diffusion 解读&#xff08;二&#xff09;&#xff1a;论文精读 【小小题外话】端午安康&#xff01; 在上一篇文章天才程序员周弈帆 …

【数据结构】排序(上)

个人主页~ 堆排序看这篇~ 还有这篇~ 排序 一、排序的概念及应用1、概念2、常见的排序算法 二、常见排序的实现1、直接插入排序&#xff08;1&#xff09;基本思想&#xff08;2&#xff09;代码实现&#xff08;3&#xff09;时间复杂度&#xff08;4&#xff09;空间复杂度 2…

【设计模式】创建型设计模式之 工厂模式

一、介绍 工厂模式可以分为 3 个小类 简单工厂模式工厂方法模式抽象工厂模式 工厂模式的工厂类&#xff0c;并不一定以 Factory 结尾&#xff0c;例如 DataFormat、Calender 他们都是工厂类&#xff0c;通过静态方法来创建实例。 除此之外&#xff0c;创建对象的方法名称一…

VBA即用型代码手册:删除重复行Delete Duplicate Rows

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

streamlit:如何快速构建一个应用,不会前端也能写出好看的界面

通过本文你可以了解到&#xff1a; 如何安装streamlit&#xff0c;运行起来第一个demo熟悉streamlit的基本语法&#xff0c;常用的一些组件使用streamlit库构建应用 大模型学习参考&#xff1a; 大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业…

(二)深度学习基础练习题(54道选择题)

本文整理了深度学习基础知识相关的练习题&#xff0c;共54道&#xff0c;适用于想巩固深度学习基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-深度学习&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09; 6&#…

音程与和弦 音程协和度

2个音符之间的音程计算 1234567&#xff0c;1到7的音程是7度&#xff0c;音程是计算总长度&#xff0c;看音级的个数。 Cubase中的音程计算 下面一个是4度&#xff0c;一个是3度&#xff0c;格子中深色的行就是黑键行。 根据半音数量来确定对应音程的专业术语叫法 旋律音程、…

用咖啡来理解springboot3的自动配置机制

大家好&#xff0c;这里是教授.F 目录 前提知识&#xff1a; 场景引入&#xff1a; 1.Starter依赖&#xff1a; 2.默认配置&#xff1a; 3.自定义配置&#xff1a; 4.条件化配置&#xff1a; 5.自动装配&#xff1a; 具体过程&#xff1a; 扫包路径的配置&#xff1a; 配置…

解锁ChatGPT:从GPT-2实践入手解密ChatGPT

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

【深度学习】—— 神经网络介绍

神经网络介绍 本系列主要是吴恩达深度学习系列视频的笔记&#xff0c;传送门&#xff1a;https://www.coursera.org/deeplearning-ai 目录 神经网络介绍神经网络的应用深度学习兴起的原因 神经网络&#xff0c;全称人工神经网络&#xff08;Artificial Neural Network&#xf…

私有化AI搜索引擎FreeAskInternet

什么是 FreeAskInternet FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;并使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统将使用 searxng 进行多引擎搜索&#xff0c;并将搜索结果合并到ChatGPT3.5 LLM 中&#xff0c;并…

Python私教张大鹏 Vue3整合AntDesignVue之Breadcrumb 面包屑

显示当前页面在系统层级结构中的位置&#xff0c;并能向上返回。 何时使用 当系统拥有超过两级以上的层级结构时&#xff1b; 当需要告知用户『你在哪里』时&#xff1b; 当需要向上导航的功能时。 案例&#xff1a;面包屑导航基本使用 核心代码&#xff1a; <template…

【Linux文件篇】系统文件、文件描述符与重定向的实用指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;相信大家对文件都不会太陌生、也不会太熟悉。在没有学习Linux操作系统时&#xff0c;我们在学习C或C时都学过如何去创建、打开、读写等待文件的操作&#xff0c;知道一些语言级别的一些接口与函数。但…