单片机数组截取前5个_单片机发送一个数组返回一个数组 - CSDN
  • 单片机中C语言字符串转换

    千次阅读 2018-07-19 10:03:02
    字符串转int atoi 函数原型int atoi(const char *nptr); int val = atoi("12"); 这样va就l等于12 int转字符串 itoa 函数原型:char*itoa(intvalue,char*string,intradix); int number=123456;......

    字符串转int atoi

    函数原型int atoi(const char *nptr);

    int val = atoi("12");
    这样va就l等于12

    int转字符串 itoa
    函数原型:char*itoa(intvalue,char*string,intradix);
    int number=123456;
    char string[25];
    itoa(number,string,10);
    string就是123456 后面的10是说转化成10进制 16就是转化成16进制 8就是转化成8进制 ,也可以转化成2进制

    字符串截取 strncpy
    原型:char*strncpy(char*dest,char*src,size_tnum);
    大家知道strcpy 是子环节复制字符串,可能不知道还有个strncpy,这是复制指定长度的字符串
    chardes[]="Hello,iam!";
    charsource[]="abcdefg";
    strncpy(chardes,charsource,3);
    这时chardes的值是abc 注意这里可不是把abc添加在!后面的,是从chardes这个数组的首地址开始赋值的,最后会加上'\0'做结束符。
    改变一下用法
    strncpy(chardes+1,charsource+2,3);
    这时候chardes的值是Hcde 为什么是这个值,能看懂不?自己思考一下。偏移哈。

    字符串构造 sprintf
    原型 int sprintf( char *buffer, const char *format, [ argument] … );
    这个应该很多人都知道。
    char dest[20];
    int val=12;
    sprintf(dest,"val=%d",val);

    dest的值就是"val=12" 那个12也是字符串了哈注意下。
    这个函数也可以整形、浮点型转字符串
    sprintf(dest,"%f",3.1415926f);
    dest 就是“3.1415926”

    sprintf(dest,"现在的时间是%s,请注意","2014-04-09 11:27:21"); 后面这个字符串也可以换成变量
    dest的值是 "现在的时间是2014-04-09 11:27:21,请注意"

    直接对内存操作memset
    原型 void *memset(void *s, int ch, size_t n);
    char buffer[20];
    strcpy(buffer,"1234567890");
    memset(buffer,0,sizeof(char)*20);
    这时buffer中的数据全都是0了

    strcpy(buffer,"1234567890");
    memset(buffer+2,6,sizeof(char)*2);
    这时buffer值是1266567890
    这个函数可以对任何数据类型的内存进行修改。所以有些从串口接收进来的数据需要做一下简单的修改再转发出去的话就可以用这个函数做修改。

    先介绍这些吧,再想起来别的再补充
    【2014-04-11 补】

    memcpy函数使用起来也不错的,直接把字节数组复制到指定位置了,这个就不说了。

    字符串分割strtok
    原型 char *strtok(char s[], const char *delim);
    分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

    ARDUINO 代码

     
    输出:
    abc
    d

    记住了,只要第一次分割的时候需要指定字符串,之后再分割就用NULL就行了,当p==NULL的时候说明分割完了。这里使用到了指针,此处指针不需要释放。


    查找字符串 strstr
    原型 char *strstr(const char *str1, const char *str2);
    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
    str1: 被查找目标 
    str2: 要查找对象 

    char str[]="1234 xyz";
    char* str1=strstr(str,"34");
    printf("%s",str1);
    显示: 34 xyz

    字符串比较 strcmp
    原型:extern int strcmp(const char *s1,const char * s2);
    比较s1和s2 两个相等就返回0 不想等就返回非0值。

    字符串连接strcat
    原型 extern char *strcat(char *dest,char *src);
    把src 连接到dest值的后面,注意dest要有足够的空间去接收src否则会出错

     

    展开全文
  • #include "stdio.h" #include "string.h" typedef unsigned int uint32_t; typedef unsigned char uint8_t; int main(void) { uint8_t test[30] = { 0 }; for (int i=0;... test[i] = i * ...
    #include "stdio.h"
    #include "string.h"
    
    typedef unsigned int  uint32_t;
    typedef unsigned char uint8_t;
    
    
    int main(void)
    {
    	uint8_t test[30] = { 0 };
    
    	for (int i=0; i < 30; i++)
    	{
    		test[i] = i * 2;
    		printf(" %d ", test[i]);
    	}
    	printf("\r\n");
    	printf("%d\r\n", *(uint32_t*)(&test[0]));
    	return 0;
    }
    
     0  2  4  6  8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38  40  42  44  46  48  50  52  54  56  58
    100925952
    

    0x06040200 = 100925952

    展开全文
  • 时间 :2016年4月12日16:46:16  不同类型变量之间的相互赋值,短字节类型变量向长字节类型变量赋值时,其值保持不变,比如 unsigned char a=100; unsigned int b=700; b=a;那么最终 b 的值就是 100 了。...

    时间 :2016年4月12日16:46:16

      不同类型变量之间的相互赋值,短字节类型变量向长字节类型变量赋值时,其值保持不变,比如 unsigned char a=100; unsigned int b=700; b=a;那么最终 b 的值就是 100 了。但是如果我们的程序是 unsigned char a=100; unsigned int b=700; a=b;那么 a 的值仅仅是取了 b的低 8 位,我们首先要把 700 变成一个 16 位的二进制数据,然后取它的低 8 位出来,也就是 188,这就是长字节类型给短字节类型赋值的结果,会从长字节类型的低位开始截取刚好等于短字节类型长度的位,然后赋给短字节类型。

      对于 bit 类型的变量则比较特别比如 bit a=0; unsigned char b; a=(bit)b;这个地方要特别注意,使用 bit 做强制类型转换,不是取 b 的最低位,而是它会判断 b 这个变量是 0 还是非 0的值,如果 b 是 0,那么 a 的结果就是 0,如果 b 是任意非 0 的其它值,那么 a 的结果都是 1。

    转载于:https://www.cnblogs.com/zhouhaiyang/p/5383297.html

    展开全文
  • 是转载的 http://bbs.21ic.com/icview-691804-1-1.html [51单片机] 从业将近十年!手把手教你单片机程序框架(连载) 大家好,我叫吴坚鸿,从事单片机项目开发已经有快十年了。现在借21IC这平台把我认为最...

    这个是转载的

    http://bbs.21ic.com/icview-691804-1-1.html

    [51单片机] 从业将近十年!手把手教你单片机程序框架(连载)
    大家好,我叫吴坚鸿,从事单片机项目开发已经有快十年了。现在借21IC这个平台把我认为最有价值的东西分享给大家。我这个技术贴每个星期更新一两篇,直到我江郎才尽为止。再次感谢21IC给我们提供这个交流分享的平台。

    第一节:吴坚鸿谈初学单片机的误区。

    第二节:delay()延时实现LED灯的闪烁。

    第三节:累计主循环次数使LED灯闪烁。

    第四节:累计定时中断次数使LED灯闪烁。

    第五节:蜂鸣器的驱动程序。

    第六节:在主函数中利用累计主循环次数来实现独立按键的检测。

    第七节:在主函数中利用累计定时中断的次数来实现独立按键的检测。

    第八节:在定时中断函数里执行独立按键的扫描程序。

    第九节:独立按键的双击按键触发。

    第十节:两个独立按键的组合按键触发。

    第十一节:同一个按键短按与长按的区别触发。

    第十二节:按住一个独立按键不松手的连续步进触发。

    第十三节:按住一个独立按键不松手的加速匀速触发。

    第十四节:矩阵键盘的单个触发。

    第十五节:矩阵键盘单个触发的压缩代码编程。

    第十六节:矩阵键盘的组合按键触发。

    第十七节:两片联级74HC595驱动16个LED灯的基本驱动程序。

    .第十八节:把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式。

    第十九节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序。

    第二十节:依次逐个亮灯并且每次只能亮一个灯的跑马灯程序。

    第二十一节:多任务并行处理两路跑马灯。

    第二十二节:独立按键控制跑马灯的方向。

    第二十三节:独立按键控制跑马灯的速度。

    第二十四节:独立按键控制跑马灯的启动和暂停。

    第二十五节:用LED灯和按键来模拟工业自动化设备的运动控制。

    第二十六节:在主函数while循环中驱动数码管的动态扫描程序。

    第二十七节:在定时中断里动态扫描数码管的程序。

    第二十八节:数码管通过切换窗口来设置参数。

    第二十九节:数码管通过切换窗口来设置参数,并且不显示为0的高位。

    第三十节:数码管通过闪烁来设置数据。

    第三十一节:数码管通过一二级菜单来设置数据的综合程序。

    第三十二节:数码管中的倒计时程序。

    第三十三节:能设置速度档位的数码管倒计时程序。

    第三十四节:在数码管中实现iphone4S开机密码锁的程序。

    第三十五节:带数码管显示的象棋比赛专用计时器。

    第三十六节:带数码管显示的加法简易计算器。

    第三十七节:数码管作为仪表盘显示跑马灯的方向,速度和运行状态。

    第三十八节:判断数据尾来接收一串数据的串口通用程序框架。

    第三十九节:判断数据头来接收一串数据的串口通用程序框架。

    第四十节:常用的自定义串口通讯协议。

    第四十一节:在串口接收中断里即时解析数据头的特殊程序框架。

    第四十二节:通过串口用delay延时方式发送一串数据。

    第四十三节:通过串口用计数延时方式发送一串数据。

    第四十四节:从机的串口收发综合程序框架

    第四十五节:主机的串口收发综合程序框架

    第四十六节:利用AT24C02进行掉电后的数据保存。

    第四十七节:操作AT24C02时,利用“一气呵成的定时器延时”改善数码管的闪烁现象。

    第四十八节:利用DS1302做一个实时时钟 。

    第四十九节:利用DS18B20做一个温控器 。

    第五十节:利用ADC0832采集电压信号,用平均法和区间法进行软件滤波处理。

    第五十一节:利用ADC0832采集电压信号,用连续N次一致性的方法进行滤波处理。

    第五十二节:程序后续升级修改的利器,return语句鲜为人知的用法。

    第五十三节:指针的第一大好处,让一个函数可以封装多个相当于return语句返回的参数。

    第五十四节:指针的第二大好处,指针作为数组在函数中的输入接口。

    第五十五节:指针的第三大好处,指针作为数组在函数中的输出接口。

    第五十六节:指针的第四大好处,指针作为数组在函数中的输入输出接口。

    第五十七节:为指针加上紧箍咒const,避免意外修改了只做输入接口的数据。

    第五十八节:指针的第五大好处,指针在众多数组中的中转站作用。

    第五十九节:串口程序第40,44,45节中存在一个bug,特此紧急公告。

    第六十节:用关中断和互斥量来保护多线程共享的全局变量。

    第六十一节:组合BCD码,非组合BCD码,以及数值三者之间的相互转换和关系。

    第六十二节:大数据的加法运算。

    第六十三节:大数据的减法运算。

    第六十四节:大数据的乘法运算。

    第六十五节:大数据的除法运算。

    第六十六节:单片机外部中断的基础。

    第六十七节:利用外部中断实现模拟串口数据的收发。

    第六十八节:单片机C语言的多文件编程技巧。

    第六十九节:使用static关键字可以减少全局变量的使用。

    第七十节:深入讲解液晶屏的构字过程。

    第七十一节:液晶屏的字符,16点阵,24点阵和32点阵的显示程序。

    第七十二节:在液晶屏中把字体顺时针旋转90度显示的算法程序。

    第七十三节:在液晶屏中把字体镜像显示的算法程序。

    第七十四节:在液晶屏中让字体可以跨区域无缝对接显示的算法程序。

    第七十五节:在12864液晶屏中让字体以1个点阵为单位进行移动显示的算法程序。

    第七十六节:如何把一个任意数值的变量显示在液晶屏上。

    第七十七节:在1个窗口里通过移动光标来设置不同参数的液晶屏菜单程序。

    第七十八节:在多个窗口里通过移动光标来设置不同参数的液晶屏菜单程序。

    第七十九节:通过主菜单移动光标来进入子菜单窗口的液晶屏程序。

    第八十节:调用液晶屏内部字库来显示汉字或字符的坐标体系和本质。

    第八十一节:液晶屏显示串口发送过来的任意汉字和字符。

    第八十二节:如何通过调用液晶屏内部字库把一个任意数值的变量显示出来。

    第八十三节:矩阵键盘输入任意数字或小数点的液晶屏显示程序。

    第八十四节:实时同步把键盘输入的BCD码数组转换成数值的液晶屏显示程序。

    第八十五节:实时同步把加减按键输入的数值转换成BCD码数组的液晶屏显示程序。

    第八十六节:数字键盘与液晶菜单的综合程序。

    第八十七节:郑文显捐赠的工控项目源代码。

    第八十八节:电子称连续不断从串口对外发送数据,单片机靠关键字快速截取有效数据串。

    第八十九节:用单片机内部定时器做一个时钟。

    第九十节:针对行程开关感应器,分享一种既能及时响应,又能抗干扰处理的识别思路。

    展开全文
  • (1)安卓手机与蓝牙模块联合调试(一)—— 蓝牙模块的串口通讯  (2)安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上) ...(5)安卓手机与蓝牙模块联合调试()-- 编写自己的蓝牙控制界...
  • 出处:http://blog.csdn.net/supreme42/article/details/6771227 --------------------------... 从单片机初学者迈向单片机工程师 作者
  • AVR单片机教程——DAC

    2020-02-09 14:24:15
    本文隶属于AVR单片机教程系列。 单片机的应用场景时常涉及到模拟信号。我们已经会使用ADC把模拟信号转换成数字信号,本讲中我们要学习使用DAC把数字信号转换成模拟信号。我们还将搭建一简单的功率放大器电路,用...
  • //定义缓冲区,因为串口事件触发时有可能收到不止一字节 serialPort1.Read(data, 0, data.Length); //读取数据 foreach (byte Member in data) //遍历用法 { string str = Convert.ToString(Member, 16)....
  • 今天在写一SPI-flash读写程序,目的是要将一二进制文件写到SPI_FLASH中,最后通过开机读取,实际上这.bin文件就是uboot和second-boot的结合体。通过SD卡写到SPI-FLASH中就可以脱离SD卡开机启动了。 这程序...
  • openCV图像与数组互相转换

    千次阅读 2018-11-06 22:11:09
    智能车比赛中,可以把单片机采集到的图像数据存储起来,发到电脑上,使用该程序可以利用opencv来对图像进行处理。 输入灰度图得到数组  ​//输入灰度图像,返回数组 vector&lt;vector&lt;int&gt;&...
  • 源码: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main() { unsigned long long cmd = 0x2211ffeeddccbbaa; unsigned char buf[8] = {0};... buf[0]...
  • UNICODE是万能编码,包含了所有符号的编码,它...Unicode定义了所有符号的二进制形式,也就是符号如何在计算机内部存储的,而且每符号规定都必须使用两字节来表示,也就是用16位二进制去代表一符号,这样就导致
  • 这里我把我的所有的51单片机程序上传,这其中有一部分是我自己写的,也有很多的东西是网上找来自己整理的 这里的程序基本囊括了51的所有外设,都已经测试过了 再次声明,这些资料由本人整理或者编写 测透51的汇编...
  • 第一节:吴坚鸿谈初学单片机的误区。 http://bbs.elecfans.com/forum.php?mod=redirect&goto=findpost&ptid=406259&pid=2513087&fromuid=635735 第二节:delay()延时实现LED灯的闪烁。htt...
  • socket实现TCP通信_android
  • 说出来都是泪,折腾了一星期的串口接收并处理的程序,结果还经常出现数据丢失现象,结果是被老大骂了一顿,然后人家半天时就给搞定。除了恨自己无能以外,只有好好向高手学习。现在把人家的数据处理思路写出来,一...
  • 单片机中Sprint函数:

    万次阅读 2019-01-01 14:00:22
    最近在做项目 ,用到了好几次sprint,这函数功能甚是强大啊。是转换成字符串的利器。下面是我在网上找到的,感觉比较好的总结。感谢各位网友,大家一起进步! sprintf函数的用法 1、该函数包含在stdio.h的头文件中...
  • 最近在做项目 ,用到了好几次sprint,这函数功能甚是强大啊。是转换成字符串的利器。下面是我在网上找到的,感觉比较好的总结。感谢各位网友,大家一起进步! sprintf函数的用法 1、该函数包含在stdio.h的...
1 2 3 4 5 ... 15
收藏数 281
精华内容 112
关键字:

单片机数组截取前5个