找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3626|回复: 22
打印 上一主题 下一主题
收起左侧

点亮LED c语言

  [复制链接]
跳转到指定楼层
楼主
ID:162360 发表于 2017-1-19 00:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用空循环语句延时1s,利用延时程序控制LED每秒按顺序循环点亮?(P1接八个流水灯)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:70330 发表于 2017-1-19 08:37 | 只看该作者
本站搜索LED,多的是,比如http://www.51hei.com/bbs/dpj-22559-1.html
回复

使用道具 举报

板凳
ID:106021 发表于 2017-1-19 09:26 | 只看该作者
你这个问题能说清楚一点嘛,空循环,点亮led,一般的 教程里都有例子。
回复

使用道具 举报

地板
ID:104472 发表于 2017-1-19 10:03 | 只看该作者
点亮p1口的第一位,延时,然后第二位,延时,依次类推,直到循环完毕,这个是对IO的应用,高低电平的控制。
回复

使用道具 举报

5#
ID:149451 发表于 2017-1-19 13:46 | 只看该作者
试试这个,不知是否满足你的要求:

#include"AT89x52.h"
#include"intrins.h"
       
#define uint unsigned int
#define uchar unsigned char

void delay(viod)
{
   unsigned char h,i,j,k;
   for(h=5;h>0;h--)
     for(i=4;i>0;i--)
       for(j=116;j>0;j--)
         for(k=214;k>0;k--);
}

main()
{
        uchar temp=0xfe;
        P1=0xff;
        while(1)
        {
                P1=temp;
                temp=_crol_(temp,1);    //移位
                delay(200);                       
        }
}
回复

使用道具 举报

6#
ID:162439 发表于 2017-1-19 16:49 | 只看该作者
我的keil软件不好用,不知道为什么
回复

使用道具 举报

7#
ID:161795 发表于 2017-1-19 17:04 | 只看该作者
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
*/

// Pin 12 has an LED connected on most Arduino boards.
// give it a name:
int led = 12;

// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(2000);               // wait for a second
}
回复

使用道具 举报

8#
ID:162469 发表于 2017-1-19 21:26 | 只看该作者
新手进来看看,同求lz
回复

使用道具 举报

9#
ID:162563 发表于 2017-1-20 16:27 | 只看该作者
int i;for(i=0;i<=10;i++){LED=~LED;delay_ms();}
回复

使用道具 举报

10#
ID:162753 发表于 2017-1-22 20:56 | 只看该作者
通过左右移算法加延时就可以了吧
回复

使用道具 举报

11#
ID:162765 发表于 2017-1-22 22:45 | 只看该作者
/**********************           作者:Jellina电子   ***********************/ /********************** 基于STC15F2K60S2系列单片机C语言编程实现 使用如下头文件,不用另外再包含"REG51.H" #include <STC15F2K60S2.h> ***********************/ #include "STC15F2K60S2.H" //#include "REG51.H"  //sfr P4   = 0xC0; #define  uint unsigned int   #define  uchar unsigned char   /********************** 引脚别名定义 ***********************/ sbit SEL=P4^3;         // LED和数码管选择引脚         高:LED有效 低:数码管有效                                 // SEL连接的单片机引脚必须为带有上拉电阻的引脚 或将其直接连接VCC #define data P2 // 数据输入定义   /********************** 函数名称:Delay_1ms 功能描述:延时 入口参数:unsigned int t 表示要延时t个1ms  出口参数:无 备注:通过参数t,控制延时的时间长短 ***********************/ void Delay_1ms(uint t) {         uchar j;           for(;t>0;t--)        for(j=110;j>0;j--)      ; } /********************** 函数名称:Led_test 功能描述:对8个二极管进行测试,依次轮流点亮8个二极管 入口参数:无 出口参数:无 备注:                                                  ***********************/ void Led_test() {     uchar G_value=0x01;        // 给变量赋初值         SEL=1;           //高电平LED有效                           while(1)         {                         data=G_value;                 Delay_1ms(10000);                 G_value=G_value<<1;                 if(G_value==0x00)                 {                         data=G_value;                         Delay_1ms(10000);                         G_value=0x01;                                     }                         } } /*********************** 主函数 ************************/ void main() {         /////////////////////////////////////////////////         //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为         //      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用         //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2         //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5         /////////////////////////////////////////////////         P4M1=0x00;         P4M0=0x00;         P2M0=0xff;         P2M1=0x00;        //将P2设为推挽         Led_test();          }
回复

