WIFI小车记录五:单片机串口通信
来源:互联网 发布:lol面具淘宝 编辑:程序博客网 时间:2024/04/30 14:22
单片机用的是ATMege 128,编程软件用的是ICCV8 for AVR CodeBlocks IDE。CodeBlocks 这么好用的IDE套在了ICCAVR上面,用起来各种好看各种爽啊,各种配置只要点点点就可以自动生成!!
单片机编程已经有点经验,总体上还是比较简单的。遇到困难的地方主要就是串口通信了,之前没有接触过。好在也一个个解决了。下面就贴一下串口通信的代码吧。
这是IDE里面自带的配置工具,只要点一点就可以生成代码啦,下面就是我的配置。
下面就是生成的串口0初始化代码,直接copy就可以
void uart0_init(void){ UCSR0B = 0x00; //disable while setting baud rate UCSR0A = 0x00; UCSR0C = 0x06; UBRR0L = 0x33; //set baud rate lo UBRR0H = 0x00; //set baud rate hi UCSR0B = 0xD8;}
这里使用中断接收数据。
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXCvoid uart0_rx_isr(void){ CLI(); Rece[0]=UDR0; if(Rece[0]=='A') //编码起始字符 { do { while( !(UCSR0A & (1<<RXC0)) );//RXC检验接受缓冲器中是否还有数据未读出 i++; Rece[i]=UDR0; if(Rece[i]=='A') //编码结束字符 break; }while(1); if(Rece[i-3]=='C') //如果是C,则调用控制模式函数 WirelessControl(Rece[i-2]); //控制模式 else if(Rece[i-3]=='D') //如果是D,则调用驾驶模式函数 WirelessDrive(Rece[i-2],Rece[i-1]); //两个参数,一个是方向,一个是速度大小 i=0; } SEI(); //uart has received a character in UDR}
驾驶模式函数
void WirelessDrive(char c1,char c2){ int speedrate=c2-'0'; if(c1=='L') { LeftWheel(0.7,0); RightWheel(0.7*(10-speedrate)/10,0); } else if(c1=='R') { LeftWheel(0.7*(10-speedrate)/10,0); RightWheel(0.7,0); } else if(c1=='F') { RightDriveSpeed=0.7; LeftDriveSpeed=0.7; RightWheel(RightDriveSpeed,0); LeftWheel(LeftDriveSpeed,0); } else if(c1=='B') { RightDriveSpeed=0.7; LeftDriveSpeed=0.7; RightWheel(RightDriveSpeed,1); LeftWheel(LeftDriveSpeed,1); } else if(c1=='S') { RightDriveSpeed=0; LeftDriveSpeed=0; RightWheel(RightDriveSpeed,0); LeftWheel(LeftDriveSpeed,0); }}
串口发送则使用查询模式
void SendChar(unsigned char c) //发送采用查询方式{ while(!(UCSR0A&(1<<UDRE0))); //等待UDR为空 UDR0 = c;}void SendString(unsigned char *ptr){ UCSR0B|=0x08; UCSR0A|=0x20; while (1) { if((*ptr)!='\0') { SendChar(*ptr); ptr++; } else { UCSR0A&=0xdf; UCSR0B&=0xf7; break; } }}
串口通信大体程序就是这样。
0 0
- WIFI小车记录五:单片机串口通信
- 智能小车四《串口通信》
- Wifi小车之 - 51单片机篇
- Wifi小车之 – 51单片机无线小车篇
- Wifi小车之 - 51单片机红外小车篇
- Wifi小车之 - 51单片机无线小车篇
- (C51学习五)单片机与PC通过串口通信
- 单片机开发记录——模拟串口通信
- 单片机串口通信(2)
- 单片机串口通信(1)
- 单片机串口通信实验
- 单片机之串口通信
- 单片机串口通信
- C# 串口通信、单片机
- C#串口通信、单片机
- 单片机串口通信不正确
- 单片机串口通信小结
- 单片机串口通信技术
- sqlserver性能调优
- 正则表达式学习(三)
- html5之canvas标签应用之 2d图形绘制以及图片绘制
- OC:继承 多态 重写
- JSP详细篇——Ajax
- WIFI小车记录五:单片机串口通信
- Adding a File to a Run-time Image (Windows CE 5.0)
- 复数类计算
- 如何使用LoadRunner监控Linux与Windows
- Many-to-One映射
- Moodle 中文 API 之 权限管理API
- 一些web前端开发比较有用的框架和组件
- Log4j在Java中的使用
- MemoryCache学习