`
xitonga
  • 浏览: 579494 次
文章分类
社区版块
存档分类
最新评论

编程控制8位LED循环点亮

 
阅读更多

8个LED正极通过1千欧的限流电阻接到电源正极,负极接单片机控制端P0口。只要P0口管脚输出低电平,对应的LED就会被点亮。原理图如下:

单片机控制外部器件是通过I/O口的操作来实现的,因此对外围器件的操作,实际上是对I/O口的操作。

编程如下:

1、循环左移

#include<reg51.h> //51系列单片机头文件包含对单片机内部寄存器等的定义
#include<intrins.h>//本征函数头文件,包含此头文件可以在程序中直接调用本征函数_crol_(a,n)
#define uchar unsigned char/*以下三句属宏定义语句,以#define LED P0为例,它表示在以后的程序中LED就表示P0,目的在于提高程序的可读性。*/
#define uint unsigned int
#define LED P0
void delay()/*延时1秒子程序,单片机的C程序中通常会采用这种软件延时的方式,但这种延时并不准确*/
{
uint a,b;
for(a=0;a<=350;a++);
for(b=0;b<=32000;b++); /*在板子上实验了很多次,觉得这样延时LED的闪烁速度比较合适。*/


}
void main() /*主程序,通常情况下,主程序要尽量简单,功能模块尽可能在子程序中实现。*/
{
uchar temp;
LED=0xff;/*初始化P0口.*/
temp=0xfe; /*设置初始值。*/
while(1)
{
LED=temp; /*让第一个LED点亮。*/
temp=_crol_(temp,1); /*循环点亮。循环右移:_cror_*/
delay(); /*调用1s延时子程序*/
}
}

2、数组实现LED的循环闪烁

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint i); /*函数声明,让编译器知道有这个函数,防止调用的时候找不到。就像变量使用前要定义一样。也可以把下边的delay函数体提到main函数上边,就不需要函数声明了。*/
uchar led_data[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; /*数组包含led_data[0]到led_data[7]*/
void main() 1111 1110 1101 1111
{
uint i;
while(1)
{
for(i=0;i<8;i++)
{
P0=led_data[i];
delay(60000);
P0=0xff;
delay(60000);
}
}
}
void delay(uint i) /*delay函数的函数头,形式必须和函数声明的形式一致。*/
{
while(i--);
}
以上方法只是以P0口为例,对P1口也可以执行同样的操作。

分享到:
评论

相关推荐

    8个led灯循环点亮程序c语言

    从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去。下面一起来学习一下

    congzuodaoyou-led_P0口的8个LED从左到右循环依次点亮_

    接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果

    单片机C51 控制LED依次发亮

    程序控制单片机C51使8个LED灯依次发亮

    课程设计 基于AT89C51的LED彩灯设计

    用C51做的LED彩灯控制器,单片机控制,C语言编程,Proteus仿真,

    右移运算流水点亮P1口8位LED,C代码

    用右移运算流水点亮P1口8位LED,C程序源码,包含单片机寄存器的头文件,设置循环次数为8,每次循环P1的各二进位右移1位,高位补0,调用延时函数……

    【51单片机仿真实例】基于51单片机LED流水(程序+Proteus仿真+使用说明+流水灯动画图片)

    流水灯即是控制一定数量的LED灯,按照一定的方式循环点亮、或者熄灭的一种装置,这里采用51单片机编程实现。 软件设计:Keil uVision4 仿真设计:Proteus7.8 一、硬件电路搭建 首先,在仿真软件中搭建电路。(在...

    很好用的单片机c语言入门教程

    实例42:用定时器T0查询方式P2口8位控制LED闪烁 实例43:用定时器T1查询方式控制单片机发出1KHz音频 实例44:将计数器T0计数的结果送P1口8位LED显示 实例45:用定时器T0的中断控制1位LED闪烁 实例46:用定时器T0...

    单片机做的小灯可以循环点亮

    自己做的,送上仿真图。并且上机运行了,效果很好。

    单片机流水灯设计.doc

    下面我们以最简单的流 水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法 。 3.1位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每 一个位输出高低...

    51单片机流水灯实验(程序+报告)

    本实验利用4个按键,当KEY0按下时,P0口所接的发光二极管(LED3~LED10)以100ms的时间间隔自上至下循环点亮3圈,当KEY1按下时,以200ms的时间间隔自下至上循环点亮3圈;当KEY2按下时,8个LED闪烁3次,时间间隔为500...

    基于单片机的LED流水灯设计.doc

    二 方案论证与比较 2.1循环移位法 在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面 我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一 个数,这个数...

    Led.rar_DSP编程_Others_

    TMS320lf2407的IO口操作,实现跑马灯

    8255A控制十字路口交通灯(汇编语言)

    对8255A接口芯片进行编程,使红、黄、绿LED信号灯按照十字路口交通灯的形式点亮或熄灭。设有一个十字路口,两组信号灯分别代表东西和南北两个方向,其红、黄、绿灯变化规律如下: (1)两个方向红灯全点亮,绿灯、...

    微机实验_itselfpy7_微机接口_汇编语言_

    利用锁存器74LS75设计一个接口电路,使两个LED同时亮、同时灭,中 间间隔1秒,共循环3次,要求总线数据信号为高电平时,LED点亮。

    单片机技能比赛试题.doc

    四、设计项目: 项目1 花样流水灯的制作 一、设计要求 单片机的P2口上接有8只发光LED组成的花样流水灯。输入引脚P3.3接有一只按键开关K。 K未按下时,单片机利用P2口的输出,控制花样灯左右循环流水点亮;K按下时,...

    单片机课程设计之基于Proteus的LED点阵显示屏的设计与仿真.doc

    单片机应用系统设计 课 题:基于Proteus的LED点阵显示屏的设计与仿真 姓 名: 班 级: 学 号: 指导老师: 日 期: 一 绪论 八十年代以来出现了组合型IED点阵显示器,以发光二极管为像素,它用高亮度发光 二极管芯...

    实验二_GPIO接口及其外部中断的应用_

    利用软件循环查询方法编程实现:按下MSP430F5529LP板上的按键SI、S2分 别控制LED1、LED2点亮,再次按下时LED1、LED2熄灭。

    基于单片机的节日彩灯设计.doc

    用while死循环反复循环点亮"一"、"二"、"GO"。 2.3原理框图如图1.1所示—————————— 2.4设计电路的工作原理—————————————————————— 用C语言程序控制单片机最小系统,使IO口输出高低...

    单片机实习报告.doc

    训练目的和内容 熟悉并掌握对MSP430单片机的I/O口的操作以及定时器/计数器的使用方法,设计由8个L ED灯组成的"流水灯",实现每隔相同的时间,循环点亮一个灯,一个方向结束后,反向 循环。 2.硬件电路图 图1.1为 msp...

Global site tag (gtag.js) - Google Analytics