51单片机用c语言如何去制作电子音乐盒

需要屏幕可以显示所播放的歌曲,可以切换下一曲和上一曲,谢了图片说明图片说明

c

2个回答

qq_31935255
乐果儿 谢了〜棒棒哒
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C51单片机C语言电子表

数码管动态显示实时时间(时分秒显示)。同时可通过按键或串口设置时、分、秒(串口和按键均要)。并且可以设置闹钟当闹钟时间到时蜂鸣器持续发出 滴..声 同时led灯不停闪烁 且在一分钟内没有按指定停止按键闹钟将自动停止。//请在代码中做出必要注释,数码管从左到右显示时分秒,使用的时普中科技的51开发板,希望可以直接编译运行

基于单片机用C语言的音乐播放器怎么实现暂停和播放

void song(unchar *p) { unint temp; unchar jp;//jp是简谱 // unint i=0,j; temp=0; while(1) { temp=*(p+i); if(temp==0xff) { EA=0; break; } jp=temp/16; //取数的高4位 P1=yinyue[jp]; if(jp!=0) { timeh=cuzhi[jp*2]; timel=cuzhi[jp*2+1]; } else { TR1=0; fm=1;//关蜂鸣器 } delay(temp%16); //取数的低4位 TR1=0; //唱完一个音停10MS fm=1; delay_ms(10); TR1=1; i++; keyboard(); if(number==6) { number=0; fm=1; EA=0; while(1) { keyboard(); if(number==6) { EA=1; // i=j; break; } } } } fm=1;return; } //其中number是按键对应的传递数值来实现暂停,可是不知道为什么能实现暂停但是不能再播放

51单片机C语言编程问题

這個程序是這樣的,分IN0,IN1,JP1,JP2, JP2為0時,常規測試(全顯示,格子1,格子2) JP2為1時,測試模式 當JP2為1時,而且JP1為1時,進入測試模式1 測試模式1: 當IN0為0時,顯示pic1; 當IN1為0時,顯示pic2; 當IN0=0&&IN1=0以及IN0=1&&IN1=1,顯示blank 當JP2為1時,而且JP1為0時,進入測試模式2 當IN1接收到一段約為50ms的脈衝,將IN0拉高1.5秒, 如果這1.5秒內,IN0有變為0,就顯示pic1,且持續顯示到IN0變為1,然後顯示blank 當IN1接收到一段約為50ms的脈衝,將IN0拉高1.5秒, 如果超過這1.5秒內,IN0都沒有變0,就顯示pic2持續3秒,然後顯示blank 重點來了,目前測試模式2,我寫不出來,程序見下面,麻烦大虾帮忙看看 见地址: http://dl.vmall.com/c0r3wl69vx# 或者下面这个112.C <a href="http://howfile.com/file/chengxuyuan025/45273595/" target="_blank">下載: 112.C</a>

问一下大神们,51单片机按键控制音乐播放c语言

问一下,单片机按键控制音乐播放,上一首,下一首,重复播放,暂停,这四个引脚用P3.0到P3.3口可以吗?具体怎么实现呢,搞了好久,大神有没有类似的程序,有点心塞,不知道哪里出问题,真心跪求!这个按键控制需不需要用到中断,还是纯粹的控制,谢了

单片机课程设计数字音乐盒

求一个关于51单片机数字音乐盒的课设,要求用的是汇编语言,尽量代码解释清楚

C51单片机 12Hz 1000ms延时程序(c语言)

哪位大神可以细致的讲讲51单片机中,12Hz晶振,延时计算程序的算法(1000ms最好)单片机小白表示没有学会呜呜呜~ 看一个延迟10ms程序的代码,for循环中的计算方法没有懂,不会计算 void delayms(uchar ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } 这个10ms的计算公式是怎样的,如果换成1000ms又该怎样计算ne

C语言51单片机串口通信程序求教

#include <reg51.h> #include <string.h> #include <intrins.h> #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3; bit read_flag=0; void init_serialcomm(void) { SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80; //SMOD=1; // TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz TH1 = 0xFD; //Baud:19200 fosc=11.0592MHz TL1 = 0xFD; //Baud:19200 fosc=11.0592MHz // IE |= 0x90; //Enable Serial Interrupt ES = 1; //使能串口中断 EA = 1; //打开主中断 TR1 = 1; // timer 1 run // TI=1; } //向串口发送一个字符 void send_char_com(unsigned char ch) { SBUF=ch; while(TI==0); TI=0; } //向串口发送一个字符串,strlen为该字符串长度 void send_string_com(unsigned char *str,unsigned int strlen) { unsigned int k=0; do { send_char_com(*(str + k)); k++; } while(k < strlen); } //串口接收中断函数 void serial () interrupt 4 using 3 { if(RI) { unsigned char ch; RI = 0; ch=SBUF; // count3=0; inbuf1[count3]=ch; count3++; if(count3==(INBUF_LEN)) { read_flag=1; count3=0; } } else if(TI) { TI=0; } } main() { init_serialcomm(); //初始化串口 count3=0; while(1) { if(read_flag) //如果取数标志已置位,就将读到的数从串口发出 { read_flag=0; //取数标志清0 send_string_com(inbuf1,INBUF_LEN); } } } 以上程序代码参考自龚建伟 串口中断接收、发送例程。本意是通过串口发送4个字节数据,单片机串口接收后,发送回4个字节数据(在串口助手显示出来)。 但我通过uvison3下载到stc12c5a60s2最少单片机系统,通过串口测试工具(波特率19200,校验位:无,数据位:8,停止位:1)发送数据为:ff ff ff ff (十六进制发),十六进制收,结果为发送4字节,接收2字节,串口助手接收到显示为77 ff, 程序不知道是哪里出错了,求正解。 我自己分析如下: 发送4字节,只接收到2字节?首先怀疑是串口初始化问题,但查不出。再看缓存的4字节数据,也提供了足够的空间,处理上也看不出问题。哪位高手指点下。非常感谢!!!

用51单片机做一个数字电子钟

想用51单片机做一个电子钟,但是刚接触单片机,只会编流水灯的程序,请指点一下具体的实现原理

求51单片机可以1602LCD显示时间并可以用矩阵按钮控制修改时间的代码(C语言)

求51单片机可以1602LCD显示时间并可以用矩阵按钮控制修改时间的代码(C语言) 有没有大佬有C语言代码?我实验要用到,谢谢!

求大佬检查下我的代码为什么不能完成我想要的功能?关于51单片机C语言串口通讯方面的。

# 欲完成的功能: 我想要用pc的串口通讯助手给单片机发送xyz坐标,并将xyz坐标分别存到xm,ym,zm三个字符串数组中,然后用串口发送字符串函数将xm,ym,zm这三个数组再发送给串口通讯助手显示其值。 以下是这部分的代码: ``` #include <stc15f2k60s2.h> #define FOSC 12000000 //设置晶振 #define BAUD 9600 //设定的波特率 char buf_string[13]; //定义数据包长度为13个字符 unsigned char flag=0; unsigned char busy; unsigned char tag; unsigned char i,j=0,k=0,a,b,c; void UART_Init(void) //初始化 { SCON=0x50; //8位UART 波特率可变 允许接受 T2L=(65536-(FOSC/4/BAUD)); //设置装载值 T2H=(65536-(FOSC/4/BAUD))>>8; AUXR =0x14; //T2为1T模式,并启动定时器2 AUXR |=0x01; //选择定时器2为串口1的波特率发生器 ES =1; //使能串口中断 EA =1; //开启总中断 } void UART_Sendchar(unsigned char dat) //串口发送函数 { while(busy); busy=1; SBUF=dat; } void UART_SendString(unsigned char *s) //串口字符串发送 { while(*s) { UART_Sendchar(*s++); } } ## /*之前的代码应该没问题,在此之后之后是我认为有可能出问题的字段*/ void ReceiveString() //串口字符串接收函数 { if(j<13) //将输入坐标总字数规定在13位以内,且接受格式规定为(X,Y,Z),最大可输入的位数为13位,例如(-99,-99,-99)。 { buf_string[j]=SBUF; if(buf_string[j]==',' && a==0) a=j;//记录下第一个逗号 if(buf_string[j]==',' && a!=j) b=j;//记录下第二个逗号 if(buf_string[j]==')') c=j; //记录下右括弧,也就是数据的最后一位 j++; } } bit Deal_UART_RecData() //处理串口接收数据包函数(成功处理数据包则返回1,否则返回0) { buf_string[c+1]='\0'; //让接受到的")"的之后一位清零 if(buf_string[0]=='(' && buf_string[c]==')' && buf_string[a]==',' && buf_string[b]==',') //进行数据格式验证 { return 0; } return 1; } //--------------主函数--------------- void main() { char xm[4]; char ym[4]; char zm[4]; UART_Init(); UART_SendString("开始!"); while(1) { if(flag==1) { for(i=1;i<a;i++) { xm[k]=buf_string[i]; k++; } xm[k]='\0'; k=0; for(i=a+1;i<b;i++) { ym[k]=buf_string[i]; k++; } ym[k]='\0'; k=0; for(i=b+1;i<c;i++) { zm[k]=buf_string[i]; k++; } zm[k]='\0'; k=0; UART_SendString("\r\nX坐标是\r\n ");UART_SendString(xm); UART_SendString("\r\nY坐标是\r\n ");UART_SendString(ym); UART_SendString("\r\nZ坐标是\r\n ");UART_SendString(zm); a=b=c=j=0; flag=0; } while(!flag); } } //------------------------------串口中断------------------------------- void USART() interrupt 4 //标志位TI和RI需要手动复位,TI和RI置位共用一个中断入口 { if(RI) //接受标志位 { ReceiveString(); if(Deal_UART_RecData()) { flag=1; } RI=0; //清接受 } if(TI) //发送标志位 { TI=0; //清发送标志位 busy=0; } } ``` ## 请哪位大佬帮忙看看我哪出问题了?

51单片机如何和电脑舞台灯连接

我想做一个用51单片机发送dmx512信号来控制电脑舞台灯,但是我对于单片机怎么和舞台灯连接不了解,我知道舞台灯哪里有一个dmx512 in 输入 要用卡农线连接,可是我不知道另外一端怎么和单片机连接,麻烦大佬们指导一下 ,小弟感激不尽,谢谢

单片机C语言电子密码锁设计题目

单片机型号为STC89C52,现要求为: 1.开机数码管显示“LOCK“; 2.系统初始密码“1234“,当通过按键输入”1234“,成功开锁,继电器动作;数码管并显示”open“; 3.若密码输入错误,继电器不动作,数码管显示“-no-“; 4.长按key1键2秒,进入密码锁修改,此时数码管显示“----“短按key1~key8(自己定义的键,可利用矩阵键盘),输入新的密码,并且数码管显示输入的新密码,长按key2键2秒,密码修改成功,此时数码管显示”LOCK“。 请问代码和外部接线的处理方式。

51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序。谢谢了

51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序。谢谢了 。万分感谢。。。

C语言 单片机秒表程序

本人是一个新手 对于下边的c程序每一个子函数能看懂,但是像这么多子函数放到一起 就晕了,想请亲们帮我把这个程序的流程梳理梳理中断是何时工作,各个子函数怎么在这个整体里运行 越详细越好,本人十分感谢! ``` /* 设计的秒表计数到小数点后两位,(ms)用到六个数码管一个小数点加两位小数*/ #include<reg52.h> sbit ADDR3=P1^3; sbit ENLED=P1^4; sbit KEY1=P2^4; sbit KEY2=P2^5; sbit KEY3=P2^6; sbit KEY4=P2^7; unsigned char code LedChar[] = { //数码管显示字符转换表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; unsigned char LedBuff[6]={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF //数码管显示缓存区 }; unsigned char KeySta[4]={1,1,1,1}; bit StopwatchRunning=0; bit StopwatchRefresh=1; unsigned char IntegerPart=0;//整数部分 unsigned char DecimalPart=0;//小数部分 void ConfigTimer0(unsigned int ms); void StopwatchDisplay(); void KeyDriver(); void main() { EA=1; ENLED=0; ADDR3=1; P2=0XFE;//P2.0置零选第四行按键 ConfigTimer0(2);//T0定时2ms while(1) { if(StopwatchRefresh) //如果刷新需要调用显示函数 StopwatchRefresh=0; StopwatchDisplay(); KeyDriver(); } } /*配置并启动T0 ms就是T0的定时时间*/ void ConfigTimer0(unsigned int ms) { unsigned long tmp; tmp=11059200/12;// 1/T=f频率 tmp=(tmp*ms)/1000; // ms/1000=1s f*T=机械周期个数 tmp=65536-tmp; tmp=tmp+18; T0RH=(unsigned char)(tmp>>8); T0LH=(unsigned char)tmp; TMOD&=0xF0; TMOD|=0x01; TH0=T0RH; TL0=T0RL; ET0=1; TR0=1; } /*秒表计数显示函数*/ void StopwatchDisplay() { signed char i; unsigned char buf[4];//同理数据转换的缓冲区 /*小数部分转换到低2位*/ LedBuf[0]=LedChar[DecimalPart%10]; LedBuf[1]=LedChar[DecimalPart/10]; /*整数部分换到高4位 注意这里和小数部分区别是要用到缓存*/ buf[0]= IntegerPart%10; buf[0]= IntegerPart/10%10; buf[0]= IntegerPart/100%10; buf[0]= IntegerPart/1000%10; for(i=3;i>=1;i++)//把高位为零的换成空字符 { if(buf[i]==0) LedBuf[i+2]=0xFF;//置空 else break; } for(;i>=0;i--) { LedBuf[i+2]=LedChar[buf[i]]; } LedBuf[i+2]=0x7F;//运行到整数的最后一位上顺便点亮小数点 } /*秒表复位*/ void StopwatchReset() { StopwatchRunning=0; //停止秒表 IntegerPart=0; DecimalPart=0; StopwatchReset=1//重置刷新标志 } /*秒表启停函数*/ void StopwatchAction() { if(StopwatchRunning)//若是已经启动则停止 StopwatchRunning=0; else StopwatchRunning=1;//若是已经停止则启动 } /*按键驱动函数,检测到有按键动作,调度相应动作函数,只有两个按键另外四个。注意:需要在主函数调用*/ void KeyDriver() { unsigned char i; static unsigned char backup[4]=[1,1,1,1]; for(i=0;i<4;i++) { if(backup[i]!=KeySta[i]) { if(backup[i]!=0) { if(i==1) StopwatchReset(); else if(i==2) StopwatchAction(); } backup[i]=KeySta[i]; } } } /*数码管动态扫描刷新函数,注意:需在定时中断中调用*/ void LedScan() { static unsigned char i=0; P0=0XFF; P1=(P1&0xF8)|i; P0=LedBUF[i]; if(i<5) //在C里,i>5 i=0 继续走!!! i++; else i=0; } void KeyScan() { unsigned char i; static unsigned char keybuff[4]={ 0xFF,0xFF,0xFF,0xFF }; keybuff[0]=(keybuff[0]<<1)| KEY1; keybuff[1]=(keybuff[1]<<1)| KEY1; keybuff[2]=(keybuff[2]<<1)| KEY1; keybuff[3]=(keybuff[3]<<1)| KEY1; for(i=0;i<4;i++) { if(keybuff[i]==0x00)//连续8次扫描为0, 2ms*8(得移动8位上面才能有结果) { KeySta[i]=0; } else if(keybuff[i]==0xFF) { KeySta[i]=1; } } } /* 秒表计数函数,每隔10ms调用一次进行秒表计数累加 */ void StopwatchCount() { if (StopwatchRunning) //当处于运行状态时递增计数值 { DecimalPart++; //小数部分+1 if (DecimalPart >= 100) //小数部分计到100时进位到整数部分 { DecimalPart = 0; IntegerPart++; //整数部分+1 if (IntegerPart >= 10000) //整数部分计到10000时归零 { IntegerPart = 0; } } StopwatchRefresh = 1; //设置秒表计数刷新标志 } } /*T0中断函数,完成数码管扫描、按键扫描与秒表计数*/ void InterruptTimer0() interrupt 1 { static unsigned char tmr10ms =0; TH0=T0RH; TL0=T0RL; LedScan(); KeyScan(); //定时10ms进行一次秒表计数 tmr10ms++; if(tmr10ms>=5) //2ms一次 2*5=10ms { tmr10ms=0; StopwatchCount(); } } ```

51单片机如何在8*8双色点阵上显示数字(使用矩阵键盘输入)

希望大神们给出完整的,能在51单片机上运行的程序,使用C语言编写。

关于51单片机制作时钟的问题?

用51单片机做时钟,我没用1302,就是一个简单的时钟,可以用6个数码管显示时分秒,可以用3个按键实现功能选择和加减。这些在开发板上都可以实现,之后我想在此基础上我想用AT24C02实现断电保护功能,当我的程序写完之后,发现无法实现,这个只能实现的是用按键控制的数字,比如我用按键将时间调成000019,之后让它自己往上加,然后我再断电,等我在上电的时候数码管上显示的还是000019,这个现象是属于断电保护还是代码出问题了,我有点不太清楚,代码如下,请求大家帮助。谢谢。 #include<reg52.h> sbit lsa=P2^2; sbit lsb=P2^3; sbit lsc=P2^4; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit SDA=P2^0; sbit SCL=P2^1; typedef unsigned int ui; typedef unsigned char uc; ui code shuju[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; ui disp[6]; ui num,shi,fen,miao; ui ss=0; void delay(ui i) { while(i--); } void Delay10us() { unsigned char a,b; for(b=1;b>0;b--) for(a=2;a>0;a--); } void I2cStart() { SDA=1; Delay10us(); SCL=1; Delay10us();//?????????SDA???????>4.7us SDA=0; Delay10us();//?????????>4us SCL=0; Delay10us(); } void I2cStop() { SDA=0; Delay10us(); SCL=1; Delay10us();//??????????4.7us SDA=1; Delay10us(); } void respons() { ui b; SCL=1; while(SDA)//????????????????豸??SDA???? { b++; if(b>200) //???????2000us???????????????????????????????? { SCL=0; Delay10us(); } } SCL=0; Delay10us(); } void I2cSendByte(unsigned char dat) { unsigned char a=0,b=0;//???255??????????????1us????????255us?? for(a=0;a<8;a++)//?????8λ???????λ??? { SDA=dat>>7; //?????????SCL=0??????????????SDA??? dat=dat<<1; Delay10us(); SCL=1; Delay10us();//???????>4.7us SCL=0; Delay10us();//??????4us } SDA=1; Delay10us(); SCL=0; Delay10us(); } unsigned char I2cReadByte() { unsigned char a=0,dat=0; SDA=1; //?????????????????SCL????0 Delay10us(); for(a=0;a<8;a++)//????8????? { SCL=1; Delay10us(); dat<<=1; dat|=SDA; Delay10us(); SCL=0; Delay10us(); } return dat; } void write_add(unsigned char addr,unsigned char dat) { I2cStart(); I2cSendByte(0xa0);//????д??????? respons(); I2cSendByte(addr);//?????д??????? respons(); I2cSendByte(dat); //???????? respons(); I2cStop(); } unsigned char read_add(unsigned char addr) { unsigned char num; I2cStart(); I2cSendByte(0xa0); //????д??????? respons(); I2cSendByte(addr); //???????????? respons(); I2cStart(); I2cSendByte(0xa1); //???????????? respons(); num=I2cReadByte(); //??????? I2cStop(); return num; } void init24c02() { SDA=1; Delay10us(); SCL=1; Delay10us(); miao=read_add(1); fen=read_add(2); shi=read_add(3); } void datapros() { disp[0]=shuju[miao%10]; disp[1]=shuju[miao/10]; disp[2]=shuju[fen%10]; disp[3]=shuju[fen/10]; disp[4]=shuju[shi%10]; disp[5]=shuju[shi/10]; } void display() { ui i; for(i=0;i<6;i++) { switch(i) { case(0): lsa=0;lsb=0;lsc=0;break; case(1): lsa=1;lsb=0;lsc=0;break; case(2): lsa=0;lsb=1;lsc=0;break; case(3): lsa=1;lsb=1;lsc=0;break; case(4): lsa=0;lsb=0;lsc=1;break; case(5): lsa=1;lsb=0;lsc=1;break; } P0=disp[i]; delay(100); P0=0x00; } } void init() { TMOD=0x01; TH0=0xfc; TL0=0x18; //1ms EA=1; TR0=1; ET0=1; } void key() { if(k1==0) { delay(100); { if(k1==0) { ss=ss+2; while(!k1); switch(ss) { case(2): lsa=0;lsb=0;lsc=0;TR0=0;break; case(4): lsa=0;lsb=1;lsc=0;break; case(6): lsa=0;lsb=0;lsc=1;break; case(8): ss=0;TR0=1;break; } } } } if(ss!=0) { if(k2==0) { delay(100); { if(k2==0) { while(!k2); if(ss==2) { miao++; if(miao==60) miao=0; write_add(1,miao); } if(ss==4) { fen++; if(fen==60) fen=0; write_add(2,fen); } if(ss==6) { shi++; if(shi==24) shi=0; write_add(3,shi); } } } } if(k3==0) { delay(100); if(k3==0) { while(!k3); if(ss==2) { miao--; if(miao==-1) miao=59; write_add(1,miao); } if(ss==4) { fen--; if(fen==-1) fen=59; write_add(2,fen); } if(ss==6) { shi--; if(shi==-1) shi=23; write_add(3,shi); } } } } } void main() { init(); init24c02(); while(1) { key(); datapros(); display(); } } void init0() interrupt 1 { TH0=0xfc; TL0=0x18; num++; if(num==1000) { miao++; num=0; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; write_add(3,shi); } write_add(2,fen); } write_add(1,miao); } } }

关于51单片机用一个按键切换4种模式的问题?

我用51单片机的按键进行led的4种模式的切换,我现在的程序只能是中断里面的led程序结束后再按按键才可以切换模式,我想知道如何在中断中的led程序执行时按按键切换到下一个模式,请求大家支援。以下是我的代码。 #include<reg52.h> sbit beep=P1^5; sbit k1=P3^1; sbit k3=P3^2; sbit led=P2^0; #define N P2 typedef unsigned int ui; typedef unsigned char uc; uc num; void delay(ui i) { while(i--); } void fmq() { beep=~beep; delay(100); } void led0() { N=0xff; N=0xfe; fmq(); delay(50000); N=0xfd; fmq(); delay(50000); N=0xfb; fmq(); delay(50000); N=0xf7; fmq(); delay(50000); N=0xef; fmq(); delay(50000); N=0xdf; fmq(); delay(50000); N=0xbf; fmq(); delay(50000); N=0x7f; fmq(); delay(50000); } void led1() { N=0x7e; fmq(); delay(35000); delay(35000); N=0xbd; fmq(); delay(35000); delay(35000); N=0xdb; fmq(); delay(35000); delay(35000); N=0xe7; fmq(); delay(35000); delay(35000); N=0xe7; fmq(); delay(35000); delay(35000); N=0xdb; fmq(); delay(35000); delay(35000); N=0xbd; fmq(); delay(35000); delay(35000); N=0x7e; fmq(); delay(35000); delay(35000); } void led2() { N=0xaa; fmq(); delay(50000); delay(50000); N=0x55; fmq(); delay(50000); delay(50000); } void led3() { ui i; N=0xfe; while(1) { if(k1==0) { delay(1000); if(k1==0) { switch(i) { case(0):N=0xfd;fmq();i++;break; case(1):N=0xfb;fmq();i++;break; case(2):N=0xf7;fmq();i++;break; case(3):N=0xef;fmq();i++;break; case(4):N=0xdf;fmq();i++;break; case(5):N=0xbf;fmq();i++;break; case(6):N=0x7f;fmq();i++;break; case(7):N=0xff;fmq();i++;break; } while(!k1); } } if(i==8) { i=0; break; } } } void init() { IT0=1; EX0=1; EA=1; } void main() { init(); while(1); } void init0() interrupt 0 { delay(1000); { while(1) { if(k3==0) { switch(num) { case(0):led0();num++;break; case(1):led1();num++;break; case(2):led2();num++;break; case(3):led3();num++;break; case(4):num++;N=0xff;break; } } while(!k3); if(num==4) { num=0; break; } } } }

用c51单片机模拟制作简易密码锁。

功能描述:•模拟密码一次有效的保险箱锁。上锁:先按“lock”按键,此时显示屏提示“请输入四位密码”,然后按四位数字键进行密码设置,并按“#”确认。此时显示屏显示“已上锁”。开锁:直接按下所设置的四位密码,然后按“UnLock”,此时显示屏显示“已解锁”。多次(次数为N)解锁失败后延时一段时间(时间为S)后才能继续解锁。(基础要求中N和S为固定值)基础要求:1  用4*4键盘设置密码;2  用独立按键设置成“unlock”、“lock”、“#”等3  用LCD屏显示所设置相关信息;4  用LED灯表示上锁或解锁状态发挥要求:1  4*4键盘设定全部需要的键值(包括数字键和基础要求2中的按键),实现设置密码,N和S的功能;2  用LED点阵显示上锁和解锁状态。(可以通过显示动画来实现)

51单片机C 怎么调用带指针的函数

代码 ``` /********************二维码扫描读取*********************/ //*output_data:数据指针,输出扫描后的二维码 //return:返回0->无错误,1->读取超时 unsigned char Cam_fun(unsigned char *output_data); ``` 请问怎么把 ***output_data** 中的值取出来

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