实验三LED指示灯循环控制
一、实验目的熟悉uVision4编译软件、掌握C51编程与调试方法
二、实验原理
实验电路原理图如教材219图A.34所示,图中8只LED指示灯接于P0口,切都有上拉电阻。时钟电路、复位电路、片选电路与前面的实验电路相同。
在编程软件的配合下,要求实现如下功能:8只发光二极管做循环点亮控制,且亮灯顺序为D1-D2-D3…-D8-D7…-D1,无限循环,两次亮灯的时间间隔约为0.5s,软件编程原理为:
首先使P0.0-1,其余端口-0,这样可使D1灯亮,其余灯灭;软件延时0.5s后,使P0口整体左移1位,得到P0.1-1,其余端口-0,这样可使
D2灯亮其余全灭;照此思路P0整体左移7次,再又移7次,如此无限往复即可实现上述功能。
三、实验内容
1、按照教材P219的图A.34,绘制实验三电路原理图;
2、根据功能要求,编写C51程序;
3、练习μVision4程序动态调试方法,并最终实现8个LED灯依次点亮的功能:
P0.0→P0.1→P0.2→P0.3→
┅
→P0.7→P0.6→P0.5→
┅
→P0.0的顺序,无限循环,间隔约50ms;
4、观察仿真结果,完成实验报告。
四、实验步骤
(1)
在ISIS中绘制电路原理图,按照表A4.1将元件添加到编译环境中;
(2)
在uVision4中编写C51程序;
(3)
利用uVision4的编译调试功能检查语法和逻辑错误;
(4)
下载可执行文件,在Proteus中观察仿真结果,检查程序的正确性。
五、实验要求
提交的实验报告中应包括电路的原理图和实验结果分析。
Category
Reference
Value
Microprocessor
ICs
U1
80C51
Miscellancous
X1
CRYSTAL
Capacitors
C2~C3
CAP
Capacitors
C1/22uF
CAP--ELEC
Resistors
R2~R8/200
RES
Resistors
R10~R17/100
RES
Optoelectronics
D1~D8
LED--YELLOW1、电路分析及原理图
图12、编程思路及C51源程序
编程思路
1,P0口赋一初值,使D1灯亮,D2~D8灯灭
2,调用函数delay,传入参数值为50(ms)
3,采用while结构的无限循环体
4,由上向下循环控制(变量i的初值为1,终值小于8,增量为+1)
5,使P0中的数值向左移1位
6,调用函数delay,传入参数值为50(ms)
7,返回第二部继续进行
如图2为本次实验源程序
图2
调试运行
图3
调试运行
图44、仿真运行效果
起始时的情况
运行中的情况
5、实验小结
1,通过实验我们实现了最终实现8个LED灯依次点亮的功能:
P0.0→P0.1→P0.2→P0.3→
┅
→P0.7→P0.6→P0.5→
┅
→P0.0的顺序,无限循环,间隔约50ms;