51单片机 - 点灯大师


点灯大师

00_51单片机 - 点灯大师

一、前情提要

软件设备

破解Keil5

复制软件CID

复制激活码

stc-isp

连接开发板,安装驱动程序

ch341ser

二、单片机及开发板介绍

单片机介绍

  • 单片机,英文Micro Controller Unit,简称MCU。
  • 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。
  • 单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。
  • 单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。
  • 但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。
  • 同时,学习使用单片机是了解计算机原理与结构的最佳选择。

STC89C52单片机

单片机命名规则

单片机内部拆解

单片机内部结构图

单片机管脚图

单片机最小系统

开发板原理图

  • HC6800-ES V2.0.pdf
  • (D:MCU-workspace51单片机开发板原理图)

LED模块原理图

三、点亮一个LED灯

LED介绍

  • 中文名:发光二极管
  • 外文名:Light Emitting Diode
  • 简称:LED
  • 用途:照明、广告灯、指引灯、屏幕

进制转换

keil新建工程项目

选择AT89C52

添加C语言程序文件

测试 - 编译

#include <REGX52.H>

void main()
{
    P2 = 0xFE;  //1111 1110
}

在STC-ISP中选择STC89C52

  • 修改:有些开发板为STC89C52RC

打开程序代码文件

点击下载/编程

  • 如果不行,请重启开发板,进行冷启动。

点亮一个LED灯

代码改进

#include <REGX52.H>

void main()
{
    P2 = 0xFE;  //1111 1110
    while(1)
    {
        
    }
}

代码改进or

#include <REGX52.H>

void main()
{
    //P2 = 0xFE;  //1111 1110
    P2 = 0x55;  //0101 0101
    while(1)
    {
        
    }
}

四、LED闪烁

延时计算代码

  • 可在STC-ISP中自动生成
  • 注意系统频率和8051指令集

代码

#include <REGX52.H>
#include <INTRINS.H>


void Delay500ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 4;
    j = 129;
    k = 119;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}



void main()
{


    while(1)
    {
            P2 = 0xFE;  //1111 1110
            Delay500ms();
            P2 = 0xFF;  //1111 1110
            Delay500ms();
    }
}

测试

五、LED流水灯

前提知识

C51数据类型

代码

#include <REGX52.H>

void Delay1ms(unsigned int xms);        //@12.000MHz

void main()
{
    while(1)
    {
        P2=0xFE;//1111 1110
        Delay1ms(1000);
        P2=0xFD;//1111 1101
        Delay1ms(1000);
        P2=0xFB;//1111 1011
        Delay1ms(100);
        P2=0xF7;//1111 0111
        Delay1ms(100);
        P2=0xEF;//1110 1111
        Delay1ms(100);
        P2=0xDF;//1101 1111
        Delay1ms(100);
        P2=0xBF;//1011 1111
        Delay1ms(100);
        P2=0x7F;//0111 1111
        Delay1ms(100);
    }
}

void Delay1ms(unsigned int xms)        //@12.000MHz
{
    unsigned char i, j;
    while(xms)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
        xms--;
    }
}

测试

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 51单片机 - 点灯大师


三二一的一的二