版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编:李文华“十四五”职业教育国家规划教材经全国职业教育教材审定委员会审定串口扩展并口模拟交通灯任务要求单片机系统的振荡频率fosc=11.0592MHz,采用串口外接串入并出移位芯片HC595的方式扩展并口,用HC595控制红绿黄3种颜色的发光二极管模拟交通灯。交通灯位于东西方向与南北方向的十字交叉路口,用红绿黄3种颜色的交通灯指挥路面交通,交通灯的运行规则如下表所示。东西方向指示灯南北方向指示灯时间(秒)含义绿黄红绿黄红亮灭灭灭灭亮55东西方向通行,南北方向禁行灭亮灭灭灭亮5东西方向警示,南北方向禁行灭灭亮亮灭灭35南北方向通行,东西方向禁行灭灭亮灭亮灭5南北方向警示,东西方向禁行相关知识1、串行通信的基本知识⑴串行通信中的数据传输方式
串行通信的特点是,通信数据按数位的顺序一位一位地传输,每次只传输一位。串行通信中的数据传输方式有单工方式、半双工方式和全双工方式3种。如下图所示:数据只能单向传输数据可以向两个方向传输,但每次只能向一个方向传递数据可以同时双向传输1、串行通信的基本知识⑵串行通信中的通信方式有同步通信和异步通信2种通信方式1)同步通信特点:
由同一个时钟信号控制发送器与接收器的工作,数据传输时,发送器与接收器同步工作。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在要传送的数据块开始传送前,用同步字符SYNC来指示2)异步通信特点:发送器与接收器用各自的时钟控制,数据是一帧一帧地传送的,一帧数据的格式如图所示最先传送的是起始位,起始为0。接着是若干位数据位,数据位传输的顺序是低位在先,高位在后。然后是奇偶校验位,校验位也可以看作是一位数据位。最后是停止位,停止位为1。不传输数据时,线路上始终保持高电平1。单片机与单片机、单片机与其他计算机之间一般是采用异步方式进行串行通信。1、串行通信的基本知识⑶波特率BR
数据传输时,每秒钟传输多少位二进制位叫波特率。波特率的单位是位/秒或者bps,它表示数据传输的快慢。
在异步通信中,发送端与接收端的波特率误差一般要控制在3.5%以内,否则将会出现接收错位的现象。1、串行通信的基本知识2、MCS-51单片机串行口的结构由TXD/P3.1引脚、RXD/P3.0引脚、接收数据缓冲器SBUF、发送数据缓冲器SBUF、串行控制寄存器SCON以及收发控制逻辑等几部分组成3、与串口相关的特殊功能寄存器⑴串行数据缓冲器SBUF
有2个相互独立的数据缓冲器SBUF。一个用作发送数据缓冲器,一个用作接收数据缓冲器2个数据缓冲器的地址相同,它们在特殊功能寄存器中的字节地址都是0x99,用符号SBUF表示。
发送数据缓冲器只能写入不能读取,向SBUF写入数据时,数据被写入发送数据缓冲器中。SCON的TI位为0时,向SBUF中写入一个字节的数据,单片机就会将所写入的数据从串行口发送出去
接收数据缓冲器只能读取不能写入,从SBUF中读取数据时,是从接收数据缓冲器中读取已接收到的数据。例:SBUF=senddat; //向发送数据缓冲器中写数,发送senddat中的数据recdat=SBUF; //读接收数据缓冲器中所接收到的数据,并保存到recdat中⑵串行控制寄存器SCON字节地址为0x98,每一位都分配有位地址,可以进行位访问。从低位至高位各位的位地址依次为0x98、0x99、……0x9f,SCON的格式如下:SCON的位:D7D6D5D4D3D2D1D0复位值地址:0x98SM0SM1SM2RENRB8TB8RITI0x00位地址:0x9f0x9e0x9d0x9c0x9b0x9a0x990x98SM0、SM1:串行工作方式选择控制位SM0 SM1=00:选择工作方式001:选择工作方式110:选择工作方式211:选择工作方式33、与串口相关的特殊功能寄存器SCON的位:D7D6D5D4D3D2D1D0复位值地址:0x98SM0SM1SM2RENRB8TB8RITI0x00位地址:0x9f0x9e0x9d0x9c0x9b0x9a0x990x98REN:接收允许控制位。REN=0:禁止接收数据,REN=1:允许接收数据。TB8:在方式2或者方式3中,TB8为待发送的第9位数据,在其他方式中无用
RB8:在方式2或者方式3中,RB8为接收机接收到的第9位数据,该位数据来自于发送机中的TB8位,在其他方式中RB8无用。TI:发送中断请求标志位。该位不具备自动清0功能,发送数据之前,必须用软件将该位清0,发送过程中,TI保持为0,一帧数据发送完后,硬件电路自动将该位置1。如果需再发送数据,则必须再次用软件将该位清0。RI:接收中断请求标志位。该位不具备自动清0的功能,在接收数据之前,必须用软件将该位清0,接收完一帧数据后,内部硬件电路自动将该位置1。如果需要再次接收数据,必须用软件再次将该位清0。3、与串口相关的特殊功能寄存器SCON的位:D7D6D5D4D3D2D1D0复位值地址:0x98SM0SM1SM2RENRB8TB8RITI0x00位地址:0x9f0x9e0x9d0x9c0x9b0x9a0x990x98SM2:允许方式2、方式3多机通信控制位在方式0中,SM2必须为0。在方式1中,如果SM2=1,则只有接收到有效停止位才会激活RI,若没有接收到有效停止位,则RI=0。通常情况下,在方式1中,SM2位设置为0。在方式2、方式3的发送机中,SM2位一般设为0。在方式2、方式3的接收机中,SM2位与接收机接到的第9位值TB8一起控制着接收机接收数据后是否将接收中断请求标志位RI置1。它们的关系如下表所示。SM2TB8接收到数据后RI的状态00激活RI(RI=1),能引起接收中断。01激活RI(RI=1),能引起接收中断。10不激活RI(RI=0),能引起接收中断,所接收的数据丢失。11激活RI(RI=1),能引起接收中断。3、与串口相关的特殊功能寄存器串口在各种工作方式下的SCON值
例如,若串口采用方式1接收数据,则SCON的值应该设置成01010000B,即0x50,设置串口工作方式的程序段如下:工作方式发送接收工作方式发送接收方式00x000x10方式20x800x90方式10x400x50方式30xc00xd0SCON=0x50; //串口工作在方式1下,允许接收数据串口采用方式2发送数据,设置串口的工作方式的程序段如下:SCON=0x80; //串口工作在方式2下,禁止接收数据3、与串口相关的特殊功能寄存器⑶电源控制寄存器PCON字节地址为0x87,无位地址,不能进行位访问。PCON的格式如下:其中,SMOD位为波特率倍增位 SMOD=1:波特率加倍 SMOD=0:波特率不加倍GF0、GF1位为通用标志位,PD、IDL位为电源控制位。D7D6D5D4D3D2D1D0SMOD×××GF0GF1PDIDL3、与串口相关的特殊功能寄存器⑷中断允许控制寄存器IEIE用来控制各中断是否允许。其中与串行通信有关的位有EA位和ES位。当ES=1且EA=1时,允许串行中断,否则禁止串行中断。3、与串口相关的特殊功能寄存器4、串行口作同步通信的工作方式
特殊功能寄存器SCON的SM0、SM1位设置成00时,串口工作在方式0下,此时串口的通信方式为同步通信,串口用TXD引脚输出同步时钟脉冲,方式0的特点:①波特率:固定为fosc/12,其中fosc为系统的时钟频率。②帧格式:8位数据,无起始位,也无停止位。③应用场合:常用于外接移位寄存器将串行口扩展成并行口的场合。⑴串口作输出口使用串口工作在方式0下作输出口时引脚信号的定义如下:RXD引脚:输出串行数据位。数据输出格式为低位在先,高位在后。移位频率为fosc/12。TXD引脚:输出频率为fosc/12的同步移位脉冲。
每发送完8位数据,内部硬件电路会自动将TI置1,在发送数据之前(向SBUF写入数据之前)必须用软件将TI位清0。
串行口工作在方式0下,外接类似于HC595、74LS164或者CD4094这样的串入并出的移位芯片,可以将串口扩展成并行输出口。4、串行口作同步通信的工作方式
【例6.1】串行口外接HC595扩展成并行输出口,用串行口控制8只发光二极管呈跑马灯方式显示。【设计分析】HC595为串入并/串出的移位芯片,内部有一个8位的移位寄存器和一个8位的锁存器,可以同时实现串入并出和串入串出,HC595共16个引脚,各引脚的功能如下表:引脚符号功能1Q1并行输出的D1位。2Q2并行输出的D2位。3Q3并行输出的D3位。4Q4并行输出的D4位。5Q5并行输出的D5位。6Q6并行输出的D6位。7Q7并行输出的D7位。8GND电源地。9SDO串行输出引脚。4、串行口作同步通信的工作方式HC595的引脚功能引脚符号功能10--RST复位脚,低电平有效。该引脚为低电平时,内部移位寄存器的内容和SDO清0,但内部锁存器的内容不变,Q0~Q7的输出不变。11SCP移位时钟信号输入脚。SCP的上升沿时HC595将SDI引脚上的数据移入内部移位寄存器。12LCP锁存时钟信号输入脚。LCP的上升沿时HC595将移位寄存器的内容移入内部锁存器。13--OE输出使引脚,低电平有效。
为0时,Q0~Q7输出锁存器的内容,
为1时,Q0~Q7为高阻态,但串行输出不受影响。14SDI串行数据输入脚。15Q0并行输出的D0位。16VCC正电源引脚。4、串行口作同步通信的工作方式将HC595的脚接高电平,SCP脚与单片机的TXD引脚相接,SDI脚与单片机的RXD引脚相接,LCP脚、脚分别与单片机的2根I/O口线相接,并把单片机的工作方式设置成方式0,单片机向SBUF写一个字节数后,RXD引脚上就会以fosc/12的频率逐位输出SBUF中的8位数,同时TXD引脚会输出频率为fosc/12的同步脉冲。在此期间,HC595在SCP引脚上的脉冲作用下将SDI引脚上输入的数据按照高位在先低位在后的顺序依次存放在内部的寄存器中。8位数据接完毕后,若在LCP引脚上产生一个由低到高的上升沿,HC595就会把移位寄存器中的数据移入内部的锁存器中,此时若=0,锁存器的内容就从Q7~Q0引脚输出,否则Q7~Q0引脚呈高阻态4、串行口作同步通信的工作方式串行口扩展成并行输出口控制发光二极管显示的电路4、串行口作同步通信的工作方式实现跑马灯控制的程序代码:#include<reg51.h> //1#include <intrins.h> //2sbit lcp=P1^0; //3LCP引脚定义sbit oe=P1^1; //4OE引脚定义void main() //5main函数{unsigned char m=0x01; //6控制数据初始化SCON=0x00; //7串口初始化:方式0、TI=0while(1) //8死循环{ SBUF=m; //9发送控制数据 while(!TI); //10等待数据发送结束 TI=0; //11将TI位清0,为下次发送数据作准备 oe=0; //12禁止HC595并行输出 lcp=0; //13产生锁存时钟的下降沿 lcp=1; //14产生lcp上升沿,数据移至锁存器中 oe=0; //15允许锁存器并行输出 m=_crol_(m,1); //16控制数据循环左移1位,准备下次输出 delay(); //17延时0.5s} //18死循环的循环体结束} //19main函数结束4、串行口作同步通信的工作方式⑵串口作输入口使用引脚信号的定义如下:RXD引脚:输入串行数据位。数据移位频率为fosc/12。TXD引脚:输出频率为fosc/12的同步移位脉冲。
每接收完8位数据(一帧数据)后,内部硬件电路会自动将RI置1,每次接收数据之前,必用软件将RI清0。
注意,作输入口使用时,必须事先将SCON的REN位置1,否则接收机接收不到数据。另外,方式0中TB8、RB8位无意义。
串行口工作于方式0,外接类似于74LS165或者CD4014这样的并入串出的移位芯片,可以将串口扩展成并行输入口。4、串行口作同步通信的工作方式⑵串口作输入口使用【例】串口外接74LS165扩展成并行输入口,74LS165的并行输入端接有8位拨码开关,请将拨码开关的状态读至全局变量keyval中。电路图如下:4、串行口作同步通信的工作方式读外部输入的程序代码#include<reg51.h>sbit SH=P1^1;Unsignedchar keyval;void main(){SCON=0x10; //1串口初始化:方式0、允许接收、RI=0while(1) //2死循环{ SH=0; //3将74LS165并行输入数据锁存 SH=1; //4允许串行移位操作 while(!RI); //5等待接收完8位数据 RI=0; //6RI位清0,为下次接收数据作准备 keyval=SBUF; //7从接收缓冲器中读输入数据 //输入数据的处理} //死循环的循环体结束} //main函数结束4、串行口作同步通信的工作方式任务实施1、搭建硬件电路电路图如下:2、编写软件程序(1)流程图任务12的程序是一个周期为100秒的循环程序。在100秒的各个时间段中,HC595的输出数据如表时间Q0~Q7输出数据单片机输出数据持续时间(秒)东西向指示灯南北向指示灯二进制十六进制绿黄红绿黄红0~5501111011110111100xde55亮灭灭灭灭亮55~6010111011110111010xdd5灭亮灭灭灭亮60~9511001111111100110xf335灭灭亮亮灭灭95~10011010111111010110xeb5灭灭亮灭亮灭
上表中,各时间段的持续时间为5秒的整数倍,我们用变量seccnt记录系统的时间,seccnt的单位选为5秒,则seccnt=0~19时所对应的时间为0秒~100秒。用T0作50ms的基准时间定时器,T0的工作方式选用方式1。fosc=12MHz时,T0的计数次数为50000。用变量timcnt记录50ms中断次数,将交通灯控制程序放在T0定时中断服务函数中处理,main函数完成系统初始化后就置CPU睡眠。2、编写软件程序main函数的流程图2、编写软件程序T0中断服务函数的流程图2、编写软件程序(2)程序代码#include<reg51.h>#define uchar unsigned charuchar timcnt,seccnt;sbit LCP=P1^0;void sout(uchar m);void main(void){ timcnt=0; seccnt=0; SCON=0x00; //串口初始化:方式0 TMOD=0x01; TL0=(65536-50000)%256; TH0=(65536-50000)/256; ET0=1; EA=1; TR0=1; while(1) { PCON=PCON|0x01; }}2、编写软件程序void sout(uchar m){ SBUF=m; //发送控制数据 while(!TI); //等待数据发送结束 TI=0; //TI位清0,为下次发送数据作准备 LCP=0; //产生锁存时钟的下降沿 LCP=1; //产生锁存时钟的上升沿,数据移至锁存器}串口输出程序2、编写软件程序定时中断T0服务程序void tim1() interrupt 1 using 1{TL0=(65536-50000)%256; //重置计数初值:50msTH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《新编应用文写作》-第一章
- 青海省平安区第一高级中学2026届高一数学第二学期期末教学质量检测模拟试题含解析
- 医学AI模型评估指标可视化安全性分析
- 社会人才招聘面试评价表二(用人部门及其主管领导使用)
- 2025年AR导航数据重传机制设计
- 集成电路行业市场动态分析
- 2025年消防工程师消防安全技术实务考试真题及答案
- 2026年南京旅游职业学院单招综合素质考试题库附参考答案详解(综合卷)
- 2026年佳木斯职业学院单招职业适应性测试题库及一套参考答案详解
- 2026年内蒙古民族幼儿师范高等专科学校单招职业技能考试题库附答案详解(满分必刷)
- 2026年医保支付协议
- 教练型上司培训
- 5年(2021-2025)天津高考数学真题分类汇编:专题03 导数及其应用(解析版)
- GB/T 37791-2025耐蚀合金焊带和焊丝
- 信息安全及保密意识培训课件
- 新能源材料与器件制备技术 课件全套 张云 第1-13章 概述-环境污染与治理
- 护理解剖学期末考试题库及答案
- 农小蜂-2025年中国大豆进出口贸易数据分析简报
- 煤矿全员培训机电课件
- 2025年四川省自贡市初中学业水平考试中考物理真题试卷(中考真题+答案)
- 项目策划编制指南
评论
0/150
提交评论