单片机点灯(点亮、闪烁、流水灯)

发布者:山宝宝最新更新时间:2023-01-12 来源: zhihu关键字:单片机  点灯  闪烁  流水灯 手机看文章 扫描二维码
随时随地手机看文章

一、点亮


工作原理:

如图,二极管阳极连接电阻,二极管阴极连接单片机引脚。D0对应P20,D1对应P21,,,,,,,都通过P2孔进行控制。

二极管:

电源正极连接到二极管阳极,负极连接到阴极,二极管正常工作。所以,原理图中,引脚为低电平,连接的是二极管的阴极,阳极通过与电阻连接,电阻连接的是高电平,所以二极管正常工作。电阻的作用为保护二极管。

程序编写


#include"reg52.h"

sbit LED=P2^0;  /*sbit用于定义变量。LED为自定义变量。将P2.0(注意不要写成P2.0,应写为P^0)孔赋给变量LED*/

void main()

{

while(1)

{

LED=0;/*由二极管的工作原理可得,二极管接P2.0孔,所以该孔为低电平,为0*/

}

}

二、闪烁


工作原理

在点亮LED灯的基础之上。

原理上基本与点亮LED灯工作原理相同。

自定义一个延时函数

主函数先点亮灯,在调用延时函数,在熄灭灯,然后在调用延时函数,将这些放入循环一直执行。完成


代码


#include "reg52.h"

typedef unsigned char u8; //重定义字符型变量

typedef unsigned int u16; //重定义整型变量


/*自定义延时函数*/

void dealy(u16 i)

{

while(i--);

}

sbit led=P2^0;


void main()

{

  while(1)

  {

led=0; //点亮,阴极接低电平

dealy(50000);

led=1;  //熄灭,阴极接高电平

dealy(50000);

  }

}

三、流水灯


工作原理

1.在LED点亮、LED闪烁实验的基础之上。

2.移位函数

crol(a,b):循环左移函数,a为左移的值,b为左移的位数。

cror(a,b):循环右移函数,a为右移的值,b为右移的位数。

移位函数包含在instrins.h库函数里面。

3.c语言中十六进制的表示

Ox代表的是十六进制的前缀,不用读。例如OXaaOxbb,只看aa,bb就行。

十六进制到二进制转换

十六进制表示:每一位有不同的数码0~9,A(10),B(11),C(12),D(13),E(14),F(15)

十六进制转二进制:将十六进制的每一位转化为二进制即可。例如8FA,=>1000 1111 1010

运作过程

先看原理图

LED原理图(阳极解高电平),阴极通过电阻接接引脚

引脚默认接高电平,所以,初始时灯为熄灭状态。


流水实现

利用十六进制位位移函数实现左移和右移

_crol_(0xfe,1):0xfe转化为二进制为1111 1110;1代表位数

f代表原理图中的4个高位引脚,e代表4个低位引脚。

1111 1110 =>p0=0(低电平,灯亮)

1111 1101 =>左移,p1=0,第二个灯亮

1111 1011 =>p2

…………

_cror_(oxfe,1):与左移原理相同(从0111 1111 开始向右移)

代码实现

#include

#include

typedef unsigned char u8; //重定义全局字符型变量

typedef unsigned int u16; //重定义全局整型变量

#define led P2//宏定义LED为p2端口

/*延时函数*/

void dealy(u16 i)

{

while(i--);

}


void main()

{

  u16 i;                   //定义变量i

  P2=0xfe;               //点亮第一个LED灯,即1111 1110.

  dealy(50000);       //延时450ms

  while(1)

  {

     for(i=0;i<7;i++)                //8个LED灯,利用for循环一直执行

   led=_crol_(led,1);            //  1111~1110~0111 1111,左移

   dealy(50000);

}

  for(i=0;i<7;i++)               //8个LED灯,利用for循环一直执行

{ led=_cror_(led,1);            //0111 1111~1111 1110 ,右移

   dealy(50000);

}

  }

 

}


关键字:单片机  点灯  闪烁  流水灯 引用地址:单片机点灯(点亮、闪烁、流水灯)

上一篇:51单片机数码管静态显示和动态显示原理及实验 夜猫子
下一篇:用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码

推荐阅读最新更新时间:2024-11-19 23:23

