51单片机学习总结系列(一)之驱动流水灯(1)
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)相关推荐
- 51单片机入门篇-LED点亮以及流水灯
目录 一.发光二极管简介 1.二极管工作工作原理 2.单片机点亮LED原理 二.硬件电路连接 三.程序部分 3.1 点亮一个LED 3.2 点亮多个LED 3.3 闪烁一个LED 3.4 不同频率闪烁 ...
- 基于51单片机的8个小彩灯花样流水灯proteus仿真汇编语言
仿真电路如下图所示: 部分代码: ORG 0000H AJMP START ORG 0003H AJMP INTR0 ORG 0013H AJMP INTR1 START:MOV IE,#85H MO ...
- 51单片机 LED点亮、闪烁以及流水灯实现
文章目录 一.Keil创建项目 二.Proteus搭建虚拟仿真电路 三.LED点亮 四.LED闪烁 五.流水灯实现 1. 流水灯(库函数法) 2. 流水灯(左移法) 3. 流水灯(右移法) 4. 流水 ...
- AutoLeaders控制组—51单片机学习笔记
文章目录 AutoLeaders控制组-51单片机学习笔记 1.1单片机及开发板介绍 单片机介绍 单片机应用领域 STC89C52单片机 内部结构 开发板介绍 2.1点亮一个Led 新建工程 编程 认 ...
- 51单片机学习历程——硬件准备&开发环境搭建
系列文章目录 第一章 51单片机学习历程(1)--开发环境搭建 第二章 51单片机学习历程(2)--建立新的工程 第三章 51单片机学习历程(3)--点亮一颗LED 第四章 51单片机学习历程(4)- ...
- 51单片机学习笔记1 简介及开发环境
51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...
- 51单片机学习笔记-1简介及点灯
51单片机学习笔记 文章目录 51单片机学习笔记 1. 51单片机简介 1.1 安装软件 1.2 单片机简介 2. LED灯 2.1点亮一个LED 2.1.1原理分析 2.1.2 创建工程 2.2LE ...
- 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版
原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...
- 51单片机学习之智能小车(1)
说明 这是我学习一段时间51之后自己动手做的,比较简陋.此篇作为总结和复习,如有问题,请评论指出. 下篇:51单片机学习之智能小车(2) 小车概述(功能,所用模块) (1)蓝牙控制 通过手机上蓝牙串口 ...
最新文章
- WiFi 客流成无源之水,AI 陈列督导是智慧零售的新突围点?
- linux 文件权限标识,linux文件权限学习 包括 特殊权限
- Servlet深入服务之响应response
- Linux(内核和用户态的)动态内存管理
- 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱
- php crypt mysql password_php使用crypt()函数进行加密
- 2020年,中国AI创业公司将走向何方
- python网络爬虫笔记(九)
- 流氓软件的完全卸载的一些方法
- 联想小新触摸板驱动_联想小新智能语音鼠标驱动
- 直流有刷电机与无刷电机的区别
- 乐行科技获1.08亿元A轮融资,并推出艾特好车 1
- linux kernel 内存相关记录
- 微信自动邀请加群!!!
- html5 制作书架展示 PHP,简单做出HTML5翻页效果文字特效
- 我在B站读大学,大数据专业
- bootstarp怎么使盒子到最右边_8+ | 从恐龙特急克塞号到小猪佩奇,怎么都有它
- 各种书籍免费下载地址(持续更新中)
- 软件测试工程师面试如何做好自我介绍?
- IObit Uninstaller 10Pro BD