单片机实训报告
- 格式:doc
- 大小:1.67 MB
- 文档页数:23
Hefei University《单片机原理及接口技术》课程设计报告专业及班级:09自动化()班姓名:学号:授课教师:完成时间:2012年5月27日单片机原理及接口技术课程设计报告摘要单片机是单片微型计算机(Single Chip Microcomputer MCU)的简称,是指在一块芯片体上集成了中央处理器CPU,随机储存器RAM,程序存储器ROM或EPROM,定时器/计数器、中断控制器以及串行并行I/O接口等部件。
单片机在工控,嵌入式,智能民用品等各个领域内应用极为广泛。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
实训分别以构建单片机最小系统板,74HC138流水灯,8255交通灯,8253方波,继电器控制电机等几个实验展开。
以下就分别介绍。
关键词:STC89C52;74HC138;8255A;8253;继电器;实验一构建单片机最小系统和实验环境熟悉1.1单片机的工作原理1.1.1运算器运算器包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。
它能实现数据的算术逻辑运算、位变量处理和数据传送操作。
算术逻辑单元ALUALU在控制器根据指令发出的内部信号控制下,对8位二进制数据进行加、减、乘、除运算和逻辑与、或、非、异或、清零等运算。
它具有很强的判跳、转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。
MCS-51中位处理具有位处理功能,特别适用于实时逻辑控制。
2. 累加器ACC累加器ACC是8位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运算的中间结果。
MCS—51系列单片机中许多指令的操作数来自累加器ACC。
累加器非常繁忙,在与外部存储器或I/O接口进行数据传送时,都要经过A来完成。
3. 寄存器B寄存器B是8位寄存器,主要用于乘、除运算。
乘法运算时,B中存放乘数,乘法操作后,高8位结果存于B寄存器中。
除法运算时,B中存放除数,除法操作后,余数存于寄存器B中。
寄存器B也可作为一般的寄存器用。
4. 程序状态字PSW程序状态字是8位寄存器,用于指示程序运行状态信息。
其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
PSWCY(PSW.7):进(借)位标志位,也是位处理器的位累加器C。
在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清“0”。
在位操作中,CY作为位累加器C使用,参于进行位传送、位与、位或等位操作。
另外某些控制转移类指令也会影响CY位状态(第三章讨论)。
AC(PSW.6):辅助进(借)位标志位。
在加减运算中,当操作结果的低四位向高四位进位或借位时此标志位由硬件自动置1,否则清“0”。
F0(PSW.5):用户标志位,由用户通过软件设定,决定程序的执行方式。
RS1(PSW.4),RS0(PSW.3):寄存器组选择位。
用于设定当前通用寄存器OV(PSW.2):溢出标志位。
它反映运算结果是否溢出,溢出时OV=1;否则OV=0。
OV可作为条件转移指令中的条件。
PSW.1:未定义位。
P(PSW.1):奇偶标志位。
P=1,表示ACC中1的个数为奇数;否则P=0。
P也可以作为条件转移指令中的条件。
1.1.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)所示。
(A)内部时钟电路(B)外部振荡源2. 复位电路对于使用12MHZ的晶振的单片机,复位信号持续时间应超过4μs才能完成复位操作。
产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在RST引脚上加了一个高电平完成复位操作。
上电自动复位电路如图(a)所示。
按键手动复位电路。
按键手动复位是通过按键实现人为的复位操作,按键手动复位电路如图(b)所示。
3. 指令寄存器和指令译码器指令寄存器中存放指令代码,CPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号,完成指令所指定的操作。
4. 程序计数器PCPC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。
PC具有自动加1的功能,从而实现程序的顺序执行。
由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
PC的寻址范围为64KB,即地址空间为0000~0FFFFH。
5. 堆栈指针SPSP为8位寄存器,用于指示栈顶单元地址。
所谓堆栈是一种数据结构,它只允许在其一端进行数据删除和数据插入操作的线性表。
数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。
堆栈的最大特点是“后进先出”的数据操作原则。
MCS-51系统复位后,SP初始化为07H。
6. 数据指针DPTR数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。
编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。
DPH 为DPTR的高八位寄存器,DPL 为DPTR的低八位寄存器。
DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。
1.1.3单片机最小系统组成电路图单片机最小系统主要有外部晶振电路,系统复位电路以及供电电源组成。
在构建单片机最小系统板是在VCC引脚出加上10uF和0.1uF的滤波电容,以减小电源对系统工作的稳定性的影响,提高系统工作的稳定性。
单片机最小系统电路图1.1.4实验总结该实验中,单片机系统电路的基本模块有:复位电路,晶振电路,JTAG下载口等主要模块。
其中P0口作为输出使用必须对单片机的I/O口,因为P0为集电极开路,可以提高其功率和电平转换。
在单片机最小系统的构建中,EA脚拉高是非常必要的,它可以影响单片机的正常工作。
在检测单片机是否正常工作,可以通过检测晶振两端的信号的波形形状。
在单片机正常工作条件下,其信号为正弦波。
通过本次试验我了解了单片机的工作原理,知道了硬件部分的重要性,单片机最小系统板的焊接最主要是晶振部分的焊接,它为单片机提供了做工作的频率,是单片机的心脏。
实验二跑马灯实验及74HC138译码器2.1实验内容2.1.1实验原理本次实验是根据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灯循环点亮。
2.1.2实验原理图74HC138跑马灯电路原理图2.1.3实验程序流程图74HC138跑马灯实验程序流程图2.1.4系统仿真实验通过protues软件对系统的软硬件进行仿真验证74HC138跑马灯系统仿真图2.2实验总结通过LED,74HC138的焊接和它与单片机的连线,我对流水灯的电路有了清晰的认识,从概念上理解了如何用程序来控制流水灯。
在焊接的过程中我学会了一些焊接技巧,如何在焊接时走线使电路连线最简单。
我对单片机的程序和控制有更深的认识和理解。
这次实验最大的收获,第一、我熟悉了KEIL 和protues 软件的联合使用。
第二、学会单片机程序编写和调试。
第三、我理解了软件与硬件的关系,单片机可以通过软件作用到硬件把我们的思想表达出来。
实验三8255控制交通灯实验3.1实验内容3.1.1实验原理交通灯的变化规律是:先假定一个十字路口为东南西北走向交通灯的初始状态为状态1,东西方向绿灯通车,南北方向红灯。
经过一段时间转换状态2,东西方向黄灯闪烁一段时间,延时2S,南北方向仍然红灯。
再转换到状态3,东西方向红灯通车,南北方向绿灯。
过一段时间转换到状态4,南北方向黄灯闪烁一段时间,东西方向仍然红灯。
最后循环至南北红灯,东西绿灯。
3.1.2实验原理电路图8255控制交通灯实验原理图3.1.3程序流程图8255交通灯实验程序流程图3.2 8255A寻址原理使用C语言会给8255的寻址带来了一个难题,在这里是借助KEIL软件里的库函数ABSACC.H来进行寻址的。
一下是ABSACC.H库函数的介绍:/*--------------------------------------------------------------------------ABSACC.HDirect access to 8051, extended 8051 and Philips 80C51MX memory areas.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __ABSACC_H__#define __ABSACC_H__#define CBYTE ((unsigned char volatile code *) 0)#define DBYTE ((unsigned char volatile data *) 0)#define PBYTE ((unsigned char volatile pdata *) 0)#define XBYTE ((unsigned char volatile xdata *) 0)#define CWORD ((unsigned int volatile code *) 0)#define DWORD ((unsigned int volatile data *) 0)#define PWORD ((unsigned int volatile pdata *) 0)#define XWORD ((unsigned int volatile xdata *) 0)#ifdef __CX51__#define FVAR(object, addr) (*((object volatile far *) (addr)))#define FARRAY(object, base) ((object volatile far *) (base))#define FCVAR(object, addr) (*((object const far *) (addr)))#define FCARRAY(object, base) ((object const far *) (base))#else#define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))#define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))#define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))#define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))#endif#endif在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD。