实验二 单片机最小系统及流水灯电路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二单片机最小系统及流水灯电路
一、实验目的
1.熟悉单片机实验电路板,通过测量单片机最小系统参数,掌握单片机系统工作条件。2.测绘单片机流水灯电路,掌握51单片机汇编语言程序的编辑、调试、编译的一般过程和基本操作步骤。
3.掌握单片机程序烧录基本步骤和方法,掌握单片机系统的开发过程。
二.实验电路原理
单片机最小系统包括单片机(内部包含有程序存储器、随机存储器)、晶振电路、复位电路和电源电路,这是单片机工作的基本硬件要求。本实验通过单片机P0口控制8个LED,单片机P0口结构如图1所示,熟悉I/O口结构对硬件电路设计有非常重要的意义。
图1 单片机P0口结构
P0口内部没有上拉电阻,一般必须加上拉电阻。接发光二极管时,应该使用低电平点亮发光二极管(即采用灌电流),发光二极管和限流电阻起到上拉电阻的作用,在这种情况下,可以不接上拉电阻。实验电路如图所示。
图2 流水灯电路
单片机工作离不开软件,要根据硬件电路编制相匹配的软件,流水灯电路软件设计的流程图3所示:
图3 流水灯电路软件流程图
三、实验设备和软件
单片机实验开发板、计算机、Protues软件、万用表、示波器。
四、实验内容与步骤
1.单片机工作状态测试
(1)熟悉实验板电路布局,找出实验板电源电路的结构,晶振电路、复位电路的元器件位置,用万用表查找LED与单片机的连接。
(2)实验板加电开机,电源指示灯点亮,用万用表检测单片机Vcc(40脚)、RST(9脚)、晶振工作电源(18脚、19脚)电压。
(3)用示波器观察晶振引脚信号波形和幅度。
注意:在测量单片机引脚电压时要小心万用表和示波器的表笔不能将单片机引脚短路!
2.流水灯电路设计与仿真
先采用Proteus ISIS软件进行流水灯电路硬件与汇编程序设计,完成硬件和软件的设计后再进行编译和仿真,一般操作步骤如下:
(1)在桌面创建一个文件夹,打开Proteus SISI软件。参照测量单片机实验板硬件结构绘制流水灯电路,注意元器件库查找、元器件放置和编辑、导线绘制方法。电路绘制完成后
“流水灯”保存在文件夹中。
(2)保存电路图后,点击“Source”创建软件代码文件以“流水灯.ASM”文件保存。
(3)将编制的流水灯汇编程序输入编辑器中。输入程序时注意程序格以及“0”和“O”的区别(初学者经常出现的错误)。在完成输入程序后对程序进行编译“Buidle All”。生成“流水灯.HEX”文件。
注意:程序编译成功只说明程序语法正确,不能说明程序功能已经达到了设计目标。
(4)对流水灯电路程序进行仿真。当程序编译正常,程序设计正确时,实现流水灯电路的正常仿真运行。
如果程序不正常、或出现语法错误要根据编译器的提示进行修改程序,也可以进行仿真调试。仿真调试需要重点查看的对象是:Code区程序代码存储区间、PC值及其变化量、指令周期长度、P1口输出值、工作寄存器和及其它有关的SFR之值。通过它们分别可以看到程序段的存储空间、指令的存储地址和字长、指令的执行时间长度、有关指令和程序段的运行结果等等,这些都是调试者评估程序段功能、修改和完善程序代码的基本依据。
更详细步骤请参照教材相关部分介绍。
3.烧录程序和硬件运行
YZ200实验板单片机烧入程序的方法有两种,一种是本实验板的专用方法JRISP(采用ISP接口),一种是采用STC-ISP软件(采用RS232口),在此我们采用ISP接口。
(1)用ISP下载线将单片机实验板与计算机USB口连接在一起。
(2)利用JRISP软件,将“流水灯.HEX”文件烧入单片机中。
如果电路上电后不能运行则需要检查单片机的基本工作条件是否正常;如果只是运行现象不符合设计目标,则需要分析现象进而修改程序代码,重复上述编译、仿真调试、烧写和试运行的过程。如此反复调试,直至成功为止。
4.参考程序
1 ORG 0000H ;程序开始地址
2 LJMP MAIN
3 ORG 0100H
4 MAIN:MOV A,#0FEH ;初值1111 1110 送P0口,低电平点亮LED
5 LOOP:MOV P0,A
6 LCALL DEL
7 DJNZ R5, LOOP1
8 RL A ;循环左移一次
9 LJMP LOOP
10 DEL:MOV R0,#20 ;循环20次
11 DL3:MOV R2,#50 ;循环100次
12 DL2:MOV R3,#250 ;循环250次
13 DEL1: DJNZ R3,DEL1 ;此指令2us,循环250次:2*250=500us
14 DJNZ R2,DL2 ;50*500us=25ms
15 DJNZ R0, DL3 ;25ms*40=1s
16 RET ;子程序返回
17 END ;程序结束
5.深入实验问题
在参考程序中,单片机使用12MHz晶体,每一个LED点亮时间为1s。根据下表中的问题,修改程序、用Proteus软件仿真验证,并将回答的问题填入表1中,交指导教师检查。
1.流水灯每次点亮2个LED,赋给累加器A的初值为多少?
2.每次点亮两个,每次跳两个LED,程序如何修改?
3.将延时程序修改为600ms,程序如何修改?
4.如果单片机石英晶体从12MHz改为6MHz,流水灯移动速度仍为1s,程序如何修改?
5.LED连接到P2口,其它功能不变,程序如何修改?
6.子程序返回后,单片机执行哪条指令?
7*.如何实现LED各闪烁5次再移位功能?
五、实验总结和报告要求
试验报告是实验过程的回顾总结与提高的过程,实验报告要求记录实验中出现的问题,解决方法,在回答下列问题的前提下,认真总结实验中的经验教训,完成实验报告。
回答下列问题:
1.伪指令有无机器码?不要伪指令END会产生什么问题?将伪指令ORG 0100H改为ORG 0200H会产生什么问题?用STC-ISP软件打开“流水灯.HEX”文件,查看代码在程序存储器中的位置发生了哪些变化。
2.为什么单片机在开机时或复位后,都从0000H开始执行程序?而一般程序的第一条指令都采用跳转指令:
ORG 0000H
LJMP MAIN
……
3.图1中P0口没有接上拉电阻为什么可以正常工作,如果将图1的发光二极管改为图2所示电路,即将+5V电源改成接地,这时仿真实验会有什么不同?加上10k上拉电阻呢?实际电路如果按照图2接法(加上10k上拉电阻)能够正常工作吗?上述实验你得到什么结论,请从I/O口电路结构上进行分析回答。