stc-isp下载不了程序,电脑显示串口打开失败,显示驱动过期,请问怎么办?

图片说明图片说明

从宏晶科技官网上下载了一个驱动还是不行,我是win10系统请问有没有大神youwin10的PL2303驱动,与单片机下载用的,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!

2个回答

可以试试下面几种方法:
1.换一根串口线
2.下个360驱动,更新一下驱动
3.重启电脑

你使用的是USB转串口吧,要不重装驱动要不换台带串口的台式机去下载

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
51下不进程序啊 大神们求助啊 stc-isp显示的一直是正在连接单片机

如题 大神们 救救渣渣啊 51下不进程序啊 大神们求助啊 stc-isp显示的一直是正在连接单片机 对了 还有 别的电脑可以下 我的笔记本就烧不进去

stc-isp烧录软件出现问题

烧录软件下载完之后打开,过一会就自动卸载,重启电脑和重新下载都没有用

自己下载的STC烧录软件烧不进去程序 ,一直都是正在检测单片机?

自己下载的STC烧录软件烧不进去程序 ,一直都是正在检测单片机?

stc89c52转为iap15w4k58s4

我想要做一个烟雾报警器,但是成品使用的是stc89c52,比赛要求改用iap15w4k58s4,请各位大神看看怎么处理。

stc io模拟串口接收端

stc12c5a60s2 io模拟串口接收端(Rxd)接收波特率1200bps的数据,在通过单片机实际串口1以波特率9600bps发送到上位机,出现问题只有串口一发送1200bps才能得到正确地数据!求哪里出问题啦 ``#include <reg52.h> #include<stdio.h> #include<string.h> typedef unsigned char uchar; #define F11_0592 uchar tmpbuf2[64]={0}; //用来作为模拟串口接收数据的缓存 struct { uchar recv :6; //tmpbuf2数组下标,用来将模拟串口接收到的数据存放到tmpbuf2中 uchar send :6; //tmpbuf2数组下标,用来将tmpbuf2中的数据发送到串口 }tmpbuf2_point={0,0}; sbit newRXD=P2^2; ////模拟串口的接收端设为P2.2 void UartInit() { SCON=0x50 ; // SCON: serail mode 1, 8-bit UART TMOD|=0x20 ; // TMOD: timer 1, mode 2, 8-bit reload,自动装载预置数(自动将TH1 送到TL1);T0工作在方式1,十六位定时 PCON|=0x80; // SMOD=1 TH1=0xa0; // Baud:9600 fosc=11.0592MHz 9600bps为从串口接收数据的速率 TL1=0xa0; // 计数器初始值,fosc=11.0592MHz 因为TH1一直往TL1送,所以这个初值的意义不大 TR1=1; // 启动TIMER1,用于产生波特率 TH0=0xFF; // 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps TL0=0xA0 ; // 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps TF0 = 0; //清除TF0标志 IT0=1 ; //设置外部中断0为边沿触发方式 //TR0=1; } void WaitTF0(void) { TF0=0; while(!TF0); TF0=0 ; //TH0=0xFF; // 定时器重装初值 模拟串口的波特率为9600bps fosc=11.0592MHz // TL0=0xA0; // 定时器重装初值 模拟串口的波特率为9600bps fosc=11.0592MHz } uchar RByte() { uchar Output=0; uchar i=8 ; // TR0=1 ; //启动Timer0 TH0=0xFF; // 定时器重装初值 模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0; // 定时器重装初值 模拟串口的波特率为9600bps fosc=11.0592MHz TF0=0; WaitTF0();//等过起始位 //接收8位数据位 while(i--) { Output>>=1; if(newRXD)Output|=0x80; //先收低位 WaitTF0();//位间延时 } // while(!TF0) if(newRXD) break; //此句和下一句不能加,如果加上了将导致耗时过长,影响下一个字节的接收 // // WaitTF0(); // TR0=0; //停止Timer0 return Output ; } //向COM1发送一个字符 void SendChar(uchar byteToSend)// void SendChar(uchar byteToSend) { SBUF=byteToSend ; while(!TI); TI=0; } void main() { UartInit(); Timer0Init(); while(1) { if(tmpbuf2_point.recv!=tmpbuf2_point.send)//差值表示模拟串口接收数据缓存中还有多少个字节的数据未被处理(发送至串口) { SendChar(tmpbuf2[tmpbuf2_point.send++]); } } } //外部中断0,说明模拟串口的起始位到来了 void Simulated_Serial_Start()interrupt 0 { EX0=0 ; //屏蔽外部中断0 tmpbuf2[tmpbuf2_point.recv++]=RByte();//从模拟串口读取数据,存放到tmpbuf2数组中 IE0=0; //防止外部中断响应2次,防止外部中断函数执行2次 EX0=1 ; //打开外部中断0 }

