单片机报告Word格式.docx
《单片机报告Word格式.docx》由会员分享,可在线阅读,更多相关《单片机报告Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。
单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位DIP-40封装的单片机作为MCU,一个典型的单片机最小系统一般由时钟电路、复位电路、键盘电路、显示电路等部分组成,有时也外扩有片外RAM和ROM以及外部扩展接口等电路。
图2为单片机最小系统结构框图。
图2单片机最小系统结构框图
1、系统时钟电路
单片机内部具有一个高增益反相放大器,用于构成振荡器。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图3所示,可以根据情况选择6MHz、8MHz或12MHz等频率的石英晶体,补偿电容通常选择20-30pF左右的瓷片电容。
图3系统时钟电路
2、复位电路
单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。
上电复位要求接通电源后,自动实现复位操作。
手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。
复位电路结构如图4所示。
上电自动复位通过电容C3充电来实现。
手动按键复位是通过按键将电阻R2与VCC接通来实现。
图4复位电路
3.单片机内部控制器主要部分
(1)指令寄存器和指令译码器
指令寄存器中存放指令代码,CPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号,完成指令所指定的操作。
(2)程序计数器PC
PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。
PC具有自动加1的功能,从而实现程序的顺序执行。
由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
PC的寻址范围为64KB,即地址空间为0000~0FFFFH。
(3)堆栈指针SP
SP为8位寄存器,用于指示栈顶单元地址。
所谓堆栈是一种数据结构,它只允许在其一端进行数据删除和数据插入操作的线性表。
数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。
堆栈的最大特点是“后进先出”的数据操作原则。
MCS-51系统复位后,SP初始化为07H。
(4)数据指针DPTR
数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。
编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。
DPH为DPTR的高八位寄存器,DPL为DPTR的低八位寄存器。
DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。
4.单片机运算器
运算器包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。
它能实现数据的算术逻辑运算、位变量处理和数据传送操作。
(1)算术逻辑单元ALU
ALU在控制器根据指令发出的内部信号控制下,对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位寄存器,用于指示程序运行状态信息。
其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
PSW中各标志位名称及定义如下:
位序
D7
D6
D5
D4
D3
D2
D1
D0
位标志
CY
AC
F0
RS1
RS0
OV
—
P
二、单片机最小系统的组成原理图:
图1单片机最小系统的组成原理图
一、实验原理图——跑马灯
图2跑马灯实验原理图
工作原理:
通过汇编程序中查表中值给单片机的端口赋值,依次点亮LED,两灯之间延时0.1s。
表中有29个值,设置一个寄存器,每点亮依次计数一次,当次数达到29时,回到第一个值,依次循环下去,形成动态闪亮的效果。
二、实验方法及步骤
跑马灯实验步骤:
1、设计接口电路。
2、编写程序或运行参考程序。
3、实验结果:
通过G6区的LED指示灯(8个指示灯轮流点亮),观察实验的输出结果是否正确。
跑马灯主要实验程序:
ORG0000H
JMPMAIN
ORG0030H
MAIN:
SETBP2.5
MOVA,#0FFH
MOVP1,A
MOVDPTR,#TAB
MOVR0,#00H
LED:
MOVA,R0
MOVCA,@A+DPTR
LCALLDELAY_100MS
INCR0
CJNER0,#29,LED
AJMPLED
RET
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH;
LED查表
DB7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB7EH,0BDH,0DBH,0E7H,0DBH,0BDH,3CH
DB99H,0C3H,99H,3CH,0AAH,55H,0AAH,99H
DELAY_100MS:
MOVR5,#10;
延时0.1S
D1:
MOVR6,#20
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END
三、译码器实验步骤:
2、调试程序,查看运行结果是否正确。
译码器实验原理图:
图3译码器流水灯实验原理图
根据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或减1和循环来时8各LED灯循环点亮。
译码器实验主要程序:
SETBP2.4
SETBP2.6
MOVA,#0
LS138_1:
MOVP1,A
INCA
CJNEA,#8,LS138_1
LS138_2:
DECA
CJNEA,#0,LS138_2
AJMPLS138_1
D1:
D2:
DJNZR7,$
DJNZR6,D2
一、实验原理图
8255交通灯的工作规律:
先假定一个十字路口为东南西北走向交通灯的初始状
态为状态1,东西方向绿灯通车,南北方向红灯。
经过过一段时间(5S)转换状
态2,东西方向黄灯闪亮4次,延时2S,南北方向仍然红灯。
再转换到状态3,
东西方向红灯通车,南北方向绿灯。
过一段时间(5S)转换到状态4,南北方向
黄灯闪亮4次,延时2S,东西方向仍然红灯。
最后循环至南北红灯,东西绿灯。
二、实验内容及步骤
交通灯实验主要程序:
AJMPSTART
START:
LOOP:
MOVDPTR,#0F3FFH
MOVA,#0DEH;
东西绿,南北红。
MOVX@DPTR,A
ACALLDELAY_10S
MOVR0,#0
SH_1:
MOVDPTR,#0F3FFH;
SHANSHUO1
MOVA,#0EEH;
东西黄,南北红。
MOVX@DPTR,A
ACALLDELAY_100MS
MOVA,#0FEH;
INCR0
CJNER0,#4,SH_1
MOVA,#0F3H;
东西红,南北绿。
SH_2:
MOVA,#0F5H;
东西红,南北黄。
MOVA,#0F7H;
CJNER0,#4,SH_2
AJMPLOOP
DELAY_2S:
;
2秒延时。
MOVR3,#40
DL3:
MOVR4,#100
DL4:
MOVR5,#248
DJNZR5,$
DJNZR4,DL4
DJNZR3,DL3
DELAY_10S:
10秒延时。
MOVR3,#100
DL1:
MOVR4,#200
DL2:
DJNZR4,DL2
DJNZR3,DL1
RET
单片机定时器产生一个频率较大的方波。
将此方波作为时钟信号送给8253的通道0,通过分频作为通道1的时钟信号进行二次分频,最后得到所要的频率。
1、设计接口电路并分析工作原理。
2、测试实验结果:
三种方法选择其一:
蜂鸣器发出时有时无的声音;
用逻辑笔测试蜂鸣器的输入端口;
红绿灯交替点亮。
8253方波实验主要程序:
ORG000BH
LJMPT0INT
MOVDPTR,#0FFFFH
MOVA,#16H;
通道0控制字,先写低字节,后高字节,方式2,BCD计数。
MOVDPTR,#0FCFFH
MOVA,#00H
MOVA,#25H
MOVDPTR,#0FFFFH
MOVA,#56H;
通道1控制字,先写低字节,后高字节,方式3,BCD计数。
MOVDPTR,#0FDFFH
MOVA,#04H
MOVX@DPTR,A
MOVSP,#60H
MOVTH0,#0FFH
MOVTL0,#0F6H
MOVTMOD,#01H
SETBTR0
SETBET0
SETBEA
AJMPMAIN
T0INT:
CPLP1.0
MOVTL0,#0FFH
MOVTH0,#0F6H
RETI
实验五综合实验
将以上四个实验整合在一起,通过键盘选择和控制每个实验的工作。
下面是综合后的整体实验图:
通过P3.0到P3.3四个端口作为键盘的输入,当按下按键一(P3.0)进入实验一,跑马灯正常工作,其他实验都不工作;
当按下按键二(P3.1)进入实验二,译码器跑马灯工作,其他实验不工作;
当按下按键三(P3.2)进入实验三,交通灯工作,其他实验不工作;
当按下按键四(P3.3)进入实验四,方波实验(黄色LED灯周期性闪烁)工作。
具体如何实现该功能,详见附录中整合后程序。
实验总结
本次单片机实验由我个人完成,感觉学到了不少知识,从单片机最小系统
板的设计和焊接到实验电路的焊接和程序编写,调试,我收获颇多。
了解了单片机的内部结构和工作原理后,构建一个单片机最小系统应该是很简单的,但是要注意的地方也较多需慎重,不然系统构建失败就啥也干不了了。
最小系统的原理图也比较简单,主要是时钟电路和复位电路部分,这两部分一定保证完全正确,单片机工作就靠这了。
首先要选好各电子元器件,参数一定要符合要求,焊接的时候要注意整体规划,排布较为合理。
特殊端口也要注意,P0口要用到上拉电阻,要注意排阻的焊接,单片机的电源脚和地都要焊好,而且为了方便综合的实验,把电源和地都引到一起。
最好为系统加上一个电源指示灯,可以方便以后的调试。
焊好后肯定要测试的,就拿简单的端口实验(流水灯)来测试,确定最小系统构建的正确。
我在焊接电路之前进行了全面的仿真,所用软件是较为熟悉的proteus,仿真上可以便于实验程序的调试,仿真也花了不少时间。
等到全部仿真完成才开始焊接电路板。
那是思路就很明朗了,直接就按四个实验综合在一起的了来焊的。
流水灯的实验较为简单,在程序编写到具体调试都没有遇到问题,8255和8253模块在调试过程中出现过问题,一开始键盘用在8255的PB口,但不能工作。
经过询问有经验的同学和查资料,明白了用汇编写程序时要注意写的顺序,线给地址后给数据。
不过我还是把键盘放在P3口,直接用在单片机端口更稳定。
经过几次修改,整合的程序没有问题,完全实现功能。
本打算再加点数码管显示模块,可惜到最后端口不够用。
感觉其实还是自己没完全分配好,应该还是可以有端口可以用的。
通过本次单片机实验,不仅深入了解了理论知识,还在实际的制作过程中学到了书本上没有的,还有实际焊接以及调试要考虑的东西书本上好多是没有的,必须在实践中获得。
对比了一下其他同学的作品,有的焊接技术不错,有的程序写的好,比如键盘部分用到了中断,只需一个按键就可以控制所有实验,不过这对编程能力要求高点,中断部分本就是一个难点。
虽然确实学到了不少,但还存在差距和不足,希望有了本次实验的基础,在以后的学习中能有所提高。
附录:
附录1:
整合后程序:
/***************各模块初始化,使其都不工作******************/
CLRP2.4;
使两个跑马灯实验不工作
CLRP2.5
CLRP2.6
8255初始化
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#0FFFFH;
8253初始化
MOVA,#56H
/*******************键盘功能实现部分程序*********************/
AJMPKEYSCAN1
KEYSCAN:
JNBP3.0,START1
JNBP3.1,START2
JNBP3.2,START3
JNBP3.3,SSS
SSS:
LJMPSTART4
KEYSCAN1:
ACALLKEYSCAN
/*******************四个实验具体实验程序***********************/
START1:
MOVDPTR,#0FFFFH;
使8253不工作
使8255不工作
使译码器不工作
START2:
CLRP2.5
LS138_1:
CJNEA,#0,LS138_2
START3:
MOVA,#00H;
CLRP2.5;
使跑马灯实验都不工作
CLRP2.4
MOVA,#82H;
A口方式0,输出。
B口方式0,输入。
C口,输出。
LOOP:
东西黄,南北红;
黄灯闪烁4次
MOVA,#0EEH;
MOVA,#0FEH;
MOVA,#0F3H;
东西红,南北黄;
MOVA,#0F5H;
MOVA,#0F7H;
START4:
MOVTMOD,#