2007-04-11 12:25:00 pfboy 阅读数 3359
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4001 人正在学习 去看看 朱有鹏

;单片机交通灯程序,黄灯闪6次转红灯1分,然后黄灯6次转绿灯1分钟

STR: ACALL YELLO
  MOV A,#81H
  MOV P1,A
  ACALL DEONE
  ACALL YELLO
  MOV A,#24H
  MOV P1,A
  ACALL DEONE

  JMP STR

YELLO:MOV R4,#6
YELLO1:MOV A,#42H
   MOV P1,A
   ACALL DELY
   MOV A,#00H
   MOV P1,A
   ACALL DELY
   DJNZ R4,YELLO1
   RET

DEONE:MOV R3,#60
DEONE1:ACALL DELY
   DJNZ R3,DEONE1
   RET

DELY: MOV R5,#20
DELY0:MOV R7,#200
DEL1: MOV R6,#123
   NOP
DEL2: DJNZ R6,DEL2
      DJNZ R7,DEL1
   DJNZ R5,DELY0
   RET
END 

2008-04-17 17:16:00 hiyoyo 阅读数 2148
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4001 人正在学习 去看看 朱有鹏

用单片机控制LED灯要怎样编写?

正文: 用单片机控制LED灯要怎样编写? 我想要一个程序是这样:控制环形灯从最上面的一盏灯开始亮,然后熄了,然后顺着第二盏灯亮了,然后熄了,然后第三盏亮了,又熄了……这样一直到最低下的一盏, 请问有谁能写个这样的程序给我吗?是用C语言的。或者给我个可以找到的网站、论坛等等。不胜感谢!

最佳答案 - 由投票者6个月前选出 单片机控制LED灯闪烁的程序编制方法 1:程序开始(START) 2:A=00000000B 3:PORT 0 4:延迟(DELAY) 5:A=11111111B 6:PORT 0 7:延迟(DELAY) 8:反回开始 延迟子程序编制方法: 1:R6=0 2:DEL1 3:R7=0 4:$ 5:R7-1 6:R7=0 不等于0,返回2 7:R6-1 8:R6=0 不等于0,返回4 回主程序

 
2018-07-21 14:27:19 janmesyang 阅读数 786
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4001 人正在学习 去看看 朱有鹏

//杨玉祥  2018/7/20  花样灯

#include <reg51.h>

void sleepUs(unsigned int t);
void sleepMs(unsigned int t);

void main()
{
    char i,w,j,n;
    unsigned char table[] = {0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7};
    unsigned char table1[]= {0x81,0xc3,0xe7,0xe7,0xc3,0x81};
    for(i=3;i>0;i--)          //循环流水灯,逐渐加速
    {
        P1 = j = 0xfe;
        sleepMs(50*i);
        for(w=0;w<8;w++)
        {
            j <<= 1;
            j = j|0x01;
            P1 = j;
            sleepMs(50*i);
        }
        P1 = j = 0x7f;
        sleepMs(50*i);
        for(w=0;w<8;w++)
        {
            j >>= 1;
            j = j|0x80;
            P1 = j;
            sleepMs(50*i);
        }        
    }
    for(j=0;j<2;j++)
    {
        for(i=0;i<8;i++)    //中间往两边跑,然后再跑回来
        {
            P1 = table[i];
            sleepMs(50);
        }
        for(w=0;w<3;w++)    //八个灯同时闪烁
        {
            P1 = 0x00;
            sleepMs(50);
            P1 = 0xff;
            sleepMs(50);
        }    
        for(n=0;n<6;n++)    //偶数灯逐个闪亮
        {
            P1 = table1[n];
            sleepMs(100);
        }
    }
    while(1)
    {
        for(w=0;w<3;w++)    //八个灯同时闪烁
        {
            P1 = 0x00;
            sleepMs(50);
            P1 = 0xff;
            sleepMs(50);
        }    
    }
        
}    
void sleepUs(unsigned int t)
{
    while(--t);
}

void sleepMs(unsigned int t)
{
    while(t--)
        {
           sleepUs(245);
             sleepUs(245);
        }
}

2009-10-14 15:16:00 gududesiling 阅读数 1484
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4001 人正在学习 去看看 朱有鹏

 

/*单片机流水灯c程序*/
/*本程序中流水灯为共阳极*/
#include <reg51.h>
#include <intrins.h>//51c语言中的头文件:是将第一个参数循环左移n位
#define uchar unsigned char
#define uint unsigned int

//最初算的时候,是按照xms*111(如1*111=111us=0.111ms可是还要加上判断周期,减减周期,是最终的时间按达到1ms)
void delay(uint xms)
{
   uint i,j;                   //(仿真过的),此程序延时x‘ms’
   for (i=xms;i>0;i--)     //这个延时时间是按照12M的晶振来推算出来的,此时一个机器周期是1us
      for(j=111;j>0;j--)   
                 ;
}

 

void main()
{
    unsigned char LED;
    LED=0xfe;     //不能直接把0xfe付给P0口,因为如果直接付给的话,PO口就是一个固定的值,没法进行位的移动
    P0=LED;
    while(1)
    {

           delay(500);     //延时500ms
           LED=_crol_(LED,1);//循环左移1位,点亮一个LED 
           P0=LED;
    }
}

2015-05-30 17:08:59 gotoAndPlay1 阅读数 1678
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4001 人正在学习 去看看 朱有鹏

最近学习了单片机,现在把流水灯的相关操作与大家分享一下

单片机的编程语言是c语言,大家也应该很熟悉,那c语言是如何来控制开发板上的流水灯的呢?其实很简单 :每一个LED灯都有固定的位置,在<reg52.h>头文件中已经将LED灯的位置与一个变量相对应。

那么如何点亮一个LED灯呢

#include<reg52.h>

sbit LED1 = PI^0;

void main()

{

LED1 = 0;

}

这样就实现了LED1灯的点亮

/////////////////////////////////////////////////

接下来我给大家介绍一下流水灯的循环闪烁

(下面这段程序也可以用for循环进行书写,为了便于大家理解,从最简单的写法将起,自己可以试试用其他办法写)

#include<reg52.h>

sbit LED1 = PI^0;

sbit LED2 = PI^1;

sbit LED3 = PI^2;

sbit LED4 = PI^3;

sbit LED5 = PI^4;

unsigned int a;

void main()

{

while(1)

{

a = 10000;
LED1 = 0;
while(a--);
LED1 = 1
;
LED2 = 0;
a = 10000;
while(a--);//这两行代码是延时器
LED2 = 1;
LED3 = 0;
a = 10000;
while(a--);
LED3 = 1;
LED4 = 0;
a = 10000;
while(a--);
LED4 = 1;
LED5 = 0;
a = 10000;
while(a--);
LED5 = 1;
}

}

这段程序就是使流水灯不断的循环闪烁,在街头的广告牌很是常见,红绿灯也是这种原理制作的。


单片机流水灯程序

阅读数 309

51单片机上设置流水灯程序

博文 来自: qq_45400902
没有更多推荐了,返回首页