STC12C5A60S2单片机datasheet上的ad转换程序

STC12C5A60S2单片机datasheet上的ad转换程序应用后,只开p1.0路,采集正确,8路都开会出现乱码现象!求解答

keil编译 stc12c5a60s2的问题

1、我写了个项目程序,在small模式下编译提示内存不足。 2、然后我换成了compact模式,编译通过了,但运行不正常,准确的说是一部分正常,最初的显示界面正常,按键功能不正常。 3、我删减了一部分工程文件,用small模式编译可以通过了,运行一切正常,按键也可以。 4、我又用compact模式编译了次当前工程,按键不正常。 后两次无改动,仅仅是编译模式变了变,结果一个正常一个不正常。 使用芯片是stc12c5a60s2, 芯片信息: 8051-based microcontroller with 1T(1-clock) High-Speed Core, Dual DPTR, 36-44 I/O Lines, 2 Timers/Counters, 2 PCA Timers, Alternative build-in oscillator, Independent Baud Rate Generator, Programmable Clock-Out, 60K bytes flash ROM, 1280 bytes data RAM, On-chip EEPROM, 2 UARTs, WDT, ISP/IAP, A/D, CCP/PWM 想问问该怎么编译我的工程。

求iic总线接口驱动程序

51单片机驱动128x64iic总线驱动显示,实际应用中,由于我是新手所以不知道该如何运作。 单片机型号stc15w4k56s4

STC89C52连接HC-SR04超声波模块用数码管显示,只能显示一次正确距离,然后就只显示0了

数码管只显示一次正确距离,然后数码管显示0,再无反应。 代码在这: /***********************************************************************************************************/ #include <reg51.h> #include <intrins.h> sbit RX = P2^1; sbit TX = P2^2; sbit du = P2^6; sbit we = P2^7; unsigned int time=0; unsigned int timer=0; unsigned char posit=0; unsigned long S=0; bit flag =0; unsigned char const discode[] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x01/*-*/}; unsigned char const positon[3]={ 0xf7,0xef,0xdf}; unsigned char disbuff[4] ={ 0,0,0,0,}; /********************************************************/ void Display(void) { P0=discode[disbuff[posit]]; du = 1; du = 0; P0=positon[posit]; we = 1; we = 0; if(++posit>=3) posit=0; } /********************************************************/ void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //S++; if((S>=700)||flag==1) { flag=0; disbuff[0]=10; disbuff[1]=10; disbuff[2]=10; } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10; } } /********************************************************/ void zd0() interrupt 1 { flag=1; } /********************************************************/ void zd3() interrupt 3 { TH1=0xf8; TL1=0x30; Display(); timer++; if(timer>=40) { timer=0; TX=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } } /*********************************************************/ void main( void ) { TMOD=0x11; TH0=0; TL0=0; TH1=0xf8; TL1=0x30; ET0=1; ET1=1; TR1=1; EA=1; while(1) { while(!RX); TR0=1; while(RX); TR0=0; Conut(); //S++; } }

stc15f2k60s2单片机中怎么控制数码管显示数字(附有图片)

