相信有不少老铁对如何入门51单片机一直找不到适合自己的方法,通常是看看网上的课程,然后利用开发板进行相关实验观察现象。然后通过一步一步学习最后成功入门。但这只是能够使你能够尽快对单片机有一定的认识。如果想完完全全地学懂单片机还是要懂一些基本的,基础的知识。


比如学单片机分为两个部分:一是硬件部分,二是软件部分。无论你是做硬件方面,还是软件方面。你都需要学习这两方面,只是有所侧重而已。最好的做法就是将两部分结合起来,综合学习。就我本人而言,我是做软件方面的的,除了编写程序外还要利用基本的硬件知识结合C语言来进行更深层次的学习。举一个例子,编写程序来点亮一个LED灯。


程序如下:


#include        //头文件

void main(void)

{  

    led=P2               //P2口重新定义为led

    led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

    while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }

 }   


这是一个最简单的程序,相信绝大部分人都能看懂,在Keil软件中运行编译生成hex文件后,烧录到51单片机中,就能看到led点亮的现象。


对于初学者而言,在编写这个程序之前。首先我们得了解 led 的运行机制,现在市场中常出现的led灯为发光二级管,具有二级管的一些基本性质。

led原理图

在程序写入单片机后,首先得知道这些led 是如何连接的。一般来说有两种方式:共阳或者共阴,这两种接法对程序最大区别在于 P2口的初始状态定义不同。因为 led 具有单向导电性通俗来讲想要让led发光就必须让 led 电压降的方向与外加电源电压方向一致。因此首先知道led的接法至关重要。


其次要明白程序中每步代表的意思,就以上程序而言,逐条分析:


#include

一个完整的程序,首先要进行头文件的编写也就是预编命令;这一步尤为关键,因为头文件中包含了一些变量的定义,寄存器的定义......。不过一般不需要我们来编写其中的的程序。在许多单片机开发软件中都会事先定义好;比如在Keil软件中如果要编写C51系列的单片机程序只需键入#include即可。在后续的学习开发中应该尝试去编写头文件,这对程序的模块化会有一定的帮助。


接下来分析主函数:


void main(void)

{  

    led=P2               //P2口重新定义为led

    led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

    while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }

 }  

 

众所周知每一个C程序必须有一个主函数main,而且每个函数都需要定义类型,包括其中的参变量。可根据不同的需求来定义。


接下来是函数体部分:


led=P2               //P2口重新定义为led

首先是将一些 IO口进行定义,在该程序中就将P2(P2^0-P2^7)口定义为led,这样做可以使得程序更具有可读性和更好的理解性。


led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

在是将led赋初值,其中0x代表十六进制。由进制转换可知一位十六进制对应四位二进制所以化为二进制就是(11111111)代表P2^0-P2^7的状态(也就是高低电平)全为高电平,因为led为共阳,因此八个led全部熄灭。


 while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }


接下来便是函数主要部分了,首先是一个while循环,while(1)代表无限循环,表示程序无限执行下去。然后就是对led再次进行操作,执行的是将led状态由11111111转化为11111110 因此P2^7所连接的led灯亮起。


以上便是对程序的解读了,希望能帮助到初学的同学,其实学习单片机是一件非常有趣的事情,只要坚持,相信终有一日能够自己设计自己所需要的功能,并在单片机上得以实现。

关键字:51单片机  软件部分 引用地址:关于51单片机学习的一些小建议

上一篇:51单片机入门实验
下一篇:51单片机学习三步走

推荐阅读

智能汽车尚处于发展初期,但这一趋势已不可逆转。新智驾获悉,沃尔沃正和谷歌联合打造一款标准化的汽车版安卓操作系统,在前者的下一代智能车载信息娱乐系统中,该系统将提供全新云解决方案、人机交互更新和第二代空中升级技术等服务。一定意义上,搭载车机系统是汽车智能化的重要标志。在号称第一款互联网汽车上汽荣威RX5的催化下,汽车厂商正在纷纷推出...
(文章来源:IT之家) 据Letsgodigital报道,近日一款人工智能家庭机器人设计专利外观图公布,采用球形设计,可以进行移动。据了解,2019年3月中旬,三星公司向USPTO(美国专利商标局)申请了一项“电子设备及其操作方法”的专利。该专利于2019年9月19日正式发布,同一天这项专利也被收入了WIPO(世界知识产权局)。 从专利设计草图和Letsgodigital制...
主营产品供货蔚来、中兴通讯经过十余年发展,瑞可达已成为同时具备光、电、微波连接系统产品研发和生产能力的领先企业之一。目前,瑞可达能够提供移动通信(包括民用和防务)、新能源汽车、工业和轨道交通等综合连接系统解决方案。在无线通信基站系统应用上,瑞可达把握时代机遇,建设了 HTTA(Hybrid tothe antenna 光电混装连接到塔)等工程技术研究...
12月16日,捷捷微电在互动平台表示,公司有部分MOSFET产品可应用于光伏逆变器领域,目前仍在样品阶段。公司在新能源汽车方面,有部分TVS产品用于充电桩上,主要是提供安全保护。据捷捷微电透露,公司侧重于功率半导体器件IDM模式,功率半导体“车规级”产业化项目,生产的车规级大功率器件主要应用于新能源汽车电子(如电机马达和车载电子)、5G核心通信电...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved