流水灯实验报告

更新时间:2023-12-06 20:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机流水灯实验

一、任务

让8个LED灯轮流亮起来,实现流水灯的功能。 二、思路

让接在P0.0口的LED灯亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED灯熄灭,就要把P0.0口的电平变为高电平就可以了。要实现流水灯功能,只要将8个LED灯依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

我们应该注意一点,由于单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 三、步骤

1、用proteus画电路图。如下图:

2、用keil建工程。

1) 运行keil C51软件,点击Project菜单新建项目,选择为AT89C52的单片

机型号。然后单击File选择New新建程序文件,保存成 .c 文件,右击Source Group1添加入程序文件。 2) 用C语言编写程序代码如下:

#include

void delay (unsigned char tmp);

code unsigned char tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main(void) {

unsigned char i; while (1) {

for(i=0;i<8;i++) { P0=tmpled[i]; delay(50); } } }

void delay(unsigned char tmp) {

unsigned char i,j; i=tmp; while(i) { i--; j=255; { j--; } } }

3) 右击Target 1打开设置,Output菜单下勾选上create hex file。

4) 调试运行程序后,在proteus中双击单片机,添加hex文件,运行看到流水的的效

果。

四、 实验中遇到的问题。

1、 用proteus仿真时候,发现错误:

error variable not found parsing property resistance of RN1-Rnvalue expected for RN1-R(n=1~8)而且led灯亮度十分微弱。可能是接入的电阻太大了。

检查电路图发现排阻的值为RX8,修改为220(自己选择)后。错误便没有了,同时,led灯的亮度也增强了。 2、 关于延时函数。

延时的时间计算不太明白。

3、P0=0xfe;是对单片机P0口的8个I/O口同时进行操作,0x后的数使用十六进制表示,fe转换为二进制是1111 1110,则P0.0为低电平,对应的led灯亮,其他7个led灯灭。

本文来源:https://www.bwwdw.com/article/19gt.html

Top