51单片机入门学习小结(流水灯与数码管)

您所在的位置:网站首页 单片机流水灯1到8依次亮 51单片机入门学习小结(流水灯与数码管)

51单片机入门学习小结(流水灯与数码管)

2024-07-11 14:15| 来源: 网络整理| 查看: 265

51单片机入门学习小结(流水灯与数码管) 对原理图的分析

以下是我所用单片机的原理图 在这里插入图片描述 这块51单片机一共有4个I/O口(意思为input/output),也代表着如果我们后续都要用到这四个的话那么功能会比较单一,所以单片机上会有很多模块,如74HC245可以用来控制数码管,减轻单片机核心上的负担。 在这里插入图片描述 这是LED模块,VCC代表高电位+5V,所以说想让这LED发光,就要在另一端接低电位0V。 在图中我们可以看到可以把LED右端的接口与核心上的P2端相接,一一对应。

LED的点亮与流水灯

1.先来说一下如何点亮LED灯

#include "reg52.h"//调用52单片机的头文件,写51也可以// sbit LED=P2^0;//sbit 是用来确定地址,这里是把LED定义为P2的0号接口// void main() { LED=0;//代表着P2口出低电位使发光二极管前后产生电位差而发光// }

所以以此类推我们可以使开发板上的多个发光二极管点亮,但是如果一个一个接口定义过去会比较麻烦,所以我们可以对整个P2口进行操作。

#include "reg52.h" #define LED P2 void main() { LED=0; }

这样就能实现LED灯全部点亮。 那么我们要如何使LED灯实现流水灯的样子呢?

流水灯实现

首先我们要知道8个LED灯每一个灯都代表二进制位上的一位,也就是说8个灯在一开始都为1111 1111(顺序从LED1到8),这样两边高电位所以不会亮,我们把他写为十六进制数为0xff(0x是为了告诉电脑这是16进制) 所以我们想要把灯点亮,就可以把各个位置变为0出低电位,这样就可以实现点亮LED灯。 那么我们要怎么样才能使LED灯逐个点亮呢? 我们可以用到C语言中的""来实现位的左移右移。也就是说我们可以这样写

#include "reg52.h" #define LED P2 #define ui unsigned int #define uc unsigned char void delayms(ui del) //延时语句,延时时长为(del*10)ms { ui i,j; for(i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3