1、目 录摘要1ABSTRACT2前言3第1章 系统方案设计41.1 系统总体设计方案41.2 基本功能简介41.3 系统程序4第2章 8051单片机原理分析与硬件电路62.1 8051单片机简述62.1.1 8051单片机的基本组成62.1.2 8051的信号引脚82.2 晶体振荡电路102.3 上电复位电路112.48051单片机的并行I/O口122.58051单片机的中断系统122.68051单片机的定时/计数器132.6.1 定时/计数器的定时功能132.6.2 用于定时/计数器控制的寄存器14第3章 8051单片机与8155的接口设计153.1 并行I/O接口8155153.1.1 81
2、55部功能结构与引脚153.1.2 作片外RAM使用163.1.3 作扩展I/O口使用163.1.4 I/O口的工作方式183.1.5 定时/计数器使用183.28051单片机并行I/O扩展193.2.1 8051并行扩展总线193.2.2 8051单片机与8155的接口19第4章 单片机与8155的接口设计的应用214.1LED显示214.2按键扫描22第5章 结论24参考文献26毕业设计小结27附录2831 / 33摘 要二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大
3、多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。学习单片机的最有效方法就是理论与实践并重,本文将用单片机8051和外围接口8155、发光二极管、晶振、复位、电源等电路以与必要的软
4、件组成的以8051为核心,辅以简单的设备和必要的电路,设计了一款简易的流水灯,并编写简单的程序,使其能够自动工作。关键词:单片机8051,外围接口8155,流水灯。前 言随着电子技术的日益进步,微型计算机的发展突飞猛进。其发展之一就是将微处理器与其外围芯片,如程序存储器、并行、串行I/O口、定时器/计数器、中断控制器与其它控制部件集成在一个芯片之中,制成单片机。而近年来推出的一些高档单片机还包含有许多特殊功能单元。因此,只要外加一些扩展电路与必要的通道接口就可以构成各种计算机应用系统,并具有集成度高、可靠性高、性能价格比高、适应温度围宽、抗干扰能力强、小巧灵活、易于实现机电一体化等优点,已广泛
5、应用于智能化仪器仪表的检测、控制以与生产设备自动化、家用电器等领域。学习单片机,接触到的第一个例子几乎都是流水灯。我想不仅仅是因为这个例子比较典型吧。其使用意义也大可见到。都市的夜色中闪烁着各式各样的霓虹灯,其中用得最多的大概要算流水灯,它的行云流水般的效果为宁静的夜晚带来生机 ,大街上形形色色的广告牌也离不开它。而且流水灯向多方面发展,可加工成艺术品供欣赏,可接在刹车电路,大灯电路,电源电路,产生绚丽灿烂的流水效果。相信不久的将来它会发展到更宽的领域去。学习单片机的最有效方法就是理论与实践并重,本文将用单片机8051和外围接口8155、发光二极管、晶振、复位、电源等电路以与必要的软件组成的以
6、8051为核心,辅以简单的设备和必要的电路,设计了一款简易的流水灯,并编写简单的程序,使其能够自动工作。第1章 系统方案设计1.1 系统总体设计方案:在做此设计时,应先确定其系统框架,以下便是此设计的系统框图。图2.1 系统框图1.2 基本功能简介本文将用单片机8051和外围接口8155、发光二极管、晶振、复位、电源等电路以与必要的软件组成的以8051为核心,辅以简单的设备和必要的电路,设计了一款简易的流水灯,并编写简单的程序,使其能够自动工作1.3 系统程序本设计的系统程序流程图如下图所示图2.2 系统设计流程图第2章 8051单片机原理分析与硬件电路2.1 8051单片机原理简述MCS-5
7、1单片机的典型芯片是8031、8051、8751。8051部有4 KB ROM,8751部有4KB EPROM,8031部无ROM;除此之外,三者的部结构与引脚完全一样。本设计使用的是8051。下面我们就对本系列单片机的部组成与信号引脚进行说明。2.1.18051单片机的基本组成 1) 中央处理器(CPU)中央处理器是单片机的核心,完成运算和控制功能。有运算电路和控制电路,其中控制电路是单片机的指挥控制部件,保证单片机各部分能自动而协调的工作。例如定时控制电路和振荡电路均属于控制电路。单片机执行程序就是在控制电路的控制下进行的。首先从程序存储器读出指令,送指令寄存器保存;然后送指令译码器进行译
8、码,译码结果送定时控制电路,有定时控制逻辑产生各种定时信号和控制信号;再送到系统的各个部件去控制相应的操作。这就是执行一条指令的全过程,而执行程序就是不断地重复这一过程。2) 部数据存储器(部RAM)8051芯片中共有256个RAM单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H7FH)和高128单元(单元地址80HFFH)。部RAM的高128单元是供给专用寄存器使用的,其单元地址为80HFFH。因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register),也可称为特殊功能寄存器SFR区。但高128单元被专用寄存器占用,能
9、作为寄存器供用户使用的只是低128单元,用于存放可读写的数据。因此通常所说的部数据存储器就是指前128单元,简称部RAM。片低128字节RAM是用户真正可以存取随机数据的数据存储器,其地址为00H-7FH。 3) 部程序存储器(部ROM)8051共有4 KB掩膜ROM,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称部ROM。它的片ROM地址为0000H0FFFH(4KB),它的片外ROM最大容量可为0000HFFFFH。片与片外ROM在低4KB地址出现重叠,这种重叠的区分由8051的管脚进行控制。还有一组特殊单元是0003H002AH,共40个单元。这40个单元被均匀地分为5段,作
10、为5个中断源的中断地址区。中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中理应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。4) 定时/计数器 8051共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。 5) 并行I/O口8051共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。每个口都包含一个锁存器、一个输出驱动器和输入缓冲器。实际上,它们已被归入
11、专用寄存器之列,并且具有字节寻址和位寻址功能。在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用。6) 串行口MCS-51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。 7) 中断控制系统 MCS-51单片机的中断功能较强,以满足控制应用的需要。8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。 8) 时钟电路 MCS-51芯片的部有
12、时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6 MHz和12 MHz。从上述容可以看出,MCS-51虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此,实际上它已是一个简单的微型计算机系统了。2.1.28051的信号引脚MCS-51是标准的40引脚双列直插式集成电路芯片,引脚排列请参见图2.1。图2.1 MCS-51 引脚图、逻辑符号图 下面按其引脚功能分为四部分叙述这40条引脚的功能。 (1) 主电源引脚VCC和VSS: VCC(40脚)接+5V电压; VSS(20脚)接地。 (2) 外接晶体引脚XTAL1和XTAL2: X
13、TAL1(19脚)接外部晶体的一个引脚。在单片机部,它是一个反相放大器的输入端,这个放大器构成了片振荡器。当采用外部振荡器时,此引脚应接地; XTAL2(18脚)接外晶体的另一端。在单片机部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到部时钟发生器的输入端。 (3) 控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10F的电容,以
14、保证可靠地复位。 VCC掉电期间,此引脚可接上备用电源,以保证部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压围(50.5V),VPD就向部RAM提供备用电源。 ALE/PROG(30脚):在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。EA/VPP(引脚):当EA端保持高电平时,访问部程序存储器,但在PC(程序计数器)值超过0FFFH时,将自动转向执行外部程序存储器的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有部程序存储器。(4)
15、 输入/输出(I/O)引脚P0、P1、P2、P3(共32根) P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位与数据总线复用。P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。P3口(10脚至17脚):是准双向8位I/O口, 作为第二功能使用时,各引脚的定义如表所示。 值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 口线引脚第二功能 P3.010RX
16、D(串行输入口)P3.111TXD(串行输出口)P3.212INT0(外部中断0)P3.313INT1(外部中断1)P3.414T0(定时器0外部输入)P3.515T1(定时器1外部输入)P3.616WR(外部数据存储器写脉冲)P3.717RD(外部数据存储器读脉冲)表 P3各口线的第二功能定义 2.2 晶体振荡电路1. 时钟信号的产生在MCS-51芯片部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2 。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图2.1所示。时钟电路产生的振荡脉冲
17、经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。一般地,电容C1和C2取30 pF左右,晶体的振荡频率围是1.212 MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。MCS-51在通常应用情况下,使用振荡频率为6 MHz或12 MHz。 图3.3时钟振荡电路 2. 时序时序是用定时单位来说明的。MCS-51的时序定时单位共有4个,从小到大依次是:节拍、状态、机器周期和指令周期。下面分别加以说明。1) 节拍与状态把振荡脉冲的周期定义为节拍(用P表示)。振荡脉冲经过二分频后,就是单片机的时钟信号的周期,其定义为状态(用S表示)。这样,一个状态就包含两个节拍,具前半周期对应
18、的拍节叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。 2) 机器周期 MCS-51采用定时控制方式, 因此它有固定的机器周期。规定一个机器周期的宽度为6个状态,并依次表示为S1S6。由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍,分别记作S1P1、S1P2、S6P2。由于一个机器周期共有12个振荡脉冲周期, 因此机器周期就是振荡脉冲的十二分频。当振荡脉冲频率为12 MHz时,一个机器周期为1s;当振荡脉冲频率为6 MHz时,一个机器周期为2s。本设计采用的晶振频率为12MHz。3) 指令周期指令周期是最大的时序定时单位, 执行一条指令所需要的时间称为指令周期。它一般由若
19、干个机器周期组成。不同的指令,所需要的机器周期数也不一样。通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,等等指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令执行速度越快。单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段。ALE引脚上出现的信号是周期性的,在每个机器周期出现两次高电平。第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。ALE信号每出现一次,CPU就进行一次取指操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而有小的差异。2.2 上电复位电路复位是单片机的初始化操作,其主要红能
20、是把程序计数器PC容初始化为0000H,也就是使单片机从0000H单元开始执行程序,同时使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。8051单片机采用两种复位方式:一种是加电自动复位,另一种为开关复位。单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位电路如图3.4(a),(b)所示。图3.4(a)为上电复位电路,它是通过外部复位电路的电容充电来实现的。在电源Vcc的上升时间不超过1ms就可以实现自动上电复位,即接通
21、电源就完成了系统的复位初始化。在接电瞬间,RESET端的电位与VCC一样,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 (a) 上电复位电路,(b) 按键复位电路图3.4单片机常见的复位电路;2.4 8051单片机的并行I/O口1. P0口8位双向口线,其第一功能是作为通用的I/O口,CPU在传送输入/输出数据时。输出数据可以锁存,输入数据可以缓存;第二功能是当CPU访问外部存储器时,分时提供低8位地址和8位数据的复用总线。电路中包含有一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出的驱动电路和一个输出控制电路。当对P0
22、口进行写操作时,由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。2. P2口8位双向口线。其第一功能是当不带片外存储器时,作为通用I/O口;第二功能是8051带片外存储器时,与P0口配合,传送片外存储器的高8位。2.5 8051单片机的中断系统1.中断源8051单片机中断系统共有6个中断源,即2个外部中断,2个定时器中断和2个串行中断。本文采用的是定时器中断。定时器中断是为满足定时或计数的需要而设置的。在单片机芯片部有2个定时器T0和T1,所以定时器中断也有2个:定时器1中断和定时器0中断。当计数器溢出时,表明定时时间到计
23、数值满,这时部电路就产生中断请求。2.中断控制中断控制是指提供给用户使用的中断控制手段。具体到8051,中断控制的容共有四项:中断允许控制、中断请求控制、中断优先控制和外中断触发方式控制。这些控制容分布在4个控制寄存器中:中断允许寄存器、定时器控制寄存器、串行控制寄存器和中断优先级寄存器。中断控制是通过硬件实现的,但须进行软件设置。1) 中断允许控制寄存器IE该寄存器用于控制是否允许使用中断。本设计所使用的标志位如下:EA:中断允许总控制位。EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,其后中断的禁止或允许由各类中断自行设置。ET1:定时器中断允许控制位。ET1=0,禁止定时器中断
24、。ET1=1,允许定时器中断。可见,8051通过中断允许控制寄存器对中断允许实行两级控制:中断系统总控制和各类中断单独控制。本设计中,只有当EA=1时,开放中断系统,这时才能由定时器中断控制位控制定时器中断的允许与禁止。2) 定时器控制寄存器TCON寄存器地址为88H,位地址为8FH-88H。虽然该寄存器名称为定时器控制寄存器,但多数位都是为中断控制而设置的。本设计所采用的标志位如下:TF1:定时器T1计数溢出标志位。当计数器产生计数溢出时,相应的溢出标志位由硬件置1,并自动产生定时中断请求。此外,也可以作为状态位供查询使用。2.6 8051单片机的定时/计数器在单片机控制应用中,定时和计数的
25、需求很多,为此在单片机中都有定时器/计数器,8051中有两个16位定时器/计数器,本设计使用的是定时器T1。2.6.1 定时/计数器的定时功能定时器的定时功能是通过计数器的计数来实现的,此时的计数脉冲来自单片机芯片部,每个机器周期有一个计数脉冲,即每个机器周期计数器加1.由于一个机器周期等于12个振荡脉冲周期,因此,计数频率为振荡频率的1/12。此单片机采用12MHz晶振,则计数频率为1MHz,即每微秒计数器加1。这样,在使用定时器时既可以根据计数值计算出定时时间,也可以通过定时时间的要求算出计数器的预置值。2.6.2 用于定时/计数器控制的寄存器在8051单片机中,与定时器有关的控制寄存器共
26、有3个,分别是定时器控制寄存器、工作方式控制寄存器和中断允许控制寄存器。中断允许控制寄存器已在前面的中断一节中讲过,这里不再赘述。我们来了解前两个寄存器。1. 定时器控制寄存器(TCON)TCON寄存器地址为88H,位地址为8FH-88H。定时器控制寄存器中,本设计与定时器有关的控制位有1位,即TR1-运行控制位。TR1=0,停止定时器工作;TR1=1,启动定时器工作。控制计数启停只需用软件方法使其置1或清0即可。2定时器方式选择寄存器(TMOD)TMOD寄存器用于设定定时器的工作方式。寄存器地址为89H,但它没有位地址,不能进行寻址,只能用字节传送指令设置其容。第三章 8051单片机与815
27、5的接口设计3.1 并行I/O接口81553.1.1 8155部功能结构与引脚在实训电路中采用一种可编程的接口芯片8155,Intel公司研制的8155不仅具有两个8位的I/O端口(A口、B口)和一个6位的I/O端口(C口),而且还可以提供256B的静态RAM存储器和一个14位的定时/计数器。8155和单片机的接口非常简单,目前被广泛应用。8155有40个引脚,采用双列直插封装,其引脚图和组成框图如下图所示。CBAAD012PA021AD113PA122AD214PA223AD315PA324AD416PA425AD517PA526AD618PA627AD719PA728PB029CE8PB1
28、30RD9PB231WR10PB332IO/M7PB433ALE11PB534PB635PB736TIMEROUT6PC037PC138TIMERIN3PC239PC31PC42RESET4PC558155256字节静态RAM14位定时计数器TIMER INTIMER OUTVCC(5 V)VSS(GND)PA0PA7IO/MCEALERDWRRESETAD0AD7PB0PB7PC0PC7图3.1 8155的引脚图和结构框图下面我们对8155的引脚分类说明如下: (1) 地址/数据线AD0AD7(8条):是低8位地址线和数据线的共用输入总线,常和51单片机的P0口相连,用于分时传送地址数据信息
29、,当ALE=1时,传送的是地址。 (2) I/O口总线(22条):PA0PA7、PB0PB7分别为A、B口线,用于和外设之间传递数据;PC0PC5为C端口线,既可与外设传送数据,也可以作为A、B口的控制联络线。 (3) 控制总线(8条): RESET:复位线,通常与单片机的复位端相连,复位后,8155的3个端口都为输入方式。 WR, RD:读/写线,控制8155的读、写操作。 ALE:地址锁存线,高电平有效。它常和单片机的ALE端相连,在ALE的下降沿将单片机P0口输出的低8位地址信息锁存到8155部的地址锁存器中。因此,单片机的P0口和8155连接时,无需外接锁存器。 CS:片选线,低电平有
30、效。 IO/M:RAM或I/O口的选择线。当=0时,选中8155的256 B RAM;当=1时,选中8155片3个I/O端口以与命令/状态寄存器和定时/计数器。 TIMERIN、TIMEROUT:定时/计数器的脉冲输入、输出线3.1.2 作片外RAM使用当CE=0,IO/M=0时,8155只能做片外RAM使用,共256 B。其寻址围由以与AD0AD7的接法决定,这和前面讲到的片外RAM扩展时讨论的完全一样。当系统同时扩展片外RAM芯片时,要注意二者的统一编址。对这256 B RAM的操作使用片外RAM的读/写指令“MOVX”。 3.1.3 作扩展I/O口使用当 CE=0,IO/M=1时,此时可
31、以对8155片3个I/O端口以与命令/状态寄存器和定时/计数器进行操作。与I/O端口和计数器使用有关的部寄存器共有6个,需要三位地址来区分。1) 命令/状态寄存器 和接口芯片8255一样,芯片8155 I/O口的工作方式的确定也是通过对8155的命令寄存器写入控制字来实现的。8155控制字的格式如下图所示。 命令寄存器只能写入不能读出,也就是说,控制字只能通过指令MOVX DPTR, A或MOVX Ri, A写入命令寄存器。 状态寄存器中存放有状态字,状态字反映了8155的工作情况。状态字的各位定义如下图所示。 状态寄存器和命令寄存器是同一地址,状态寄存器只能读出不能写入,也就是说,状态字只能
32、通过指令MOVX A ,DPTR或MOVX A,Ri来读出,以此来了解8155的工作状态。2) 定时器高、低8位寄存器:关于定时/计数器高、低8位寄存器的使用,我们将在后面讲到定时器使用时再作介绍。 3.1.4 I/O口的工作方式当使用8155的三个I/O端口时,它们可以工作于不同的方式,工作方式的选择取决于写入的控制字。其中,A、B口可以工作于基本I/O方式或选通I/O方式,C口可工作于基本I/O方式,也可以作为A、B选通方式时的控制联络线。方式1、2时,A、B、C口都工作于基本I/O方式,可以直接和外设相连,采用“MOVX”类的指令进行输入/输出操作。方式3时,A口为选通I/O方式,由C口
33、的低三位作联络线,其余位作I/O线;B口为基本I/O方式。方式4时,A、B口均为选通I/O方式,C口作为A、B口的联络线。本设计的A,B,C三个I/O口都是作为基本输入输出I/O用的。A,B口为输出驱动16个LED,C口为输入完成按键扫描功能。3.1.5 定时/计数器使用 8155的可编程定时/计数器是一个14位的减法计数器,在TIMERIN端输入计数脉冲,计满时由TIMEROUT输出脉冲或方波,输出方式由定时器高8位寄存器中的M2、M1两位来决定。当TIMERIN接外脉冲时为计数方式,接系统时钟时为定时方式,实际使用时一定要注意芯片允许的最高计数频率!定时/计数器的初始值和输出方式由高、低8
34、位寄存器的容决定,初始值14位,其余两位定义输出方式。1) 定时/计数器的输出方式2)定时/计数器的工作8155对部定时器的控制是由8155控制字的D7、D6位决定的,现总结如下表所示。3.2 8051单片机并行I/O扩展使用单片机本身的I/O口,可以实现一些简单的数据输入/输出传送,但是对于复杂的I/O操作,必须有接口电路的协调与控制才能进行。3.2.1 8051并行扩展总线虽然系统扩展需要地址总线和数据总线,但在单片机芯片上并没有为此提供专用的地址引脚和数据引脚,实际扩展时都是由I/O口线来充当地址线和数据线。1. 以P0口的8位口线充当低位地址线/数据线由于P0口一线两用,既传送地址又传
35、送数据,所以采用分时技术对它上面的地址和数据进行分离。使用分时技术被分离出的是低8位。2. 以P2口的口线作高位地址线。P2口只作为高位地址线使用3.2.2 8051单片机与8155的接口8051和8155的接口非常简单,因为8155部有一个8位地址锁存器,故无需外接锁存器。 8051与8155地址、数据线连接方法是,8051 P0口与8155的AD总线直接连接,既作为低8位地址总线,又作为数据总线。8051的地址锁存信号ALE与8155的ALE直接连接。如图所示图3.2 8051与8155的连接8155的CE接P2.7,IO/M端与P2.0相连。当P2.7为低电平时,若P2.0=1,访问81
36、55的I/O口;若P2.0=0,则访问8155的RAM单元。由此得到图中8155的地址编码如下:命令/状态口7F00HA口7F01H B口7F02HC口7F03H定时器低字节7F04H定时器高字节7F0。第四章 单片机与8155的接口设计的应用4.1 LED显示发光二极管就是LED(Light Emitting Diode),是一种由磷化镓(GaP)等半导体材料制成的、能直接将电能转变成光能的发光显示器件。当其部有一定电流通过时,它就会发光。发光二极管(LED)具有功耗低、体积小、可靠性高、寿命长和相应快等优点,早己广泛应用于仪器仪表、计算机、汽车、电子玩具、通讯、自动控制、军事等领域。在这个
37、设计里面我用的是16只灯,如图4.1所示。8155的A,B两个口加起来刚好就是16个I/O,我们只需要将一个16位二进制数(程序中一般习惯用十六进制表示如0x7FFF)送到8155的A,B口,由于我们的发光二极管(LED)是共阳极的接法,当8155的I/O口输出为低电平时对应的LED就点亮。我们只需要将初值(0x7FFF)不断地循环右移或左移那么就会看到LED轮流被点亮,也就实现了流水灯功能。在实际的操作中,我设计了几个流水模式,分别是一只灯亮,间隔两只灯亮,连续四只灯亮,间隔两组四只灯亮,连续八只灯亮和连续十二只灯亮。流水灯的几个模式实现方法都是一样的。只是初值不同而已。几种模式对应的寄存器
38、初值如下:0x7FFF;0x7F7F; 0x0FFF; 0x0F0F; 0x00FF; 0x000F。如果我们把初值设定为0x0FFF那么同一时间就会有4只LED点亮,最终的效果就是四只LED在跑。为了控制流动速度,我使用了一个定时器来设定两次移位的间隔时间。此外我还设置了正转和反转,正转和反转其实就是循环左移和循环右移的区别。图4.1 LED显示与按键扫描电路4.2 按键扫描本设计采用独立式按键接口设计。独立式按键是每个按键占用一根I/O端线。适用于按键数量较少的场合。特点:各按键相互独立,电路配置灵活;按键数量较多时,I/O端线耗费较多,电路结构繁杂;软件结构简单。1、按键开关去抖动问题键
39、盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。消除抖动不良后果的方法:软件去抖动:检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。2. 按键扫描设置8155的C口为输入模式,在没有按键按下的时候,8155接按键的几个I/O都被相应的上拉电阻拉为高电平,那么MCU读到的都是高电平;当有按键按下时,对应的I/O被接地,输入低电平,此时MCU从8155C口读到对应位为0,这些都是在按键扫描程序里面完成的,主函数中根据按键值可以设定一些控制操作。合理配合按键与状态变量还可以实现一个按键多种功能。在程序中,定义了一个16位的
40、整型变量lamp,用来存储16个LED的数据。设初值为0x7FFF,启动50MS定时器,当按下开始键后置位开始标志,每隔50MS进行循环移一位,第一次移位后 为0xBFFF,第二次移位后为0xDFFF图4.2 按键扫描流程图第五章 结 论单片机将不断的引导电子产品的创新,所以学好单片机的相关知识是十分必要的,例如单片机的组成与结构知识,单片机的指令系统,程序设计,还有相关的扩展应用知识,本设计就是一个很典型的也很简单的单片机扩展应用,此外还有接口技术等等。本文的重要研究工作与结论如下:1. 介绍了很经典的常用的MCS-51系列单片机,介绍了8051的引脚功能、存储器配置、并行输入输出电路、定时
41、计数器等。2. 介绍了并行扩展芯片8155,介绍了8155的命令状态寄存器,I/O口的工作方式,以与计数/定时器的使用。还有8051与8155的接口。3. 介绍了单片机8051与并行接口芯片8155的接口设计的应用流水灯(或叫跑马灯)。并设置了几个流水模式,让设计更显丰富。这是一个非常简单的设计,通过本设计,本人对单片机与并行接口芯片的接口设计做了一些研究工作,并作出了实物,积累了一定的经验,为以后的科研和工作打下了坚实的基础参考文献1. 南建辉,熊鸣,王军茹 MCS-51单片机原理与应用实例 清华大学 2004年3月2. 何立民 单片机原理与系统设计(系统配置与接口技术) 航空航天大学 19
42、94年3. 迎新 单片微型计算机原理、应用与接口技术 国防工业 1993年4. 粤初 单片机应用系统设计与实践 航空航天大学 1993年5. 涵芳,徐爱卿 MCS-51/96系列单片机原理与应用(修订版) 航空航天大学 2000年6. 广弟,朱月秀,冷祖祈 单片机基础(第三版) 航空航天大学 2007年毕业设计小结2009年3月,我开始了我的毕业论文工作,时至今日,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了几个月的奋战,紧而又充实的毕业设计终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我拥有了无数难忘
43、的回忆和收获。 下面来对毕设总结一下:1. 选定方案。拿到毕设题目要尽快选定系统方案,不能走一步看一步,必须把整体把握好。而我的这次毕设,反复更换了好几个方案才最终定下来做流水灯应用,这样大大浪费了时间。2. 与老师和同学交流讨论。在做设计时一定会遇到很多问题,除了要独立思考外,还应多与老师与同学交流讨论,这样不仅能加深对知识的理解而且还能拓展知识。3. 电路设计。在设计电路初期,由于没有设计经验,觉得无从下手,空有很多设计思想,却不知道应该选哪个,经过导师的指导,我的设计渐渐有了头绪,通过查阅资料,逐渐确立系统方案。4. 软件的学习。由于需要做出实物,所以一定要学习相关的作图软件。在学习软件
44、时一定要边做边学软件,下载一些软件教程的视频来看,然后边看边自己操作,千万不能拿着软件教程书从第一页开始看,这样效率太低。5. 制作实物。作工科类毕业设计最好是能做出实物,如果条件允许的话。这样可以巩固理论知识,又可以提高动手能力,正所谓实践是检验真理的唯一标准。附 录/filename:mcu_8155.c/功能:流水灯#include#include #include #define uchar unsigned char/定义uchar 为无符号字符型 8位#define uint unsigned int/定义uint为无符号整型 16位#definecount_T1_L0xB0/T1
45、定时器初值 50MS定时#definecount_T1_H0x3Cchar xdata PortA _at_ 0x7F01;/A口地址char xdata PortB _at_ 0x7F02;/B口地址char xdata PortC _at_ 0x7F03;/C口地址char xdata PortComd _at_ 0x7F00;/命令口地址uchar count_Y=0;uchar count_N=0;uintlamp=0x7FFF;bitFlag_TM=0;/T1溢出中断标志bitFlag_K=0;bitFlag_INV=0;/*/voidt1_int(void) interrupt 3 /T1溢出中断TL1=count_T1_L;/定时器初值TH1=count_T1_H;Flag_TM=1;return;/*/ucharKeyScan8155(void) /8155C口键盘扫描uchar i=0;uchar key=0;key=PortC;key=key;key&=0x07;if(key0)&(Flag_K=0)/判断是