单片机三个实验

发布时间:2020-09-23 来源: 事迹材料 点击:

  实验一构建单片机最小系统和实验环境熟悉 一、单片机最小系统的组成原理图

 、单片机的工作原理 1. 运算器 运算器包括算术逻辑运算单元 ALU、累加器 ACC、寄存器 B、暂存器 TMP、程序 状态字寄存器 PSW、十进制调整电路等。它能实现数据的算术逻辑运算、 位变量处理和 数据传送操作。

 (1)

 算术逻辑单元 ALU ALU 在控制器根据指令发出的内部信号控制下,对 8 位二进制数据进行加、减、乘、除 运算和逻辑与、或、非、异或、清零等运算。它具有很强的判跳、转移、丰富的数据传送、 提供存放中间结果以及常用数据寄存器的功能。

 MCS-51 中位处理具有位处理功能,特别适 用于实时逻辑控制。

 (2)

 累加器 ACC 累加器 ACC 是 8 位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运

 OpF Y1 "If XTAL1 ra.o/ADO XTAL2 PD.1/AD1 P0.2/AD2 P0.3/AD3 RST P0.-4/AD4 FO.^DJ P0.6/AD6 F0.7/AD7 rSEN P2 C/AS P2..1/A9 P2.3^AIO P2/VA11 ALE P2.4/A12 EA r2 5/A13 F1.(MT2 P2.6/AI4 F3JO/RXD PI 1JT2F.X PI i rrxn Pl 7 Pl^jTHTn PI .3 P33imTi Pl.4 P3.-iyT0 Pl 5/MOST P3 5m P1.6/M1SO P3.6WR P1.7JSCK P3 価

  vcc L 菊 32 JL 1 2 3 4 RES PACK S 22 23 24 25 盘 27 23 ID 11 12 1 岁 14 15 Lb 17

 1S P SDOuF iQi 12IvI JI f vce ATE 昭铝 21

 算的中间结果。MCS — 51 系列单片机中许多指令的操作数来自累加器 ACC。累加器非常繁 忙,在与外部存储器或 I/O 接口进行数据传送时,都要经过 A 来完成。

 (3)

 寄存器 B 寄存器 B 是 8 位寄存器,主要用于乘、除运算。乘法运算时, B 中存放乘数,乘法操 作后,高 8 位结果存于 B 寄存器中。除法运算时, B 中存放除数,除法操作后,余数存于 寄存器 B 中。寄存器 B 也可作为一般的寄存器用。

 (4)

 程序状态字 PSW 程序状态字是 8 位寄存器,用于指示程序运行状态信息。

 其中有些位是根据程序执行结 果由硬件自动设置的,而有些位可由用户通过指令方法设定。

 PSW 中各标志位名称及定义 如下:

 位序 D7 D6 D5 D4 D3 D2 D1 D0 位标志 CY AC F0 RS1 RS0 OV 一 P

 CY( PSW.7):进(借)位标志位,也是位处理器的位累加器 C。在加减运算中,若操作结 果的最高位有进位或有借位时, CY 由硬件自动置 1,否则清“ 0”在位操作中,CY 作为位 累加器 C 使用,参于进行位传送、位与、位或等位操作。另外某些控制转移类指令也会影 响 CY 位状态(第三章讨论)。

 AC( PSW.6):辅助进(借)位标志位。在加减运算中,当操作结果的低四位向高四位进位 或借位时此标志位由硬件自动置 1,否则清“ 0” F0( PSW.5):用户标志位,由用户通过软件设定,决定程序的执行方式。

 RS1( PSW.4),RS0( PSW.3):寄存器组选择位。用于设定当前通用寄存器组的组,其对应 关系如下:

 RS1 RS0 寄存器组 R0~R7 地址 0 0 组 0 00~07H 0 1 组 1 08~0FH 1 0 组 2 10~17H 1 1 组 3 18~1FH

 OV( PSW.2):溢出标志位。它反映运算结果是否溢出,溢出时 OV=1 ;否则 OV=0 。

 OV 可作为条件转移指令中的条件。

 PSW.1 :未定义位。

 P ( PSW.1):奇偶标志位。P=1,表示 ACC 中 1 的个数为奇数;否则 P=0 。

 P 也可以作为条 件转移指令中的条件。

 2. 控制器 控制器包括定时控制逻辑 (时钟电路、复位电路),指令寄存器,指令译码器程序计数 器 PC,堆栈指针 SP,数据指针寄存器 DPTR 以及信息传送控制部件等。

 (1 )时钟电路 MCS — 51 系列单片机芯片内部有一个高增益反相放大器,输入端为 XTAL1,输出端为 XTAL2,一般在 XTAL1 与 XTAL2 之间接石英晶体振荡器和微调电容,从而构成一个稳定 的自激振荡器,就是单片机的内部时钟电路,如图( A)所示。时钟电路产生的振荡脉冲经 过二分频以后,才成为单片机的时钟信号。电容 C1 和 C2 为微调电容,可起频率稳定、微 调作用,一般取值在 5?30pf 之间,常取 30pf。晶振的频率范围是 1.2MHz~12MHz ,典型 值取 6 MHz。XTAL1 接地,XTAL2 接外部震荡器,外接信号应是高电平持续时间大于 20ns 的方波,且脉冲频率应低于 12 MHZ。如图(B)所示。

  韻?TL

 KTAL1 V5S 国 AP WD5L 外部时钟源接法 (2 )复位电路 对于使用 (A)内部时钟电路 (B)外部振荡源 12MHZ 的晶振的单片机,复位信号持续时间应超过 4 卩 s 才能完成复位操作。

 产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。

 上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在 RST 引脚上加了一个高电平完成复位操作。上电自动复位电路如图( 按键手动复位电路。

 按键手动复位是通过按键实现人为的复位操作, (b)所示。

 a)所示。

 按键手动复位电路如图 8051 UTACCl ±

 复位后内部暂存器的状态如下: PC 0000H TCON 00H ACC 00H TL0 00H PSW 00H TH0 00H SP 07H TL1 00H DPTR 0000H TH1 00H P0~P3 FFH SCON 00H IP XX 000000B SBUF 不定 IE 0 X 000000B PCON 0 XXX 0000B TMOD 00H

  (3)指令寄存器和指令译码器

  指令寄存器中存放指令代码, CPU 执行指令时,由程序存储器中读取的指令代码送入 指令存储器,经译码器后由定时与控制电路发出相应的控制信号,完成指令所指定的操作。

 4•程序计数器 PC PC 是一个 16 位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。

 PC 具有自动加 1 的功能,从而实现程序的顺序执行。由于 PC 不可寻址的,因此用户无法对它 直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。

 PC 的寻址范围为 64KB,即地址空间为 0000?0FFFFH。

 (4)堆栈指针 SP SP 为 8 位寄存器,用于指示栈顶单元地址。所谓堆栈是一种数据结构,它只允许在其 一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈( PUSH ),数据读出堆 栈叫出栈(POP)。堆栈的最大特点是“后进先出”的数据操作原则。

 MCS-51 系统复位后, SP 初始化为 07H。

 VCC S051 1 1

 22UF -r-

  RST ° n

 1 U

 (5) 数据指针 DPTR 数据指针 DPTR 为 16 位寄存器,它是 MCS—51 中唯一的一个 16 位寄存器。编程时, 既可按 16 位寄存器使用,也可作为两个 8 位寄存器分开使用。

 DPH 为 DPTR 的高八位寄 存器, DPL 为 DPTR 的低八位寄存器。

 DPTR 通常在访问外部数据存储器时作为地址指针 使用,寻址范围为 64KB 。

 三、实验小结 单片机系统电路的基本模块有:复位电路,晶振电路,上拉电阻,下载口等主要模块。

 其中 P0 口作为输出使用必须对单片机的 I/O 口,因为 P0 为集电极开路,可以提高其功率和 电平转换。在单片机最小系统的构建中, EA 脚拉高是非常必要的,它可以影响单片机的正 常工作。

 在检测单片机是否正常工作, 可以通过检测晶振两端的信号的波形形状。

 在单片机 正常工作条件下, 其信号为正弦波。

 经过一周的时间基本完成单片机最小系统板的焊接部分 和单片机的工作原理, 以及对单片机外围电路的焊接, 知道了硬件部分的重要性, 单片机最 小系统板的焊接最主要是晶振部分的焊接, 它为单片机提供了做工作的频率, 是单片机的心 脏。

 实验二跑马灯实验及 74HC138 译码器 一、实验原理 1、跑马灯 (1) 参考实验原理图如下:

 (跑马灯原理图) (2) 工作原理 给单片机的端口赋初值,点亮第一个 LED,然后延时一段时间后,点亮下一个 LED 依 次循环下去。形成动态闪亮的效果。

 2、138 译码器电路 74LS138 译码器: 4P0IP. S01CJ TOP 妝 YO tT«i ¥1 (VI) vi 讯\ Y3 (T5) Y4 冋

 图 8 74LS138 译码器芯片图 74LS138 为 3 线—8 线译码器,共有 54/74S138 和 54/74LS138 两种线路 X— XTAL1 XTAL2 RST PSEN ALE EA R2 510 D2 R3 510 D3 R4 D4 R6 510 R7 510 P1 0/T2 P1 1/T2EX P1 2 P1 3 P1 4 P1 5 P1 6 P1 7

 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 3 37 3药3 33 3右22 3 24 3 26 3 28一 W D8 □Nnnan 7 R5 8 510 510 510 D5 D6 D7 AT89C52 R8

 结构型式。其工作原理如下:

 (1) 当一个选通端 E1 为高电平,另两个选通端 E2 和 E3 为低电平时,可将地址

 端 A0 A1、A2 的二进制编码在 Y0 至 Y7 对应的输出端以低电平译出。比如:

 A0A1A2=110 寸,贝 U Y6 输出端输出低电平信号。

 (2) 利用 E1、E2 和 E3 可级联扩展成 24 线译码器;若外接一个反相器还可级 联扩展成 32 线译码器。

 (3)

 若将选通端中的一个作为数据输入端时, 74LS138 还可作数据分配器。

 (4) 可用在 8086 的译码电路中,扩展内存。

 (1) 参考实验原理图如下:

 U1

 (2) 工作原理 根据 138 译码器的工作原理,当 G1G2AG2B=111 时,译码器工作,根据 74LS138 的 3 个译码信号 A、B、C 来选择 Y0、Y1、Y2、Y3、Y4、Y5、Y6 作为输出,各输出为低电平 时,当共阳极的 LED 灯节高电平时,就会使相应的灯亮。

 A、B、C 三个信号由单片机的 P1.0、P1.1 和 P1.2 来提供,而 P1.0、P1.1 和 P1.2 的值是通过汇编程序设置初始值后,然后 根据P1.0、P1.1 和 P1.2 的值加 1 和循环来时 8 各 LED 灯循环点亮。

 19 18 b XTAL1 XTAL2 RST

  1 510

 510 PSEN ALE EA P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 PO.O/ADO P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 ----- 38 —37 —36 —35 34 ----- 33 —32 21 —22 —23 ----- 24 —25 26 27 28 10 11 AT89C52 R3 510 R4 510 R5 510 R6 D4 -BLUE D5 -BLUE D7 -BLUE 510 R7 R8 LED-BLUE ABC

 12 3 EEE

 0 1 2 3 4 5 6 7 YYYYYYYY

 -匸

 151413

 一12 1315 16

 二、软件流程图 1、138 译码器程序流程图:

  三、源程序代码 1、跑马灯实验代码:

 #include<reg52.h> //定义 8052 寄存器的头文件 #include<intrins.h> //包含 _cror_()的头文件 #define uint unsigned int //宏定义 #defi ne uchar un sig ned char void delay(ui nt n) // 延时子程序 { uchar i; while( n--) for(i=0;i<255;i++); } void mai n() { uchar i;

 while(1) { for(i=0;i<8;i++) //左右循环点亮 P1=i; delay(300); //调用延时函数 }

 四、实验调试:

 将硬件电路焊制完成后, 连接好电路, 仔细检查无错误后, 我们将流水灯程 序下载至 STC89C52 单片机中,看到八个灯按顺序依次循环点亮。但在焊制的过 程中由于八个 LED 灯是按共阳极接法连入电路中,所以可以只焊一个 470 Q 的上 拉电阻,此处上拉电阻的选择规则如下:由于点亮 LED 需要大约 7~11mA 勺电流, 而电源供电为 5V,所以由欧姆定律可知上拉电阻为 714~454 Q, 此处选择 470 Q 。

 实验中的接线是非常重要的, 在接线之前一定要用万用表检测线的好坏否则实验 是很难成功的!

 实验三 8255 控制交通灯实验 一、 实验原理 1、交通灯原理 交通灯的变化规律是:先假定一个十字路口为东南西北走向交通灯的初始状态为状态 1,东西方向绿灯通车,南北方向红灯。经过过一段时间( 3S)转换状态 2,东西方向黄灯 闪亮,延时 2S,南北方向仍然红灯。再转换到状态 3,东西方向红灯通车,南北方向绿灯。

 过一段时间(3S)转换到状态 4,南北方向黄灯闪亮,延时 2S,东西方向仍然红灯。最后循 环至南北红灯,东西绿灯。

 实验原理参考图:

 2、8255 芯片工作原理:

 8255A 是一个 40 引脚的双列直插式集成电路芯片。按功能可把 8255A 分为 三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路 。

 (1)

 口电路 8255A 共有三个 8 位口,其中 A 口和 B 口是单纯的数据口,供数据 I/O 使用。

 而C 口则既可以作数据口,又可以作控制口使用,用于实现 A 口和 B 口的控制功 能。数据传送中 A 口所需的控制信号由 C 口高位部分(PCT- PC4 提供,因此把 A 口和 C口高位部分合在一起称之为 A 组;同样理由把 B 口和 C 口低位部分(PC4 PC0 合在一起称之为 B 组。

 (2)总线接口电路 C1 C2 CRYSTAL F 8

 R1 1k U1 XTAL1 XTAL2 PSEN ALE EA P1 P1 P1 P1 0/T2 1/T2EX 2 3 RP1 RESPACK-8 U2 P1 P1 P1 P1 AT89C52 P0.0/AD0 P0.1/AD1 P0.2/AD2 D0 D1 D2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PBO PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 LED-YELLOW D10 d0 d2 d3 40 d4 39 d5 38 + D1 -RED D8 29 30— 31— 20UF RST 3 4 5 6 7 8 9 1 2 39 34 P2.0/A8 RD RESET CS P3.7/RD P2.1/A9 P2.2/A10 P2.3/A11 P3.4/T0 P3.5/T1 P3.6/WR WR A0 A1 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 D3 D4 D5 D6 D7 8255A 3 LED- D-GREEN d4 d4 D D-YELL d3 LED-GREEN 4 ED-RED LED-RED

 总线接口电路用于实现 8255A 和单片微机的信号连接。其中包括:数据总线 缓冲器和读/写控制逻辑,数据总线缓冲器为 8 位双向三态缓冲器,可直接和 80C51 的数据线相连,与 I/O 操作有关的数据、控制字和状态信息都是通过该缓 冲器进行传送。与读写有关的控制信号有 CS 为片选信号(低电平有效),RD 为读信号(低电平有效),WF 为写信号(低电 平有效)

 , AO、A1 为端口选择信号。8255A 共有四个可寻址的端口(即 A 口、B 口、C 口和控制寄存器),用二位地址编码即可实现选择。参见下表。

 CS A1

 A0

 RD WR. 所选端口 操啣 | 0 0

 0

 0

 1 A 口 读端口 A

 0 0

 1

 0

 1 B 口 :读端口 B

 0

 1

 0

 0

 1 C 口 读端口 C

 0

 0

 0 1 0

 A 口 写端口 A

 0 0 1 1

 0 B 口 :写端 E B

 0 1 0 1

 0 C 口 写端口 c

 0 1

 1

 1 0 控制寄存器 写控制字 1 X X X 冥 /

 簸据总线缓冲器输出高阻抗 读写端口表 RESE—复位信号(高电平有效)。复位之后,控制寄存器清除,各端口 被置为输入方式。

 读写控制逻辑用于实现 8255A 的硬件管理:芯片的选择,口的寻址以及 规定各端口和单片微机之间的数据传送方向。

 (3)控制逻辑电路 控制逻辑电路包括 A 组控制和 B 组控制,合在一起构成 8 位控制寄存器。

 用于存放各口的工作方式控制字 8255A 工作方式及数据 I/O 操作 (1)8255A 的工作方式(实验用方式 0)

 方式 0 基本输入/输出方式 方式 0 下,可供使用的是两个 8 位口( A 口和 B 口)及两个 4 位口( C 口高 4 位部分和低 4 位部分)。四个口可以是输入和输出的任何组合 方式 0 适用于无条件数据传送,也可以把 C 口的某一位作为状态位,实现查 询方式的数据传送。

 (2) 数据输入操作 用于输入操作的联络信号有:

 STB(StroBe)—选通脉冲,输入,低电平有效。

 当外设送来 STB 信号时,输 入数据装入 8255A 的锁存器。

 IBF(Input Buffer Full) —输入缓冲器满信号,输出,高电平有效。

 IBF 信号有效,表明数据已装入锁存器,因此它是一个状态信号。

 INTR(INTerrupt Request) —中断请求信号,高电平有效,当 IBF 数据输入 过程:当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。然后 IBF 信号有效。如使用查询方式,则 IBF 即作为状态信号供查询使用;如使 用中断方式,当信号由低变高时,产生 INTR 信号,向单片微机发出中断。

 单片微机在响应中断后执行中断服务程序时读入数据, 并使 INTR 信号变低, 同时也使 IBF 信号同时变低。以通知外设准备下一次数据输入。

 (3) 数据输出操作 用于数据输出操作的联络信号有:

 ACK(ACKnowledge—) 外设响应信号输入,低电平有效。

 当外设取走输出数据,并处理完毕后向单片微机发回的响应信号为高,信号 由低变高 (后沿)时,中断请求信号有效。向单片微机发出中断请求。

 OBF(Output Buffer Full )——输出缓冲器满信号,输出,低电平有 效。

 当单片微机把输出数据写入 8255A 锁存器后,该信号有效,并送去启动 外设以接收数据。

 INTR-中断请求信号,输出,高电平有效。

 数据输出过程:外设接收并处理完一组数据后,发回 ACK 信号。该信号使 OBF 变高,表明输出缓冲器已空。如使用查询方式,则 OBF 可作为状态信号供 查询使用;如使用中断方式,则当 ACK 信号结束时,INTR 有效,向单片微机 发出中断请求。在中断服务过程中,把下一个输出数据写入 8255A 的输出缓冲 器。写入后 OBF 有效,表明输出数据已到,并以此信号启动外设工作,取走并

 处理 8255A 中的输出数据。8255A C 口联络信号定义: C 口廳 方式 1 方式 2 献 输出 献 输出 PCj

  OBFA

  OBFA

 ACKA

 ACKA

 IBFA

 IBFA

  STBA

  STBA

  PCs

 INTRA

 INTRA

 INTRA

 INTRA

 PCs

 预 ACKB

 PCi

 IBFT ®FB

 卩必 INTRB INTO

  三、实验源程序代码 #include<reg52.h> /定义 8052 单片机寄存器的头文件 #include<absacc.h>/绝对地址处理头文件,包含 XBYTE,用 XBYTE 来定义扩展 的 I/O 端口和外部 RAM 单元地址 #define uint unsigned int //宏定义 软件流程图 初姑化,南北红灯 團弓磴 I: 灼亮*东 西黄灯囚体

 #define uchar unsigned char #define CON XBYTE[0xffff] // 定义 8255 控制字寄存器端口 #define PA XBYTE[0xfcff] //定义 8255 端口 PA 地址 void delay(uint z); // 延时 void main() {

 uint i=0; CON=0x80;〃写方式控制字,方式 0,基本输入输出 PA=0xff; while(1) {

 PA=0x1e;/冻西绿灯,南北红灯 delay(1000);/延时 for(i=3;i>0;i--)// 黄灯闪烁三次 {

 PA=0x2e; delay(100); PA=0x3e; delay(100); }

 PA=0x33;〃东西红灯,南北绿灯 delay(1000); for(i=3;i>0;i--)// 黄灯闪烁三次 {

 PA=0x35; delay(100); PA=0x37; delay(100); }

 void delay(uint z) //延时子程序 {

 uint x,y; for(x=z;x>0;x--) for(y=500;y>0;y--);

 }

相关热词搜索:单片机 实验

版权所有 蒲公英文摘 www.zhaoqt.net