单片机实训报告.doc

上传人:椰子壳 文档编号:5019080 上传时间:2020-01-29 格式:DOC 页数:29 大小:1.42MB
返回 下载 相关 举报
单片机实训报告.doc_第1页
第1页 / 共29页
单片机实训报告.doc_第2页
第2页 / 共29页
单片机实训报告.doc_第3页
第3页 / 共29页
单片机实训报告.doc_第4页
第4页 / 共29页
单片机实训报告.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《单片机实训报告.doc》由会员分享,可在线阅读,更多相关《单片机实训报告.doc(29页珍藏版)》请在三一文库上搜索。

1、实验一构建单片机最小系统和实验环境熟悉1、 单片机最小系统的组成原理图图1-12、 单片机的工作原理2.1 MCS-51单片机内含一个功能很强的CPU,它由运算器和控制器构成1. 运算器 运算器包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。它能实现数据的算术逻辑运算、位变量处理和数据传送操作。(1)算术逻辑单元ALUALU在控制器根据指令发出的内部信号控制下,对8位二进制数据进行加、减、乘、除运算和逻辑与、或、非、异或、清零等运算。它具有很强的判跳、转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。MCS-51中位处理

2、具有位处理功能,特别适用于实时逻辑控制。(2)累加器ACC累加器ACC是8位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运算的中间结果。MCS51系列单片机中许多指令的操作数来自累加器ACC。累加器非常繁忙,在与外部存储器或I/O接口进行数据传送时,都要经过A来完成。(3)寄存器B寄存器B是8位寄存器,主要用于乘、除运算。乘法运算时,B中存放乘数,乘法操作后,高8位结果存于B寄存器中。除法运算时,B中存放除数,除法操作后,余数存于寄存器B中。寄存器B也可作为一般的寄存器用。(4)程序状态字PSW程序状态字是8位寄存器,用于指示程序运行状态信息。其中有些位是根据程序执行结果由硬件自动

3、设置的,而有些位可由用户通过指令方法设定。PSW中各标志位名称及定义如下:位序D7D6D5D4D3D2D1D0位标志CYACF0RS1RS0OVPCY(PSW.7):进(借)位标志位,也是位处理器的位累加器C。在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清“0”。在位操作中,CY作为位累加器C使用,参于进行位传送、位与、位或等位操作。另外某些控制转移类指令也会影响CY位状态(第三章讨论)。AC(PSW.6):辅助进(借)位标志位。在加减运算中,当操作结果的低四位向高四位进位或借位时此标志位由硬件自动置1,否则清“0”。F0(PSW.5):用户标志位,由用户通过软件

4、设定,决定程序的执行方式。RS1(PSW.4),RS0(PSW.3):寄存器组选择位。用于设定当前通用寄存器组的组,其对应关系如下:RS1RS0寄存器组R0R7地址00组00007H01组1080FH10组21017H11组3181FHOV(PSW.2):溢出标志位。它反映运算结果是否溢出,溢出时OV=1;否则OV=0。OV可作为条件转移指令中的条件。PSW.1:未定义位。P(PSW.1):奇偶标志位。P=1,表示ACC中1的个数为奇数;否则P=0。P也可以作为条件转移指令中的条件。2. 控制器控制器包括定时控制逻辑(时钟电路、复位电路),指令寄存器,指令译码器程序计数器PC,堆栈指针SP,数

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

6、2 MHZ。如图(B)所示。 (A)内部时钟电路 (B)外部振荡源(2)复位电路对于使用12MHZ的晶振的单片机,复位信号持续时间应超过4s才能完成复位操作。产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在RST引脚上加了一个高电平完成复位操作。上电自动复位电路如图(a)所示。按键手动复位电路。按键手动复位是通过按键实现人为的复位操作,按键手动复位电路如图(b)所示。 复位后内部暂存器的状态如下:PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000

7、HTH100HP0P3FFHSCON00HIP000000BSBUF不定IE0000000BPCON00000BTMOD00H(3)指令寄存器和指令译码器指令寄存器中存放指令代码,CPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号,完成指令所指定的操作。(4)程序计数器PCPC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。PC具有自动加1的功能,从而实现程序的顺序执行。由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即

8、地址空间为00000FFFFH。(5)堆栈指针SPSP为8位寄存器,用于指示栈顶单元地址。所谓堆栈是一种数据结构,它只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。堆栈的最大特点是“后进先出”的数据操作原则。MCS-51系统复位后,SP初始化为07H。(6)数据指针DPTR数据指针DPTR为16位寄存器,它是MCS51中唯一的一个16位寄存器。编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。DPH 为DPTR的高八位寄存器,DPL 为DPTR的低八位寄存器。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范

