PIC流水灯实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. 精选范本
实验一 流水灯
一、实验要求 编写程序实现用PIC16F877A 单片机的D 口控制发光二极管循环右移位,实现追灯功能:先D8点亮,其次是D7点亮,……,D1点亮,然后D8点亮,……,周而复始循环进行,并使用Proteus VSM 仿真器进行程序的烧写和仿真调试。
二、实验目的
1.熟悉利用Proteus 软件绘制单片机硬件电路,熟悉PIC16F877A 单片机的硬件结构。
2.学习输入/输出端口控制方法。
3.进一步熟悉MPLAB 环境下工程项目的建立和源程序的编写。
4.掌握使用PIC16F877A 仿真器进行硬件的仿真调试。
三、实验设备
PC 机一台、MPLAB 开发软件、Proteus 软件。
四、实验线路及连线
1.利用Proteus 绘制硬件线路图,在MPLAB IDE 中加载Proteus VSM 仿真器,调试PIC C 程序。
2.如下图,单片机的D 口外接8个LED 。
五、实验说明
1.如下图,当D 口的RD*为高时,相应的LED 点亮。
2.编程时,延时的实现可直接调用HI-TECH 的库函数,即:#include
六 实验报告
1、proteus 软件的硬件线路图
B2013052244
刘颖
2、程序流程图
开始
TRISD=0x00;
A=0x00;
N
延时等待
200ms ?
Y
PORTD=A;
A=A<<1;
N
A=0 ?
Y
A=0x01;
精选范本
3、观察实验现象
八个LED灯循环点亮,先D8点亮,200ms后D8灭,D7点亮,……,D1点亮,200ms后D1灭,然后D8点亮,……,周而复始循环进行。
4、实验分析
问题分析:控制流水灯循环点亮的过程中需定义一个全局变量A=0b00000001,让A的值左移,并把值赋给D口,从而达到所需的效果,但当A左移8次后灯却不再点亮。
解决方法:出现上述现象的原因是当A左移8次后A的值变为0,故要对A的值进行判断,如果值为0,则对其进行赋初值。
结论:针对实验中所出现的问题,可总结如下:①由于人眼的暂留效果,限制了LED灯的点亮时间,不宜太短。②实现周而复始循环左移或右移时,应对变量赋初值。
精选范本