1、桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 1 页 共 19 页 1桂 林 电 子 科 技 大 学单片机最小应用系统设计报告指导老师:吴 兆 华桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 2 页 共 19 页 2学 生: 王 竣 民机电工程学院单片机最小应用系统设计报告目录一、设计题目 3二、设计内容与要求 3三、设计目的意义 3四、系统硬件电路图 3五、程序流程图与源程序 55.1 流程图 .55.2 源程序 .55.2.1 程序设计思想 .55.2.2 源程序清单 .5六、系统功能分析与说明 66.1 系统主要组成部分 .66.1.1 单片机最小系统部分 66.
2、1.2 可编程的并行接口芯片 8255A.76.1.3 输入输出部分 76.2 可编程的并行接口 8255A 接口电路部分 86.2.1 8255A 的引脚 .86.2.2 8255A 的内部结构 .96.2.3 8255A 的工作方式 .106.2.4 8255A 的控制字 .126.3 开关状态的读入与显示部分 14桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 3 页 共 19 页 36.4 指示灯显示部分 146.5 电路板的制作 146.5.1 PCB 图的制作 .156.5.2 电路板的腐蚀、钻孔和元器件的焊接 166.6 系统连线说明分析 16七、设计体会 17八、参考
3、文献 18一、设计题目可编程的并行接口芯片 8255A 控制继电器实现开关状态显示控制。采用 AT89S51单片机读取外部(8255 的 A 口)的开关信号并将相应的信号通过 8255 的 B 口用 LED 显示出来端口。二、设计内容与要求用 8051 单片机和 8255 读取开关状态并显示开关状态。用 8255 的 A 口接 8 个开关,B 口接 8 个发光二极管,读取开关状态后,将状态通过 8 个发光二极管显示出来。三、设计目的意义1、掌握单片机扩展外部数据存储器的方法。2、掌握可编程的并行接口芯片 8255A 与单片机的硬件接口电路、8255A 内部结构及其编程方法。3、掌握单片机的最小
4、系统的设计。4、掌握电路板的设计与制作。 。5、了解程序编写与调试的方法和技巧。6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 4 页 共 19 页 4四、系统硬件电路图系统硬件图(图 1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号) 、外部扩展芯片 8255A 部分、外电路接通显示部分、及电源显示部分。设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到 51 中,等可以达到预期要求后,最后在 PROTEL 中设计原理图与 PCB,做出电路板。桂 林 电 子 科 技 大 学
5、 设 计 报 告 用 纸第 5 页 共 19 页 5图 1 系统硬件图桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 6 页 共 19 页 6五、程序流程图与源程序5.1 流程图5.2 源程序5.2.1 程序设计思想单片机通入电源后,一直让单片机对 8255 的 A 口进行采集,将 8255 的 A 口的开关信号送入 8255 的 B 口,原因是 8255 的 B 口要时时显示开关的通与段的状态。5.2.2 源程序清单#include#include#define uchar unsigned char#define uint unsigned int桂 林 电 子 科 技 大 学
6、设 计 报 告 用 纸第 7 页 共 19 页 7#define COM8255 XBYTE0x0300 /*命令口地址 */#define PA8255 XBYTE0x0000 /*口 A*/#define PB8255 XBYTE0x0100 /*口 B*/void delay200ms(void) /*延时函数 */ unsigned char i,j,k; for(i=5;i0;i-) for(j=132;j0;j-) for(k=150;k0;k-);void delay1s(void) unsigned char i,j,k; for(i=10;i0;i-) for(j=132;j
7、0;j-) for(k=150;k0;k-);void main(void) /*主函数 */uchar m;delay200ms();COM8255=0x90; /*确定 A,B 口工作方式,A 口输入,B 口输出*/while(1)delay200ms();m=PA8255; /*单片机读入 8255 A 口开关信号*/P1=m; /*中间信号,便于调试*/PB8255=m; /*将读入信号显示到 8255 B 口的 LED 上*/ 六、系统功能分析与说明6.1 系统主要组成部分6.1.1 单片机最小系统部分(1)单片机的最小系统部分包括晶振电路、复位电路、主电源引脚 Vss 和 Vcc、
8、控制引脚/EA。(2)晶振电路为单片机正常工作时提供的时钟信号,由两个 30pf 的无极性电容桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 8 页 共 19 页 8和晶体压电瓷片组成外部振荡电路,把单片机的 XTAL1(19)和 XTAL2(18)分别接到外晶体的两端,使电容的另外一端接地就完成了单片机的晶振电路部分的设计,硬件图见图 2 晶振电路所示。(3)复位电路,当振荡器正常工作时,在单片机的复位引脚(9)连续保持出现两个机器周期以上的高电平时,就会使单片机复位。AT89S51 单片机复位电路主要有上电复手动复位和自动复位两种,在本次试验中我采用手动复位。按键手动复位的工作原
9、理是:当按下按键时,电源对外接电容进行充电,使 RST 端为高电平,复位键松开后,电容通过内部下拉电阻放电,逐渐使 RST 端恢复低电平。具体电路见图 2 复位电路。图 2 手动复位电路主电源引脚 Vss(20)接地,Vcc(40)正常操作时接+5V 电源。控制引脚/EA(31) ,当/EA 保持高电平时,访问内部程序存储器(4KB) ,当 PC 值超过 0FFFH 时,将自动转向执行外部程序存储器中的程序。当/EA 接低电平时,则只访问外部程序存储器(从 0000H 开始) ,不管单片机内部是否有程序存储器。本系统采用第一种接法,直接将/EA 端接高电平。6.1.2 可编程的并行接口芯片 8
10、255A(此部分见 5.2 可编程的并行接口 8255A 接口电路部分)6.1.3 输入输出部分桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 9 页 共 19 页 9本系统采用 P0 口作为和 8255A 的数据总线接口;用 P2.0 和 P2.0 口分别和 8255A的地址选通信号端 A1 和 A0 口相连,作为地址总线,直接将单片机的/WR(16)和/RD(17)及 RST(9)与 8255A 的/WR(36)和/RD(5)及 REST(35)相连作为控制总线。单片机的 P0 口是 8 位的双向三态输入/输出接口。它既可以作为地址/数据总线使用,又可以作为通用的 I/O 口使用
11、。当连接外部存储器时,P0 口一方面作为 8 位数据输入/输出口,另一方面用来输出外部存储器的低 8 位地址,作为输出口时,输出漏极开路,驱动 NMOS 电路时应该接上拉电阻;作为输入口之前,应先向锁存器中写“1” ,使输出的两个场效应管均关闭,引脚处于浮空状态,这样高阻输入,以保证读取引脚信号而不是读锁存器状态。当 P0 口作为地址/数据总线时,就不能再把它作为通用的I/O 口使用了。由于本系统正是采用 P0 口作为数据总线使用,所以就不能把 P0 口作为通用的 I/O 口了。6.2 可编程的并行接口 8255A 接口电路部分 6.2.1 8255A 的引脚图 3 8255 引脚图8255A
12、 具有 40 个引脚,采用双列直插封装形式,其引脚图如图 3 所示,各引脚的功能如下:D7D0:三态双向数据引脚,与单片机的数据总线相连,用于 CPU 与各 I/O 之间的数据传输;桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 10 页 共 19 页 10PA7PA0:A 口输入/输出引脚;PB7PB0:B 口输入/输出引脚;PC7PC0:C 口输入/输出引脚;/CS:片选信号线,低电平有效,表示芯片被选中;/RD:读信号线,低电平有效,控制数据读出;/WR:写信号线,低电平有效,控制书局写入;RESET:复位信号线,高电平有效;A1、A0:地址线,输入三个端口和控制寄存器的地址。
13、6.2.2 8255A 的内部结构8255A 由 3 个数据输入/输出端口、二个工作方式控制电路、一个读/写控制逻辑电路和一个总线数据缓冲器组成,其内部结构如图 4 所示。图 4 8255 内部结构(1)端口 A、B、C桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 11 页 共 19 页 11A 口:具有 8 位数据输出锁存/缓冲器和一个 8 位数据输入锁存器;B 口:具有一个 8 位数据输入/输出锁存/缓冲器和一个 8 位数据输入缓冲器;C 口:具有一个 8 位数据输出锁存/缓冲器和一个 8 位数据输入缓冲器(不锁存) ;三个端口中 A 口和 B 口总是作为数据输入/输出端口,C
14、 口有时控制信号和状态信号的输入/输出端口。(2)工作方式控制电路工作方式控制电路由两个,即 A 组控制电路和 B 组控制电路,分别控制 A 口和 C口上半部、B 口和 C 口下半部。工作方式控制电路根据控制字寄存器的内容控制 A 组和 B 组的工作方式,也可根据控制字寄存器的内容对 C 口按位进行操作。(3)总线数据缓冲器总线数据缓冲器是一个三态双向 8 位缓冲器。它的一端作为 8255A 与单片机的数据总线的接口,另一端与 A 口、B 口、C 口和控制字寄存器相连,作为单片机与 I/O 口和控制字寄存器之间的数据缓冲器。读/写控制逻辑电路读/写控制逻辑电路输入的控制信号由/RD、/WR、R
15、ESET 和 A1、A0。它根据这些信号控制 I/O 口及控制寄存器的读/写操作。其中地址线 A1、A0 用来选择 I/O 口和控制寄存器,与读/写控制信号/RD 和/WR 构成各种工作状态,如表 1-1 所示。表 1 8255 端口读/写操作表A1 A0 /RD /WR /CS 工作状态0 00 11 00 1 00 1 00 1 0A 口数据数据总线B 口数据数据总线C 口数据数据总线0 00 11 01 11 0 01 0 01 0 01 0 0总线数据A 口总线数据B 口总线数据C 口总线数据控制字寄存器 1 1 10 1 01 1 0数据总线三态非法状态数据总线三态6.2.3 825
16、5A 的工作方式桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 12 页 共 19 页 128255A 有 3 种工作方式,即工作方式 0、工作方式 1 和工作方式 2.。(1)工作方式 0工作方式 0 为基本输入/输出方式,其功能概括如下:具有二个 8 位端口(A 口、B 口)和二个 4 位端口(C 口的上、下半部分) ;任意一个端口都可以设定为输入或输出,各端口的输入/输出状态可构成 16 种 组合;数据输出全部锁存,输入不锁存。在工作方式 0 状态下,A 口、B 口、和 C 口都作为 I/O 端口,没有设置控制/状态信号时,单片机可以通过访问外部数据存储器指令,对任一端进行读/
17、写操作。本系统要求 CPU 读取外部输入的开关信号,判断是哪一位的按键信号,然后,通过 8255A 的PB0、PB1 端口输出,直接采用方式 1 无条件输入输出方式。(2)工作方式 1:选通输入输出方式端口 A 和端口 B 可以设置为这种工作方式,可以是选通的输入方式,或者是选通的输出方式。当 A 口或 B 口设置为方式 1 时,由端口 C 的某些位固定地为端口 A 或端口 B 提供联络信号或者状态信号,其中包括专门用于中断请求的信号,以便于 8255A和外设之间,或者是 8255A 和 CPU 之间传送状态信息以及中断请求信号。这种联络信号是由 8255A 内部规定的,不是由使用者指定的。方
18、式 1 可以使用在查询方式的数据传送和中断方式的数据传送中。(3)工作方式 2:双向方式只有端口 A 可以选择这种方式,这时,端口 A 既可以输入也可以作为输出。当然,这种双向的数据传送也不是同时进行,但可以是在这个时刻输入操作,在下一个时刻进行输出操作,而不需要对传送的方向重新设置。端口 A 工作方式 2 时,仍然默认为时选通的输入/输出方式,即在 C 口种规定了输入和输出的状态信息,这些状态信息的位置和 A 口 工作在方式 1 时基本相同。如果这时端口 A 要按无条件传送方式来使用,C 口的这些位仍然是保留作为状态位。但是这时的端口 A 并没有全部占用端口 C 的状态联络线,端口 B 在方
19、式 1 时所需要的状态联络线仍然可以被 B 口所使用,所以,端口 B 此时可以设置为方式 1,也可以设置为方式 0。端口 C 可在选择方式 1 或方式 2 工作的情况下作为联络信号使用,其联络信号分布情况见表 2,其中空白的位置表示这些位此时没有用于联络线,仍然还可以用于一般的输入/输出操作。各种联络信号的含义如下:表 2 8255A 方式 1 和方式 2 时 C 口的联络信号方式 1 方式 2C 口的位输入 输出 输入 输出桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 13 页 共 19 页 13PC7 /OBFA /OBFAPC6 /ACKA /ACKAPC5 IBFA IBF
20、APC4 /STBA /STBAPC3 INTRA INTRA INTRA INTRAPC2 /STBB /ACKBPC1 IBFB /OBFBPC0 INTRB INTRB用于输入的联络信号的意义:/STB8:选通脉冲输入,低电平有效。当外设送来/STB 信号时,输入数据装入8255 的锁存器。IBF:输入缓冲器满,高电平有效,输出信号。IBF=1 时,表示数据已经装入锁存器,可作为状态信号。INTR:中断请求信号,高电平有效,是在 IBF 为高时变为有效,用来向 CPU 申请中断。/OBF:输出,低电平有效,输出缓冲器满信号。当 CPU 把一数据写入 8255A 锁存器后有效,可用来通知外
21、设开始接受信号。/ACK:输入,低电平有效,外设响应信号。当外设取走并已经处理完 8255A 的数据后发出响应信号。如果需要,可以通过软件使 C 口对应于/STB 或/OBF 的相应位的置位/复位,来实现 8255A 对外联络信号的置位和复位。6.2.4 8255A 的控制字8255A 作为可编程器件,其工作方式通过软件来选择,并且对于 C 端口也可以通过软件对其中的每一位进行置位或复位,以便更好地实现控制功能,共用到两种控制字:(1)工作方式控制字8255A 的三个端口工作于什么方式,使输入还是输出,都由工作方式字来控制。8255A 工作方式的格式见图 5 所示。其中 D7=1 是方式控制字
22、的特征位。在方式 1 和方式 2 工作时,对 C 口的定义都不影响作为联络信号使用的各位的功能,但未作为联络信号使用的位仍可以用于工作方式控制字中的 D0 或 D3 口来定义。桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 14 页 共 19 页 14图 5 8255 方式控制字的各位定义(2)端口 C 置位复位控制字C 口的各可以通过控制字来使之置位或复位,以实现某些控制功能。控制字的格式见图 6 所示。D7=0 时控制字的特征位。每次只能对 C 口中的一位置位或复位。这两个控制字都应该写入 8255A 的控制寄存器(A1A0=11),由于两个控制字各有自己的特征标志(D7 为 1
23、 或为 0) ,因此它们写入控制字的顺序可以任意,并且可以在需要的时候,随时对 C 口的位置位或复位图 6 端口 C 按位置位/复位控制字桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 15 页 共 19 页 156.3 开关状态的读入与显示部分6.3.1 硬件电路图(见图 7 所示)图 7 驱动电路图6.4 指示灯显示部分输入信号由 8 个开关提供,信号的输出采用 8 个发光二极管显示,相应的信号灯对应相应的开关,用共阴极的连接方法,输入高电平导通。电源上电显示部分用一个 1K 的电阻串联一个发光二极管来显示,灯亮表示有电,反之,则电路板没电。6.5 电路板的制作6.5.1 PCB
24、 图的制作桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 16 页 共 19 页 16采用了 PROTEL DXP 电路绘图软件进行原理图和 PCB 图的制作,首先,安装此软件,安装完成后,打开该软件,新建工程(DOCUMENT)文件,而以后所建立的原理图文件(*.SCH) 、PCB 文件(*.PCB)及生成的网路文件(*.NET)都在此工程内。建立原理图文件时,首先,调用库文件中常用的元器件库文件(MISCELLANEOUS DEVICES.LIB)可以调入常用的电阻、电容、开关、晶振、继电器等常用的电器元件,通过 ADD/REMOVE按钮可以调入库文件(以 INTEL 为开头的库
25、文件 ) ,从而调入 8255A 和 80S51 芯片以及其它电子元件。原理图建立后,再生成网路图,这一步骤只要通过 DESIGN-CREATE NETLISTS 即可生成网络图。建立 PCB 图,首先应按照原理图的要求认真准确地填好每一个电器元件的封装,系统没有封装的,必须根据实物画出特别元件的封装,而且,注意元器件的管脚号必须与封装的管脚号相同(比如说,三极管发元器件的管脚是 B、E、C,而封装库中的管脚却是 1、2、3,必须改变其中之一,使两者一致) ,否则出错,生成的 PCB 图不正确。通过检查 PCB 图,如果没有元器件丢失、管脚丢失和网络连接正确便可以合理地布线,最终生成和覆铜板尺
26、寸一致的 PCB 图。最终生成的 PCB 图如图 9 所示。桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 17 页 共 19 页 17图 9 PCB 电路图6.5.2 电路板的腐蚀、钻孔和元器件的焊接将生成好的 PCB 图,用电熨斗印刷在基板上,再用 FECL3 进行腐蚀、钻孔、焊接相对应的元器件。便完成了电路板的制作。 6.6 系统连线说明分析根据题目要求实现 8255 的 A 口读入开关信号,8255 的 B 口显示信号,电路相对简单,所以 8255A 采用了工作方式 0 无条件的输入和输出方式,直接将单片机的相关信号线和 8255A 的对应端相对接即可完成片外芯片的扩展。现在
27、再简要说明一下数据总线、控制总线和地址总线的建立情况。数据总线。将单片机的 P0 口的 8 个引脚分别和 8255A 的 8 个地址总线接口 D0 口到 D7 口相连。地址总线。将单片机的 P2.1 口和 P2.0 口分别和 8255A 的 A1 和 A0 相连,即可。/CS(片选信号)联结到 P2.2,这时只要通过改变 P2.1 和 P2.2 口的值,即可改变输出地桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 18 页 共 19 页 18址,从而向 8255A 控制字端口写控制字,或者选择 PA 和 PB 进行输入和输出控制。控制总线。只要将单片机的/WR 和/RD 的引脚分别和
28、 8255A 的/WR 和/RD 相连接,RST 端口和 8255A 的 REST 端口相连接,即可完成控制总线的建立。CPU 会根据不同的指令识别,进行控制读/写信号的选通。由于 8255A 复位时,各个端口自动保持方式 0的工作方式,必须重新写入控制字信息和各个端口的工作方式,查阅相关资料,了解到 8255 的复位时间比 51 的复位时间略长,所以在同时给两个芯片复位后,经一段延时后再向 8255 写入控制字等数据。七、设计体会1、通过此次单片机最小系统的应用开发,增加了我对电路控制专业的兴趣,尤其是通过单片机进行自动控制方面,在设计及单片机最小系统中,我既掌握了新知识(主要是 8255A
29、 可编程的并行口芯片的应用) ,又加深了对所学过的知识认识(主要是编程指令的灵活应用、单片机最小系统的理解和 PROTEL DXP 软件的灵活使用) ,还提高了自己的分析问题和解决问题的能力和方法(主要是在调试程序时 8255A 的控制上) ,最后提高了动手能力(主要是在电路板的制作上面) ,尤为可贵的是学会了查阅相关的资料,并进行独立的原理图设计,电路板的制作和程序的独立调整,以及出现问题时候,独立思考分析解决问题的能力。虽然很辛苦,但是最终能够达到设计课题的要求。2、本次设计突破的核心是 8255A 的控制部分。因为 8255A 在单片机复位的时候,始终保持高电平,就把 8255A 的控制
30、字及三个端口限制在无条件输入输出方式和各个端口均高电平状态,这样就不能从 CPU 正确地读取信号和进行传输数据,作者在通过逐路检查自制的电路板的各个电路接线后(主要通过发光二极管的亮灭情况和万用表检测相关电路的通断情况)并和试验台的电路板的相关电路的比较而发现问题在于复位电路由差异,通过分析修改自制的电路板复位电路部分(由上电自动复位改为按键手动复位方式)后,经过再次调试程序,发现控制很可靠。3、初步学会了独立设计电路图的能力。我首先在图书馆查找并综合与课题相关的资料(开关量控制与 8255A 的应用) ,在头脑中形成一个感性的认识,并渐渐地用所学过的单片机指令(主要是汇编语言)编程,然后再借
31、助试验台,将自己编好的程序一步一步地调试出来,用能够成功程序所需要的硬件电路来返回来设计自己的电路板。初步养成了自己独立解决问题的方法与能力。桂 林 电 子 科 技 大 学 设 计 报 告 用 纸第 19 页 共 19 页 19八、参考文献1 陈光东 赵性初 单片微型计算机原理与接口技术.武汉:华中理工大学出版社,1993.22 马家辰 孙玉德 张颖.MCS-51 单片机原理及接口技术M.哈尔滨:哈尔滨工业大学出版社,2001.3 马光.单片机原理及应用M.北京:机械工业出版社,2006.4 黎文模.Protel DXP 电路设计与实例精解M.北京:人民邮电出版社,2006.5 秦曾煌 电工学M.北京:高等教育出版社,1999.6 赵景波 王劲松 滕敦朋 Protel 2004 电路设计从基础到实践北京:电子工业出版社,2007