9、围为64KB。2.2 存储器的结构1.MCS-51单片机的存储器结构图1-22. 程序存储器 对于8051来说, 程序存储器(ROM)的内部地址为 0000H0FFFH, 共 4 KB; 外部地址为 1000HFFFFH, 共 60 KB。 当程序计数器由内部 0FFFH执行到外部 1000H 时, 会自动跳转。对于 8751 来说, 内部有 4 KB的EPROM, 将它作为内部程序存储器; 8031 内部无程序存储器, 必须外接程序存储器。 8031 最多可外扩 64 KB程序存储器, 其中 6 个单元地址具有特殊用途, 是保留给系统使用的。0000H是系统的启动地址, 一般在该单元中存放一

10、条绝对跳转指令。0003H、000BH、 000BH、001BH和 0023H对应 5 种中断源的中断服务入口地址。 3. 内部数据存储器 MCS-51 单片机片内RAM的配置如图 2.4(b)所示。片内RAM为 256 字节, 地址范围为00HFFH, 分为两大部分: 低 128 字节(00H7FH)为真正的RAM区; 高 128 字节(80HFFH)为特殊功能寄存器区SFR。 在低 128 字节RAM中, 00H1FH共 32 单元是 4 个通用工作寄存器区。每一个区有 8 个通用寄存器R0R7。寄存器和RAM地址对应关系如表 1.1。 表 1.1寄存器与RAM 地址对照表3. 外部数据存

11、储器外部数据存储器一般由静态RAM构成,其容量大小由用户根据需要而定, 最大可扩展到 64 KB RAM , 地址是 0000H0FFFFH。 CPU通过MOVX指令访问外部数据存储器, 用间接寻址方式, R0、R1和 DPTR都可作间接寄存器。注意, 外部RAM和扩展的I/O接口是统一编址的, 所有的外扩I/O 口都要占用 64 KB中的地址单元。 三、存储单元数据传输 ORG 0000H ;定义当前位置为0000H AJMP MAIN ;复位入口 ORG 000BH AJMP TOINT ;T0中断入口 ORG 0030H START:MOV SP,#60H ;初始化程序 MOV TH0,

12、#0F0H ;T0赋初值 MOV TL0,#0CH MOV MOV TMOD,#00H SETB TR0 ;启动T0 SETB ET0 ;开T0中断 SETB EA ;开总允许中断MAIN: AJMP MAIN ;主程序TOINT: CPL P1.7 MOV TL0,#0CH MOV TH0,#0F0H RETI实验仿真图由以上观察结果容易看出,程序运行正确。四、实验小结 单片机系统电路的基本模块有:复位电路,晶振电路,上拉电阻,下载口等主要模块。其中P0口作为输出使用必须对单片机的I/O口,因为P0为集电极开路,可以提高其功率和电平转换。在单片机最小系统的构建中,EA脚拉高是非常必要的,它可

13、以影响单片机的正常工作。在检测单片机是否正常工作,可以通过检测晶振两端的信号的波形形状。在单片机正常工作条件下,其信号为正弦波。经过一周的时间基本完成单片机最小系统板的焊接部分和单片机的工作原理,以及对单片机外围电路的焊接,知道了硬件部分的重要性,单片机最小系统板的焊接最主要是晶振部分的焊接,它为单片机提供了做工作的频率,是单片机的心脏。实验二 跑马灯实验及74HC138译码器一、实验原理 1、跑马灯(1)参考实验原理图如下: (跑马灯原理图) (2)工作原理给单片机的端口赋初值,点亮第一个LED,然后延时一段时间后,点亮下一个LED,依次循环下去。形成动态闪亮的效果。 (3)仿真原理图2、1

