51单片机 串口通信
来源:互联网 发布:你怎么看待网络直播 编辑:程序博客网 时间:2024/04/28 15:18
首先,了解一些基本概念。
RS232电平:逻辑1(MARK)=-3V~-15V,逻辑0(SPACE)=+3~+15V
TTL电平:+5V等价于逻辑“1”,0V等价于逻辑“0”
TXD :发送数据 Transmit Data,单片机的P31
RXD :接收数据 Receive Data,单片机的P30
波特率 :单片机或计算机在串口通信时的速率,定义为每秒传输二进制代码的位数,单位bts
UART :通用异步收发器。51单片机的串行口是一个可编程全双工的通信接口,具有UART的全部功能,能同时进行数据的发送和接收,也可作为同 步移位寄存器使用。
SBUF : 串行数据缓冲寄存器
经常使用的都是通信方式1(10位数据的异步通信,波特率可变,定时器1),因此必须掌握~~~
定时器1通常用方式2,当溢出后,单片机会自动为其装初值,方式1需要手动装初值
附:常用波特率初值表
/*发送字符 @L2 2016/08/08 */#include<reg51.h>unsigned char word[19] = "Nice to meet you! ";void init();void Delay10ms(unsigned int c);void main(){unsigned char i;init();while(1){for(i=0; i<19; i++){SBUF = word[i]; //将要发送的数据放入到发送寄存器while(!TI); //等待发送数据完成:当串行发送第8位数据结束时,内部硬件置1。TI=0; //清除发送完成标志位:软件清零}Delay10ms(50); //延时一下再发}}void init() // 设置串口{SCON=0X50;//设置为工作方式1 SMO SM1 SM2 REN=0 1 0 1 TMOD=0X20;//设置定时器1工作方式2PCON=0X80;//波特率加倍SMOD=1TH1=0XE6; //计数器初始值设置,此处波特率是2400TL1=0XE6;//ES=1;//打开接收中断//EA=1;//打开总中断TR1=1; //打开计数器}void Delay10ms(unsigned int c) //误差 0us{ unsigned char a, b; for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);} } }
/**将接收到发送回电脑上面。@L2 2016/08/08 **/#include<reg51.h>void init() // 设置串口{SCON=0X50;//设置为工作方式1TMOD=0X20;//设置计数器工作方式2PCON=0X80;//波特率加倍TH1=0XF3; //计数器初始值设置,注意波特率是4800的TL1=0XF3;ES=1;//打开接收中断EA=1;//打开总中断TR1=1; //打开计数器}void Usart() interrupt 4 // 串行口中断,串行端口完成一帧字符发送/接收后引起{unsigned char receiveData;receiveData=SBUF; //出去接收到的数据RI = 0; //清除接收中断标志位SBUF=receiveData; //将接收到的数据放入到发送寄存器while(!TI); //等待发送数据完成TI=0; //清除发送完成标志位}void main(){init();while(1){}}
0 0
- 51单片机串口通信
- 51单片机串口通信
- 51单片机 串口通信
- 51单片机 串口通信 中断
- 51单片机串口通信实例
- 51单片机 UART串口通信
- 51单片机的串口通信
- 51系列单片机之串口通信
- 51单片机串口通信及波特率设置
- 51单片机GPIO口模拟串口通信
- 51单片机UART串口通信开发总结
- 51单片机和PC串口异步通信
- 51单片机GPIO口模拟串口通信
- 51单片机GPIO口模拟串口通信
- STC12C5202AD 51单片机串口通信配置模板
- STC 51 单片机 串口通信实验
- 51单片机与PC进行串口通信
- 51单片机串口通信及波特率设置
- 说说 HTML 中的dropEffect 和 effectAllowed
- Web-SpringMVC学习总结
- 倒计时器的实现
- Excel VBA-批量将多个sheet表另存为单独的工作薄文件
- [DP]简单工厂,工厂方法和抽象工厂方法
- 51单片机 串口通信
- Codeforces Round #365 (Div. 2) B. Mishka and trip
- phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码
- 最优化方法:常用最优化方法
- 求两个有序数组两两相加的值最小的K个数
- 153.The database instance has the following parameter setting: OS_AUTHENT_PREFIX = OPS$ OS_ROLES = F
- Android Path Time ScrollBar(Path 时间轴)
- C++调用空指针对象的成员函数——静态绑定与动态绑定
- JavaScript飞机大战