![图片](https://img-ask.csdn.net/upload/201511/03/1446547140_694937.jpg)![图片](https://img-ask.csdn.net/upload/201511/03/1446547235_263511.jpg)

串口程序可发送,不能接收接收

各位前辈,我在这里下载了一个串口精灵,MFC的。里面的串口程序发送正常,不能接收,variant_inp = m_Com.get_Input()这句过不去。单步调试说缺少源文件frame.cpp,我搜了安装的包也没找到。小的是初学者,请大神指教一下这是什么原因,我应该怎么办

基于STC89c52cpu,以MLX90615传感器测温,无法读出温度数据

我要做以STC89C52单片机为基础,MLX90615为测温传感器的一个测温仪,我下载了网上的程序,一开始连接硬件,拷入程序后可以直接测温,但是有一天程序突然测不了温了,做了很多尝试,找了其他人写的程序,但是接上温度传感器单片机还是没有反应,原来能测温的程序最后lcd分别显示-273.150,727.970,77.730,67.490数值,然后就不动了 做过改动有改变SDA,SCL的上拉电阻,修改延时程序,使用其他的STC89C52开发板,更换传感器,重新焊接面包板连电路。 ![图片说明](https://img-ask.csdn.net/upload/201905/13/1557746533_515554.jpg) ![图片说明](https://img-ask.csdn.net/upload/201905/13/1557746580_853217.jpg) 只能求助大家了。以下是我找的程序,做了些修改,先只粘上有关MLX90615的程序: ``` #include "LCD1602.h" #include "reg52.h" #include "MLX90615.h" #include "delay.h" #include "stdio.h" sbit KEY=P3^2; // 定义按键 unsigned char s[20]; // 待显示的字符串 float temp; // 温度值 void main() { unsigned char RunStatus=0; // 是否测量标志 unsigned char SlaveAddress; // Contains device address unsigned char command; // Contains the access command unsigned int tdata; // Contains data value SlaveAddress=SA<<1; // Set device address command=RAM_Access|RAM_To; // Form RAM access command + RAM address MLX90615_init(); LCD1602_init(); write_string(0,0,"Press the KEY"); write_string(1,0,"to start"); while(1) { if(RunStatus) { tdata=MemRead(SlaveAddress,command); //Read memory temp = (float)tdata*0.02-273.15; clean_screen(); write_string(0,0,"Measuring"); sprintf(s,"%.3f C"); s[6]=0xDF; write_string(1,0,s); delay_ms(400); } if(!KEY) { delay_ms(20); if(!KEY) { if(RunStatus) { RunStatus=0; clean_screen(); write_string(0,0,"Press the KEY"); write_string(1,0,"to start"); } else { RunStatus=1; clean_screen(); write_string(0,0,"Measuring"); } while(!KEY); } } } } ``` ``` #include "MLX90615.h" #include "intrins.h" #include "delay.h" #include "UART.h" #define _NOP() _nop_() // 5us void delay_Tbuf() { unsigned char a,b; for(b=1;b>0;b--) for(a=1;a>0;a--); } void delay_Thd() { _nop_(); } void MLX90615_init(void) { mSDA_OUT; // Set SDA as Output mSCL_OUT; // Set SCL as Output mSDA_HIGH(); // bus free mSCL_HIGH(); } void START_bit(void) { mSDA_OUT; mSDA_HIGH(); // Set SDA line delay_Tbuf(); // Wait a few microseconds mSCL_HIGH(); // Set SCL line delay_Tbuf(); // Generate bus free time between Stop // and Start condition (Tbuf=4.7us min) mSDA_LOW(); // Clear SDA line delay_Tbuf(); // Hold time after (Repeated) Start // Condition. After this period, the first clock is generated. //(Thd:sta=4.0us min) mSCL_LOW(); // Clear SCL line delay_Tbuf(); // Wait a few microseconds } void STOP_bit(void) { mSDA_OUT; mSCL_LOW(); // Clear SCL line delay_Tbuf(); // Wait a few microseconds mSDA_LOW(); // Clear SDA line delay_Tbuf(); // Wait a few microseconds mSCL_HIGH(); // Set SCL line delay_Tbuf(); // Stop condition setup time(Tsu:sto=4.0us min) mSDA_HIGH(); // Set SDA line } unsigned char TX_byte(unsigned char Tx_buffer) { unsigned char Bit_counter; unsigned char Ack_bit; unsigned char bit_out; for(Bit_counter=8; Bit_counter; Bit_counter--) { if(Tx_buffer&0x80) bit_out=1; // If the current bit of Tx_buffer is 1 set bit_out else bit_out=0; // else clear bit_out send_bit(bit_out); // Send the current bit on SDA Tx_buffer<<=1; // Get next bit for checking } Ack_bit=Receive_bit(); // Get acknowledgment bit return Ack_bit; }// End of TX_bite() unsigned char RX_byte(unsigned char ack_nack) { unsigned char RX_buffer; unsigned char Bit_Counter; for(Bit_Counter=8; Bit_Counter; Bit_Counter--) { if(Receive_bit()) // Get a bit from the SDA line { RX_buffer <<= 1; // If the bit is HIGH save 1 in RX_buffer RX_buffer |=0x01; } else { RX_buffer <<= 1; // If the bit is LOW save 0 in RX_buffer RX_buffer &=0xfe; } } send_bit(ack_nack); // Sends acknowledgment bit return RX_buffer; } //--------------------------------------------------------------------------------------------- void send_bit(unsigned char bit_out) { mSDA_OUT; if(bit_out) mSDA_HIGH(); else mSDA_LOW(); delay_Thd(); // Tsu:dat = 250ns minimum mSCL_HIGH(); // Set SCL line delay_Tbuf(); // High Level of Clock Pulse------------------ mSCL_LOW(); // Clear SCL line delay_Tbuf(); // Low Level of Clock Pulse---------------------- // mSDA_HIGH(); // Master release SDA line , return; }//End of send_bit() //--------------------------------------------------------------------------------------------- unsigned char Receive_bit(void) { unsigned char Ack_bit; mSDA_IN; // SDA-input _NOP();_NOP();_NOP(); mSCL_HIGH(); // Set SCL line delay_Tbuf(); // High Level of Clock Pulse // if(P2Input(BIT2)) SDA=1; if(SDA) Ack_bit=1; // \ Read acknowledgment bit, save it in Ack_bit else Ack_bit=0; // / mSCL_LOW(); // Clear SCL line delay_Tbuf(); // Low Level of Clock Pulse return Ack_bit; }//End of Receive_bit unsigned int MemRead(unsigned char SlaveAddress,unsigned char command) { unsigned int tdata; // Data storage (DataH:DataL) unsigned char Pec; // PEC byte storage unsigned char DataL; // Low data byte storage unsigned char DataH; // High data byte storage unsigned char arr[6]; // Buffer for the sent bytes unsigned char PecReg; // Calculated PEC byte storage unsigned char ErrorCounter; // Defines the number of the attempts for communication with MLX90614 ErrorCounter=0x00; // Initialising of ErrorCounter do{ repeat: STOP_bit(); //If slave send NACK stop comunication --ErrorCounter; //Pre-decrement ErrorCounter if(!ErrorCounter){ //ErrorCounter=0? break; //Yes,go out from do-while{} } START_bit(); //Start condition if(TX_byte(SlaveAddress)){ //Send SlaveAddress goto repeat; //Repeat comunication again } if(TX_byte(command)){ //Send command goto repeat; //Repeat comunication again } START_bit(); //Repeated Start condition if(TX_byte(SlaveAddress)){ //Send SlaveAddress-------------------??? goto repeat; //Repeat comunication again } DataL=RX_byte(ACK); //Read low data,master must send ACK DataH=RX_byte(ACK); //Read high data,master must send ACK Pec=RX_byte(NACK); //Read PEC byte, master must send NACK STOP_bit(); //Stop condition arr[5]=SlaveAddress; // arr[4]=command; // arr[3]=SlaveAddress; //Load array arr arr[2]=DataL; // arr[1]=DataH; // arr[0]=0; // PecReg=PEC_calculation(arr);//Calculate CRC }while(PecReg != Pec); //If received and calculated CRC are equal go out from do-while{} *((unsigned char *)(&tdata))=DataH; // *((unsigned char *)(&tdata)+1)=DataL; //data=DataH:DataL return tdata; } unsigned char PEC_calculation(unsigned char pec[]) { unsigned char crc[6]; unsigned char BitPosition=47; unsigned char shift; unsigned char i; unsigned char j; unsigned char temp; do{ crc[5]=0; /* Load CRC value 0x000000000107 */ crc[4]=0; crc[3]=0; crc[2]=0; crc[1]=0x01; crc[0]=0x07; BitPosition=47; /* Set maximum bit position at 47 */ shift=0; //Find first 1 in the transmited message i=5; /* Set highest index */ j=0; while((pec[i]&(0x80>>j))==0 && i>0){ BitPosition--; if(j<7){ j++; } else{ j=0x00; i--; } }/*End of while */ shift=BitPosition-8; /*Get shift value for crc value*/ //Shift crc value while(shift){ for(i=5; i<0xFF; i--){ if((crc[i-1]&0x80) && (i>0)){ temp=1; } else{ temp=0; } crc[i]<<=1; crc[i]+=temp; }/*End of for*/ shift--; }/*End of while*/ //Exclusive OR between pec and crc for(i=0; i<=5; i++){ pec[i] ^=crc[i]; }/*End of for*/ }while(BitPosition>8);/*End of do-while*/ return pec[0]; }/*End of PEC_calculation*/ ``` ``` #ifndef __MLX90615_H #define __MLX90615_H #include "reg52.h" sbit SDA = P2^0; sbit SCL = P2^1; #define mSDA_IN do{} while(0) #define mSDA_OUT do{} while(0) #define mSCL_IN do{} while(0) #define mSCL_OUT do{} while(0) #define ACK 0 #define NACK 1 //MLX90614 constants #define SA 0x00 // Slave address #define DEFAULT_SA 0x5B // Default Slave address #define RAM_Access 0x20 // RAM access command #define EEPROM_Access 0x10 // EEPROM access command #define RAM_Ta 0x06 // Ta address in the ram #define RAM_To 0x07 // To address in the ram //*PROTOTYPES********************************************************************************** void start_bit(void); void STOP_bit(void); void TX_byte(unsigned char Tx_buffer); unsigned char RX_byte(unsigned char ack_nack); void send_bit(unsigned char bit_out); unsigned char Receive_bit(void); void MLX90615_init(void); unsigned int MEM_READ(unsigned char slave_addR, unsigned char cmdR); void SendRequest(void); void DummyCommand(unsigned char byte); unsigned int *CALTEMP(unsigned long int TEMP); unsigned char PEC_cal(unsigned char pec[],int n); void Delay(unsigned int N); #endif ```

基于单片机STC15W401AS的nRF24L01无线通信无法调通

# 这是发送部分的程序和接收部分 ``` #include<STC15F2K60S2.h> #include"global_define.h" #include"NRF24L01.h" #include"Delay.h" sbit CE=P5^5; //RX/TX模式选择端 sbit IRQ=P3^7; //可屏蔽中断端 sbit CSN=P5^4; //SPI片选端//就是SS sbit MOSI=P1^3; //SPI主机输出从机输入端 sbit MISO=P1^4; //SPI主机输出从机输出端 sbit SCLK=P1^5; //SPI时钟端 uchar code TxAddr[]={0x34,0x43,0x10,0x10,0x01};//发送地址 /*****************状态标志*****************************************/ uchar bdata sta; //状态标志 sbit RX_DR=sta^6; sbit TX_DS=sta^5; sbit MAX_RT=sta^4; /*****************SPI时序函数******************************************/ uchar NRFSPI(uchar date) { uchar i; for(i=0;i<8;i++) // 循环8次 { if(date&0x80) MOSI=1; else MOSI=0; // byte最高位输出到MOSI date<<=1; // 低一位移位到最高位 SCLK=1; if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据 date|=0x01; // 读MISO到byte最低位 SCLK=0; // SCK置低 } return(date); // 返回读出的一字节 } /**********************NRF24L01初始化函数*******************************/ void NRF24L01Int() { Delay(2);//让系统什么都不干 CE=0; //待机模式1 CSN=1; SCLK=0; IRQ=1; } /*****************SPI读寄存器一字节函数*********************************/ uchar NRFReadReg(uchar RegAddr) { uchar BackDate; CSN=0;//启动时序 NRFSPI(RegAddr);//写寄存器地址 BackDate=NRFSPI(0x00);//写入读寄存器指令 CSN=1; return(BackDate); //返回状态 } /*****************SPI写寄存器一字节函数*********************************/ uchar NRFWriteReg(uchar RegAddr,uchar date) { uchar BackDate; CSN=0;//启动时序 BackDate=NRFSPI(RegAddr);//写入地址 NRFSPI(date);//写入值 CSN=1; return(BackDate); } /*****************SPI读取RXFIFO寄存器的值********************************/ uchar NRFReadRxDate(uchar RegAddr,uchar *RxDate,uchar DateLen) { //寄存器地址//读取数据存放变量//读取数据长度//用于接收 uchar BackDate,i; CSN=0;//启动时序 BackDate=NRFSPI(RegAddr);//写入要读取的寄存器地址 for(i=0;i<DateLen;i++) //读取数据 { RxDate[i]=NRFSPI(0); } CSN=1; return(BackDate); } /*****************SPI写入TXFIFO寄存器的值**********************************/ uchar NRFWriteTxDate(uchar RegAddr,uchar *TxDate,uchar DateLen) { //寄存器地址//写入数据存放变量//读取数据长度//用于发送 uchar BackDate,i; CSN=0; BackDate=NRFSPI(RegAddr);//写入要写入寄存器的地址 for(i=0;i<DateLen;i++)//写入数据 { NRFSPI(*TxDate++); } CSN=1; return(BackDate); } /*****************NRF设置为发送模式并发送数据******************************/ void NRFSetTxMode(uchar *TxDate) {//发送模式 CE=0; NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH);//写寄存器指令+接收地址使能指令+接收地址+地址宽度 NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);//为了应答接收设备,接收通道0地址和发送地址相同 NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_WITDH);//写入数据 /******下面有关寄存器配置**************/ NRFWriteReg(W_REGISTER+EN_AA,0x01); // 使能接收通道0自动应答 NRFWriteReg(W_REGISTER+EN_RXADDR,0x01); // 使能接收通道0 NRFWriteReg(W_REGISTER+SETUP_RETR,0x0a); // 自动重发延时等待250us+86us,自动重发10次 NRFWriteReg(W_REGISTER+RF_CH,0x40); // 选择射频通道0x40 NRFWriteReg(W_REGISTER+RF_SETUP,0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 NRFWriteReg(W_REGISTER+CONFIG,0x0e); // CRC使能,16位CRC校验,上电 CE=1; Delay(5);//保持10us秒以上 } /*****************NRF设置为接收模式并接收数据******************************/ //主要接收模式 void NRFSetRXMode() { CE=0; NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH); // 接收设备接收通道0使用和发送设备相同的发送地址 NRFWriteReg(W_REGISTER+EN_AA,0x01); // 使能接收通道0自动应答 NRFWriteReg(W_REGISTER+EN_RXADDR,0x01); // 使能接收通道0 NRFWriteReg(W_REGISTER+RF_CH,0x40); // 选择射频通道0x40 NRFWriteReg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH); // 接收通道0选择和发送通道相同有效数据宽度 NRFWriteReg(W_REGISTER+RF_SETUP,0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益*/ NRFWriteReg(W_REGISTER+CONFIG,0x0f); // CRC使能,16位CRC校验,上电,接收模式 CE = 1; Delay(5);//保持10us秒以上 } /****************************检测应答信号******************************/ uchar CheckACK() { //用于发射 sta=NRFReadReg(R_REGISTER+STATUS); // 返回状态寄存器 if(TX_DS||MAX_RT) //发送完毕中断 { NRFWriteReg(W_REGISTER+STATUS,0xff); // 清除TX_DS或MAX_RT中断标志 CSN=0; NRFSPI(FLUSH_TX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!! CSN=1; return(0); } else return(1); } /******************判断是否接收收到数据,接到就从RX取出*********************/ //用于接收模式 /*uchar NRFRevDate(uchar *RevDate) { uchar RevFlags=0; sta=NRFReadReg(R_REGISTER+STATUS);//发送数据后读取状态寄存器 if(RX_DR) // 判断是否接收到数据 { CE=0; //SPI使能 NRFReadRxDate(R_RX_PAYLOAD,RevDate,RX_DATA_WITDH);// 从RXFIFO读取数据 RevFlags=1; //读取数据完成标志 } NRFWriteReg(W_REGISTER+STATUS,0xff); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标 return(RevFlags); }*/ # 下面是接收部分 #include<STC15F2K60S2.h> #include"global_define.h" #include"NRF24L01.h" #include"Delay.h" sbit CE=P5^5; //RX/TX模式选择端 sbit IRQ=P3^7; //可屏蔽中断端 sbit CSN=P5^4; //SPI片选端//就是SS sbit MOSI=P1^3; //SPI主机输出从机输入端 sbit MISO=P1^4; //SPI主机输出从机输出端 sbit SCLK=P1^5; //SPI时钟端 uchar RevTempDate[32]; //最后一位用来存放结束标志 uchar code TxAddr[]={0x34,0x43,0x10,0x10,0x01};//发送地址 /*****************状态标志*****************************************/ uchar bdata sta; //状态标志 sbit RX_DR=sta^6; sbit TX_DS=sta^5; sbit MAX_RT=sta^4; /*****************SPI时序函数******************************************/ uchar NRFSPI(uchar date) { uchar i; for(i=0;i<8;i++) // 循环8次 { if(date&0x80) MOSI=1; else MOSI=0; // byte最高位输出到MOSI date<<=1; // 低一位移位到最高位 SCLK=1; if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据 date|=0x01; // 读MISO到byte最低位 SCLK=0; // SCK置低 } return(date); // 返回读出的一字节 } /**********************NRF24L01初始化函数*******************************/ void NRF24L01Int() { Delay(2);//让系统什么都不干 CE=0; //待机模式1 CSN=1; SCLK=0; IRQ=1; } /*****************SPI读寄存器一字节函数*********************************/ uchar NRFReadReg(uchar RegAddr) { uchar BackDate; CSN=0;//启动时序 NRFSPI(RegAddr);//写寄存器地址 BackDate=NRFSPI(0x00);//写入读寄存器指令 CSN=1; return(BackDate); //返回状态 } /*****************SPI写寄存器一字节函数*********************************/ uchar NRFWriteReg(uchar RegAddr,uchar date) { uchar BackDate; CSN=0;//启动时序 BackDate=NRFSPI(RegAddr);//写入地址 NRFSPI(date);//写入值 CSN=1; return(BackDate); } /*****************SPI读取RXFIFO寄存器的值********************************/ uchar NRFReadRxDate(uchar RegAddr,uchar *RxDate,uchar DateLen) { //寄存器地址//读取数据存放变量//读取数据长度//用于接收 uchar BackDate,i; CSN=0;//启动时序 BackDate=NRFSPI(RegAddr);//写入要读取的寄存器地址 for(i=0;i<DateLen;i++) //读取数据 { RxDate[i]=NRFSPI(0); } CSN=1; return(BackDate); } /*****************SPI写入TXFIFO寄存器的值**********************************/ uchar NRFWriteTxDate(uchar RegAddr,uchar *TxDate,uchar DateLen) { //寄存器地址//写入数据存放变量//读取数据长度//用于发送 uchar BackDate,i; CSN=0; BackDate=NRFSPI(RegAddr);//写入要写入寄存器的地址 for(i=0;i<DateLen;i++)//写入数据 { NRFSPI(*TxDate++); } CSN=1; return(BackDate); } /*****************NRF设置为发送模式并发送数据******************************/ void NRFSetTxMode(uchar *TxDate) {//发送模式 CE=0; NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH);//写寄存器指令+接收地址使能指令+接收地址+地址宽度 NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);//为了应答接收设备,接收通道0地址和发送地址相同 NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_WITDH);//写入数据 /******下面有关寄存器配置**************/ NRFWriteReg(W_REGISTER+EN_AA,0x01); // 使能接收通道0自动应答 NRFWriteReg(W_REGISTER+EN_RXADDR,0x01); // 使能接收通道0 NRFWriteReg(W_REGISTER+SETUP_RETR,0x0a); // 自动重发延时等待250us+86us,自动重发10次 NRFWriteReg(W_REGISTER+RF_CH,0x40); // 选择射频通道0x40 NRFWriteReg(W_REGISTER+RF_SETUP,0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 NRFWriteReg(W_REGISTER+CONFIG,0x0e); // CRC使能,16位CRC校验,上电 CE=1; Delay(5);//保持10us秒以上 } /*****************NRF设置为接收模式并接收数据******************************/ //主要接收模式 void NRFSetRXMode() { CE=0; NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH); // 接收设备接收通道0使用和发送设备相同的发送地址 NRFWriteReg(W_REGISTER+EN_AA,0x01); // 使能接收通道0自动应答 NRFWriteReg(W_REGISTER+EN_RXADDR,0x01); // 使能接收通道0 NRFWriteReg(W_REGISTER+RF_CH,0x40); // 选择射频通道0x40 NRFWriteReg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH); // 接收通道0选择和发送通道相同有效数据宽度 NRFWriteReg(W_REGISTER+RF_SETUP,0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益*/ NRFWriteReg(W_REGISTER+CONFIG,0x0f); // CRC使能,16位CRC校验,上电,接收模式 CE = 1; Delay(5);//保持10us秒以上 } /****************************检测是否有接收到数据******************************/ void CheckACK() { //用于发射模式接收应答信号 sta=NRFReadReg(R_REGISTER+STATUS); // 返回状态寄存器 if(TX_DS) NRFWriteReg(W_REGISTER+STATUS,0xff); // 清除TX_DS或MAX_RT中断标志 } /*************************接收数据*********************************************/ void GetDate() { sta=NRFReadReg(R_REGISTER+STATUS);//发送数据后读取状态寄存器 if(RX_DR) // 判断是否接收到数据 { CE=0;//待机 NRFReadRxDate(R_RX_PAYLOAD,RevTempDate,RX_DATA_WITDH);// 从RXFIFO读取数据 接收4位即可,后一位位结束位 // LcdWriteChStr(2,65,RevTempDate);//LCD12864液晶显示 // MAX232SendDate();//发送数据到上位机 NRFWriteReg(W_REGISTER+STATUS,0xff); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标 CSN=0; NRFSPI(FLUSH_RX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!! CSN=1; } //NRFWriteReg(W_REGISTER+STATUS,0xff); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标 } # keil运行时没有错误的,接收端与单片机串口也是通的,波特率115200, # IRC18.432MHz,可是在接收端的串口始终读不到数,搞了好久了还是没办法 # 技术小白求大神指点 ```

esp8266模块执行不了stc8单片机发送的at指令

stc8单片机串口2与esp8266连接 我给模块发at指令的字符串 模块闪了蓝灯,应该是发送到了 但是模块并没有执行想要的at指令,求救 ``` #include "stc8.h" #include "intrins.h" #define FOSC 11059200UL #define BRT (65536 - FOSC / 115200 / 4) sbit LED1=P5^5; bit busy; char wptr; char rptr; char buffer[16]; void Uart2Isr() interrupt 8 using 1 { if (S2CON & 0x02) { S2CON &= ~0x02; busy = 0; } if (S2CON & 0x01) { S2CON &= ~0x01; buffer[wptr++] = S2BUF; wptr &= 0x0f; } } void Uart2Init() { S2CON = 0x50; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart2Send(char dat) { while (busy); busy = 1; S2BUF = dat; } void Uart2SendStr(char *p) { while (*p) { Uart2Send(*p++); } } void delay(unsigned int m) //???? { int a=0,b=0; for(a=0;a<500;a++) for(b=0;b<m;b++); } void main() { Uart2Init(); IE2 = 0x01; EA = 1; delay(2000); Uart2SendStr("AT+CWMODE=2"); Uart2Send('\r'); Uart2Send('\n'); LED1=0; delay(5000); Uart2SendStr("AT+CWSAP=\"521\",\"123465789\",1,4"); Uart2Send('\r'); Uart2Send('\n'); delay(5000); Uart2SendStr("AT+RST"); Uart2Send('\r'); Uart2Send('\n'); while (1) { LED1=1; } } ```

STC89C52RC和不带字库12864J-1如何连接

STC89C52RC和不带字库12864J-1如何连接 请各位帮帮我

51单片机开发板的数码管显示

不知道为什么数码管把0 6 9这3个数字都显示成0xff的样子 就全亮 与代码无关 求解

stc89c52RC接ULN2003A驱动一个5V二线直流风扇

做出实物为什么风扇不转呢 用proteus仿真时候没问题啊 ![图片说明](https://img-ask.csdn.net/upload/201705/27/1495876925_509589.png)直接把单片机一个IO口接到了1处

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字节数据,也提供了足够的空间,处理上也看不出问题。哪位高手指点下。非常感谢!!!

手机如何通过蓝牙透传模块HC-05控制51单片机STC89C52上一个led灯的亮灭?

需要先往单片机里下载什么源程序(串口程序)吗?。。。如果有知道的,请不吝赐教,万分感谢![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/30.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/30.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)

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

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

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

今年,我也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 是为...

立即提问
相关内容推荐