基于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.rhkb.cn/news/345693.html

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

相关文章

基于vue的音乐播放器的设计与实现(论文+源码)_kaic

摘 要 当下&#xff0c;如果还依然使用纸质文档来记录并且管理相关信息&#xff0c;可能会出现很多问题&#xff0c;比如原始文件的丢失&#xff0c;因为采用纸质文档&#xff0c;很容易受潮或者怕火&#xff0c;不容易备份&#xff0c;需要花费大量的人员和资金来管理用纸质文…

C51学习归纳9 --- I2C通讯学习(重点)

首先&#xff0c;我自己学习过以后的直观感觉&#xff0c;通信协议是单片机的灵魂之一&#xff0c;只有规定好了通信协议我们才能够正确的接收到信息&#xff0c;才能实现更加深入的研究。所以这一部分是需要好好学习的。 本节借助一个可存储的芯片AT24C02&#xff0c;进行在I2…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

【清华大学】《自然语言处理》(刘知远)课程笔记 ——NLP Basics

自然语言处理基础&#xff08;Natural Language Processing Basics, NLP Basics&#xff09; 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言…

关于Latitude5490的问题Bios引导问题

关于Latitude5490的问题Bios引导问题 一、问题描述1、第一次维修&#xff1a;2、第二次维修&#xff1a; 二、捣鼓过程1、Latitude 5490的Bios引导2、捣鼓硬盘分区格式3、使用PE修复引导4、处理方法 三、参考链接 一、问题描述 本人原本电脑型号为Latitude 5480&#xff0c;电…

归并排序——逆序数对的统计

逆序数对的统计 题目描述 运行代码 #include <iostream> using namespace std; #define LL long long const int N 1e5 5; int a[N], tmp[N]; LL merge_sort(int q[], int l, int r) {if (l > r)return 0; int mid l r >> 1; LL res merge_sort(q, l,…

OPPO高级项目经理曹帆受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 OPPO互联网服务系统内容生态中心高级互联网项目经理曹帆先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“加、减、乘、除——激活项目团队效能”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 议…

初中英语优秀作文分析-004My favorite Chinese traditional story-我最喜欢的中国传统故事

PDF格式公众号回复关键字:SHCZYF004 记忆树 1 There are many traditional stories in China. 翻译 中国有很多传统故事 简化记忆 传统故事 句子结构 There be句型 many traditional stories 名词短语 很多传统故事&#xff0c;in China 介词短语&#xff0c;在中国 …

Docker:利用Docker搭建一个nginx服务

文章目录 搭建一个nginx服务认识nginx服务Web服务器反向代理服务器高性能特点 安装nginx启动nginx停止nginx查找nginx镜像拉取nginx镜像&#xff0c;启动nginx站点其他方式拉取nginx镜像信息通过 DIGEST 拉取镜像 搭建一个nginx服务 首先先认识一下nginx服务&#xff1a; NGI…

【Linux】进程6——环境变量

1.什么是环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 比如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪里&#xff0c;但是照样可以链接成功&…

什么是档案数字化管理

档案数字化管理指的是将传统的纸质档案转换为数字形式&#xff0c;并通过电子设备、软件和网络技术进行管理和存储的过程。 档案数字化管理包括以下几个步骤&#xff1a; 1. 扫描和数字化&#xff1a;将纸质档案通过扫描仪转换为数字图像或文档。可以使用OCR&#xff08;光学字…

使用C++结合OpenCV进行图像处理与分类

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

Java 期末复习 习题集

&#x1f496; 单选题 &#x1f496; 填空题 &#x1f496; 判断题 &#x1f496; 程序阅读题 1. 读代码写结果 class A {int m 5;void zengA(int x){m m x;}int jianA(int y){return m - y;} }class B extends A {int m 3;int jianA(int z){return super.jianA(z) m;} …

笔记本充电出现了问题。

不知道为什么。电池充电图片一直显示的空。谁能救救我&#xff01;

[图解]建模相关的基础知识-07

1 00:00:04,710 --> 00:00:08,900 这是划分&#xff0c;下一个是有序对的概念 2 00:00:11,720 --> 00:00:13,800 我们知道集合是不分顺序的 3 00:00:15,090 --> 00:00:18,200 我们花括号来代表集合的话 4 00:00:18,210 --> 00:00:21,000 AB花括号等于BA花括号 …

【python报错】关于 xlrd.biffh.XLRDError: Excel xlsx file; not supported 解决方法【已解决】

【Python报错】关于xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方法【已解决】 在使用Python进行数据分析时&#xff0c;经常需要处理Excel文件。xlrd库是一个流行的用于读取Excel文件的库&#xff0c;但如果你在使用xlrd打开.xlsx文件时遇到了xlrd.biffh.XLRDE…

aabb c++

题目描述 查找形如"aabb"的四位完全平方数&#xff0c;也即前两位数字相同&#xff0c;后两位数字也相同。 输入 无 输出 若干行&#xff0c;每行一个符合条件的四位数&#xff08;从小到大&#xff09;。 分析&#xff1a; 完全平方数&#xff1a; &#xff…

两款好用的IOS、Android图片处理应用

GIF 小助手 GIF工具包是一个简单实用的GIF动画编辑器&#xff0c;目前仅支持IOS平台。 使用该软件&#xff0c;可以将多个图像、视频和现场照片创建为gif。 主要功能&#xff1a; 多种输入源&#xff1a;用户可以将多个图片、视频或Livephoto转换成GIF动图。 编辑功能&#…

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台。通过搜索结果&#xff0c;我们可以了解到 TalkingData 的一些关键特性和市场情况&#xff0c;并将其与同类型产品进行比较。 TalkingData 产品特性 数据统计与分析&#xff1a;提供专业的数…

西门子学习笔记11 - PTO脉冲指令的使用

1、使用指令前的设置 1、打开一个脉冲发生器&#xff0c;并启用 2、选择使用PTO(脉冲A和方向B) 3、硬件设置输出 4、这样前期的准备工作就完成了 2、指令的使用 1、添加指令CTRL_PTO 2、配置如下 3、方向控制程序如下 4、最后进行测试即可