您好,欢迎访问三七文档
并行I/O端口项目一点亮P0口所接的八个发光二极管一、分析和设计1、原理图并行I/O端口2、C51开发流程并行I/O端口3、参考程序#includereg51.hvoidmain(){P0=0x00;while(1);}并行I/O端口二、项目一相关知识51系列单片机共有四个8位并行I/O口,分别用P0、P1、P2、P3表示。每个I/O口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。1、P0口P0口是一个多功能的三态双向口,能驱动8个TTL负载。并行I/O端口1)位电路结构321VCC地址/数据控制锁存器P0.XDCPQQMUXT1T2P0.X引脚读锁存器写锁存器内部总线读引脚&1401并行I/O端口2)作为通用I/O口(1)输出时输出0,管脚输出:0输出1,管脚输出:高阻态由于输出驱动级是漏极开路电路,当驱动NMOS或其它电流负载时,需要外接上拉电阻。P0的输出级可驱动8个LSTTL负载并行I/O端口(2)输入时分读引脚和读锁存器,通过不同的指令区分。管脚为0管脚为1当P0作为普通I/O来用时,此时P0口为一个准双向口。所谓准双向口就是在读数据之前,先要向相应的锁存器中写1操作的I/O口。锁存器中值为1,读入为0锁存器中值为0,读入为0锁存器中值为1,读入为1锁存器中值为0,读入为0并行I/O端口3)P0作为地址/数据总线一般称为地址/数据分时复用引脚。当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。并行I/O端口2、P1口P1口能驱动4个TTL负载P1口是准双向口,只能作为通用I/O口使用。P1口作为输出口使用时,无需再外接上拉电阻。P1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“1”。并行I/O端口P2口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。3、P2口并行I/O端口4、P3口P3口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。并行I/O端口引脚第二功能功能说明P3.0RXD串行口输入P3.1TXD串行口输出P3.2INT0外部中断0输入P3.3INT1外部中断1输入P3.4T0定时/计数器0计数输入P3.5T1定时/计数器1计数输入P3.6/WR外部RAM写选通(输出)P3.7/RD外部RAM读选通信号(输出)并行I/O端口端口小结1、P0口能驱动8个TTL负载,P1、P2、P3能驱动4个TTL负载2、作为通用输入输出口,都为准双向口,读引脚时,必须先向电路中的锁存器写入“1”,P0口内部没有上拉电阻,需接上拉电阻,P1、P2、P3内部有上拉电阻,可不接3、P0可作为地址/数据总线,提供低8位地址和输入输出数据,P2口可提供高8位地址;P3口还可以作为第二功能使用并行I/O端口项目二、使P0口所接的八个发光二极管闪烁一、分析和设计1、原理图并行I/O端口2、闪烁实现所谓的闪烁,就是让发光二极管不断的亮灭,亮就是P0口输出低电平,灭就是P0口输出高电平。这样就可以了吗?不断的亮灭就是不断的输出高电平和低电平,可以使用循环实现。并行I/O端口3、参考程序#includereg51.hvoidmain(){while(1){P0=0x00;P0=0xff;}}有什么现象?功能实现了吗?并行I/O端口二、项目二相关知识1、视觉暂留人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,视觉的这一现象则被称为“视觉暂留”。这一时间大约0.1-0.4s左右。并行I/O端口2、延时硬件延时(定时器)软件延时//12MHz晶振,延时kmsvoiddelayms(unsignedintk){unsignedinti,j;for(i=0;ik;i++)for(j=0;j124;j++);}并行I/O端口/*uS延时函数,含有输入参数unsignedchart,无返回值,unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS------------------------------------------------*/voidDelayUs2x(unsignedchart){while(--t);}并行I/O端口3、循环格式:while(循环继续的条件表达式){语句组;}无限循环:while(1){}循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组while执行过程请问:下述程序实现了什么功能?main(){inti,sum=0;while(i=10){sum=sum+i;i++;}}并行I/O端口格式:do{循环体语句组;}while(循环继续条件);循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组请问:下述程序实现了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i=100);}并行I/O端口总循环次数已确定的情况下,可采用for语句形式。for语句的一般形式:for(循环变量赋初值;循环继续条件;循环变量增值){循环体语句组;}无限循环:for(;;){}并行I/O端口循环继续条件for的下一条语句非0(真)0(假)循环体语句组循环变量赋初值循环变量增值只求解一次并行I/O端口项目三使LED1闪烁一、分析和设计1、原理图并行I/O端口2、LED1闪烁实现P0.0脚输出高低电平,并延时。3、参考程序#includereg51.hsbitLED1=P0^0;//注意^符号voidmain(){LED1=0;delayms(1000);LED1=1;delayms(1000);}并行I/O端口二、项目二相关知识1、端口操作方式位操作方式,用sbit进行位定义sbitLED1=P0^0;//注意^符号字节操作方式,使用位运算符对端口P0进行整体操作,而只改变P0.0脚的值,其它位保持不变,使用位运算符。按位与操作符:&按位或操作符:|按位异或操作符:^按位取反操作符:~并行I/O端口2、位运算符按位与操作符:&(清0)格式:x&y规则:对应位均为1时才为1,否则为0例如,i=i&0x0f;等同于i&=0x0f;主要用途:取(或保留)1个数的某(些)位,其余各位置0。P0=P0&0xfe(P0&=0xfe)并行I/O端口按位或操作符:|(置1)格式:x|y规则:对应位均为0时才为0,否则为1例如,i=i|0x0f;等同于i|=0x0f;主要用途:将1个数的某(些)位置1,其余各位不变P0=P0|0xfe(P0|=0xfe)并行I/O端口按位异或操作符:^(取反)格式:x^y规则:对应位相同时为0,不同时为1和0相异或保持不变,和1相异或取反例如,i=i^0x0f;等同于i^=0x0f;主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。项目三也可以这样实现:P0=0xff;while(1){P0=P0^0x01;delayms(500);}并行I/O端口按位取反操作符:~格式:~x规则:各位翻转,即原来为1的位变成0,原来为0的位变成1例如,i=~i;主要用途:间接地构造一个数,以增强程序的可移植性。8个发光二极管闪烁(项目二):while(1){P0~=P0;delayms(500);}并行I/O端口移位运算符左移运算符“”的功能,是把“”左边的操作数的各二进制位全部左移若干位,移动的位数由“”右边的常数指定,高位丢弃,低位补0。例如:“a4”是指把a的各二进制位向左移动4位。如a=00000011B(十进制数3),左移4位后为00110000B(十进制数48)。右移运算符“”的功能,是把“”左边的操作数的各二进制位全部右移若干位,移动的位数由“”右边的常数指定。进行右移运算时,如果是无符号数,则总是在其左端补“0”并行I/O端口注意和逻辑运算符的区别逻辑运算符优先级!(逻辑非)&&(逻辑与)||(逻辑或)若a=1,b=2,c=3,x=4,y=3,写出下各个表达式的值:(1)a+bc&&b==c(2)!ab&&b!=c||x+y=3(3)!(x=a)&&(y=b)&&0并行I/O端口运算类型运算符优先级结合性括号运算符()1从左至右逻辑非和按位取反!~2从右至左算术运算*/%3从左至右+-4从左至右左移、右移运算5从左至右关系运算==6从左至右==!=7从左至右位运算&8从左至右^9从左至右|10从左至右逻辑与&&11从左至右逻辑或||12从左至右赋值运算与复合赋值运算=+=、-=、*=、/=、%=、&=、^=、|=、=、=14从右至左并行I/O端口练习1、点亮LED1、2、7、8,其它保持不变2、将八个发光二极管分为两组,LED1、3、5、7一组,LED2、4、6、8一组,使两组灯交替闪烁。(至少两种方法)3、使LED1.。。。LED8(LED8.。。。LED1)依次循环点亮并行I/O端口4、使LED1.。。。LED8LED1。。)依次循环点亮,实现流水灯功能。1、原理图并行I/O端口2、分析依次向端口送人不同的值可以自己编写函数,也可以使用库函数(P93)11011111L6亮10111111L7亮01111111L8亮P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮并行I/O端口
本文标题:5 并行IO端口
链接地址:https://www.777doc.com/doc-5498249 .html