使用道具 举报

12#
ID:162818 发表于 2017-1-23 18:12 | 只看该作者
#include"AT89x52.h"
#include"intrins.h"
      
#define uint unsigned int
#define uchar unsigned char

void delay(viod)
{
   unsigned char h,i,j,k;
   for(h=5;h>0;h--)
     for(i=4;i>0;i--)
       for(j=116;j>0;j--)
         for(k=214;k>0;k--);
}

main()
{
        uchar temp=0xfe;
        P1=0xff;
        while(1)
        {
                P1=temp;
                temp=_crol_(temp,1);    //移位
                delay(200);                       
        }
}
回复

使用道具 举报

13#
ID:162841 发表于 2017-1-24 01:30 来自手机 | 只看该作者
给你推荐一本书(单片机程序设计与实训00例)里面有很好的例子
回复

使用道具 举报

14#
ID:162841 发表于 2017-1-24 22:54 来自手机 | 只看该作者
用IO口接八个流水灯,写一个秒级别的函数就可以了
回复

使用道具 举报

15#
ID:162360 发表于 2017-1-24 22:57 | 只看该作者
w1179benp 发表于 2017-1-19 13:46
试试这个,不知是否满足你的要求:

#include"AT89x52.h"

现在想知道如何用定时器去延时1s?请教
回复

使用道具 举报

16#
ID:162360 发表于 2017-1-24 22:57 | 只看该作者
shuijingdexiao 发表于 2017-1-19 16:49
我的keil软件不好用,不知道为什么

现在用的都是KEIL 4
回复

使用道具 举报

17#
ID:162360 发表于 2017-1-24 22:58 | 只看该作者
199419zzq 发表于 2017-1-24 01:30
给你推荐一本书(单片机程序设计与实训00例)里面有很好的例子

好的谢谢
回复

使用道具 举报

18#
ID:162360 发表于 2017-1-24 22:59 | 只看该作者
199419zzq 发表于 2017-1-24 22:54
用IO口接八个流水灯,写一个秒级别的函数就可以了

恩恩  如何用定时器去延时1S呢
回复

使用道具 举报

19#
ID:162896 发表于 2017-1-24 23:01 | 只看该作者
用位移加廷时就可以
回复

使用道具 举报

20#
ID:162841 发表于 2017-1-24 23:43 来自手机 | 只看该作者
天才鱼yhx 发表于 2017-1-24 22:59
恩恩  如何用定时器去延时1S呢

用定时器0或者1,4种模式随你选择最好选择模式1,模式一是16位的TH0=(65536-20000)/256,TL0=(65546-20000)%256,然后定义一个变量累加50次就是一秒了
回复

使用道具 举报

21#
ID:162841 发表于 2017-1-24 23:45 来自手机 | 只看该作者
199419zzq 发表于 2017-1-24 23:43
用定时器0或者1,4种模式随你选择最好选择模式1,模式一是16位的TH0=(65536-20000)/256,TL0=(65546-2 ...

写错了,改一下TL0=(65536-20000)%256
回复

使用道具 举报

22#
ID:162360 发表于 2017-1-25 07:45 | 只看该作者
199419zzq 发表于 2017-1-24 23:45
写错了,改一下TL0=(65536-20000)%256

能把它写出来吗  我还没有学到定时器,谢谢
回复

使用道具 举报

23#
ID:162913 发表于 2017-1-25 09:21 | 只看该作者
挺好的  ,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表