找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求最简单点亮LED灯单片机c语言程序

[复制链接]
跳转到指定楼层
楼主
本人是菜鸟,求最简单点亮LED灯单片机c语言程序,在线等,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:163663 发表于 2017-2-6 18:27 | 只看该作者
根据你的需求,参考电路图如图A所示。
参考程序如下:
#include<REG52.h>
main()
{
        P2=0x01;/点亮P2.0
}

希望对你有所帮助!

ww.jpg (73.47 KB, 下载次数: 75)

图A

图A
回复

使用道具 举报

板凳
ID:163711 发表于 2017-2-7 10:08 | 只看该作者
c语言程序源码 #include <reg51.h> void delay100ms();   //如果函数是在主函数后面定义,那么一定要在主函数前面声明                                          void main() { int i; i=0xfe; while(1) {P1=i; i--; delay100ms(); if(i==0) i=0xfe;   } }   void delay100ms(void)// { unsigned char a,b,c; for(c=19;c>0;c--) for(b=20;b>0;b--) for(a=230;a>0;a--); }
回复

使用道具 举报

地板
ID:163711 发表于 2017-2-7 10:09 | 只看该作者
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去
回复

使用道具 举报

5#
ID:163711 发表于 2017-2-7 10:10 | 只看该作者
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去
c语言程序源码
#include <reg51.h>
void delay100ms();   //如果函数是在主函数后面定义,那么一定要在主函数前面声明                                         
void main()
{
int i;
i=0xfe;
while(1)
{P1=i;
i--;
delay100ms();
if(i==0)
i=0xfe;  
}
}

void delay100ms(void)//
{
unsigned char a,b,c;
for(c=19;c>0;c--)
for(b=20;b>0;b--)
for(a=230;a>0;a--);
}
回复

使用道具 举报

6#
ID:163669 发表于 2017-2-7 12:29 | 只看该作者
#include<reg51.h>
sbit led=P0^0;
main()
{        led=1;/*高电平点亮led*/}
回复

使用道具 举报

7#
ID:163526 发表于 2017-2-7 15:44 来自手机 | 只看该作者
个人建议看视频自学
回复

使用道具 举报

8#
ID:163961 发表于 2017-2-8 22:39 | 只看该作者
个人建议看书自学
回复

使用道具 举报

9#
ID:162357 发表于 2017-2-10 09:17 | 只看该作者
给一个I0口赋值就行了
回复

使用道具 举报

10#
ID:164401 发表于 2017-2-13 09:33 | 只看该作者
/*    添加包含芯片的头文件    */
#include<iostm8s103k3.h>  /*  头文件 */

//由原理图得知,给LED一个低电平,LED亮。否则LED不亮。
#define         LED1_ON()         PD_ODR_bit.ODR0 = 0     //使LED1亮
#define         LED2_ON()         PD_ODR_bit.ODR2 = 0     //使LED2亮
#define         LED3_ON()         PD_ODR_bit.ODR3 = 0     //使LED3亮
#define         LED4_ON()         PC_ODR_bit.ODR4 = 0     //使LED4亮

#define         LED1_OFF()        PD_ODR_bit.ODR0 = 1     //使LED1灭
#define         LED2_OFF()        PD_ODR_bit.ODR2 = 1     //使LED2灭
#define         LED3_OFF()        PD_ODR_bit.ODR3 = 1     //使LED3灭
#define         LED4_OFF()        PC_ODR_bit.ODR4 = 1     //使LED4灭

/*******************************************************************************
**函数名称:void delay(unsigned int ms)     Name: void delay(unsigned int ms)
**功能描述:大概延时
**入口参数:unsigned int ms   输入大概延时数值
**输出:无
*******************************************************************************/
void delay(unsigned int ms)
{
  unsigned int x , y;
  for(x = ms; x > 0; x--)           /*  通过一定周期循环进行延时*/
  for(y = 3000 ; y > 0 ; y--);
}


/*******************************************************************************
**函数名称:void InitLED()
**功能描述:初始化LED函数
**入口参数:无
**输出:无
*******************************************************************************/
void InitLED()
{
  //初始化LED1
  PD_DDR_bit.DDR0 = 1;    //设置端口PD->0的输入输出方向寄存器为输出方向
  PD_CR1_bit.C10 = 1;     //推挽输出
  PD_CR2_bit.C20 = 1;     //输出速度最大为10MHZ
  //初始化LED2
  PD_DDR_bit.DDR2 = 1;    //设置端口PD->2的输入输出方向寄存器为输出方向
  PD_CR1_bit.C12 = 1;     
  PD_CR2_bit.C22 = 1;
  //初始化LED3
  PD_DDR_bit.DDR3 = 1;    //设置端口PD->3的输入输出方向寄存器为输出方向
  PD_CR1_bit.C13 = 1;     
  PD_CR2_bit.C23 = 1;
  //初始化LED4
  PC_DDR_bit.DDR4 = 1;    //设置端口PC->4的输入输出方向寄存器为输出方向
  PC_CR1_bit.C14 = 1;     
  PC_CR2_bit.C24 = 1;
}

/* 主函数 */
int main(void)
{

CLK_CKDIVR = 0x00;      //内部时钟为1分频 = 16Mhz
  InitLED();              //调用LED初始化函数
  while(1)
  {
     LED1_ON();  
     delay(1000);
     LED1_OFF();
     
     LED2_ON();
    delay(1000);
     LED2_OFF();
     
     LED3_ON();
     delay(1000);
     LED3_OFF();
      
     LED4_ON();
     delay(1000);        
     LED4_OFF();            
  }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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