《单片机串行口的应用.ppt》由会员分享,可在线阅读,更多相关《单片机串行口的应用.ppt(20页珍藏版)》请在第壹文秘上搜索。
1、串行口的应用串行口的应用单片机应用技术目录引言引言 串行通信介绍串行通信介绍串行通信应用串行通信应用思考思考CONTENTS作业作业小结小结1.1.引言引言串行通信的思考串行通信的思考u 串行口一次传输一个串行口一次传输一个bitbit,并行口一次传输一个,并行口一次传输一个bytebyte,谁快?,谁快?u 使用串行口的场合越来越多,使用并行口场合越来越少,为什使用串行口的场合越来越多,使用并行口场合越来越少,为什么?么?u 并行口快要被串行口完全取代,而消失了!并行端口的最后一并行口快要被串行口完全取代,而消失了!并行端口的最后一块版图块版图打印机端口打印机端口,逐渐被,逐渐被USBUSB
2、与与EthernetEthernet并吞。并吞。低成本!简单!1.1.引言引言2.2.串行通信介绍串行通信介绍3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用1. 设置设置UART 工作工作模式模式2. 设置波特率设置波特率3. 运行运行UART中断中断设置设置SCON寄存器中模式选择位寄存器中模式选择
3、位设置设置PCON寄存器中寄存器中SMOD加倍位加倍位设置设置TMOD寄存器中模式选择位寄存器中模式选择位置位置位TR1启动定时器启动定时器置位置位ES 运行串行口中断运行串行口中断串口初始化步骤串口初始化步骤3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用头文件与宏定义头文件与宏定义#include / 包含包含reg51.h档档 sbit key1=P20;sbit key2=P21;unsigned int num=0;void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=110
4、;y0;y-);发送端程序发送端程序3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用2023/3/22主函数主函数 main()/ 主程序开始主程序开始 TMOD |= 0 x20;/ 将将Timer 1设定设定mode 2以产生波特率以产生波特率 PCON &= 0 x7f;/ 将将SMOD设定为设定为0TH1=TL1=0 xfd;/波特率设定约为波特率设定约为9600bps(12MHz)TR1=1;/ 启动启动Timer 1SCON=0 xd0;/ 设定为设定为mode3P2=0 xff; / 规划指拨开关为输入规划指拨开关为输入SBUF=0; del
5、ay(1000); T1 溢出率溢出率 = fosc /12256 (TH1) while(1)/ while循环开始循环开始 if (key1=0 | key2=0) delay(50); if (key1=0 | key2=0) if (TI=1)/ 检查是否完成传出检查是否完成传出? TI=0;/ TI=1时时(传出完成传出完成),清除清除TI旗标旗标 num=num+1;if (num=10) num=0;SBUF=num; / while循环结束循环结束 / 主程序结束主程序结束接收端程序接收端程序头文件与宏定义头文件与宏定义#include / 包含包含reg51.h档档 #def
6、ine LED P0/ 定义定义LED位置位置 #define DIP_SW P2/ 定义指拨开关位置定义指拨开关位置 unsigned char code table= /共阳极共阳极0f数码管编码数码管编码0 xc0,0 xf9,0 xa4,0 xb0,/030 x99,0 x92,0 x82,0 xf8,/470 x80,0 x90,0 x88,0 x83,/8b0 xc6,0 xa1,0 x86,0 x8e; /cf3.3.应用体验应用体验-串行通信在排队呼叫系统中的应用串行通信在排队呼叫系统中的应用主函数主函数 main() / 主程序开始主程序开始 TMOD |= 0 x20;/
7、将将Timer 1设定设定mode 2以产生波特率以产生波特率 PCON &= 0 x7f;/ 将将SMOD设定为设定为0TH1=TL1=0 xfd;/波特率设定约为波特率设定约为9600bps(12MHz)TR1=1;/ 启动启动Timer 1SCON=0 xd0;/ 设定为设定为mode 3 (P8-5P8-6)while(1)/ while循环开始循环开始 if (RI=1) / 检查是否完成接收检查是否完成接收? RI=0; / RI=1时时(接收完成接收完成),清除清除RI旗标旗标 LED=tableSBUF; / 将所接收的资料输出到将所接收的资料输出到LED/ while循环结束循环结束 / 主程序结束主程序结束 在本实验里,采用约在本实验里,采用约9600bps9600bps的波特率,怎样修改的波特率,怎样修改程序实现将波特率修改为程序实现将波特率修改为4800 bps4800 bps? 4 4. .思考思考 在本实验里,两片采用在本实验里,两片采用mode 3mode 3,请试改以,请试改以mode 1 mode 1 或或 mode 2mode 2,重新测试?,重新测试?5.5.作业作业u 串行通信工作原理串行通信工作原理u 排队呼叫系统电路设计及编程排队呼叫系统电路设计及编程6.6.小结小结Thank you!