该题目是作者课程设计时所写题目,隔了段时间了,之前一直放到自己的网站上的,现在网站资源过期了,就放到这里保存了。

题目要求如下:

内容及要求

以MCS-51单片机为核心,设计一个通过面板键盘输入密码的数字式密码锁控制系统,具体要求如下:

① 密码通过面板键盘输入,由4~6位数字组成;

② 输入的密码与密钥相符时,控制3相6拍微型步进电机正转到开锁传感器到位,三次不符时,声光报警;

③ 开锁后5秒,检查关门传感器,若到位则控制3相6拍微型步进电机正转锁门,否则报警提示;

④ 密钥可以通过面板键盘更新;

⑤ 采用液晶显示器显示密码输入过程、密码输入错误等相关信息。

⑥ 拓展与创新。

这个题目的内容也不是很多,就是输入密码,如果正确则驱动电机转动开门(只驱动电机,其他的没搞),还有就是开门后要检测门是否关上以及是否长时间未关门。关门检测使用到了接近开关传感器(使用简单,近距离金属靠近则会有电平变化,就可以进行操作)。

本题目很多都是用到定时去处理一些东西,不是很灵活,而且代码有些冗余,所以改进空间还是很大的。

话不多说直接放代码和电路图以及框图。

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0  //显示屏的定义
#define GPIO_KEY P1
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
sbit LED_GREEN=P2^2;
sbit LED_RED=P2^3;
sbit SPEAKER=P3^3;
sbit JJKG=P3^4;
sbit I2C_SCL = P2^1;
sbit I2C_SDA = P2^0;
sbit motorA = P1^0;
sbit motorB = P1^1;
sbit motorC = P1^2;
sbit motorD = P1^3;
char code table[]="INPUT:";
char code jianzhi[]="0123456789ABCDEF"  ;
char code zhebi[]="************* ";
char code baocuo[]="ERROR";
char code dengdai[]="WAIT";
char code zaicishuru[]="INPUT AGAIN";
char code door[]="DOOR IS OPEN" ;
char code xinmima[]="SET SECRETE";
char code successful[]="SUCCESS";
char code Warnning[]="WARNING!";
char code GM[]="ATTENTION";
char code lock[]="------LOCK------" ;
char code ss[]="****************";
char code root[]="ROOT: *****"  ;
//char  kaimen[5]={1,2,3,4,5};
char kaimen[5];
char guanliyuan[5]={1,1,1,1,1};
char cunchumima[5];
char tz_flag;
uchar gm_flag=0;
uchar cuowu_flag=0;
uchar pd_flag;
uchar xunhuancishu;
uchar s=0;
uchar sp_flag=0;
uchar ks_flag=1;
uchar gl_flag=0;
uchar tiaozhuan_flag=0;
int data num[5];
uchar km_flag=1;
uchar n;
uchar i;
uchar k;
uchar m=0;
uchar j;
uchar r;
uchar guanmenjishi;
uchar password[5];
uint hang;
uint lie;
uint _flag_=0,cp=0;
void Delay1ms(uint c);
void Read_Busy() ;
void write_data(uchar date) ; //LCD1602写入8位命令子函数
void write_com(uchar com)    ;  //LCD1602写入8位数据子函数
void init();            //LCD1602初始化子程序
uint count(uint hang,uint lie);
void tishixinxi();
void addr_x_y(uint x,uint y);
void display(uint x,uint y,uint z);
void mimadisplay();
void keyboard(); //键盘按键扫描函数
void chenggong();
void shibai();
void mima();
void xiugaimima();
void JG();
void fanzhuan();
void guanmenbaojin();
void spchengxu();
void delay(uint t) ;
void zhengzhuan();//--声明全局变量--//
void I2C_Delay10us();
void I2C_Start();           //起始信号:在I2C_SCL时钟信号在高电平期间I2C_SDA信号产生一个下降沿
void I2C_Stop();            //终止信号:在I2C_SCL时钟信号高电平期间I2C_SDA信号产生一个上升沿
uchar I2C_SendByte(uchar dat, uchar ack);//使用I2c读取一个字节
uchar I2C_ReadByte();       //通过I2C发送一个字节。在I2C_SCL时钟信号高电平期间,保持发送信号I2C_SDA保持稳定/*********************IIC.c*************************************///延时:1us
void timer_init()
{TMOD=0x01;TL0=0xb0;TH0=0x3c;ET0=1;EA=1;
}
void timer_1() interrupt 1
{TL0=0xb0;TH0=0x3c;cp++;if(cp==100){cp=0;_flag_=1;}TR0=1;
}
void I2C_Delay10us()
{uchar a, b;for(b=1; b>0; b--){for(a=2; a>0; a--);}
}// 起始信号:在I2C_SCL时钟信号在高电平期间I2C_SDA信号产生一个下降沿
void I2C_Start()
{I2C_SDA = 1;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间是I2C_SDA保持时间>4.7usI2C_SDA = 0;I2C_Delay10us();//保持时间是>4usI2C_SCL = 0;          I2C_Delay10us();
}//终止信号:在I2C_SCL时钟信号高电平期间I2C_SDA信号产生一个上升沿
void I2C_Stop()
{I2C_SDA = 0;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间大于4.7usI2C_SDA = 1;I2C_Delay10us();
}//通过I2C发送一个字节。在I2C_SCL时钟信号高电平期间, 保持发送信号I2C_SDA保持稳定
uchar I2C_SendByte(uchar dat, uchar ack)
{uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。          for(a=0; a<8; a++)//要发送8位,从最高位开始{I2C_SDA = dat >> 7;     //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号dat = dat << 1;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间>4.7usI2C_SCL = 0;I2C_Delay10us();//时间大于4us        }I2C_SDA = 1;I2C_Delay10us();I2C_SCL = 1;while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低{b++;if(b > 200)     //如果超过200us没有应答发送失败,或者为非应答,表示接收结束{I2C_SCL = 0;I2C_Delay10us();return 0;}}I2C_SCL = 0;I2C_Delay10us();return 1;
}// 使用I2c读取一个字节
uchar I2C_ReadByte()
{uchar a = 0,dat = 0;I2C_SDA = 1;           //起始和发送一个字节之后I2C_SCL都是0I2C_Delay10us();for(a=0; a<8; a++)//接收8个字节{I2C_SCL = 1;I2C_Delay10us();dat <<= 1;dat |= I2C_SDA;I2C_Delay10us();I2C_SCL = 0;I2C_Delay10us();}return dat;
}//函数功能        : 往24c02的一个地址写入一个数据void At24c02Write(unsigned char addr,unsigned char dat)
{I2C_Start();I2C_SendByte(0xa0, 1);//发送写器件地址I2C_SendByte(addr, 1);//发送要写入内存地址I2C_SendByte(dat, 0);  //发送数据I2C_Stop();
}
// 读取24c02的一个地址的一个数据unsigned char At24c02Read(unsigned char addr)
{unsigned char num;I2C_Start();I2C_SendByte(0xa0, 1); //发送写器件地址I2C_SendByte(addr, 1); //发送要读取的地址I2C_Start();I2C_SendByte(0xa1, 1); //发送读器件地址num=I2C_ReadByte(); //读取数据I2C_Stop();return num;
}void Delay1ms(uint c)
{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}}}void Read_Busy()
{uchar busy;P0 = 0xff;LCD1602_RS = 0;LCD1602_RW = 1;do{LCD1602_E = 1;busy = P0;LCD1602_E = 0;}while(busy & 0x80);
}void write_com(uchar com)   //写入命令
{
Read_Busy();//判断忙
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
P0=com;
Delay1ms(5);
LCD1602_E=1;
Delay1ms(5);
LCD1602_E=0;
}
void write_data(uchar date)   //写入数据
{
Read_Busy();//判断忙
LCD1602_E=0;
LCD1602_RS=1;
LCD1602_RW=0;
P0=date;
Delay1ms(5);
LCD1602_E=1;
Delay1ms(5);
LCD1602_E=0;
}
void init() //LCD初始化子程序
{
Delay1ms(5);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}                   //1602显示void keyboard() //键盘按键扫描函数{GPIO_KEY = 0x0f;if(GPIO_KEY != 0x0f)//检测4行中哪一行按键是否按下{Delay1ms(10);  //延时消抖if(GPIO_KEY != 0x0f) //再次检测4行中哪一行按键是否按下{switch(GPIO_KEY) //根据IO的值来确定哪一行按键按下{case(0x07): lie=1; break;case(0x0b): lie=2; break;case(0x0d): lie=3; break;case(0x0e): lie=4; break;}}}GPIO_KEY = 0xf0;if(GPIO_KEY != 0xf0) //检测4列中哪一列按键是否按下{Delay1ms(10);  //延时消抖if(GPIO_KEY != 0xf0) //再次检测4列中哪一列按键是否按下{switch(GPIO_KEY) //根据IO的值来确定哪一列按键按下{case(0x70): hang=4; break;case(0xb0): hang=3; break;case(0xd0): hang=2; break;case(0xe0): hang=1; break;}} while((i<50)&&(GPIO_KEY != 0xf0))              {i++;Delay1ms(10);}i=0;}num[m]=count(hang,lie);if(num[m]==10)xiugaimima();m++;}uint count(uint hang,uint lie)
{
if(hang==1&&lie==1)
n=15;
if(hang==1&&lie==2)
n=0;
if(hang==1&&lie==3)
n=14;
if(hang==1&&lie==4)
n=13;
if(hang==2&&lie==1)
n=1;
if(hang==2&&lie==2)
n=2;
if(hang==2&&lie==3)
n=3;
if(hang==2&&lie==4)
n=12;
if(hang==3&&lie==1)
n=4;
if(hang==3&&lie==2)
n=5;
if(hang==3&&lie==3)
n=6;
if(hang==3&&lie==4)
n=11;
if(hang==4&&lie==1)
n=7;
if(hang==4&&lie==2)
n=8;
if(hang==4&&lie==3)
n=9;
if(hang==4&&lie==4)
n=10;
return n;
}
void tishixinxi()
{
init();
write_com(0x80);
for(i=0;i<6;i++)
write_data(table[i]);
write_com(0x80+7);
for(i=0;i<5;i++)
write_data(zhebi[i]);
}
void mima()
{
if(pd_flag==1)   {j=0;m=0;if(km_flag==1)chenggong();if(km_flag==0)shibai(); }
}void addr_x_y(uint x,uint y)   //列,行,写坐标,定位置
{ uchar temp=0x80;if(y){temp|=0x40;}temp|=x;write_com(temp);
}
void display(uint x,uint y,uint z)  //显示数字
{ addr_x_y(x,y);write_data(z+0x30);
}void mimadisplay() //密码显示
{
while(j<5)
{
GPIO_KEY = 0x0f;
if(GPIO_KEY != 0x0f&&m<5){
keyboard();
password[j]=num[j];
display(j+7,0,password[j]); //显示输入的密码
if(password[j]!=kaimen[j])
km_flag=0;  j++;}}pd_flag=1;mima();} void main()     //*****************************************************************************
{
timer_init();
tishixinxi();for(i=0;i<5;i++){
cunchumima[i]=At24c02Read(0x02+i) ;
Delay1ms(10);
}for(i=0;i<5;i++)
kaimen[i]=cunchumima[i];        Delay1ms(5);
while(1){
mimadisplay()  ;}
}void chenggong()  //*************************
{
init();
write_com(0x80+5);
Delay1ms(5);
for(i=0;i<4;i++)
{
write_data(dengdai[i]);
Delay1ms(5);
}
zhengzhuan();
}
void shibai() //********************
{
init();
cuowu_flag++;
sp_flag++;
if(cuowu_flag==3)
JG();
write_com(0x80);
for(i=0;i<5;i++)
write_data(baocuo[i]);
Delay1ms(100);
if(sp_flag==5)
spchengxu();
write_com(0x80+0x40);
for(i=0;i<11;i++)
write_data(zaicishuru[i]);
LED_RED=0;
Delay1ms(1000);
LED_RED=1;
km_flag=1;
tishixinxi();
mimadisplay();
}
void xiugaimima()
{
init();
j=0;
write_com(0x80);
for(i=0;i<11;i++)
write_data(xinmima[i]);
Delay1ms(500);
do //*******************************************************{       ks_flag=1;j=0;m=0;init();write_com(0x80);for(i=0;i<11;i++)write_data(root[i]) ;Delay1ms(10);
while(j<5)
{
GPIO_KEY = 0x0f;
if(GPIO_KEY != 0x0f&&m<5){
keyboard();
Delay1ms(10);
password[j]=num[j];
display(j+6,0,password[j]); //显示输入的密码
if(password[j]!=guanliyuan[j])
ks_flag=0;  j++;}}if(ks_flag==1)break;}while(1) ;//*************************************** Delay1ms(500);j=0;m=0;
init();
for(i=0;i<6;i++)
write_data(table[i]);
while(j<5){GPIO_KEY = 0x0f;
if(GPIO_KEY != 0x0f&&m<5){
keyboard();
password[j]=num[j];
display(j+7,0,password[j]); //显示输入的密码   At24c02Write(0x02+j,password[j]);Delay1ms(10);kaimen[j]=password[j];j++;}}
init();
Delay1ms(200);
write_com(0x80);
for(i=0;i<7;i++)
write_data(successful[i]);
LED_GREEN=0;
LED_RED=0;
Delay1ms(500);
LED_GREEN=1;
LED_RED=1;
tishixinxi();
Delay1ms(300);j=0;m=0;
mimadisplay();
}
void JG()
{ for(xunhuancishu=0;xunhuancishu<5;xunhuancishu++){init();write_com(0x80+5);for(i=0;i<5;i++)write_data(baocuo[i]);SPEAKER=0;LED_RED=0;Delay1ms(500);init();SPEAKER=1;LED_RED=1;Delay1ms(100);write_com(0x80+4);for(i=0;i<8;i++)write_data(Warnning[i]);SPEAKER=0;LED_RED=0;Delay1ms(500);}SPEAKER=1;LED_RED=1;km_flag=1;cuowu_flag=0;tishixinxi();mimadisplay();}
void guanmenbaojin()
{for(xunhuancishu=0;xunhuancishu<5;xunhuancishu++){if(JJKG==0){SPEAKER=1;break;}init();write_com(0x80+5);for(i=0;i<9;i++)write_data(GM[i]);SPEAKER=0;LED_RED=0;Delay1ms(500);if(JJKG==0){SPEAKER=1;break;}init();SPEAKER=1;LED_RED=1;Delay1ms(100);write_com(0x80+4);for(i=0;i<8;i++)write_data(Warnning[i]);SPEAKER=0;LED_RED=0;Delay1ms(1000);if(JJKG==0){SPEAKER=1;break;}}while(1){if(JJKG==0){uint q; motorA = 0;motorB = 0;motorC = 0;motorD = 0;//因为P1口管脚复位初始默认高电平(内外都接有上拉电阻),本人先将四相电位置低电平for(q=0;q<4;q++){for(r=0;r<150;r++){for(i = 1;i < 10; ++i)//用for循环实现几秒以上的延时函数,用while循环不能实现{motorD = 1;motorA = 1;delay(20);}           //AB通电1msmotorD = 0;motorA = 0; //AB关电for(i = 1;i < 10; ++i){motorC = 1;motorD = 1;delay(20);}//BC通电1msmotorC = 0;motorD = 0;   //BC关电for(i = 1;i < 10; ++i){motorB = 1;motorC = 1;delay(20);//CD通电1ms}motorB = 0;motorC = 0;//CD关电for(i = 1;i < 10; ++i){motorA = 1;motorB = 1;delay(20);//DA通电1ms}motorA = 0;motorB = 0;//DA关电} }  motorA = 1;motorB = 1;motorC = 1;motorD = 1;break;}}SPEAKER=1;LED_RED=1;km_flag=1;gm_flag=1;cuowu_flag=0;tishixinxi();mimadisplay();}void spchengxu()
{init();Delay1ms(20);write_com(0x80);for(i=0;i<16;i++)write_data(lock[i]);Delay1ms(10);write_com(0x80+0x40);for(i=0;i<16;i++)write_data(ss[i]);Delay1ms(10);while(1)
{
j=0;
m=0;
while(j<1)
{
GPIO_KEY = 0x0f;
if(GPIO_KEY != 0x0f&&m<5){
keyboard();
password[j]=num[j];
if(password[j]==14)
gl_flag=1;  j++;}}Delay1ms(10);if(gl_flag==1)break;
} init();write_com(0x80);for(i=0;i<11;i++)write_data(root[i]) ;Delay1ms(10);write_com(0x80+0x40);for(i=0;i<16;i++)write_data(lock[i]);Delay1ms(500);  do{         ks_flag=1;j=0;m=0;
while(j<5)
{
GPIO_KEY = 0x0f;
if(GPIO_KEY != 0x0f&&m<5){
keyboard();
Delay1ms(10);
password[j]=num[j];
display(j+6,0,password[j]); //显示输入的密码
if(password[j]!=guanliyuan[j])
ks_flag=0;  j++;}}init();write_com(0x80);for(i=0;i<11;i++)write_data(root[i]) ;Delay1ms(10);write_com(0x80+0x40);for(i=0;i<16;i++)write_data(lock[i]);    Delay1ms(10);if(ks_flag==1)break;}while(1)  ;j=0;m=0;SPEAKER=1;LED_RED=1;km_flag=1;gm_flag=0;ks_flag=1;gl_flag=0;sp_flag=0;cuowu_flag=0;tishixinxi();mimadisplay();  }void delay(uint t)
{while(t--);
}void fanzhuan()
{uint q; motorA = 0;motorB = 0;motorC = 0;motorD = 0;//因为P1口管脚复位初始默认高电平(内外都接有上拉电阻),本人先将四相电位置低电平for(q=0;q<4;q++){for(r=0;r<150;r++){for(i = 1;i < 10; ++i)//用for循环实现几秒以上的延时函数,用while循环不能实现{motorD = 1;motorA = 1;delay(20);}           //AB通电1msmotorD = 0;motorA = 0; //AB关电for(i = 1;i < 10; ++i){motorC = 1;motorD = 1;delay(20);}//BC通电1msmotorC = 0;motorD = 0;  //BC关电for(i = 1;i < 10; ++i){motorB = 1;motorC = 1;delay(20);//CD通电1ms}motorB = 0;motorC = 0;//CD关电for(i = 1;i < 10; ++i){motorA = 1;motorB = 1;delay(20);//DA通电1ms}motorA = 0;motorB = 0;//DA关电} }  motorA = 1;motorB = 1;motorC = 1;motorD = 1;mimadisplay();}
void zhengzhuan(){uint q;motorA = 0;motorB = 0;motorC = 0;motorD = 0;//因为P1口管脚复位初始默认高电平(内外都接有上拉电阻),本人先将四相电位置低电平for(q=0;q<4;q++){for(r=0;r<150;r++){for(i = 1;i < 10; ++i)//用for循环实现几秒以上的延时函数,用while循环不能实现{motorA = 1;motorB = 1;delay(20);}           //AB通电1msmotorA = 0;motorB = 0; //AB关电for(i = 1;i < 10; ++i){motorB = 1;motorC = 1;delay(20);}//BC通电1msmotorB = 0;motorC = 0;  //BC关电for(i = 1;i < 10; ++i){motorC = 1;motorD = 1;delay(20);//CD通电1ms}motorC = 0;motorD = 0;//CD关电for(i = 1;i < 10; ++i){motorD = 1;motorA = 1;delay(20);//DA通电1ms}motorD = 0;motorA = 0;//DA关电} }motorA = 1;motorB = 1;motorC = 1;motorD = 1;init();
write_com(0x80);
for(i=0;i<12;i++)
write_data(door[i]);
LED_GREEN=0;
Delay1ms(2000);
LED_GREEN=1;
cuowu_flag=0;
km_flag=1;
tishixinxi();
timer_init();
TR0=1;
while(1){if(_flag_==1){TR0=0;_flag_=0;break;}else if(JJKG==0) {TR0=0;break;}
}
/*for(i=0;i<200;i++)
{
Delay1ms(10);} */
if(JJKG==0) fanzhuan();
if(JJKG!=0) guanmenbaojin();
mimadisplay();}

电路图:

主程序框图:

视频效果展示:

IMG_3054

IMG_3052

基于51单片机智能电子密码锁的设计相关推荐

  1. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  2. 51单片机的电子密码锁的设计与仿真

    51单片机的电子密码锁的设计与仿真 看看效果图 简介 (1)CPU使用51单片机. (2)用4x4矩阵键盘作为操作信息输入. (3)用LCM1602液晶显示模块作为信息显示. (4)用蜂鸣器及发光二极 ...

  3. 万年历设计单片机c语言,基于51单片机的电子万年历的设计

    基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...

  4. 基于51单片机的电子万年历的设计

    (24条消息) 基于51单片机的电子万年历的设计说明书(完整word版本说明书+原理图+代码)资源-CSDN文库 摘 要 电子万年历是单片机系统的一个应用,由硬件和软件相配合使用.硬件由主控器.时钟电 ...

  5. 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计

    5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...

  6. 131、基于51单片机智能电子秤HX711仿真设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.硬件电路组成 二.功能 三.电脑开发环境 四.Protues仿真 五.程序 六.原理图 七.PCB图 八.资料包括 一.硬件电路组成 本系统采用 ...

  7. 基于51单片机的电子密码锁

    主要功能: 1.6位密码开锁 可以修改用户密码和管理员密码 断电记忆 3次错误报警锁住键盘 #include <REG51.h> #include<intrins.h> #de ...

  8. 【制作】基于金沙滩51单片机的电子密码锁程序

    基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...

  9. 基于51单片机的指纹密码锁设计

    目录 具体实现功能 设计介绍 单片机介绍 设计思路 资料内容 原理图 程序 仿真实现 全部资料 具体实现功能 具体功能: 本设计采用STC89C52.AT89C52.AT89S52作为主控芯片,LCD ...

最新文章

  1. python全栈开发 * 表格标签 表单标签 css 引入方式 * 180807
  2. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
  3. python 比特输出_Python小碗菜:and/or 与 amp;/| 到底有什么区别
  4. Citrix SD-WAN 被曝远程代码执行漏洞
  5. python读取行政区txt文件实现行政区树_数据库的点数据根据行政区shp来进行行政区处理,python定时器实现...
  6. Controller的激活与URL路由
  7. SSH: 关于remote主机上操作系统变更后SSH连接问题
  8. docker 指定网卡_Docker数据卷备份恢复、桥接网络设置
  9. chrome新版安装flash控件失败解决方法
  10. 2021中国机器人操作系统(ROS)暑期学校-转载
  11. 冒志鸿将出席 TF Blockchain 波特兰、温哥华 炉边畅谈 SEC 招标 DID | ArcBlock 预告...
  12. EJB:First component in name xxx not found - Java / Java EE
  13. 什么是AudioEffect
  14. vue使用百度地图,添加线路、站点,简易封装,方便修改(vue使用百度地图实现添加多条线路、多个站点)
  15. python实现2048编程_200 行代码实现简易版 2048 游戏 (python)
  16. 狼羊菜过河(C实现)
  17. Java 中的Monitor是什么意思?
  18. 用Excel函数制作迷你图?这技能简直不要太酷炫!| 薪技巧
  19. 韶关学院计算机科学与技术3 1,韶关学院专业代码
  20. PAT 乙级 锤子剪刀布 (20)

热门文章

  1. 支付宝与微信对账文件解析
  2. 博途数据类型wstring怎么用_西门子博图数据类型说明
  3. linux 解压zip文件到指定文件夹,Linux解压文件到指定目录
  4. 【网络经济与企业管理】选择题,精讲
  5. 百度大脑营业执照识别使用攻略
  6. 基于SaaS的教务系统平台设计构想
  7. 微服务 弹性伸缩_如何构建弹性微服务
  8. 【用户价值分析 RFM模型】用户价值分析
  9. win10 linux分区大小调整大小,如何在windows系统中调整分区大小(包括windows10/8/7)...
  10. Hadoop HDFS常用命令