一、arduinoC++环境中其他类型转字符串的方法
arduino,包括esp8266等,其他类型转换为字符串string类型可以使用 .c_str() 函数。
二、一种文字流动显示算法,不限单片机
/******************
//文字流动显示函数
//需提前定义全局二维数组:欲显示的文字数组
参数一:颜色(0-7)
参数二:亮度(0-31)
参数三:文字数组欲显示的起始行
参数三:文字数组欲显示的终止行
******************/
void display_flow(unsigned int color,unsigned int light,unsigned int n0,unsigned int n1)
{
int i,j,k=n0;
unsigned int m;
unsigned char *p = display0;
for(i=0;i<(8*(n1-n0+1));i=i+8)
{
for(j=0;j<8;j++)
{
display0[(i+j)]=str[k][j];
}
k++;
}
for(m=0;m<(i+j)-15;m++)
{
buf[7]=*(p+m+7);
buf[6]=*(p+m+6);
buf[5]=*(p+m+5);
buf[4]=*(p+m+4);
buf[3]=*(p+m+3);
buf[2]=*(p+m+2);
buf[1]=*(p+m+1);
buf[0]=*(p+m);
sendscr7(1,light,color);//此句为屏幕显示函数,显示的数据来源于全局数组,当然也可以传入数组
delayms(180);
clear(1);
}
}
三、好用的字符串截取函数
/******************
字符串截取函数
参数一:被截取字符串
参数二:起始字符串
参数三:终止字符串
返回值:截取到的部分
******************/
unsigned char* StringCut(unsigned char* src1,unsigned char* start,unsigned char* stop)
{
unsigned char *src = src1;
unsigned char dest[85] = {0};
unsigned char *p1,*p2;
p1 = strstr(src,start);
p2 = strstr(src,stop);
if (p1 == NULL || p2 == NULL || p1 > p2)
{
return NULL;
}
else
{
p1 += strlen(start);
memcpy(dest, p1, p2 - p1);
return dest;
}
}
四、51单片机中断的注意事项
如果使用中断,记得打开中断总开关EA=1,然后,若使用串口中断,应打开ES=1,若使用定时器中断,应打开定时器中断开关ETx,需要开始计时时令TRx=1。