当前位置: 首页 > news >正文

绍兴seo网站推广丰泽区住房和城乡建设局投诉网站

绍兴seo网站推广,丰泽区住房和城乡建设局投诉网站,wordpress代刷网,网站标题logo怎么做的实现目标 1、巩固UART知识#xff1b; 2、掌握串口接收字符数据#xff1b; 3、具体实现目标#xff1a;#xff08;1#xff09;上位机串口助手发送多字符命令#xff0c;单片机接收命令作相应的处理#xff08;如#xff1a;openled1 即打开LED1;closeled1 即关…实现目标 1、巩固UART知识 2、掌握串口接收字符数据 3、具体实现目标1上位机串口助手发送多字符命令单片机接收命令作相应的处理如openled1  即打开LED1;closeled1  即关闭LED1; 一、主要知识点 1.1 字符串定义 字符串是由字母、数字、下划线和空格等各种字符组成的一串字符是一个常量。由一对双引号括起来。字符串的末尾都默认有一个\0的结束符。 C语言存储字符其实是存储字符所对应的ASCII码因此字符可以以%c或者%d输出均可以需要作为常识记住的是字符0对应的ASCII码为48字符A对应的ASCII码为65字符Z对应的ASCII码为90字符a对应的ASCII码为97字符z对应的ASCII码为122; 字符类型char占用1个字节。 用来存放字符的数组称为字符数组字符数组实际上是一系列字符的集合也就是字符串C语言通常有两种表示字符串的方法 第一种定义一个字符数组char  str[]abcd;   第二种字符串指针;    const  char * strhello; 这种方式不可通过对字符指针解引用进行修改字符串因为字符串常量不可修改 这二者都是使用字符串常量对其进行初始化从指针角度理解本质一样不论是字符数组还是字符指针str都代表字符串首字符的起始地址。区别在于字符数组名为常量常量不可以作左值字符指针是变量但是字符指针不可以进行解引用再修改值。 获取字符串的长度 方法一sizeof()运算符 方法二strlen()函数 求字符串“abcd”的长度 int str[]{abcd} int len1sizeof(str)/sizeof(str[0); int len2strlen(str); 解析结果len15;len24; sizeof 和strlen总结 ①sizeof是运算符strlen是库函数包含在string.h头文件中 ②sizeof功能是获得所建立对象的字节大小strlen函数是获得字符串所占内存的有效字节数 ③sizeof运算符的参数可以是数组、指针、对象、函数等strlen函数的参数必须是以\0结尾的字符串的指针 ④sizeof运算符计算大小在编译时就完成因此不能用来计算动态分配内存大小strlen函数结果要在运行时才能计算出来。 1.2 strstr 函数应用 (1) 头文件 #include string.h (2) 函数原型 char *strstr(const char *haystack, const char *needle); (3) 函数作用 1、strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。 2、找到所搜索的字符串则该函数返回第一次匹配的字符串的地址 3、如果未找到所搜索的字符串则返回NULL。情景一 用于单次匹配 返回的是匹配成功的字符串以及后面的字符串 #include stdio.h #include string.h main() {char *sGoldenGlobalView;char *llob;char *p;pstrstr(s,l);if(p)printf(%s,p);elseprintf(NotFound!);return 0; }二、原理图设计 STC89C52RC/RD系列单片机串行口对应的硬件部分对应的管脚是P3.0/RxD和P3.1/TxD。 三、程序设计 3.1单片机接收上位机PC的命令 参数波特率9600 SMOD为0波特率不加倍定时器1工作模式28位自动重装。 具体功能发字符 a,开启LED1; 发字符 b,关闭LED1; #include REGX52.H#define FOSC 11059200L //System frequency #define BAUD 9600 //UART baudratesbit LED1 P2^0;int cmd 0;//命令 bit flag 0;void Uart_send(unsigned char dat); void Uart_send_str(unsigned char *p); void Delay500ms();void main() {PCON 0x7F; //波特率不倍速SCON 0x50; //8-bit variable UARTTMOD 0x20;//0010 0000 //Set Timer1 as 8-bit auto reload modeTH1 TL1 -(FOSC/12/32/BAUD); //Set auto-reload vauleTR1 1; //Timer1 start runES 1; //Enable UART interruptEA 1; //Open master interrupt switchwhile(1){if(flag 1)//查询是否接收一字节的命令{flag 0;//标志位清零0if(cmd a){LED1 0;Uart_send(cmd);}else if(cmd b){LED1 1;Uart_send(cmd);} }} } void Uart_send(unsigned char dat) {SBUF dat;while(!TI);TI 0; }void Uart_send_str(unsigned char *p) {while(*p!\0){Uart_send(*p); p; } }void Uart_Isr() interrupt 4 {if (RI 1){RI 0; //Clear receive interrupt flag flag 1;cmd SBUF; } }void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); } 3.2  字符串命令控制LED 具体功能发字符串open,开启LED1; 发字符串close,关闭LED1; #include REGX52.H #include stdio.h #include string.h #define FOSC 11059200L //System frequency #define BAUD 9600 //UART baudratesbit LED1 P2^0; typedef struct {unsigned char buff[32]; //用于存放接收到的字符串unsigned char flag; //接收完成中断标志位unsigned char len; //用于偏移字符串指针,可以理解为长度,如果buff设得很长,对应这里需要改成u16 }REC;REC UART_rec{0}; //初始化结构体 const char *substr1 open; const char *substr2 close; void Uart_send(unsigned char dat); void Uart_send_str(unsigned char *p); void Delay500ms();void main() {PCON 0x7F; //波特率不倍速SCON 0x50; //8-bit variable UARTTMOD 0x20;//0010 0000 //Set Timer1 as 8-bit auto reload modeTH1 TL1 -(FOSC/12/32/BAUD); //Set auto-reload vauleTR1 1; //Timer1 start runES 1; //Enable UART interruptTI 1; EA 1; //Open master interrupt switchwhile(1){if(UART_rec.flag 1)//若接收完成{if (strstr(UART_rec.buff,substr1)! NULL){printf(开启LED1\n); LED1 0; }else if(strstr(UART_rec.buff,substr2)! NULL){printf(关闭LED1\n); LED1 1; }// printf(接收到了:%s\r\n,UART_rec.buff);UART_rec.flag 0; //接收标志位清零,准备接收下一字符串 }} }void Uart_send(unsigned char dat) {SBUF dat;while(!TI);TI 0; }void Uart_send_str(unsigned char *p) {while(*p!\0){Uart_send(*p); p; } }void Uart_Isr() interrupt 4 {unsigned char temp 0; if (RI 1){ RI 0; //清除接收中断标志 temp SBUF; if(temp\r||temp\n||UART_rec.len 32) {UART_rec.buff[UART_rec.len]\0;UART_rec.flag 1 ; //数据包接收完成标志UART_rec.len0; //为下一个数据包做准备}else{UART_rec.buff[UART_rec.len] temp;}} }void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); } 四、实验效果 五、仿真实现 5.1单片机接收的字符命令仿真 总结
http://www.w-s-a.com/news/832071/

