51单片机驱动流水灯可以更好的理解IO口,这一节就主要来用查表法和移位法来实现流水灯,首先先看电路图。

电路比较简单,发光二极管正极接5V电源,负极接470Ω限流电阻,接单片机P0口,限流电阻470Ω怎么计算?来看看,普通发光二极管正向饱和电压为1.6~2.1V,正向饱和电流为5~20mA,但不同颜色的发光二极管参数有所差异。这里没必要精确计算,我们取中间值电压1.8V,电流10mA。由欧姆定律,解得R=(5-1.8)/10=320Ω,图中电阻选用常用的470Ω。

由电路图可以知道,单片机P0口只需要输出低电平,就可以点亮LED灯。图中采用低电平驱动,主要是P0口低电平驱动能力比较好。

现在先来看个闪烁灯的程序。

/*********************************************
**程序名称:LED闪烁灯
**程序功能:一个LED闪烁,频率为2HZ
**编写:李松泽
**时间:2014-12-25
**********************************************/
#include <reg52.h>
sbit LED=P0^0;//位定义
#define uchar unsigned char
#define uint unsigned int
/*********************************************
**函数名称:void delay_ms(uint x)
**函数功能:延时xms
**入口参数:uint x
**出口参数:
*********************************************/
void delay_ms(uint x)
{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);
}
/*********************************************
**函数名称:void main()
**函数功能:主函数
**入口参数:
**出口参数:
*********************************************/
void main()
{while(1){LED=0;//LED亮delay_ms(500);LED=1;//LED灭dealy_ms(500);        }
}    

这个程序比较简单,但同时也说明了51单片机可以对单个位定义操作,在16位MSP430单片机中就不能单独操作一个位。在程序的编写中就比较方便。

流水灯程序以下用两种方法,首先先看查表法,部分程序说明在代码中解释。

/*********************************************
**程序名称:驱动流水灯
**程序功能:8个LED依次从左到右,从右到左点亮,频率为500ms
**编写:李松泽
**时间:2014-12-25
**********************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//赋给P0口的数据
/*********************************************
**函数名称:void delay_ms(uint x)
**函数功能:延时xms
**入口参数:uint x
**出口参数:
*********************************************/
void delay_ms(uint x)
{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);
}
/*********************************************
**函数名称:void main()
**函数功能:主函数
**入口参数:
**出口参数:
*********************************************/
//查表法:
void main()
{while(1){uchar i;for(i=0;i<16;i++){P0=tab[i];delay_ms(500);}}
}

移位法:

