单片机点亮数码管怎么点亮p1.7两排db什么情况

来源:互联网 发表时间: 15:33:12 责任编辑:王亮字体:
为了帮助网友解决“lcd 1602的数据端不接再同一组单片I/o口,如D0~D5接到单片机P1.3~P1.7,D6~D7接P3.0~P3.2,如何编程处理”相关的问题,学路网通过互联网对“lcd 1602的数据端不接再同一组单片I/o口,如D0~D5接到单片机P1.3~P1.7,D6~D7接P3.0~P3.2,如何编程处理”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:lcd 1602的数据端不接再同一组单片I/o口,如D0~D5接到单片机P1.3~P1.7,D6~D7接P3.0~P3.2,如何编程处理,具体解决方案如下:解决方案1:
Data|=Data0,Data0;
Data0=P1&0xE0;
Data = P1&0x1F?定义变量char
Data你是指数据怎么得到吧解决方案2:
如何让LCD显示你肯定会了、再把你要写的数右移5位送到P3口,数据就送到LCD了把你要写的数左移3位送到P1口
解决方案3:
这个很简单啊。。。参考对应的LCD1602的原理图,将其对应的单片机引脚按照揭发进行特殊为生命就可以了。。这个与接的位置无关的。。。
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright ©
All Rights Reserved. 学路网 版权所有
京ICP备号-1 京公网安备02号查看: 6154|回复: 2
单片机矩阵键盘查寻键值4*4程序P1.0---P1.7
//********单片机矩阵键盘查寻键值4*4程序******//为P1.0---P1.7void Tkey(void){//uchar x_temp,y_
P1=0x0f;x_temp=P1&0x0f;if(x_temp==0x0f)P1=0xf0;y_temp=P1&0xf0;readkey=x_temp|y_readkey=~
switch(readkey)&&& {&& case 0x11:key=0;case 0x21:key=1;case 0x41:key=2;case 0x81:key=3;case 0x12:key=4;case 0x22:key=5;case 0x42:key=6;case 0x82:key=7;case 0x14:key=8;case 0x24:key=9;case 0x44:key=10;case 0x84:key=11;case 0x18:key=12;case 0x28:key=13;case 0x48:key=14;case 0x88:key=15;default: key=16;&&& }
keyout:_nop_();}
 电路图呢
