51单片机入门:点亮一个LED灯的保姆级教程

一、为什么要学习单片机?

作为一名工科学生,进入大学参加各种活动,例如:电子设计大赛、寻迹车比赛、LED电子灯比赛以及各种各样的微控、弱控强电路等,都离不开单片机的身影。电路、c语言、数电、模电、计算机控制等知识的学习,给单片机的学习增添了软辅助,但我认为,学习单片机更多的是自己的兴趣、爱好,正如“程序虐我千百遍,我视程序为初恋”。

此外,学习单片机知识,从最基础的51单片机入门学习,可以为我们后面学习STM32、ARM微控器等其微控制器的学习奠定知识基础和积攒一定的经验,给自己的大学及以后的职业道路增加一丝色彩。

二、首先了解什么是单片机?

单片机又称单片微控制器,把一整个计算机系统集成到一个芯片上,当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

单片机属于一种集成式电路芯片。主要包含CPU、只读存储器ROM和随机存储器RAM、时钟电路、中断系统和定时/计数器及各种输入输出IO口构成,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。

图1 单片机的基本结构

三、如何快速、高效学习单片机?

  1. 多学习;查阅原始资料,即单片机手册和各个模块手册。
  2. 多动手;代码的学习主要是自己多动手进行练习,孰能生巧。
  3. 多思考;一个程序的实现往往有多种不同的方式,但最基本的原理保持不变,只是每个程序员的习惯和书写形式不一,复杂程度和代码的可移植性不一样,万变不离其原理。

四、准备资料和软件(提前了解,间接性、针对性学习印象比较深刻)

4.1 相关基础知识

单板的基本知识、电路的基本电路知识、数字电子技术基础知识、模拟电子技术基础知识、选用模块的逻辑知识、电力电子知识(模块化弱控强应用电路后buck、boost电路等)

4.2 基础软件

  • 推荐keil5: 编写程序代码
  • proteus模拟仿真: 可以进行模型构建及仿真演示,为实物排除问题
  • Altium Designer: 进行原理图绘制,设计自己专属的pcb板
  • STC-ISP: 将keil5生成的Hex文件烧录进单片机内
  • B站:可以在上面进行部分程序的学习
  • 五、(最基础、最简单程序)点亮一个LED灯

    5.1 LED原理和知识

    图2 LED原理图

    LED即发光二极管,是一种半导体固体发光器件。具有单向导通性,两极分别为P极和N极,也有说成是阳极和阴极,如图2中阳极接电源端,只需阴极给低电平LED就会发光。(其余LED知识大家可自行了解)

    5.2 点亮一个LED灯具体代码

    #include <reg52.h>  //此文件定义单片机的一些特殊功能寄存器
    
    sbit led=P2^0;	   //将单片机的P2.0端口定义为led(当然也可以定义其他端口,欢迎尝试)
    
    void main()      //每一个main.c中必须包含一个主函数,程序从这里开始执行
    {
    	while(1)   //while死循环,程序将在这里进行不断重读执行
    	{
    		led=0;	//P2.0端口设置为低电平,根据二极管原理点亮LED灯			
    	}		
    }

    注:其中对应行都有注释,大家移植后可以删除

    5.3 包含/区分/学习知识点

  • int main和void main的区别(掌握)
  • 有一定c语言知识的同学应该知道int是需要返回的,在单片机里也一样。

    void main没有返回值,int main有返回值(即return 0)。

  • C51中的一些程序扩充定义(了解)
  • (1)sfr:特殊功能寄存器。

    sfr 变量名=地址值(现在已经平时不用我们自己去定义寄存器的名字,因为在reg52.H这个头文件里面都帮我们定义好了)

    (2) sbit:特殊功能位声明

    sbit 变量名=地址值;在给某个引脚取名的时候经常会用到。如上面对LED管脚的定义sbit led=P2^0。

    (3)bit:位变量声明

    bit 用来定义位数据变量,由它定义的变量数据仅为1位,只有0或1两种状态,长度为1字节。

  • c51基本数据类型(熟悉并能运用)
  • 图3 基本数据类型(来源:若诗余)

    六、KEIL中建立工程文件

    6.1创建新的工程文件(打开——项目—— new project)

    图4 创建一个新的项目

    6.2选择单片机型号(直接输入AT89C52或者点击Atmel左边的小加号,选择或at89c52)

    图5 选择单片机型号

    6.3点击确认后创建好工程。右键点击Group1——Add new文件

    图6 添加新的.c文件1

    6.4 选择.c文件并创建(一般主函数确认为main.c文件)

    图7 添加新的.c文件2

    6.5 输入程序并进行编译(如图1、2、3步骤,但是图中没有生成HEX文件)

    图8 程序编译

    6.6 创建设置HEX文件(直接点击上方魔术棒或者ALT+F7快捷键都可以;进入后点击output——Creat HEX File——ok即可)

    图9 创建HEX文件步骤1

    图10 创建HEX文件步骤2

    6.7 生成HEX文件(0错误后才能生成hex文件,后面跟着具体存放文件目录)

    图11 生成HEX文件

    6.8 配置STC-ISP(按照所表示顺序即可)

    图 12 配置STC-ISP

    选择芯片型号为STC89C52即可。串口号点击扫描一般即可自动搜索到,若搜不到可能存在问题及解决方法:①没有安装驱动。驱动分为很多种,即使名字看上去非常一样的,但是有的也不通用,如CH340和CH341。选择安装之后,插上串口线,打开设备管理器,如果显示COM了,那么就安装成功了。②打开了另外一个串口调试助手,串口被占用了。③换一根好一点的数据线或者换一个电脑的USB口。可能存在串口线接触不良或者电阻过大导致供电不足,④检查开发板上的晶振,是不是接触不良或者掉落。⑤单片机损坏或者接触不良导致检测不到芯片。

    6.9 下载成功后对应单片机显示相关现象。如上程序则单片机P1.0对应二极管点亮。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 51单片机入门:点亮一个LED灯的保姆级教程

    发表评论