/*********************************************
**程序名称:驱动流水灯
**程序功能:8个LED依次从左到右,从右到左点亮,频率为500ms
**编写:李松泽
**时间:2014-12-25
**********************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*********************************************
**函数名称:void delay_ms(uint x)
**函数功能:延时xms
**入口参数:uint x
**出口参数:
*********************************************/
void delay_ms(uint x)
{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);
}
/*********************************************
**函数名称:void main()
**函数功能:主函数
**入口参数:
**出口参数:
*********************************************/
//移位法:
void main()
{uchar i,j;while(1){P0=0xfe;for(i=0;i<8;i++){delay_ms(500);//进入循环,先延时500msP0<<=1; //P0口数据左移P0|=0x01; //将低位置1}P0=0x7f;for(i=0;i<8;i++){delay_ms(500);//进入循环,先延时500msP0>>=1; //P0口数据左移P0|=0x80;//将高位置1    }}
}

51单片机学习总结系列(一)之驱动流水灯(1)相关推荐

  1. 51单片机入门篇-LED点亮以及流水灯

    目录 一.发光二极管简介 1.二极管工作工作原理 2.单片机点亮LED原理 二.硬件电路连接 三.程序部分 3.1 点亮一个LED 3.2 点亮多个LED 3.3 闪烁一个LED 3.4 不同频率闪烁 ...

  2. 基于51单片机的8个小彩灯花样流水灯proteus仿真汇编语言

    仿真电路如下图所示: 部分代码: ORG 0000H AJMP START ORG 0003H AJMP INTR0 ORG 0013H AJMP INTR1 START:MOV IE,#85H MO ...

  3. 51单片机 LED点亮、闪烁以及流水灯实现

    文章目录 一.Keil创建项目 二.Proteus搭建虚拟仿真电路 三.LED点亮 四.LED闪烁 五.流水灯实现 1. 流水灯(库函数法) 2. 流水灯(左移法) 3. 流水灯(右移法) 4. 流水 ...

  4. AutoLeaders控制组—51单片机学习笔记

    文章目录 AutoLeaders控制组-51单片机学习笔记 1.1单片机及开发板介绍 单片机介绍 单片机应用领域 STC89C52单片机 内部结构 开发板介绍 2.1点亮一个Led 新建工程 编程 认 ...

  5. 51单片机学习历程——硬件准备&开发环境搭建

    系列文章目录 第一章 51单片机学习历程(1)--开发环境搭建 第二章 51单片机学习历程(2)--建立新的工程 第三章 51单片机学习历程(3)--点亮一颗LED 第四章 51单片机学习历程(4)- ...

  6. 51单片机学习笔记1 简介及开发环境

    51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...

  7. 51单片机学习笔记-1简介及点灯

    51单片机学习笔记 文章目录 51单片机学习笔记 1. 51单片机简介 1.1 安装软件 1.2 单片机简介 2. LED灯 2.1点亮一个LED 2.1.1原理分析 2.1.2 创建工程 2.2LE ...

  8. 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版

    原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...

  9. 51单片机学习之智能小车(1)

    说明 这是我学习一段时间51之后自己动手做的,比较简陋.此篇作为总结和复习,如有问题,请评论指出. 下篇:51单片机学习之智能小车(2) 小车概述(功能,所用模块) (1)蓝牙控制 通过手机上蓝牙串口 ...

最新文章

  1. WiFi 客流成无源之水,AI 陈列督导是智慧零售的新突围点?
  2. linux 文件权限标识,linux文件权限学习 包括 特殊权限
  3. Servlet深入服务之响应response
  4. Linux(内核和用户态的)动态内存管理
  5. 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱
  6. php crypt mysql password_php使用crypt()函数进行加密
  7. 2020年,中国AI创业公司将走向何方
  8. python网络爬虫笔记(九)
  9. 流氓软件的完全卸载的一些方法
  10. 联想小新触摸板驱动_联想小新智能语音鼠标驱动
  11. 直流有刷电机与无刷电机的区别
  12. 乐行科技获1.08亿元A轮融资,并推出艾特好车 1
  13. linux kernel 内存相关记录
  14. 微信自动邀请加群!!!
  15. html5 制作书架展示 PHP,简单做出HTML5翻页效果文字特效
  16. 我在B站读大学,大数据专业
  17. bootstarp怎么使盒子到最右边_8+ | 从恐龙特急克塞号到小猪佩奇,怎么都有它
  18. 各种书籍免费下载地址(持续更新中)
  19. 软件测试工程师面试如何做好自我介绍?
  20. IObit Uninstaller 10Pro BD

热门文章

  1. c语言选择语句 问题及答案,C语言所有题目以及答案
  2. HTML5 Canvas实现贪吃蛇(二)
  3. 《人月神话》阅读记录
  4. 计算机本地硬盘带蓝色问号,本地磁盘出现个问号是什么原因
  5. 一对一直播脚本松鼠直播管家的操作原理
  6. VS2019 注释字体颜色修改
  7. 中国安防崛起 安防外商品牌何去何从
  8. linux下查找文件及文件内查找内容--find/grep/sed/awk
  9. 转邓侃博士围脖:Oracle主宰者——拉里.埃里森传奇
  10. 关于error LNK2005的解决办法