Powered by您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
单片机第7章MCS51单片机接口技术1概论.ppt 129页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:350 &&
单片机第7章MCS51单片机接口技术1概论
你可能关注的文档:
··········
··········
在由单片机构成的实际的测控系统中,通常要在最小系统的基础上根据需求连接相应的硬件电路。这时单片机内部的资源有可能不够用,因此在设计时首先要解决系统扩展问题,如I/O接口的扩展。;;任务6:采用两只LED数码管显示模拟生产线计件;#include&reg52.h&#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^3;ucharCount=0;ucharDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidDelayMS(uintms){while(ms--)for(t=0;t&120;t++);};;问题的提出1、可以看到,先从P0口输出3fH这个数据,目的是在共阴数码管上显示“0”这个字符,为什么输出3fH就可以显示“0”呢?别的数据可以吗?2、按键是如何防抖的?3、任务中,数码管是接在P0、P2口上的。那如果数码管很多,光P0、P2口肯定接不下,怎么办?;系统扩展概述;1、地址总线由P2口提供高8位地址,因为P2口具有输出锁存的功能,并且功能比较单一,因此不需地址锁存器。低8位由P0口提供,P0口是数据、地址分时使用的通道口。为保存地址信息,需外加地址锁存器。一般用单片机的ALE信号控制地址锁存。;2、数据总线由P0口提供,对外部芯片进行读写时,数据都要通过P0口出入。3、控制总线系统扩展时,常用的控制信号有:/EA、ALE、/PSEN、/WR、/RD等等。EA:内部和外部程序存储器的读写控制信号ALE:地址锁存允许信号PSEN:外部程序存储器读信号WR:外部数据存储器写信号RD:外部数据存储器的读信号;/EA:引脚的电平高低由用户决定(/EA=1:自内而外地访问ROM;/EA=0:仅访问外部ROM)ALE:信号自动产生(晶振频率的1/6)。在访问外部存储器时:ALE高电平期间,P0口→地址信息;在低电平期间,P0口→数据信息。/PSEN:在用MOVC指令访问外部程序存储器时自动产生(外部程序存储器读信号,从片外程序存储器读取指令或常数时,用于命令外部程序存储器做输出动作,即:存储器输出允许信号)/RD、/WR:信号在执行MOVX指令时自动产生(“0”电平);系统扩展的主要方面:外部程序存储器(ROM)扩展:外部数据存储器(RAM)的扩展:外部中断源的扩展:?(已讲过)I/O接口的扩展:;程序存储器2864A的扩展:;1、地址锁存器的使用;OE=0(接地);除了ALE引脚和74LS373的LE引脚相连使得地址锁存由单片机的ALE控制外,还要注意单片机读/写控制引脚/RD、/WR与6264相关引脚的连接。;2.地址范围的确定和片选信号的产生;3、端口的I/O编址;②数据存储器RAM的扩展:;数据存储器6264的扩展:;补充例L710:使用6264SRAM扩展外部数据存储器。;为了直接访问外部扩展内存,本例添加了头文件absacc.h,这样可非常方便地通过XBYTE[,index]读/写扩展内存,整个扩展内存可看成一个庞大的字节数组,XBYTE就是这个字节数组的数组名称,或者是整个空间的首字节地址,index则是数组索引或指针偏移值。;本例程序首先通过for循环向0x0000地址开始写入200字节(1~200),然后再用for循环将这些数据逆向复制到0x0100地址开始处。第一个for循环对6264执行的是写入操作,第二个for循环则同时执行读与写操作。如果删除/WR引线,数据写入会失败,如果删除/RD连接,6264中的0x0000开始的200字节就无法复制到0x0100处,因为数据无法读取。;外部中断源的扩展:一般采用外部中断和查询相结合的方法扩展外部中断;并行I/O口的扩展;扩展I/O接口时应注意的几个问题;片选信号产生方法;G1G2AG2B;;I/O口扩展用集成芯片I/O扩展芯片可分成三种类型:●TTL电路芯片。通过P0口扩展的主要有各类锁存器及三态缓冲器等,如74LS373、74LS273、74LS367、74LS374、74LS377、74LS244等。通过串行口扩展的有74LS164、74LS165等。●专用I/O扩展芯片。如8255,可以扩展出3个8位并行口。●I/O扩展复合芯片。不仅能扩展I/O外,还能扩展其他外围功能电路。如8155,可扩展出2个8位并行口,1个6位并行口,还能扩展出256B静态RAM,1个14位定时/计数器。;一、用TTL芯片进行I/O接口扩展;【例7.1】假设上图中74LS164芯片的并行输出端连接到8个LED的阳极,编写程序使LED处于一个亮点流动的状态。;用串行口扩展并行输入口示意图;【例7.2】假设上图中74LS
正在加载中,请稍后...7-1_华中理工大学:单片机原理与应用_ppt_大学课件预览_高等教育资讯网
华中理工大学:单片机原理与应用:7-1
分类: 格式: 日期:日
第七章 I/O接口电路7-1 单片机并行接口 PIO7-2 定时 /计数器电路 CTC7-3 可编程并行接口芯片7-5 串行 I/O接口 SIO7-1 单片机并行接口 PIOPIO:并行 I/O接口用于微型机与外部设备之间并行传送数据。7-1-1 MCS-51的并行接口4个 8位双向并行 IO接口:P0.0~ P0.7,P1.0~ P1.7,P2.0~ P2.7,P3.0~ P3.7。均为多功能 I/O接口,CPU按当前操作自动进行功能切换。片内 接口寄存器在 SFR中的映象地址:1,I/O数据锁存器,P0,P1,P2,P3,SBUF2,I/O控制 /状态寄存器:IE,IP,TCON,TMOD,SCON,PCON一,PIO接口内部结构输出锁存器、输出驱动器、输入缓冲器及多路功能切换电路。1)输出操作:输出数据经过内部总线暂存到输出锁存器中,经过输出驱动器送到 I/O引脚上。输出锁存器的内容可读入修改。2)输入操作,I/O引脚输入数据经过输入缓冲器送到内部总线上。二,接口 的三种操作1.输出锁存:输出将使数据写入输出锁存器 。输出指令,MOV P1,AMOV P1.0,C2.输入三态:输入从 I/O引脚上输入信号,读信号打开,引脚信号通过下三态门进入内部总线 。 为保证可靠输入,先写入,1” 。MOV P1,#0FFH ;使输出驱动器截止MOV A,P1 ;输入P0~ P3的复位状态均为 FFH,自动处于输入状态 。3.读 -修改 -写,修改输出锁存器的内容 。 锁存器中的数据通过上三态门进入内部总线,修改后再写入到锁存器中 。读 -修改 -写指令,PIO为目的操作数的指令 ANL P1,A三,PIO的使用1,P0口:并行双向接口或系统总线 DB0~ 7/AB0~ 72.P1口:称为用户 I/O接口。对片内 EPROM编程时,用作EPROM低 8位地址信号线。四,接口负载能力P0驱动 8个 TTL电路,P1,P2,P3可驱动 4个 TTL电路3,P2口:双向 I/O接口或高 8位地址总线 AB8~ 15对读写片外存储器后,引脚仍恢复输出锁存器的内容。可用于读写片外数据存储器,MOV P2,#20HMOV R0,#00MOVX A,@R04,P3口:双向并行接口和第二功能:串行接口引脚,TXD,RXD中断输入引脚,INT0,INT1定时器输入引脚,T0,T1读写控制线,RD,WRP1,P2和 P3为准双向口。五,应用举例例,用 4个发光二极管对应显示 4个开关的开合状态。如 P1.0合则 P1.4亮。MCS-51P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01.无条件传送方式:指示灯立即反映开关状态。ORG 0000HAJMP MAINORG 0100HMAIN,ORL A,#0FHMOV P1,AMOV A,P1SWAP AMOV P1,ASJMP MAIN2.中断传送方式:先设好开关状态,然后发出中断请求信号,改变指示灯亮灭状态。ORG 0000HAJMP MAINORG 0003HAJMP IOINTORG 0100HMAIN,SETB IT0SETB EX0SETB EAHERE,SJMP HEREORG 0500HIOINT,MOV A,#0FFHMOV P1,AMOV A,P1SWAP AMOV P1,ARETIP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT0MCS-51K+5V7-2 定时 /计数器电路 CTC一.定时 /计数器的应用1.计数功能:生产线上产品计数。每个产品通过得到一个脉冲信号,计数器记录脉冲个数,当计数值与设定值相等,启动包装机器。检测转速。电机转动一圈发出一个脉冲,计数器记录一秒时间内脉冲个数,显示转速。二,定时 /计数器的工作原理定时 /计数器中的核心部件为可预置初值计数器 。 预置初值后开始计数,直至计数值归 0或产生溢出,可申请中断 。计数器有加 1 计数或减 1计数两种形式 。K1 K2可预置初值计数器 中断请求功能选择启动控制内部时钟脉冲(定时)外部输入脉冲(计数)溢出信号计数脉冲计数初值例:设 CTC中为 8位加 1计数器 。 按要求选择功能和初值 。1.要求检测到 100个脉冲,发中断请求,通知 CPU。选计数功能,计数初值为 156 。2.要求定时每隔 100?s时间,发一次中断请求 。 设内部时钟周期 1?s选定时功能,计数初值为 156 。2.定时功能:用于实时控制,定时采样、定时启动等。当定时时间与设定值相等,执行规定操作。7-2-1 MCS-51定时 /计数器2个可独立控制的 16位定时器 /计数器,T0,T1定时器初始化编程:1.功能选择(定时 /计数)2.位数选择( 8/13/16位)3.启动方式选择(内部启动 /外部启动)4.启动控制(启动 /停止)5.恢复初值方式(自动重装 /软件重装)一,定时器控制、状态寄存器1.TMOD定时器方式寄存器( 89H)1)功能选择位 C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚 T0(T1)输入的负脉冲。2)方式选择位 M1,M0,4种工作方式,13/16/8位3)门控方式选择位 GATE,=0,非门控方式 (内部启动 ):TRx=1,启动定时器工作;TRx=0,停止定时器工作。=1,门控方式 (外部启动 ),TRx=1且引脚 INTx=1才启动。确定定时器工作方式指令,MOV TMOD,#方式字例,设 T0用方式 2非门控定时,T1用方式 1门控计数。MOV TMOD,#G A T E C /T M1 M0 G A T E C /T M1 M0T1 T0M 1 M 0 方式 功能描述0 0 0 13 位0 1 1 16 位1 0 2 8 位自动重装1 1 3 T0 为两个 8 位2.TCON定时器控制 /状态寄存器1)启动控制位 TR0,TR1=0,停止定时器工作=1,启动定时器工作例:启动 T0,SETB TR02)溢出中断标志位 TF0,TF1定时器溢出使 TFx=1,引起中断请求,CPU响应 Tx中断后,自动清 0 TFx。3.可预置初值的 16位加 1计数器 TH0,TL0,TH1,TL1预置 T0初值指令,MOV TH0,#XHMOV TL0,#XL可用软件检测 TFx,必须软件清 0。WAIT,JBC TF0,NEXT;检测 T0是否溢出SJMP WAIT ;未溢出,继续检测NEXT,… ;溢出,TF0清 0,处理溢出二,定时器工作方式由方式选择位 M1,M0设定1.方式 013位定时 /计数器。 THx 8位和 TLx低 5位组成 13位加 1计数器计数外部脉冲个数,1~ )定时时间 (T=1?s),1?s ~ 8.19ms2 方式 116位定时 计数器 。 THx8位和 TLx8位组成 16位加 1计数器计数外部脉冲个数,~ )定时时间,~ 6; T= 65.54ms3,方式 2自动恢复初值 8位定时 /计数器。 TLx为 8位加 1计数器,THx为 8位初值暂存器。用于需要重复定时和计数的场合。最大计数值,256 (28)最大定时时间 (T=1?s),256?s4.方式 3T0分成 2个 8位定时器,TL0定时 /计数器和 TH0定时器TL0占用 T0控制位,C/T,TR0,GATE;TH0占用 T1控制位,TR1。T1不能使用方式 3工作5.计算时间常数 X(计算初值 )计数功能,X= 2n -计数值 n,8/13/16定时功能,X= 2n - t/T t:定时时间,T:机器周期三,MCS-51定时器的应用定时器初始化编程:使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式初始化编程格式:MOV TMOD,# 方式字;选择方式MOV THx,#XH ;装入 Tx时间常数MOV TLx,#XL(SETB EA ) ;开 Tx中断(SETB ETx )SETB TRx ;启动 Tx定时器1,按实际需要选择定时 /计数功能2,按时间或计数长度选择方式3,计算时间常数4,溢出处理编程格式:1)查询方式:先查询定时器溢出标志,再进行溢出处理。… ;定时器初始化WAIT,JBC TFx,PT ;检测溢出标志SJMP WAITPT,MOV THx,#XH ;重装时间常数MOV TLx,#XL… ;溢出处理SJMP WAIT2) 中断方式:初始化后执行其他任务,中断服务程序处理溢出 。ORG 0000HLJMP MAINORG 000BH(001BH); Tx中断入口LJMP PTSMAIN,… ;初始化后执行其他程序PTS,… ;溢出中断服务程序MOV THx,#XH ;重装时间常数MOV TLx,#XLRETI四,应用举例例,由 P1.0输出方波信号,周期为 2ms,设 fosc=12MHz。 2ms解:每隔 1ms改变一次 P1.0的输出状态。用 T0非门控方式 1定时。计算时间常数,X = 216 - t/T = 216 -1000/1 = FC18H( 1)查询方式:START,MOV TMOD,#MOV TL0,#MOV TH0,#SETB TR0LOOP,JBC TF0,PTF0SJMP LOOPPTF0,CPL P1.0MOV TL0,#MOV TH0,#SJMP LOOP( 2)中断方式ORG 0000HAJMP MAINORG 000BHAJMP PT0INTORG 0100HMAIN,MOV SP,#60HMOV TMOD,#MOV TL0,#MOV TH0,#SETB EASETB ET0SETB TR0HERE,SJMP HEREPT0INT,CPL P1.0MOV TL0,#MOV TH0,#RETI例 P1.7驱动 LED亮 1秒灭 1秒地闪烁,设时钟频率为 6MHz。长定时方法:增加一个软件计数器或一个硬件计数器。硬件方式,T0定时,T1计数 T0的定时跳变信号 P1.0的负跳变次数,计满 5个跳变为 1秒。START,MOV TMOD,#61HMOV TL1,#0FBHMOV TH1,#0FBHCLR P1.0SETB TR1LOOP1,CPL P1.7LOOP2,MOV TL0,#3CHMOV TH0,#0B0HSETB TR0LOOP3,JBC TF0,LOOP4SJMP LOOP3LOOP4,CPL P1.0JBC TF1,LOOP1SJMP LOOP2例 定时器外部引脚 T0(T1)用作外部中断信号输入端。外部负脉冲引起中断请求,选计数方式,时间常数为 FFH。例,门控方式测量正脉冲宽度解,INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数 。1) 设脉宽小于 65.5ms等待查询 INT0,正脉冲过后,读出 TH1TL1。START,MOV TMOD,#90HMOV TL1,#0HMOV TH1,#0HWAIT1,JB P3.3,WAIT1SETB TR1WAIT2,JNB P3.3,WAIT2WAIT3,JB P3.3,WAIT3CLR TR1MOV R2,TL1MOV R3,TH1…TR1=1 T1启动 TR1=0T1停止INT12) 设脉宽大于 65.5ms,中断方式记录 TH1TL1溢出中断次数。SETB TR1SETB ET1 ;开 T1中断SETB EAWAIT2,JNB P3.3,WAIT2;等待正脉冲到来WAIT3,JB P3.3,WAIT3;等待正脉冲结束CLR TR1 ;关闭 T1MOV IE,#00 ;关闭中断MOV R2,TL1 ;读出 T1MOV R3,TH1LCALL PPS ;计算脉宽HERE,SJMP HERE ;其他任务PRIC,INC R4 ;记录溢出次数RETIPPS,… ;计算脉宽子程序计算脉宽的子程序的计算式如下:脉宽 t = ( R4 × 216 + R3 R2 ) × T ( T为机器周期)7-3 可编程并行接口芯片 8255用于扩展单片机并行 I/O接口。7-3-1 结构与引脚一,结构1.数据线D0~ 7:传送计算机与 8255之间的数据,控制字和状态字 。PA0~ 7 PB 0~ 7 PC0~ 7:传送 8255与外设之间的数据和联络信息,PC0~ 7可用作数据线或联络线1.3个 8位并行 I/O接口 PA,PB和 PC包含 I/O数据锁存器,控制寄存器和状态寄存器。2.2组控制 A组,PA和 PC0~ 3,B组,PB和 PC4~ 73.3种工作方式:基本 I/O:输出锁存,输入三态,不用联络信号。应答式 I/O:输入 /输出均锁存,C口用于传送联络信号,读 C口可了解外设当前状态。应答双向式,A口为双向 I/O,C口用作 A口双向传送的联络信号线二,引脚P0P2.78051A0A1CS82553732.地址线CS:片选线A1,A0:口选线,寻址 PA,PB,PC数据口和控制口。例 求 8255口地址:解,A口 (7F00H),B口 (7F01H),C口 (7F02H),控制口 (7F03H)(三 )读写控制线RD,WR控制计算机与 8255之间的信息传送和流向(四 )复位线RESET高电平复位,使内部寄存器全部清零 。7-3-2 8255编程规定8255初始化编程:往控制口写入控制字,确定 8255工作方式。方式选择控制字,D7=1C口置位 /复位控制字,D7=0控制字 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0方式 1 A 组方式 PA PC 4 ~ 7 方式 PB PC 0 ~ 3置 / 复位 0 位选择 1 / 0例,8255PA口方式 0输出单片机片内 RAM数据,PB口方式 1输入 … 。PIOS,MOV DPTR,#7F03H;控制口地址MOV A,#86 ;写控制字MOVX @DPTR,A ;设工作方式MOV DPTR,#7F00H; PA数据口地址MOV A,@R0 ;取 RAM的数据MOVX @DPTR,A ;由 PA口输出…7-4 可编程多功能接口芯片 8155256字节 RAM,3个并行口 PA0~ 7,PB0~ 7,PC0~ 5,1个 14位定时器。7-4-1 结构和引脚一,引脚功能1.数据线AD0~ 7:传送 8155与计算机之间的数据,控制字,状态字。PA0~ 7,PB0~ 7,PC0~ 5,传送 8155与外设之间的信息。2.地址线CE:IO/M,选择口 /RAM单元AD0~ 7,6个 I/O口和 256字节 RAM地址。3.控制线ALE:地址锁存RD,WR:读写控制4.定时器输入 /输出线,TIMERIN,TIMEROUT5.复位线 RESETP0.0~ 0.7P2.6P2.7ALE8051AD0~ 7IO/MCSALE81557-5 串行 I/O接口 SIO一,串行通讯的基本方式(一 ).异步通讯以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符间隔不固定,只需字符传送时同步。异步通讯常用格式:一个字符帧异步通讯的双方需要两项约定:1.字符格式一帧字符位数的规定:数据位,校验位,起始位和停止位。2.波特率 (位 /秒 )对传送速率的规定例:要求每秒传送 120个字符,每帧为 10位。解,B=120× 10=1200波特 每位 0.83ms数据位传输率 =120× 8=960位 /秒(二 ).同步通讯以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。D0 D1 D2 D3 D4 D5 D6 D7 停止位起始位二,串行接口功能1.发送器:并?串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。2.接收器:串?并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。3.控制器:接收编程命令和控制参数,设置工作方式:同步 /异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。三,串行数据传送方向单工通讯:数据单向传送 。半双工通讯:数据可分时双向传送。全双工通讯:可同时进行发送和接收。发送器 接收器发送器接收器7-5-1 MCS-51串行接口1个全双工串行接口,可同时进行发送和接收。串行接口输入 /输出引脚,TXD(P3.1),RXD(P3.0)数据格式 (P.237图 ):按不同方式,一帧位数8/10/11发送 /接收时,数据皆低位在前。一帧字符发送 /接收结束,置位标志位 (TI/RI)并申请 SIO中断。中断控制:中断允许位 ES中断入口,0023HD0 D1 D2 D3 D4 D5 D6 D7 停止位起始位D0 D1 D2 D3 D4 D5 D6 D7D0 D1 D2 D3 D4 D5 D6 D8 停止位起始位 D7一,串行接口控制1.数据缓冲器 SBUF发送 SBUF和接收 SBUF共用一个地址 99H。1)发送 SBUF存放待发送的 8位数据,写入 SBUF将同时启动发送。发送指令,MOV SBUF,A2)接收 SBUF存放已接收成功的 8位数据,供 CPU读取。读取串行口接收数据指令:MOV A,SBUFS M 0 S M 1 S M 2 R E N TB8 R B 8 TI RI2.串行口控制 /状态寄存器 SCON(98H)SM0,SM1:选择串行口 4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收; REN=0,禁止接收。TB8发送的第 9位数据位,可用作校验位和地址 /数据标识位RB8:接收的第 9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零3.节电控制寄存器 PCONSMOD(PCON.7):波特率加倍控制位 。SMOD=1,波特率加倍,SMOD=0,则不加倍 。二,串行接口的工作方式SM0,SM1选择四种工作方式 。(1) 方式 0:同步移位寄存器方式。用于扩展并行 I/O接口。1.一帧 8位,无起始位和停止位。2.RXD:数据输入 /输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率 B = fosc/12如,fosc=12MHz,B=1MHz,每位数据占 1?s。4.发送过程:写入 SBUF,启动发送,一帧发送结束,TI=1。接收过程,REN=1且 RI=0,启动接收,一帧接收完毕,RI=1。发送时序写入SBUFRXD输出TXDTID0 D1 D2 D3 D4 D5 D6 D7写 REN=1RI=0RXD输入RI接收时序(a)(b)(2) 方式 18位数据异步通讯方式。1.一帧 10位,8位数据位,1个起始位 (0),1个停止位 (1)。2.RXD:接收数据端。 TXD:发送数据端。3.波特率,用 T1作为波特率发生器,B=(2SMOD/32)× T1溢出率。4.发送:写入 SBUF,同时启动发送,一帧发送结束,TI=1。接收,REN=1,允许接收。接收完一帧,若 RI=0且停止位为 1(或 SM2=0),将接收数据装入 SBUF,停止位装入 RB8,并使 RI=1;否则丢弃接收数据,不置位 RI。当 REN=1,CPU开始采样 RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为 0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率 16倍频,在数据位中间,用第 7,8,9个脉冲采样 3次数据位,并 3中取 2保留采样值。写入SBUF采样( a) 发送时序图TXD数据输出TID0 D1 D2 D3 D4 D5 D6 D7 停止位起始位RXD输入数据( b) 接收时序图D0 D1 D2 D3 D4 D5 D6 D7 停止位起始位RI检测负跳变(3) 方式 2和方式 39位数据异步通讯方式。1.一帧为 11位,9位数据位,1个起始位 (0),1个停止位 (1)。第 9位数据位在 TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率,方式 2,B=(2SMOD/64)× fosc 。方式 3,B=(2SMOD/32)× T1溢出率 。4.发送:先装入 TB8,写入 SBUF并启动发送,发送结束,TI=1。接收,REN=1,允许接收。接收完一帧,若 RI=0且第 9位为 1(或 SM2=0),将接收数据装入接收 SBUF,第 9位装入 RB8,使 RI=1;否则丢弃接收数据,不置位 RI。发送时序写入SBUFTXD输出TIRXD输入接收时序RID0 D1 D2 D3 D4 D5 D6 TB8 停止位起始位 D7D0 D1 D2 D3 D4 D5 D6 RB8 停止位起始位 D7检测负跳变( 4) 计算波特率方式 0为固定波特率,B=fosc/12方式 2可选两种波特率,B=(2SMOD /64)× fosc方式 1,3为可变波特率,用 T1作波特率发生器。B=(2SMOD/32)× T1溢出率T1为方式 2的时间常数,X = 28 - t/T溢出时间,t= (28 -X)T = (28 -X)× 12/ foscT1溢出率 =1/t= fosc /[12× (2n -X)]波特率 B=(2SMOD /32)× fosc/[12× (28-X)]串行口方式 1,3,根据波特率选择 T1工作方式,计算时间常数。T1选方式 2,TH1=X= 28-fosc/12× 2SMOD/(32× B)T1选方式 1用于低波特率,需考虑 T1重装时间常数时间。7-5-2 串行口的应用串行口初始化编程格式:SIO,MOV SCON,#控制状态字;写方式字且 TI=RI=0(MOV PCON,#80H) ;波特率加倍( MOV TMOD,#20H ) ; T1作波特率发生器( MOV TH1,#X ) ;选定波特率( MOV TL1,#X )( SETB TR1)( SETB EA) ;开串行口中断( SETB ES)发送程序:先发送一个字符,等待 TI=1后再发送下一个字符。1.查询方式,TRAM,MOV A,@R0 ;取数据MOV SBUF,A ;发送一个字符WAIT,JBC TI,NEXT ;等待发送结束SJMP WAITNEXT,INC R0 ;准备下一次发送SJMP TRAM2.中断方式,ORG 0023H ;串行口中断入口AJMP SINTMAIN,… ;初始化编程TRAM,MOV A,@R0 ;取数据MOV SBUF,A ;发送第一个字符H,SJMP H ;其它工作SINT,CLR TI ;中断服务程序INC R0MOV A,@R0 ;取数据MOV SBUF,A ;发送下一个字符RETI接收程序,REN=1,RI=0等待接收,当 RI=1,从 SBUF读取数据。1.查询方式,WAIT,JBC RI,NEXT ;查询等待SJMP WAITNEXT,MOV A,SBUF ;读取接收数据MOV @R0,A ;保存数据INC R0 ;准备下一次接收SJMP WAIT2.中断方式,ORG 0023HAJMP RINTMAIN,… ;初始化编程H,SJMP H ;其它任务RINT,CLR RI ;清中断标志MOV A,SBUF ;读取接收数据MOV @R0,A ;保存数据INC R0RETI(一) 串行口 方式 0 用于扩展单片机的并行 I/O接口。串行口实现:并行 → 串行的数据转换74LS165/74LS164实现:串行 → 并行的数据转换。(二 )异步通讯程序举例1.发送程序,将片内 RAM 50H起始单元的 16个数由串行口发送 。 要求发送波特率为系统时钟的 32分频,并进行奇偶校验 。MAINT,MOV SCON,#80H;串行口初始化MOV PCON,#80H;波特率SETB EASETB ES ;开串行口中断MOV R0,#50H ;设数据指针MOV R7,#10H ;数据长度LOOP,MOV A,@R0 ;取一个字符MOV C,P ;加奇偶校验MOV TB8,CMOV SBUF,A ;启动一次发送HERE,SJMP HERE ; CPU执行其它任务S M 0 S M 1 S M 2 R E N TB8 R B 8 TI RIORG 0023H ;串行口中断入口AJMP TRANITRANI,PUSH A ;保护现场PUSH PSWCLR TI ;清发送结束标志DJNZ R7,NEXT ;是否发送完?CLR ES ;发送完,关闭串行口中断SJMP TENDNEXT,INC R0 ;未发送完,修改指针MOV A,@R0 ;取下一个字符MOV C,P ;加奇偶校验MOV TB8,CMOV SBUF,A ;发送一个字符POP PSW ;恢复现场POP ATEND,RETI ;中断返回2,接收程序,串行输入 16个字符,存入片内 RAM的 50H起始单元,串行口波特率为 2400(设晶振为 11.0592MHz),。RECS,MOV SCON,#50H ;串行口方式 1允许接收MOV TMOD,#20H ; T1方式 2定时MOV TL1,#0F4H ;写入 T1时间常数MOV TH1,#0F4HSETB TR1 ;启动 T1MOV R0,#50H ;设数据指针MOV R7,#10H ;接收数据长度WAIT,JBC RI,NEXT ;等待串行口接收SJMP WAITNEXT,MOV A,SBUF ;读取接收字符MOV @R0,A ;保存一个字符INC R0 ;修改指针DJNZ R7,WAIT ;全部字符接收完?RETS M 0 S M 1 S M 2 R E N TB8 R B 8 TI RI3,接收程序,串行输入 16个字符,进行奇偶校验。RECS,MOV SCON,#0D0H ;串行口方式 3允许接收MOV TMOD,#20H ; T1方式 2定时MOV TL1,#0F4H ;写入 T1时间常数MOV TH1,#0F4HSETB TR1 ;启动 T1MOV R0,#50H ;设数据指针MOV R7,#10H ;接收数据长度WAIT,JBC RI,NEXT ;等待串行口接收SJMP WAITNEXT,MOV A,SBUF ;取一个接收字符JNB P,COMP ;奇偶校验JNB RB8,ERR ; P≠RB8,数据出错SJMP RIGHT ; P=RB8,数据正确COMP,JB RB8,ERRRIGHT,MOV @R0,A ;保存一个字符INC R0 ;修改指针DJNZ R7,WAIT ;全部字符接收完?CLR F0 ; F0 =0,接收数据全部正确 RETERR,SETB F0 ; F0 =1,接收数据出错RET
课件名称:课件分类:计算机课件类型:电子教案文件大小:8.7MB下载次数:7评论次数:6用户评分:6
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

我要回帖

更多关于 单片机点亮数码管 的文章

 

随机推荐