14、38译码器(1)参考实验原理图如下:(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灯循环点亮。二、软件流程图1、跑马灯程序流程图:开始给A口赋值0FFH间接赋给P1口 延时0.2S带进位右移后赋给P1口延时0

15、.2S带进位右移8次后带进位左移延时0.2S带进位左移7次三、源程序代码1、跑马灯实验代码: ORG 0000H ;定义当前地址 SJMP START ORG 0050HSTART: MOV P1, #0x08 CALL DL1S MOV P1, #0x09 CALL DL1S MOV P1, #0x0A CALL DL1S MOV P1, #0x0B CALL DL1S MOV P1, #0x0C CALL DL1S MOV P1, #0x0D CALL DL1S MOV P1, #0x0E CALL DL1S MOV P1, #0x0F CALL DL1S SJMP STARTDL1S:

16、MOV R5, #100DELAY100MS:MOV R6, #50 ;1TDL30T:MOV R7, #30 ;1TD2: DJNZ R7, D2 ;2T, 原地转移30遍, 共用60T DJNZ R6, DL30T ;2T, 转移30遍 DJNZ R5, DELAY100MS RET ;2TEND四、软件仿真图 跑马灯仿真图五、实验小结通过LED,74LS138的焊接和它与单片机的连线,我对流水灯的电路有了清晰的认识,从概念上理解了如何用程序来控制流水灯。在焊接的过程中我学会了一些焊接技巧,如何在焊接时走线使电路连线最简单,在焊接流水灯电阻时,我遇到一个问题,电阻值该如何选择?在没有焊接电

17、路我没有注意到这个问题,经过查资料,LED的压降为1.7V左右,LED的发光电流为23mA, R=(5-1.7)V/(23)mA.完成电路设计后,开始在KEIL中编写汇编程序。从一个指令一个指令的写,到一句一句的写,最后到一段一段的写。完成程序后,在Pritues中进行仿真。通过不断的修改和调试,程序仿真是正确的。最后通过下载器把程序烧到单片机里,发现达不到仿真的效果。经过对程序的修改调试,在实际硬件电路中可以实现了。这使我认识到计算机仿真和实际硬件电路还是有一定的差别。在仿真中只能调试程序,并不能达到实际效果。进过一次一次的下载,调试程序。最后成功的达到预期的效果。我对单片机的程序和控制有更

18、深的认识和理解。通过第一个单片机实验的完成,我体会到单片机控制的奇妙。单片机可以实现我们的想法。我感到很兴奋,很有趣。这次实验最大的收获,第一、我熟悉了KEIL Protuesde 的联合使用。第二、学会单片机程序编写和调试。第三、我理解了软件与硬件的关系,单片机可以通过软件作用到硬件把我们的思想表达出来。实验三 8255控制交通灯实验一、实验原理交通灯的变化规律是:先假定一个十字路口为东南西北走向交通灯的初始状态为状态1,东西方向绿灯通车,南北方向红灯。经过过一段时间(3S)转换状态2,东西方向黄灯闪亮,延时2S,南北方向仍然红灯。再转换到状态3,东西方向红灯通车,南北方向绿灯。过一段时间(

19、3S)转换到状态4,南北方向黄灯闪亮,延时2S,东西方向仍然红灯。最后循环至南北红灯,东西绿灯。实验原理参考图:2、 软件流程图三、实验源程序代码 CONTROL EQU 7FFFHPORT_A EQU 7FFCHORG 0000HN0:; 8255初始化MOV DPTR,#7FFFHMOV A,#88HMOVX DPTR,A;四个红灯亮N1:MOV DPTR,#7FFCHMOV A,#36HMOVX DPTR,A;5秒延时MOV 2AH,#05HMOV DPTR,#7FFCH;东西绿灯,南北红灯MOV DPTR,#7FFCHMOV A,#35HMOVX DPTR,A;19秒延时MOV 2AH

20、,#19HLCALL DELAYMOV P2,#3FH;东西黄灯闪,南北红灯N2:MOV DPTR,#7FFCHMOV A,#33HMOVX DPTR,ALCALL DELAY1SMOV A,#37HMOVX DPTR,ALCALL DELAY1SMOV A,#33HMOVX DPTR,ALCALL DELAY1SMOV A,#37HMOVX DPTR,ALCALL DELAY1SMOV A,#33HMOVX DPTR,ALCALL DELAY1SMOV A,#37HMOVX DPTR,ALCALL DELAY1S;东西红灯,南北绿灯MOV DPTR,#7FFCHMOV A,#2EHMOVX

21、DPTR,A;19秒延时MOV 2AH,#19HLCALL DELAYMOV P2,#3FH;东西红灯,南北黄灯闪N3:MOV DPTR,#7FFCHMOV A,#1EHMOVX DPTR,ALCALL DELAY1SMOV DPTR,#7FFCHMOV A,#3EHMOVX DPTR,ALCALL DELAY1SMOV A,#1EHMOVX DPTR,ALCALL DELAY1SMOV DPTR,#7FFCHMOV A,#3EHMOVX DPTR,ALCALL DELAY1SMOV A,#1EHMOVX DPTR,ALCALL DELAY1SMOV DPTR,#7FFCHMOV A,#3EH

22、MOVX DPTR,ALCALL DELAY1SLJMP N1 ;重复东西通行DELAY: MOV R7,2AHNEXT: MOV A,R7MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,A+DPTR MOV P1,A MOV A,B MOVC A,A+DPTR MOV P2,A LCALL DELAY1S DEC R7 MOV A,R7 CJNE A,#00,NEXTDELAY1S: MOV R5,#100D2: MOV R6,#20 D1: MOV R3,#248 DJNZ R3,$DJNZ R6,D1DJNZ R5,D2RET ; 0f 字符七段LED代码

23、表TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND;-四、程序仿真图: 五、实验小结通过本次交通灯实验,学会了使用8255芯片的初始化和编程方法。同时认识到通过8255实现了I/O口的扩展。本实验使用的是8255的方式0。利用8255完成交通灯的四中状态切换。第一种状态是东西方向是绿灯,南北方向是红灯。第二种状态是东西方向是黄灯并且闪烁,南北方向是红灯。第三种状态是东西方向是红灯,南北方向是绿灯。第四种状态是东西方向是红灯,南北方向是黄灯,最后变到第一种状态。交通灯的实现,难点有两个点。一是交通灯的工作状态。通过观察实际交通灯,确定了上述

24、的四种状态。二是如何用汇编程序来描述这四种状态。在实现具体的硬件时,采用8255控制十二个LED,三个一组,分成四组来模拟实际交通灯。其中的对面两组状态变化是相同一致的。在完成仿真后在硬件电路中调试时,发现了一个问题。显示的状态不对。经过检查电路后发现电路的连线错了。重新调试后,发现状态对了,但是有一组灯出现了问题。其中的一个灯不亮。经过修改程序和软件仿真,没有发现原因何在。后来把LED换了,可能硬件出了问题,最后结果是正确的。软件到硬件,再由硬件到软件。通过问题的解决,我对程序和电路有了更深的认识和理解。实验四 8253方波实验一、 实验原理参考原理图如下:工作原理分析:单片机定时器产生一个

25、10K的方波。将此方波作为时钟信号送给8253的通道0,通过分频作为通道1的时钟信号进行二次分频,最后得到所要的频率。2、 软件程序流程图 三、实验源程序代码CONTROL EQU 7FFFHPORT_A EQU 7FFCHPORT_B EQU 7FFDHORG 0000H ; 8253初始化N0: MOV DPTR,#07FFFHMOV A,#00110101BMOVX DPTR,AMOV DPTR,#07FFCHMOV A,#00HMOVX DPTR,AMOV A,#50HMOVX DPTR,AMOV DPTR,#07FFFHMOV A,#01110111BMOVX DPTR,AMOV D

26、PTR,#07FFDHMOV A,#00HMOVX DPTR,AMOV A,#10HMOVX DPTR,AEND;-;四、实验小结本实验使用8253的计数器0和计数器1实现对输入时钟的两次分频。得到一个周期为1秒的方波。然后用此方波控制LED的闪亮。首先由单片机定时器产生一个10K的方波。将此方波作为时钟信号送给8253的通道0,通过分频作为通道1的时钟信号进行二次分频。最后得到所要的频率。 通过8253的连线和程序的编写,我学会了8253芯片的使用方法。学会如何用8253产生特定频率的方波。实验五 光耦控制实验一、实验原理参考原理图如下:(继电器控制原理图)(光偶控制原理图)光耦控制实验仿真

27、原理图:继电器的工作原理和特性:继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。2、 软件流程图3、 程序代码#include#define unit unsigned int#define uchar unsigned charsbit k1=P33; /开关1sbit k2=P32; /开关2sbit k3=P31; /开关3sbit j1=P10; /继电器1sbit j2=P11; /继电器2sbit j3=P12;

28、/继电器3sbit led1=P15; /LED1sbit led2=P16; /LED2sbit led3=P17; /LED3void delay();void delay() /延时25MS uchar a=200; while(a-);void main() while(1) if(k1=0) delay(); if(k1=0) P1=0xff; led1=1;j1=1; led1=j1=0; else if(k2=0) delay(); if(k2=0) P1=0xff; j1=1;j2=1; j2=led1=led2=0; else if(k3=0) delay(); if(k3=

29、0) P1=0xff; j1=1;j2=1;j3=1; j3=led1=led2=led3=0; else P1=0xff;P2=0xff; 4、 仿真电路图5、 实验小结单片机实验总结通过这次特殊的单片机实验,我学到了很多。从单片机最小系统板的设计和焊接到实验电路的焊接和程序编写,调试,我得到系统的锻炼。在动手能力方面有了很大的提高。在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源。设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图.在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。

30、要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题.。通过这次的课程设计让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我在今后的学习工作中会更加的注重实际,培养自己的动手操作能力。附录硬件电路图实物照片:图1跑马灯(138译码器)图2交通灯图3总图29

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1