相关文章:

  • 九歌人工智能诗歌写作网站电子商务网站建设项目书
  • 做外贸的经常浏览的三个网站律师做哪个网站好
  • 中国公路建设招标网站长沙大型网站建设公司
  • 沈阳企业网站模板建站注册电子邮箱免费注册
  • 如何做简洁网站设计企业网站排名优化方案
  • 东莞网站建设服务商做触屏网站
  • 外国网站代理音乐网站建设
  • 珠江网站建设广安广告公司
  • 高端创意网站建设网页制作咨询公司
  • 网站建设及发布的流程图wordpress文章摘要显示
  • 淮北网站网站建设省好多会员app
  • 如何查看网站的更新频率网站图片要求
  • 网站设计公司收费标准wordpress修改文章链接
  • 镇江网站建设公司网站关键词密度怎么计算的
  • c 网站开发公司的网站的设计
  • 网站建设多长时间能学会做网站猫要做端口映射吗
  • 新手做网站视频网页设计期末作品要求
  • 做网站用户充值提现郑州高端模板建站
  • 运城做网站方式方法网站改版完成
  • 上海建设网站制作东西湖建设局网站
  • 建设购物网站课程设计建设部领导干部官方网站
  • 沈阳企业制作网站北京两学一做网站
  • 郑州做营销型网站手机网站建设多少钱一个
  • 小说类网站程序外贸商城 wordpress
  • 喀什百度做网站多少钱wordpress 用户介绍
  • 专门做任务的网站手机端网站重构
  • 深圳专业设计网站公司国际网站建设经验
  • 网站产品页排名怎么做网站备案起名要求
  • 成都企业网站建设及公司ppt生活分类信息网站大全
  • 免费企业网站源码下载学服装设计需要什么条件