《片机输入输出端口.ppt》由会员分享,可在线阅读,更多相关《片机输入输出端口.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章 单片机输入单片机输入/输出端口输出端口章节安排:章节安排:2.1 单片机时序简介单片机时序简介2.2 单片机外部引脚简介单片机外部引脚简介 2.3 C51语言简介语言简介2.4 输入输入/输出端口编程实践输出端口编程实践能力要求:能力要求:了解单片机时序了解单片机时序掌握单片机端口输入掌握单片机端口输入/输出操作输出操作掌握编程实践环境与工具的应用掌握编程实践环境与工具的应用实践项目:流水灯实践项目:流水灯硬件连线:硬件连线:使单片机的使单片机的P1、P2或者或者P3端口与发光二端口与发光二极管相连(以极管相连(以P2口为例)口为例)电路原理分析电路原理分析单单片片机机P2口口通通
2、过过连连线线与与JP14相相接接,从从而而控控制制发发光光二二极极管管的的阴阴极极。当当P2端口输出端口输出1时时(二极管阴极呈现(二极管阴极呈现高电平),发光二高电平),发光二极管不能导通,不极管不能导通,不发光;输出发光;输出0时发时发光。光。2.1 单片机时序简介单片机时序简介时钟周期时钟周期u概念:单片机在工作时,由概念:单片机在工作时,由 内部振荡器产生内部振荡器产生 或由或由 外部直接外部直接输入的输入的 送至送至 内部控制逻辑单元内部控制逻辑单元 的的 时钟信号时钟信号 称为时钟周期称为时钟周期u时钟周期的大小是时钟周期的大小是时钟信号频率(常用时钟信号频率(常用fosc表示)的
3、倒数表示)的倒数u若时钟频率为若时钟频率为12MHz,即,即fosc=12MHz,则时钟周期,则时钟周期=1/(12*106)状态周期状态周期u概念:一个概念:一个 状态周期状态周期S 由由2个个 时钟周期时钟周期 构成构成机器周期机器周期u一个一个 机器周期机器周期 由由 6个状态周期个状态周期 或者说由或者说由 12个时钟周期个时钟周期 构构成成2.1 单片机时序简介单片机时序简介机器周期机器周期机器周期是单片机的基本操作周期机器周期是单片机的基本操作周期每个机器周期包含每个机器周期包含S1、S2、S66个状态,每个状态个状态,每个状态包含包含2拍拍P1和和P2,每一拍为一个时钟周期(振荡
4、周期)。因,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含此,一个机器周期包含12个时钟周期。依次可表示为个时钟周期。依次可表示为S1P1、S1P2、S2P1、S2P2、S6P1、S6P2。S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2时钟信号时钟信号2.1 单片机时序简介单片机时序简介指令周期指令周期概念:概念:CPU取出一条指令到该指令执行结束后所取出一条指令到该指令执行结束后所需要的时间需要的时间指令周期是以指令周期是以 机器周期机器周期 为单位来衡量时间的长为单位来衡量时间的长短短不同指令,其指令周期不尽相同不同指令,其指令周期不尽相同MCS-51系
5、列单片机中,大多数指令的指令周期系列单片机中,大多数指令的指令周期由一个机器周期或两个机器周期组成,只有乘法、由一个机器周期或两个机器周期组成,只有乘法、除法指令须要除法指令须要4机器周期指令。机器周期指令。单机器周期指令的时序单机器周期指令的时序S1S2S3S4S5S6读操作码读操作码读无效(丢失)读无效(丢失)单字节单机器周期指令单字节单机器周期指令 S1S2S3S4S5S6读操作码读操作码读第二个字节读第二个字节双字节单机器周期指令双字节单机器周期指令 双机器周期指令的时序双机器周期指令的时序S1S2S3S4S5S6读操作码读操作码S1S2S3S4S5S6三次读操作无效(丢失)三次读操作
6、无效(丢失)单字节、双机器周期指令的时序单字节、双机器周期指令的时序 2.2 单片机外部引脚简介单片机外部引脚简介(以以40引脚为例引脚为例)2.2 单片机外部引脚简介单片机外部引脚简介40个引脚按功能分为个引脚按功能分为3类:类:电源和时钟引脚电源和时钟引脚:Vcc,GND,XTAL1,XTAL2编程控制引脚编程控制引脚:RST,(只要求了解这些引脚即可只要求了解这些引脚即可)I/O端口引脚端口引脚:P0,P1,P2,P3(必须掌握)(必须掌握)电源引脚电源引脚VCC(40脚):接脚):接+5 V电源正端。电源正端。GND(20脚):接电源地端。脚):接电源地端。时钟引脚时钟引脚XTAL1(
7、19脚):内部振荡电路的输入端脚):内部振荡电路的输入端XTAL2(18脚):内部震荡电路的输出端脚):内部震荡电路的输出端8051时钟通常采取时钟通常采取片内时钟振荡方式片内时钟振荡方式:两个引脚需:两个引脚需要外接石英晶体和振荡电容(该电容取值一般在要外接石英晶体和振荡电容(该电容取值一般在10pF30pF之间)之间)2.2 单片机外部引脚简介单片机外部引脚简介-电源和时钟引脚电源和时钟引脚RST(9脚):脚):RST即为即为RESET。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态
8、。电平,就可实现复位操作,使单片机回复到初始状态。单片机复位后,从单片机复位后,从0000H地址处读取第一条指令并开始执行地址处读取第一条指令并开始执行 (29脚):外部程序存储器的读选通信号脚):外部程序存储器的读选通信号,低电平有效。低电平有效。在对在对 外部程序存储器进行读操作外部程序存储器进行读操作 时,每个周期出现两次信号,时,每个周期出现两次信号,连线时与外部连线时与外部ROM的的OE引脚相连引脚相连在读取外部的在读取外部的RAM时,该引脚不会有输出时,该引脚不会有输出单片机内部已经有足够大的单片机内部已经有足够大的ROM,通常不需要外扩程序存储,通常不需要外扩程序存储器,因此该引
9、脚通常不使用器,因此该引脚通常不使用2.2 单片机外部引脚简介单片机外部引脚简介编程控制引脚编程控制引脚注:该页注:该页ppt内容此时仅需了解内容此时仅需了解ALE/PROG(30脚):地址锁存信号输出端脚):地址锁存信号输出端当外接存储器(当外接存储器(ROM或或RAM)时,)时,ALE的输出用于锁存的输出用于锁存地址的低地址的低8位,一般位,一般ALE接锁存器的接锁存器的EN端端当没有外部存储器时,当没有外部存储器时,ALE端可用于脉冲信号输出,且频端可用于脉冲信号输出,且频率是石英振荡频率的率是石英振荡频率的1/6。在烧写在烧写EPROM时,该引脚用作编程脉冲时,该引脚用作编程脉冲PRO
10、G的输入端的输入端 (31脚):访问程序存储器控制信号脚):访问程序存储器控制信号当该引脚接当该引脚接低电平低电平时,对时,对ROM的读操作限定于对的读操作限定于对外部程序存外部程序存储器访问储器访问(内部的失效)(内部的失效)当该引脚接高电平时,对当该引脚接高电平时,对ROM的读操作首先从内部的读操作首先从内部ROM开始,开始,内部访问完毕后才访问外部内部访问完毕后才访问外部ROM(内部(内部ROM没有的编织部分)没有的编织部分)2.2 单片机外部引脚简介单片机外部引脚简介编程控制引脚编程控制引脚注:该页注:该页ppt内容此时仅需了解内容此时仅需了解P0口(口(3932脚)脚):P0.0P0
11、.7统称为统称为P0口。口。P0口的每一位端口都可以口的每一位端口都可以 单独控制单独控制 输入或者输出输入或者输出P0口作为口作为I/O口使用时,必须外接上拉电阻(一般选择口使用时,必须外接上拉电阻(一般选择10K左右)。左右)。P1口(口(18脚)脚):P1.0P1.7统称为统称为P1口。口。P1口的每一位端口都可以口的每一位端口都可以 单独控制单独控制 输入或者输出输入或者输出P1口内部自带上拉电阻,使用时不需要外接口内部自带上拉电阻,使用时不需要外接P2口(口(2128脚)脚):P2.0P2.7统称为统称为P2口口同同P1口口P3口(口(1017脚)脚):P3.0P3.7统称为统称为P
12、3口口P3口作为普通端口使用时,同口作为普通端口使用时,同P1口口P3口还可以将每一位用于第二功能,而且口还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。为第一功能的输入输出或第二功能。P0P3口都是准双向口口都是准双向口端口在作为端口在作为 输入使用输入使用 前,必须先向该口写前,必须先向该口写1(即输出即输出1),然后,然后在执行读取操作,才能获取正确结果在执行读取操作,才能获取正确结果 端口输出可以直接进行端口输出可以直接进行2.2 单片机外部引脚简介单片机外部引脚简介I/O端口引脚端口引脚2.2 单片机外部引脚简介
13、单片机外部引脚简介I/O端口引脚端口引脚P3口口第二功能第二功能P3.0RXD 串行口输入端串行口输入端P3.1TXD 串行口输出端串行口输出端P3.2INT0 外部中断外部中断0请求输入端,低电平有效请求输入端,低电平有效P3.3INT1 外部中断外部中断1请求输入端,低电平有效请求输入端,低电平有效P3.4T0 定时定时/计数器计数器0外部计数脉冲输入端外部计数脉冲输入端P3.5T1 定时定时/计数器计数器0外部计数脉冲输入端外部计数脉冲输入端P3.6WR 外部数据存储器写信号,低电平有效外部数据存储器写信号,低电平有效P3.7RD 外部数据存储器读信号,低电平有效外部数据存储器读信号,低
14、电平有效2.2 单片机外部引脚简介单片机外部引脚简介I/O端口引脚端口引脚强调强调u51单片机中单片机中4个个8位的并行位的并行I/O接口接口P0,P1,P2,P3:分别分别对应着对应着1个特殊功能寄存器个特殊功能寄存器,这些寄存器分别称之为,这些寄存器分别称之为P0,P1,P2,P3口寄存器口寄存器u通过特殊功能寄存器的读写完成对端口的操作通过特殊功能寄存器的读写完成对端口的操作u每个端口既每个端口既可以数据输入可以数据输入,也,也可以数据输出可以数据输出u每个端口既可以每个端口既可以 整体整体8位一起位一起 操作,也可以操作,也可以 按位按位 操作。操作。2.3 C51语言简介语言简介在在
15、C51语言编程中,语言编程中,对数据类型与变量的定义,必须对数据类型与变量的定义,必须要与单片机的存储结构相关联要与单片机的存储结构相关联,否则编译器不能正,否则编译器不能正确地映射定位。确地映射定位。用用C语言编写单片机应用程序与标准的语言编写单片机应用程序与标准的C语言程序语言程序也有相应的区别也有相应的区别uC语言编写单片机应用程序时,需根据单片机存储结构及语言编写单片机应用程序时,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的内部资源定义相应的数据类型和变量,而标准的C语言程语言程序不需要考虑这些问题;序不需要考虑这些问题;uC51包含的数据类型、变量存储模式、输入输
16、出处理、函包含的数据类型、变量存储模式、输入输出处理、函数等方面与标准的数等方面与标准的C语言有一定的区别。语言有一定的区别。u其它的语法规则、程序结构及程序设计方法等与标准的其它的语法规则、程序结构及程序设计方法等与标准的C语言程序设计相同。语言程序设计相同。2.3 C51语言简介语言简介2.3.1 C51中常用数据类型(基本类型)中常用数据类型(基本类型)基本数据类型基本数据类型长度长度取值范围取值范围unsigned char1字节字节0255signed char1字节字节-128+127unsigned int2字节字节065535signed int2字节字节-32768+3276
17、7unsigned long4字节字节04294967295signed long4字节字节-2147483648+2147483647float4字节字节 1.175494E-38 3.402823E+382.3 C51语言简介语言简介2.3.1 C51中常用数据类型(扩充类型)中常用数据类型(扩充类型)基本数据类型基本数据类型长度长度取值范围取值范围bit1位位0或或1sbit1位位0或或1sfr1字节字节0255sfr162字节字节065535bit:位变量声明:位变量声明u例如:例如:bit flag=0;/声明一个变量声明一个变量flag,只占据一个二进制位,只占据一个二进制位sbi
18、t:特殊功能位声明,即声明一个特殊功能寄存器中的某一位:特殊功能位声明,即声明一个特殊功能寄存器中的某一位u例如:例如:sbit EA=IE7;/EA是是IE寄存器中的最高一位,该定义之后,可直寄存器中的最高一位,该定义之后,可直接用接用EA对此位操作对此位操作:EA=1 或者或者EA=0;2.3 C51语言简介语言简介2.3.1 C51中常用数据类型(扩充类型)中常用数据类型(扩充类型)基本数据类型基本数据类型长度长度取值范围取值范围bit1位位0或或1sbit1位位0或或1sfr1字节字节0255sfr162字节字节065535sfr:8位特殊功能寄存器声明(位特殊功能寄存器声明(P19)
19、u例如:例如:sfr P0=0 x80;/P0是是P0端口寄存器,它在存储器中的地址是端口寄存器,它在存储器中的地址是0 x80,此定义之后,可以通过该变量符号对此定义之后,可以通过该变量符号对P0端口直接操作(即告知编译器,程端口直接操作(即告知编译器,程序要操作的是地址为序要操作的是地址为0 x80地址处的寄存器)。当然,我们可以定义其它的地址处的寄存器)。当然,我们可以定义其它的名字。名字。u换种角度:通过换种角度:通过sfr关键词,让关键词,让keil编译器在单片机与人之间搭建一条沟通编译器在单片机与人之间搭建一条沟通的渠道,我们对的渠道,我们对P0符号操作,单片机虽不知道符号操作,单
20、片机虽不知道P0是什么,但是它知道他的是什么,但是它知道他的内部地址内部地址0 x80是什么,从而完成操作。是什么,从而完成操作。sfr16:16位特殊功能寄存器声明位特殊功能寄存器声明2.3 C51语言简介语言简介2.3.2 C51中常用库函数中常用库函数reg51.h:特殊功能寄存器和特殊功能位的声明:特殊功能寄存器和特殊功能位的声明absacc.h:绝对地址的声明(系统扩展一章时才用到)绝对地址的声明(系统扩展一章时才用到)math.h:定义常用数学运算的定义常用数学运算的2.4 输入输入/输出端口编程实践输出端口编程实践2.4.1 keil软件的使用(详见教材软件的使用(详见教材P27
21、4)2.4.2 USB ISP下载线的使用下载线的使用u首先插入首先插入USB ISP下载线,安装驱动(在下载线,安装驱动(在16上网下载)上网下载)u将将“配套软件配套软件”中的中的 progisp.exe 发送到发送到 桌面快捷方式桌面快捷方式u双击运行双击运行 progisp.exe,“选择芯片选择芯片”中选择中选择AT89S52u将将ISP下载线接头插入电路板下载线接头插入电路板u点击按钮点击按钮“调入调入Flash”,选择要运行程序的选择要运行程序的.hex 文件文件u点击按钮点击按钮“自动自动”开始下载程序开始下载程序u电路板复位,运行程序电路板复位,运行程序2.4 输入输入/输出
22、端口编程实践输出端口编程实践2.4.3 端口基本输入端口基本输入/输出操作输出操作端口输出操作(以端口输出操作(以P1口为例)口为例)u位操作位操作:P10=1;/从从P1.0口输出数据口输出数据1或者:或者:sbitP1.1=P11;P1.1=1;uP1端口整体操作:端口整体操作:P1=0 x55;/通过通过P1口输出数据口输出数据0 x552.4 输入输入/输出端口编程实践输出端口编程实践2.4.3 端口基本输入输出操作端口基本输入输出操作端口输入操作(以端口输入操作(以P1口为例)口为例)u位操作:位操作:bit temp;P10=1;/必须先让该端口输出必须先让该端口输出1,temp=
23、P10;/再从该端口输入数据,赋值给变量再从该端口输入数据,赋值给变量tempuP1端口整体操作:端口整体操作:unsigned char temp;P1=0 xFF;temp=P1;2.4 输入输入/输出端口编程实践输出端口编程实践2.4.4 实践项目:流水灯实践项目:流水灯硬件连线:硬件连线:使单片机的使单片机的P1、P2或者或者P3端口与发光二端口与发光二极管相连(以极管相连(以P2口为例)口为例)电路原理分析电路原理分析单单片片机机P2口口通通过过连连线线与与JP14相相接接,从从而而控控制制发发光光二二极极管管的的阴阴极极。当当P2端口输出端口输出1时时(二极管阴极呈现(二极管阴极呈
24、现高电平),发光二高电平),发光二极管不能导通,不极管不能导通,不发光;输出发光;输出0时发时发光。光。2.4 输入输入/输出端口编程实践输出端口编程实践2.4.4 实践项目:实践项目:流水灯流水灯软件流程分析软件流程分析u点亮一个发光二极管,并延迟一段时间,然后选中下一个点亮一个发光二极管,并延迟一段时间,然后选中下一个点亮,如此循环。点亮,如此循环。流水灯参考代码一流水灯参考代码一#includesbit led1=P20;sbit led2=P21;sbit led3=P22;sbit led4=P23;sbit led5=P24;sbit led6=P25;sbit led7=P26;
25、sbit led8=P27;void delayms(unsigned int i);/*延时函数延时函数*/main()while(1)led1=0;delayms(100);led1=1;led2=0;delayms(100);led2=1;led3=0;delayms(100);led3=1;led4=0;delayms(100);led4=1;led5=0;delayms(100);led5=1;led6=0;delayms(100);led6=1;led7=0;delayms(100);led7=1;led8=0;delayms(100);led8=1;led1=0;delayms(
26、100);void delayms(unsigned int i)/延迟函数延迟函数 unsigned int j;for(;i0;i-)for(j=100;j0;j-);流水灯参考代码二流水灯参考代码二#includevoid delayms(unsigned int i);/*延时函数延时函数*/main()unsigned char temp=0 xfe;/只有只有1位为位为0,即只有一个二极管点亮,即只有一个二极管点亮while(1)/单片机主程序肯定是一个死循环单片机主程序肯定是一个死循环P2=temp;/将数据从将数据从P2口输出,控制只有一个二极管点亮口输出,控制只有一个二极管点
27、亮delayms(100);/延时,使点亮的二极管维持一段时间延时,使点亮的二极管维持一段时间temp=(temp0;i-)for(j=100;j0;j-);2.4.4 实践项目:实践项目:流水灯流水灯要求:仿照参考代码,自行编写程序,实现多种流水要求:仿照参考代码,自行编写程序,实现多种流水2.4 输入输入/输出端口编程实践输出端口编程实践2.4.4 实践项目:实践项目:拨码开关控制拨码开关控制发光二极管发光二极管硬件连线:硬件连线:P2口连接发光二口连接发光二极管;极管;P1口连接拨码开关口连接拨码开关控制原理分析控制原理分析u先使先使P1口全输出口全输出1u然后从然后从P1口输入数据(此口输入数据(此时输入的便是开关数据:时输入的便是开关数据:开关断开输入开关断开输入1;开关闭合;开关闭合输入输入0)u再将从再将从P1口输入的数据从口输入的数据从P2口输出口输出