1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,北京航空航天大学出版社,4单片机的I/O口及proteus简介,*,4 单片机的I/O口及proteus简介,本章内容,AT89C52单片机P0P3端口的结构与功能,仿真软件Proteus简介,AT89C52单片机I/O口应用实例与仿真,3,4.1 P0P3端口的结构与功能,P0端口的结构与功能,P1端口的结构与功能,P2端口的结构与功能,P3端口的结构与功能,P0端口的结构与功能,P0口的一位结构图,P0口除可以作为通用的8位I/O口外,当进行外部存储器的扩展时,还可以将其作为分时复用的低8位地址/数据总
2、线。,4.1,P0P3端口的结构与功能,5,P0端口的结构与功能,P0口用作通用I/O口,作为输出口,作为输入口,“读-修改-写”操作,用作通用I/O口时,CPU令控制信号为低电平,其作用有二个:一是使模拟开关MUX接通下端,即锁存器输出端,二是令与门输出低电平,VF0截止,致使输出级为开漏输出电路。,4.1,P0P3端口的结构与功能,6,P0端口的结构与功能,P0口用作地址/数据总线,P0口分时输出低8位地址、输入数据,P0口分时输出低8位地址、输出数据,4.1,P0P3端口的结构与功能,7,P1端口的结构与功能,P1口的一位结构图,4.1,P0P3端口的结构与功能,对于通常的51内核单片机
3、而言,P1口是惟一一个单功能口,只能作为通用的I/O端口。,8,P1端口的结构与功能,单片机,P1,口引脚的第二功能,对于,AT89S52,单片机,,P1,口的,、,、,、,、,也具有第二功能。,和,分别作为定时器,/,计数器,2,的外部计数输入或时钟输出(,)和定时器,/,计数器,2,的触发输入(,),,则是在对,AT89S52,单片机在线编程时使用到。,AT89C52,由于不具备在线编程功能,因此它的,不具备第二功能,,和,则与,AT89S52,一样。,4.1,P0P3端口的结构与功能,9,P1端口的结构与功能,表4.1 AT89S52单片机P1口引脚的第二功能,口线,第二功能,信号名称,
4、P1.0,T2,定时器/计数器2的外部计数输入或时钟输出,P1.1,T2EX,定时器/计数器2的捕捉/重载触发信号和方向控制,P1.5,MOSI,SPI主机输出/从机输入,在线编程时使用,P1.6,MISO,SPI主机输入/从机输出,在线编程时使用,P1.7,SCK,SPI时钟,在线编程时使用,4.1,P0P3端口的结构与功能,10,P2端口的结构与功能,P2口的某一位结构,4.1,P0P3端口的结构与功能,11,P2端口的结构与功能,P2端口的功能,P2口可以作为般的通用I/O口,其工作方式与P0口类似。当作为通用的I/O口使用时,读引脚状态下需要向端口写1,也属于准双向口。其输出驱动电路与
5、P0口不同,内部已经设有上拉电阻,因此不需要外接电阻。,当需要在单片机外部进行扩展时,P2口也可以作为高8位地址总线,与P0口的低8垃地址总线一起形成16位I/O地址。此时,CPU发出控制信号使模拟开关MUX接到地址线,地址信息通过非门和场效应管输出到引脚。,4.1,P0P3端口的结构与功能,12,P3端口的结构与功能,P2口的某一位结构,P3口是单片机中使用最灵活、功能最多的一个并行端口,不仅具有通用的输入输出功能,而且还具有多种用途的第二功能。,4.1,P0P3端口的结构与功能,13,P3端口的结构与功能,P3端口的功能,使用P3口时多数是将8根I/O线单独使用,既可将其设置为第二功能,也
6、可设置为第一功能。当工作于通用的I/O功能时,单片机会自动将第二功能输出线置1。与其他的I/O口一样,在向端口写数据时,锁存器的状态与输出引脚的状态一致;当读端口的状态时,则需先向端口写1,再将数据读入内部数据总线,因此是准双向口。,4.1,P0P3端口的结构与功能,14,P3端口的结构与功能,P3端口的功能,单片机工作于第二功能时,自动将锁存器的Q端置1.,表4.2 AT89C52P3口引脚的第二功能,口线,第二功能,信号名称,P3.0,RXD,串行数据接收,P3.1,TXD,串行数据发送,P3.2,INT0,外部中断0请求信号输入,P3.3,INT1,外部中断1请求信号输入,P3.4,T0
7、定时器/计数器0计数输入,P3.5,T1,定时器/计数器1计数输入,P3.6,WR,外部RAM写选通,P3.7,RD,外部RAM读选通,4.1,P0P3端口的结构与功能,15,注意事项,单片机的并行I/O接口有以下应用特性,P0,P1,P2,P3作为通用I/O口使用时,输入操作是读引脚状态;输出操作是对口的锁存器的写入操作,锁存器的状态立即反映到引脚上。,P1,P2,P3口作为输出口时,由于电路内部带上拉电阻,因此无需外接上拉电阻,而PO口由于内部无上拉电阻,因此使用它时,必须外接上拉电阻。,P0,P1,P2,P3作为通用的输入口时,必须使电路中的锁存器写入高电平“1”,使场效应管(FET)
8、VF1截止,以避免锁存器输出为“0”时场效应管VF1 导通使引脚状态始终被钳位在“0”状态。,4.1,P0P3端口的结构与功能,16,注意事项,I/O口功能的自动识别。无论是P0、P2口的总线复用功能,还是P3口的第二功能复用,单片机会自动选择,不需要用户通过指令选择。,两种读端口的方式。包括端口锁存器的“读-改-写”操作和读引脚的操作。在单片机中,有些指令是读端口锁存器的,如一些逻辑运算指令、置位/复位指令、条件转移指令以及将I/O口作为目的地址的操作指令;有些指令是读引脚的,如以I/O口作为源操作数的指令。,I/O口的驱动特性。P0口每一个I/O口可驱动8个LSTTL输入,而P1、P2、P
9、3口每一个I/O口可驱动4个LSTTL输入。在使用时应注意口的驱动能力。,4.1,P0P3端口的结构与功能,17,4.2 Proteus简介,Proteus ISIS的工作界面,Proteus ISIS的基本操作,Proteus ISIS的原理图绘制和仿真,Proteus 与Keil C相结合的设计和仿真,Proteus ISIS的工作界面,Proteus ISIS的工作界面是一种标准的Windows界面,如图4.5所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。,4.2 Proteus简
10、介,19,Proteus ISIS的工作界面,4.2 Proteus简介,20,Proteus ISIS的基本操作,图形编辑窗口,坐标系统(CO-ORDINATE SYSTEM),点状栅格(The Dot Grid)与捕捉栅格(Snapping to a Grid),实时捕捉(Real Time Snap),视图的缩放与移动,预览窗口,该窗口通常显示整个电路图的缩略图。在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。其他情况下,预览窗口显示将要放置的对象的预览。,4.2 Proteus简介,21,Proteus ISIS的基本操作,对象选择器窗口,通过对象选择按钮
11、从元件库中选择对象,并置入对象选择器窗口,供今后绘图时使用。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形,对象的放置和编辑,对象的添加和放置,放置电源及接地符号,对象的编辑,拖动标签,对象的旋转,编辑对象的属性,4.2 Proteus简介,22,Proteus ISIS的原理图绘制和仿真,原理图的绘制,画导线,画总线,画总线分支线,放置线路节点,一般电路的模拟调试,4.2 Proteus简介,23,Proteus 与Keil C相结合的设计和仿真,电路图的绘制,KeilC与Proteus连接调试,假若KeilC与Proteus均已正确安装在C:Program Files的目录里
12、把光盘中附带的“VDM51.dll”复制到C:Program FileskeilCC51BIN目录中。,用记事本打开C:Program FileskeilCC51TOOLS.INI文件,在C51栏目下加入:TDRV5=BINVDM51.DLL(Proteus VSM Monitor-51 Driver),其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复。步骤(a)和(b)只需在初次使用设置。,4.2 Proteus简介,24,Proteus 与Keil C相结合的设计和仿真,进入KeilC Vision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机
13、CPU器件(如:Atmel公司的AT89C52)。并为该项目加入KeilC源程序。,单击“Project菜单/Options for Target”选项或者点击工具栏的“Option for target”按钮,弹出窗口,点击“Debug”按钮,出现如图4.18所示对话框。在出现的对话框里在右栏上部的下拉菜单里选中“Proteus VSM Monitor-51 Driver”。并且还要点击一下“Use”前面表明选中的小圆点。,4.2 Proteus简介,25,Proteus 与Keil C相结合的设计和仿真,4.2 Proteus简介,26,Proteus 与Keil C相结合的设计和仿真,再
14、点击“Setting”按钮,设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。在“Port”后面添加“8000”。设置好的情形如图4.19所示,点击“OK”按钮即可。,4.2 Proteus简介,27,Proteus 与Keil C相结合的设计和仿真,Proteus的设置 进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“Use Romote Debuger Monitor”,如图4.20所示。此后,便可实现KeilC与Proteus连接调试。,4.2 Proteus
15、简介,28,Proteus 与Keil C相结合的设计和仿真,Keil与Proteus连接仿真调试,在Keil中执行菜单命令“Debug”“Start/Stop Debug Session”,进入Keil调试环境,按F5全速运行程序,切换到Proteus ISIS窗口后,我们能清楚地观察到每一个引脚的电平变化,红色代表高电平,蓝色代表低电平。,4.2 Proteus简介,29,4.3 I/O口应用实例与仿真,LED与数码管简介,I/O口的实例仿真,LED与数码管简介,数码管的原理与使用方法,LED数码管显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,每个发光二极管称为一字段。因而它的
16、控制原理和发光二极管的控制原理是相同的。根据各管的接线形式,可分成共阴极型和共阳极型。发光二极管的阳极连在一起,为一个公共端,这种显示器称为共阳极显示器。发光二极管的阴极连在一起,为一个公共端,这种显示器称为共阴极显示器。给LED 数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。,4.3 I/O口应用实例与仿真,32,LED与数码管简介,共阳极,共阴极,数码管外形图,4.3 I/O口应用实例与仿真,33,I/O口的实例仿真,例4.1 闪烁灯的proteus仿真及C语言程序设计,设计要求:如图4.23所示,在P1.0端口上接一个发光二极管L
17、1,使L1周期性地一亮一灭,一亮一灭的时间间隔为0.2秒。,闪烁灯的仿真电路原理图(见教材图4.23),元器件选取,AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电容LED-GREEN:绿色发光二极管,程序设计内容,延时程序的设计方法,输出控制,限流电阻的选取,4.3 I/O口应用实例与仿真,34,I/O口的实例仿真,例4.2 模拟开关灯的proteus仿真及C语言程序设计,设计要求:如图4.25所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。,模拟开
18、关灯的仿真电路原理图(见教材图4.25),元器件选取,AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电容;LED-GREEN:绿色发光二极管;SWITCH:开关,4.3 I/O口应用实例与仿真,36,I/O口的实例仿真,程序设计内容,开关状态的检测过程,输出控制,程序流程图,C语言源程序,调试与仿真,开始,K1开关闭合了吗?,L1亮,L1灭,4.3 I/O口应用实例与仿真,37,I/O口的实例仿真,例4.3 报警器的proteus仿真及C语言程序设计,设计要求:如图4.27所示,用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号
19、要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上报警信号响,当开关断开报警信号停止。,报警器的仿真电路原理图(见教材图4.27),元器件选取,AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电容;SPEAKER:扬声器;SW-SPDT:单刀双掷开关;9012:PNP三极管,4.3 I/O口应用实例与仿真,38,I/O口的实例仿真,程序设计内容:报警信号产生的方法:500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次。不同频率的信号
20、经过9012三极管放大后,送给扬声器LS1,就会发出不同频率的报警声。,程序流程图,汇编语言与C语言源程序,调试与仿真,4.3 I/O口应用实例与仿真,39,I/O口的实例仿真,例4.4广告灯(查表方式)的proteus仿真及程序设计,设计要求:如图4.29所示,利用查表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。,广告灯的仿真电路原理图(见教材图4.29),元器件选取,AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电容;LED-GREEN:绿色发光二极管;,4.3 I/O口应用实例与仿真,40,方法是
21、找出共阴极数码管显示0-9的字形码,按着数字0-9的顺序,把这十个字形码放入数组table中。,3 I/O口应用实例与仿真,Proteus ISIS的原理图绘制和仿真,AT89C52:单片机;,输出操作是对口的锁存器的写入操作,锁存器的状态立即反映到引脚上。,RESPACK-7:1Kx7排阻;,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。,LED(发光二极管)是最基本的输出显示装置之一,通过LED可以直观地看出控制系统状态,如按键的闭合与断开、电机的启动与停止等,另外LED还可以用于制作彩灯。,1 AT89S52单片机P1口引脚的第二功能,2
22、Proteus简介,3 I/O口应用实例与仿真,1 P0P3端口的结构与功能,34所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.,2 模拟开关灯的proteus仿真及C语言程序设计,0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。,I/O口的实例仿真,程序设计内容,查表法是单片机程序设计中常用的一种方法,它多用于一些较复杂的控制场合,如判段键盘按键的键值、利用I/O口控制外部设备作一些预先设定好的复杂动作(本例是其简单的示意)、输出正余弦、三角、梯形或更复杂的波形,甚至可以利用查表法实现一些更复杂的算法。,汇编语言步骤如下:把控制码建成一个表
23、TABLE;利用MOV DPTR,TABLE指令来使数据指针寄存器指到表的开头;利用MOVC A,ADPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。,C语言步骤如下:定义一维数组TABLE(复杂情况也可以用二维数组,另外,为节省单片机的RAM资源,数组一般放在代码段中);把控制码按顺序放入数组TABLE中;定义变量i,改变i的值,就可以取出数组中对应的控制码。,4.3 I/O口应用实例与仿真,41,I/O口的实例仿真,程序流程图,汇编语言和C语言源程序,调试与仿真,4.3 I/O口应用实例与仿真,42,I/O口的实例仿真,例4.5 I/O并行口
24、直接驱动数码管显示的proteus仿真及C语言程序设计,设计要求:如图4.32所示,利用AT89C52单片机的P0端口的P0.0P0.7连接到一个共阴数码管的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。,数码管的仿真电路原理图(见教材图4.32),图4.32中需要注意两点:,(1)由于使用P0口驱动数码管,因此上拉排阻RP1必不可少;,(2)P0口与数码管发光段A-G之间必须对应接七个限流电阻。,4.3 I/O口应用实例与仿真,43,I/O口的实例仿真,元器件选取,AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电
25、容;RESPACK-7:1Kx7排阻;7SEG-COM-CATHODE:7段式共阴极数码管;,程序设计内容,由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成P0口对数码管的控制。方法是找出共阴极数码管显示0-9的字形码,按着数字0-9的顺序,把这十个字形码放入数组table中。,程序流程图,C语言源程序,调试与仿真,4.3 I/O口应用实例与仿真,44,I/O口的实例仿真,例4.6 动态数码管显示的proteus仿真及C语言程序设计,设计要求:如图4.34所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12
26、345”字样;当开关接低电平时,显示“HELLO”字样。,动态显示的仿真电路原理图,元器件选取:AT89C52:单片机;RES:电阻;CRYSTAL:晶振;CAP、CAP-ELEC:电容、电解电容;RESPACK-8:1kx8排阻;7SEG-MPX6-CC:7段式6位共阴极数码管;BUTTON:按钮;,4.3 I/O口应用实例与仿真,45,I/O口的实例仿真,程序设计内容,(1)动态扫描方法:动态扫描采用各数码管循环轮流显示的方法,本例中,先让左边第一位数码管显示数字“1”,延时一定时间后,第二位显示“2”,以此类推,到第五位显示“5”后,又从“1”开始循环显示。当循环显示频率较高时,利用人眼
27、的暂留特性,我们看到这五位数码管仿佛在同时显示,而看不出闪烁显示现象。这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。需要注意一点,由于电路的特性,在点亮每一位数码管之前,一定要对整个数码管清屏(场消隐),即让所有位选信号都处于不被选中状态。,4.3 I/O口应用实例与仿真,46,I/O口的实例仿真,程序设计内容,(2),对于显示的字形码数据我们采用查表方法来完成,同样位选码也可以用查表的方法。请注意,一般资料中给出的字形码都没有包含“H”和“L”,这时我们可以自行推导出来。通过4.3.1节数码管的介绍,我们可以得出“H”对应的字形码为76H,“L”为38H。,程序流程图,C语言源程序,调试与仿真,4.3 I/O口应用实例与仿真,47,本章小结,本章主要介绍了单片机的输入输出系统和proteus的初步使用。,通过对本章的学习,读者一方面可以对AT89C52单片机的4个P口有深入的认识,另一方面对proteus仿真软件有一个初步的了解,能借助它作一些电路设计和单片机应用的前期仿真。,48,






