启蒙电子 - DG3000配套教程
DG3000配套教程-网页版
实验一:如何用单片机点亮一个发光二极管
实验二:实现发光二极管流水灯功能
实验三:如何用单片机控制蜂鸣器
实验四:光耦与控制试验
实验五:单片机控制继电器实验
实验六:串口通讯试验
实验七:一个LED数码管显示字符实验
实验八:8位动态LED数码管显示实验
实验九:6位静态LED数码管显示实验
实验十:1602字符液晶显示实验
实验十一:128*64图形液晶显示实验
实验十二:16*16点阵显示实验
实验十三:独立控制按键实验
实验十四:4*4矩形控制按键实验
实验十五:红外遥控解码实验
实验十六:EEPROM(AT24C02)读写实验
实验十七:时钟芯片(PCF8563)显示时间实验
实验十八:温度(单总线DS18B20)显示实验
实验十九:ADC(TLC549)模数转化实验(1-5V)
实验二十:LM358运放的应用(0-1V ADC转化实验)
实验二十一:温度湿度(温湿度模块)显示实验
实验二十二:DAC(DAC0832)数模转化实验
实验二十三:接触式IC卡(SLE4442)读写实验
实验二十四:PS2键控制驱动试验
实验二十五:直流电机驱动实验
实验二十六:步进电机驱动实验
实验二十七:微型打印机驱动实验
DG3000配套教程- 实验二:实现发光二极管流水灯功能

1、原理图与实现原理:


说明:P00 –P07接单片机的P0.0-P0.7端口;PR3为9脚的4.7K的排阻。
实现原理:让单片机的P0.0-P0.7依次置低电平0,那么L1-----L7就分别点亮,循环起来就像流水。

2、程序源码与试验结论:
2.1 实现的源码C51部分
//----------------------------------------------------------
//程序作用:LED实现流水灯
//----------------------------------------------------------
#include<reg51.h>
#include <intrins.h>

void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}

void main(void)
{
unsigned char LED;
LED = 0xfe; //赋初值
P0 = LED; //定义LED端口P0
while(1)
{
delayms(250);//延时子程序调用
LED = _crol_(LED,1);//循环左移1位,点亮下一个LED
P0 = LED;
}
}
2.2 实现的源码汇编部分
;----------------------------------------------------------
;程序作用:流水灯
;----------------------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:

MOV P0,#0FEH ; 初始点亮LED1
MOV R7,#0FEH ; 保存P0
MAIN_LP:
LCALL DELAY ; 延时
MOV A,R7 ;
RL A ; 循环移位
MOV R7,A ; 保存到R7
MOV P0,A ; 点亮下一个LED
JMP MAIN_LP ; 不停循环
DELAY: ; 延时子程序
MOV R0,#0FFH
MOV R1,#0FFH
DLY_LP:
NOP
NOP
DJNZ R0,DLY_LP
MOV R0,#0FFH
DJNZ R1,DLY_LP
RET
END


友情链接 | 诚聘英才 | 关于我们 | 版权声明 | 联系我们 | 广告服务
Copyright©2007 启蒙电子 www.51c51.net 版权所有
技术支持QQ:501501561 销售咨询QQ:502502562
鲁ICP备05007129