您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 单片机第7章MCS-51单片机接口技术1
第七章51单片机的接口技术在由单片机构成的实际的测控系统中,通常要在最小系统的基础上根据需求连接相应的硬件电路。这时单片机内部的资源有可能不够用,因此在设计时首先要解决系统扩展问题,如I/O接口的扩展。本讲重点:片外RAM与片外ROM扩展(参考范例应用);简单I/O扩展(选用锁存器与驱动器);扩展8255,8155(初始化,电路及应用);LED显示接口(动态与静态,硬件译码与软件译码,电路与编程应用).任务6:采用两只LED数码管显示模拟生产线计件模拟生产流水线的产品计数,以按键模拟产品检测。每按一下按键,相当于产品计数一次。用两只数码管(共阴)显示结果,计满16次后从0开始重新显示,依次循环。设晶振频率为6MHz。#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^3;ucharCount=0;ucharDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidDelayMS(uintms){uchart;while(ms--)for(t=0;t120;t++);}voidmain(){P0=0x00;P2=0x00;while(1){if(K1==0){DelayMS(10);if(K1==0)//确认抖动结束{while(!K1);//等待键放开Count++;if(Count16)Count=0;}}P0=DSY_CODE[Count/10];//十位P2=DSY_CODE[Count%10];//个位}}问题的提出1、可以看到,先从P0口输出3fH这个数据,目的是在共阴数码管上显示“0”这个字符,为什么输出3fH就可以显示“0”呢?别的数据可以吗?2、按键是如何防抖的?3、任务中,数码管是接在P0、P2口上的。那如果数码管很多,光P0、P2口肯定接不下,怎么办?系统扩展概述单片机最小系统:最小应用系统是指能维持单片机运行的最简单配置的系统。对于AT89C51这样片内有程序存储器的单片机,其最小应用系统内包括不可能集成在芯片内的器件,如晶体振荡电路、复位开关和电源部分等。系统扩展时的三总线结构: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的扩展:单片机E2PROM2864A锁存器74LS373P0.0-P0.7ALEPSENP2.0-P2.48D8QOEA8-A12A0-A7D0-D7LEEAOECE51单片机能提供16条地址线,可扩展64K字节的ROM。可以用一片E2PROM,也可以用多片E2PROM1、地址锁存器的使用一般要用P0口输出地址的低8位,而P0又承担输出、输入数据的任务,因此要根据需要在P0口和外接芯片地址线引脚之间加一个地址锁存器。OE=0(接地)—﹛LE=1,8D→8Q直通。LE=ALE时,P0口是地址,地址直接进入寻址线LE=1→G=0()时,8Q数据锁存LE=ALE时,当ALE时,将前8Q代表的地址锁存。锁存控制端LE有的地方称为G端除了ALE引脚和74LS373的LE引脚相连使得地址锁存由单片机的ALE控制外,还要注意单片机读/写控制引脚/RD、/WR与6264相关引脚的连接。2.地址范围的确定和片选信号的产生为了便于对接口芯片中的某一个端口进行读写控制,显然要对给各端口分配一个地址,以便实现I/O操作。决定端口地址范围的因素有两个:一是接口芯片的地址线和单片机地址线的连接方式;二是接口芯片的片选信号/CE(ChipEnable)或/CS(ChipSelect)的产生方法。如果一个单片机应用系统中外扩的芯片很多,单片机在某个时刻只能选中其中之一进行访问。所谓“片选”信号,就是用来选中该芯片的控制信号。3、端口的I/O编址在MCS-51单片机中,扩展出的I/O接口与外部数据存储器采用统一编址方式,即每一个扩展出的I/O端口都相当于一个外部RAM的存储单元,CPU可像访问外部RAM存储单元那样访问I/O接口。使用C51语言进行编程,则需要将端口地址定义在PDATA或XDATA区。如:charxdataCOM8255_at_0xF003;或:#defineCOM8255XBYTE[0xF003];注意:使用了绝对地址,所以要包含absacc.h。②数据存储器RAM的扩展:有时需要扩展外部数据存储器RAM方能工作(如数据采集系统数据量较大,需要专设RAM或FlashRAM)。最常用的RAM器件是SRAM。如:6116(2K)/6264(8K)/62128(16K)/628128(128K)……A7VccA6A8A5A9A4WEA3OEA2A10A1CEA0D7D0D6D1D5D2D4GNDD36116VppVccA12WEA7CE2A6A8A5A9A4A11A3OEA2A10A1CE1A0D7D0D6D1D5D2D4GNDD36264VppVccA12WEA7A13A6A8A5A9A4A11A3OEA2A10A1CEA0D7D0D6D1D5D2D4GNDD362128数据存储器6264的扩展:89C51单片机SRAM6264锁存器74LS373P0.0-P0.7ALEP2.0-P2.48D8QOEA8-A12A0-A7D0-D7LEEAOECS51单片机能提供16条地址线,可扩展64K字节的RAM。可以用一片芯片,也可以用多片RAMRDWRWECE+5V补充例L710:使用6264SRAM扩展外部数据存储器。771122334455668889101112139101112131234567XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pFC222pFC310uFX112MR110kD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U374LS373A010A19A28A37A46A55A64A73A825A924A1021A1123A122CE20CS26WE27OE22D011D112D213D315D416D517D618D719U26264D1R2200LELE为了直接访问外部扩展内存,本例添加了头文件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接口时应注意的几个问题地址存储器的使用:P0口通常会数据、地址复用,且单片机输出地址时ALE是高电平、数据时是低电平,所以使用锁存器应使用高电平触发或下降沿触发的地址锁存器,如74LS373地址范围的确定和片选信号的产生:为了对外围芯片进行控制,必须对外围芯片分配地址。片选信号产生方法{线选:单片机多余的口线拿出一根译码法:地址要素{单片机的地址总线与接口芯片的连接方式接口芯片的片选信号CE或CS产生方法——片选信号数量超出单片机可用的多余口线时G1G2AG2BCBA/Y7/Y6/Y5/Y4/Y3/Y2/Y1/Y0100100100100100100100100其它状态000001010011100101110111×××111111101111110111111011111101111110111111011111101111110111111111111111端口的I/O编址:在MCS-51单片机中,扩展出的I/O接口与外部数据存储器采用统一编址方式,即每一个扩展出的I/O端口都相当于一个外部RAM的存储单元。CPU可像访问外部RAM存储单元那样访问I/O接口,即用“MOVX”指令对扩展的I/O口进行输入/输出操作。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接口扩展①用单片机的串行口来扩展并行I/O口用串行口的方式0只能用于串→并、并→串转换用,可用此特性来扩展并行输出I/O口。用串行口扩展并行输出口示意图【例7.1】假设上图中74LS164芯片的并行输出端连接到8个LED的阳极,编写程序使LED处于一个亮点流动的状态。8765432187654321SRG8RC1/-&1D1324561081112913U174164XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/
本文标题:单片机第7章MCS-51单片机接口技术1
链接地址:https://www.777doc.com/doc-2594574 .html