关于51单片机“定时器”的理解与应用
在 cpu 的一步步按照指令运行的过程中(主程序),可能会有其它的更紧急的需要做的事情(中断服务程序), 需要 cpu 暂时停止当前的程序(主程序),做完了(中断服务程序)之后,又可以继续去运行先前的程序(主程序)。 就像你正在吃饭,一边又在给水桶里放水,吃着吃着,水满了,你就得赶快去把水龙头关掉或者换一个空的水桶,再回来吃饭。 单片机的定时器就像是一个水桶 你让它启动了,也就是水龙头打开放水 定时器在每个机器周期自动加 1 水桶的水不断增加,最后就满出来了 定时器溢出时,你就要去做处理了 水桶的水满了,你应该处理一下了 处理完后,单片机又回到刚停止地方继续运行 水桶处理完,你也可以去做原来的事了 单片机的主程序是从
[单片机]
瑞萨电子RXv3 CPU核将大幅提升32位RX MCU系列产品性能
全球领先的半导体解决方案供应商瑞萨电子株式会社(TSE:6723)今日宣布,开发出第三代 32 位 RX CPU 核 —— RXv3。RXv3 CPU核将用于瑞萨电子的新型 RX 微控制器(MCU)系列,该新型微控制器将于 2018 年底正式推出。新型 MCU旨在满足下一代智能工厂、智能家居和智能基础设施中的电机控制和工业应用所需要的实时性和更强的稳定性。 创新的 RXv3 核大幅提升了久经验证的瑞萨电子 RX CPU 核架构性能,实现了高达 5.8 CoreMark ® /MHz 的性能(依照 EEMBC ® 基准测试进行评测),可提供业界领先的性能(注)、功效和响应能力。RXv3 核向后兼容瑞萨电子当前的 32 位 RX
[嵌入式]
技术文章—MCU如何扩展CAN或者CAN FD接口?
摘要:在嵌入式产品开发过程中,可能会面临CAN路数不够的问题。如何选择合适的转换模块解决这个问题呢?以下将为您讲解几款模块的选型方法。 应用场景 CAN总线是优秀的现场总线之一,已由当初的汽车电子扩散到各行各业。从工业自动化到新能源,从轨道交通再到航空航天,CAN总线技术在中国不断的应用和沉淀。 图1 CAN总线数据帧结构 当应用CAN总线时,我们可能会面临以下问题:主控制器没有支持CAN控制器或者CAN路数不够。具体问题表现:早期产品通信使用的是RS485或RS232通信,现阶段需要将产品升级到能支持到CAN通信;受制于成本限制,主控MCU必须选择低端处理器,本身不带CAN控制器
[汽车电子]
技术文章—<font color='red'>MCU</font>如何扩展CAN或者CAN FD接口?
51单片机基于定时器0的硬件延时代码
1 //晶振的频率 2 #define OSC_FREQ (11059200UL) 3 4 //每个指令的振荡周期数(4,6,12),注意,这里一定要仔细查看芯片手册 5 //*12 - 早期的8051、8052及当前的绝大部分51单片机 6 //*6 - Philips 的芯片 7 //*4 - Dallas 8 #define OSC_PER_INST (12) 9 10 //TIME 为定时时间 单位MS 11 #define PRELOAD1MS (65536 - 1*(UINT16)(OSC_FREQ/(OSC_PER_INST*1000))) 12 #define PRELOAD5MS (65536
[单片机]
单片机和多片DS1820组成的多点温度测控系统
1 概述 DS1820 是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS1820都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个 DS1820芯片。从DS1820读出或写入DS1820信息仅需要一根口线,共读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的 DS1820供电,而无需额处电源。DS1820能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。 2 DS1820的工作原理 DS1820采用3脚PR-3
[单片机]
由<font color='red'>单片机</font>和多片DS1820组成的多点温度测控系统
单片机学习】51单片机【串口】,详细介绍
一、先知先会 1、计算串行通信基础 2、串行通信的基本概念 (1)、异步通信与同步通信 a.异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。 b、同步通信 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步,。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保
[单片机]
【<font color='red'>单片机</font>学习】51<font color='red'>单片机</font>【串口】,详细介绍
基于单片机的双模糊温度控制器设计
现代工业控制中,温度控制十分重要且日益复杂化。由于温度控制具有的非线性、大滞后、时变性、升温单向性等特点,在实际应用中难以建立精确的数学模型,无法用经典控制理论及现代控制理论来解决实现温度控制效果。目前,现代智能控制中不依赖对象数学模型、能有效控制时变和非线性系统的模糊控制已普遍应用于工业温度控制中。通过对温度的基本模糊控制,可达到较好的控制效果,但存在一定的稳态误差,难以达到较高的控制精度。若根据系统不同的工作状态采用不同的温度模糊控制,即双模糊控制,可大幅度改善稳念误差,提高控制精度,同时利用单片机作为主控芯片,可有效完成温度模糊处理及温度实时控制且可靠性高。 1 控制器功能及硬件设计 双模糊温度控制器主要以单片机为主控
[单片机]
基于<font color='red'>单片机</font>的双模糊温度控制器设计
使用单片机实现GPRS通信小系统的研究
0 引 言 GPRS(通用分组无线电业务)是利用包交换的概念发展的一套无线传输方式。GPRS网络是基于现有的GSM(全球移动通信系统)网络实现的。在现有的GSM网络中需要增加一些节点,如GGSN(GPRS网关支持节点)和SGSN(GPRS服务支持节点)。SGSN的主要作用是记录移动终端的当前位置信息,并且在移动终端与GGSN之间完成移动分组数据的发送和接收。GGSN主要起网关作用,可以与多种不同的数据网络连接,如ISDN(综合业务数字网)、PSPDN(包交换公用数据网)和LAN(局域网)等。GGSN可以把GSM网中的GPRS分组数据包进行协议转换,从而把这些分组数据包传送到远端的TCP/IP或X.25网络。 GPRS网不但具有
[应用]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved