51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。

而我手头使用的是普中科技的51单片机学习板,mcu是stc89c52,下面是它的原理图。

下面我需要对它的led模组进行高低电平控制,进而点亮各个led,下面是led模组的原理图。

可以看到是由8个串联电阻的发光二极管并联在一起,由vcc供电,此时如果提供一个低电平(0),就能使得led亮起,反之就会熄灭。下面就是完整代码。

#include "reg52.h"     //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>       //因为要用到左右移函数,所以加入这个头文件typedef unsigned int u16;    //对数据类型进行声明定义
typedef unsigned char u8;#define led P2    //将P2口定义为led 后面就可以使用led代替P2口/*******************************************************************************
* 函 数 名         : delay
* 函数功能         : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{while(i--);
}/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{u8 i,pwm,y=500;for(i=0;i<3;i++) //闪烁灯{led=~0x01;delay(50000); //大约延时450msled=~0x00;delay(50000); //大约延时450ms}for(pwm=y;pwm>0;pwm--) //呼吸灯,控制占空比{led=0; //灯亮delay(pwm);led=1;//灯灭delay(y-pwm);}for(pwm=0;pwm<y;pwm++){led=0;delay(pwm);led=1;delay(y-pwm);}   while(1){   for(i=0;i<8;i++){P2=~(0x01<<i);     //将1右移i位,然后将结果赋值到P2口delay(50000); //大约延时450ms}}
}

效果图

51单片机系列--闪烁灯,呼吸灯与流水灯相关推荐

  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单片机控制彩色点阵制作沙漏型交通灯

    本文介绍了彩色点阵的使用,以及利用51单片机控制点阵制作的沙漏型交通灯,希望对打算用点阵做课程设计的同学有点帮助. 一.效果展示       二.彩色点阵的使用 彩色点阵有32个引脚,这里以背面图来讲 ...

  4. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)

    本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...

  5. Step1 :【C51】LED灯闪烁、跑马灯、流水灯、实现每次亮两个灯的流水灯

    Step1Step1Step1 :[C51]LED灯闪烁.跑马灯.流水灯.实现每次亮两个灯的流水灯 在我所使用的开发板中,LED采用共阳极接法,即所有LED阳极管脚接电源VCC,其阴极管脚接到P2口上 ...

  6. c语言流水灯定时器延时,实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)...

    /** ****************************************************************************** * @file main.c * ...

  7. c语言intrins头文件,结合单片机学习板学习c语言之流水灯制作 intrins.h头文件

    原标题:结合单片机学习板学习c语言之流水灯制作 intrins.h头文件 目的:实现流水灯. 本文引用地址:http://www.eepw.com.cn/article/201608/294948.h ...

  8. ## C51单片机2种方法让8个流水灯依次亮灭

    C51单片机2种方法让8个流水灯依次亮灭 第一种 数组 就是把每次亮灯情况写在数组里面.8个二极管共同接地.比如说0xfe是二进制是11111110,第一个灯灭.然后下一个数是0xfd,对应二进制是1 ...

  9. 用c语言完成流水灯控制的程序设计,单片机C语言程序设计之TIMER0控制流水灯

    描述 基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的.通常在所需按键数量不多时,系统常采用独立式按键.这种按键的电路配置灵活,软件结构简单 ...

最新文章

  1. getsockname的使用
  2. 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
  3. 程序员自我修养的4个阶段
  4. A20修改串口设备文件
  5. TFS创建团队项目(三)
  6. webpack-loader(加载器)
  7. 无需充电的太阳能汽车有多强?约17万起,续航高达1609km
  8. c java python小白_Java,python,c语言小白的理解
  9. java的dicon文件_配置文件参考
  10. java 调用 easypr_Java程序执行Linux命令调用EasyPR程序识别车牌号
  11. stata15中文乱码_如何解决 Stata 14 的中文乱码问题
  12. work profile关闭时桌面图标变灰
  13. 【C++---16】常指针和常引用
  14. 域控服务器里没有internet时间,加入域之后,【Internet 时间】选项没有了
  15. 优酷视频如何登录优酷账号?
  16. Django之restframework的路由Routers
  17. Allegro导出元器件pad坐标和网络(附带ODB++插件下载)
  18. 合肥python儿童编程_合肥少儿编程学习中心
  19. 基于单目和低成本GPS的车道定位方法
  20. 航嘉服务器维修电源,无故障60000小时,服务器/工控机电源推荐

热门文章

  1. 华为服务器网口ip配置文件,华为服务器、存储IP初始配置方法
  2. 【UE4_蓝图】map函数以及Clamped和Unclamped的区别
  3. 5分钟了解什么是OpenXR
  4. 提示:The word is not correctly spelled 解决方法
  5. 嵌入式开发为啥不适合macOS系统?
  6. android 计算器,Android实战:计算器
  7. ValueError: n_splits=n cannot be greater than the number of members in each class.
  8. HC小区管理系统mysql如何修改密码
  9. 苹果双系统怎么切换_Mac如何删除双系统中的windows系统
  10. 四旋翼的运动原理及几个飞行问题