找回密码
 立即注册

QQ登录

只需一步,快速开始

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

第一个单片机程序(点亮LED)

[复制链接]
跳转到指定楼层
楼主
ID:115111 发表于 2016-4-28 03:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        对一个单片机新手,遇到的第一个问题往往是如何使用单片机点亮LED,这就好比学习编程语言第一个程序的HelloWorld。

        这里默认大家已经装好了KEIL的开发环境及烧写器,有自己的单片机开发板,假设单片机的P0口接了八个LED,电路图入下图:
其中JPP0接的是高电平5V,而L0.0到L0.7接的分别是P0.7到P0.0这样的话如果
P0.7到P0.0上电平是高电平,那么这个led的压降就是0,led不亮,如果P0.7到P0.0上电平是低电平,那么led上就会产生压降,led就会亮。
那么点亮其中一个的程序如下:




#include<reg51.h>   //包含单片机寄存器的头文件

void main(void)
{
   while(1)
          {
                 P0=0xfe;   //第一个灯亮       
                 P0=0xff;   //第一个灯灭        
         }
}


对,就是这么简单,P0=0xfe,相当于P0=11111110,这时候P0.0=0,灯L0.7亮,然后P0=0xff,相当于P0=11111111,这时候P0.0=1,灯L0.7灭,然后由于这两句是放在while(1)中的由于其中1是while{}中的语句执行的条件,由于1始终为真,所以这两句循环执行。灯L0.7就在不断闪烁,亮灭,但由于闪烁的速度很快,由于视觉暂留,你看到的是灯一直亮着。





接下来来个流水灯,大家尝试自己分析程序的原理:
#include<reg51.h>   //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/

void delay(void)
   {
          unsigned char i,j;
           for(i=0;i<250;i++)
                 for(j=0;j<250;j++)                  
                   ;
          }
/*******************************************************
函数功能:主函数
********************************************************/
void main(void)
{
   while(1)
          {
                P0=0xfe;   //第一个灯亮
                 delay();   //调用延时函数
                P0=0xfd;   //第二个灯亮
                 delay();   //调用延时函数
                P0=0xfb;   //第三个灯亮
                 delay();   //调用延时函数
                P0=0xf7;   //第四个灯亮
                 delay();   //调用延时函数
                P0=0xef;   //第五个灯亮
                   delay();   //调用延时函数
                P0=0xdf;   //第六个灯亮
                 delay();   //调用延时函数
                P0=0xbf;   //第七个灯亮
                   delay();   //调用延时函数
                P0=0x7f;   //第八个灯亮
                   delay();   //调用延时函数  
         }

}
这时候这八个灯就愉快的流动闪烁了。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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