02 51单片机之LED闪烁

文章目录

  • 1、单片机
    • 1-1、简介
    • 1-2、应用场景
  • 2、51单片机
    • 2-1、背景
    • 2-2、主要品牌及其产品
    • 2-3、基本组成
    • 2-4、命名规则
  • 3、单片机内部结构
    • 3-1、单片机内部结构图
    • 3-2、单片机内部结构
    • 3-3、单片机内部管脚图
    • 3-4、单片机最小系统
    • 3-5、开发板介绍
  • 4、点亮LED
    • 4-1、新建工程
      • 4-1-1、创建工程文件
      • 4-1-2、选择芯片型号
      • 4-1-3、启动文件
      • 4-1-4、Main
    • 4-2、LED介绍
    • 4-3、LED模块
    • 4-3、Code
    • 4-4、Download Code
  • 5、LED Flash
    • 5-1、新建工程
    • 5-2、创建延时函数
    • 5-3、Download code
    • 5-4、实验表现
  • 6、流水灯
    • 6-1、新建工程
  • 6-2、C51数据类型
  • 6-3、Plus版本
  • 参考资料


1、单片机

1-1、简介

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择

1-2、应用场景

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。

单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。 由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。


2、51单片机

2-1、背景

51单片机泛指兼容英特尔8051指令系统的8位单片机统称,技术源自Intel 1980年代推出的8051内核,广泛应用于家电控制、汽车电子、工业测控及通信设备领域,也是国内高校单片机教学的主要硬件平台。典型型号包括ATMEL的89C51、89S51及STC公司的增强型89C52(本文使用改系列单片机)等,主流厂商涵盖Atmel、STC、Philips等。该系列采用哈佛架构,集成8位CPU、Flash程序存储器、RAM数据存储器及定时器/中断系统。新型号如89S51支持33MHz工作频率与ISP在线编程,内置双工UART、看门狗定时器及改进型加密算法,全系保持向下兼容特性。硬件层面配备40引脚PDIP封装,包含4组准双向I/O端口,支持宽电压供电(3.3V-5.5V)及外部晶振电路配置。开发工具链涵盖Keil集成环境与STC-ISP烧录软件。


2-2、主要品牌及其产品

  1. Intel(英特尔):80C31、80C51、87C51,80C32、80C52、87C52等;
  2. Atmel(艾特梅尔):89C51、89C52、89C2051,89S51(RC),89S52(RC)等;
  3. Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;
  4. STC(宏晶):STC89C51、STC90C51、STC11系列、STC15系列、STC8系列等。

2-3、基本组成

8051单片机通常至少具备以下功能和外设:

  • 8位CPU
  • 数据存储器(RAM:Random Access Memory,512字节(512Byte),类似于电脑的内存条)
  • 程序存储器(ROM:Read Only Memory,8K字节(8KB) Flash,类似于电脑的硬盘)
  • 4组8位共32个输入输出口
  • 5至6个中断源,分2个优先级
  • 全双工串行口
  • 工作频率:最大40MHz(本开发板使用)

2-4、命名规则

在这里插入图片描述

Figure1. 89C52RC 40I-PDIP40

在这里插入图片描述

Figure2. STC89C52RC/RD+系列单片机命名规则

STC89C52系列区分90C版本及HD版本,如何识别90C版及HID版:通过查询单片机表面文字最下面一行最后几个字母,最后几个字母为90C,则该单片机为90C版本(本开发板使用);最后几个字母为HD,则该单片机为HD版本。


3、单片机内部结构

3-1、单片机内部结构图

STC89C52系列单片机是STC推出的新一代高速/低功耗/超引强抗干扰/超低价的单片机,指令代码完全兼容传统8051单片机,12时钟每机器周期和66时钟每机器周期可以任意选择。在KeilC开发环境中,选择Intel8052编译,头文件包含<reg51.h>即可
在这里插入图片描述

Figure3. STC89C52RC单片机内部结构图

功能清单如下所示:

  1. 增强型8051单片机,6时钟每机器周期和12时钟每机器周期可任意选择,指令代码完全兼容传统8051。
  2. 工作电压:
    STC89C52系列工作电压:5.5V-3.8V(5V单片机)。
    STC89LE52系列工作电压:3.6V-2.4V(3V单片机)。
  3. 工作频率范围:0 ~ 35MHz,相当于普通8051的0 ~ 70MIHz,实际工作频率可达42MHz
  4. 片内Flash程序存储器:4K/8K/12K/14K/16K/32K/40K/48K/56K/62K字节
  5. 片上集成1280字节或512字节RAM
  6. 通用I/0口(35/39个),复位后为:P1/P2/P3/P4是准双向口/更弱上拉(普通8051传统I/O口);P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
  7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(RxD/P3.0.TxD/P3.1)直接下载用户程序,数和沙即可完成一片
  8. EEPROM功能
  9. 看门狗
  10. 内部集成MAX810专用复位电路,外部晶体20M以下时,可省外部复位电路,复位脚可直接接地。
  11. 共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用
  12. 4路外部中断,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。
  13. 通用异步串行口(UART),还可用定时器软件实现多个UART。
  14. 工作温度范围:-40 ~ +85°C(工业级)/0~75°C(商业级)
  15. 封装:LQFP-44,PDIP-40,PLCC-44,PQFP-44。强烈推荐选择择LQFP-44贴片封装

3-2、单片机内部结构

STC89C52系列单片机的内部结构框图如所示。STC89C52单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、I/O接口、EEPROM、看门狗等模块。STC89C52系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。
在这里插入图片描述

Figure4. STC89C52RC单片机内部结构框图

3-3、单片机内部管脚图

在这里插入图片描述

Figure5. STC89C52系列90C版本的管脚图

3-4、单片机最小系统

在这里插入图片描述

Figure6. STC89C52系列单片机最小应用系统

  1. 复位电路:电容充电时相当于短路,通过C1直接链接RST引脚,随着C1不断充电,之后C1就会断路,RST连接GND,从而达到上电复位的效果。
  2. 对于最小系统而言,给单片机供电后,连接晶振电路即可运行起来,为了保证产品的稳定性,需要集成复位电路或晶振电路。

3-5、开发板介绍

在这里插入图片描述

Figure7. STC89C52系列单片机开发板

在这里插入图片描述

Figure8. STC89C52系列单片机开发板原理图

4、点亮LED

4-1、新建工程

4-1-1、创建工程文件

在这里插入图片描述

Figure9. 创建工程文件

4-1-2、选择芯片型号

在这里插入图片描述

Figure10. 选择芯片型号


4-1-3、启动文件

在这里插入图片描述

Figure11. 启动文件

4-1-4、Main

在这里插入图片描述

Figure12. Main

4-2、LED介绍

在这里插入图片描述

Figure13. LED

4-3、LED模块

在这里插入图片描述

Figure14. LED电路模块

4-3、Code

在这里插入图片描述

Figure15. LED Code

#include <REGX52.H>void main()
{/* Light Up LED0 */P2 = 0xFE; 
}

4-4、Download Code

在这里插入图片描述

Figure16. LED Code download

在这里插入图片描述

Figure17. Light one LED

5、LED Flash

5-1、新建工程

在这里插入图片描述

Figure18. 创建工程文件

5-2、创建延时函数

在这里插入图片描述

Figure19. 创建延时函数

5-3、Download code

在这里插入图片描述

Figure20. Download code

#include <REGX52.H>
#include <INTRINS.H>void Delay500ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){/* 1. Light Up one Led. */P2 = 0xFE;/* 2. Delay 500ms. */Delay500ms();/* 3. Light Down one Led. */P2 = 0xFF;/* 4. Delay 500ms. */Delay500ms();}
}

5-4、实验表现

LED Flash


6、流水灯

6-1、新建工程

在这里插入图片描述

Figure21. 创建工程文件

#include <REGX52.H>
#include <INTRINS.H>void Delay500ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){/* 1. Light Up one Led P0. */P2 = 0xFE;/* 2. Delay 500ms. */Delay500ms();/* 3. Light Up one Led P1. */P2 = 0xFD;/* 4. Delay 500ms. */Delay500ms();/* 5. Light Up one Led P2. */P2 = 0xFB;/* 6. Delay 500ms. */Delay500ms();/* 7. Light Up one Led P3. */P2 = 0xF7;/* 8. Delay 500ms. */Delay500ms();/* 9. Light Up one Led P4. */P2 = 0xEF;/* 10. Delay 500ms. */Delay500ms();/* 11. Light Up one Led P5. */P2 = 0xDF;/* 12. Delay 500ms. */Delay500ms();/* 13. Light Up one Led P6. */P2 = 0xBF;/* 14. Delay 500ms. */Delay500ms();/* 15. Light Up one Led P7. */P2 = 0x7F;/* 16. Delay 500ms. */Delay500ms();}
}

6-2、C51数据类型

在这里插入图片描述

Figure22. C51数据类型

6-3、Plus版本

在这里插入图片描述

Figure23. Plus版本

#include <REGX52.H>
#include <INTRINS.H>void Delay1ms(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while(xms){_nop_();i = 2;j = 239;do{while (--i);} while (--j);xms--;}
}void main()
{while(1){/* 1. Light Up one Led P0. */P2 = 0xFE;/* 2. Delay 500ms. */Delay1ms(500);/* 3. Light Up one Led P1. */P2 = 0xFD;/* 4. Delay 500ms. */Delay1ms(500);/* 5. Light Up one Led P2. */P2 = 0xFB;/* 6. Delay 500ms. */Delay1ms(500);/* 7. Light Up one Led P3. */P2 = 0xF7;/* 8. Delay 500ms. */Delay1ms(500);/* 9. Light Up one Led P4. */P2 = 0xEF;/* 10. Delay 500ms. */Delay1ms(500);/* 11. Light Up one Led P5. */P2 = 0xDF;/* 12. Delay 500ms. */Delay1ms(500);/* 13. Light Up one Led P6. */P2 = 0xBF;/* 14. Delay 500ms. */Delay1ms(500);/* 15. Light Up one Led P7. */P2 = 0x7F;/* 16. Delay 500ms. */Delay1ms(500);}
}

参考资料

  1. 单片机
  2. STC: 1T 8051 单片机创新者, ISP/IAP 技术创新者,中华有为:除了胜利,我们已无路可走
  3. 8051 microcontroller FAQ
  4. 51单片机入门教程-2020版 程序全程纯手打 从零开始入门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/594.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

穿透、误伤与回环——Redis 缓存防御体系的负向路径与治理艺术

一、写在前面&#xff1a;当“防御”成为新的“攻击” 在构建 Redis 缓存防线时&#xff0c;我们往往陷入一个悖论&#xff1a;为了拦截 0.1% 的幽灵查询&#xff0c;引入了布隆过滤器、空值缓存、限流器&#xff0c;结果却让 5% 的正常请求被误杀&#xff0c;甚至引发更复杂的…

代理模式详解:代理、策略与模板方法模式

引言 设计模式是面向对象编程中的经典解决方案&#xff0c;它们封装了前人的经验&#xff0c;提供了可复用的设计思路。本文将重点介绍三种常用的设计模式&#xff1a;代理模式&#xff08;含静态代理、JDK动态代理、CGLIB代理&#xff09;、策略模式和模板方法模式&#xff0c…

Kotlin Map映射转换

Kotlin 集合转换&#xff1a;map、mapIndexed、mapNotNull、mapKeys、mapValues、flatten、flatMap 引言 在之前的主题中&#xff0c;我们学习了如何筛选&#xff08;filter&#xff09;和排序&#xff08;sort&#xff09;集合。然而&#xff0c;处理集合时最重要的任务之一是…

python+Request提取cookie

目录 参数 登录接口参数 ​编辑 查询所有课程参数 python处理cookie。 提取cookie 使用json模块提取token 正则表达式re模块提取token 完整代码 参数 登录接口参数 查询所有课程参数 python处理cookie。 导入request包 # 导入request包 import requests 编写登录请求的查询参…

C++类与对象(上)

1.类的定义 1.1类定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff08;跟结构体名类似&#xff09;&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量&a…

Cesium加载3DTiles模型并且重新设置3DTiles模型的高度

代码&#xff1a; 使用的时候&#xff0c;直接调用 load3DTiles() 方法既可。 // 加载3Dtiles const load3DTiles async () > {let tiles_url "/3DTiles2/Production_1.json";let tileset await Cesium.Cesium3DTileset.fromUrl(tiles_url, {enableCollision: …

JavaSE-多态

多态的概念在完成某个行为时&#xff0c;不同的对象在完成时会呈现出不同的状态。比如&#xff1a;动物都会吃饭&#xff0c;而猫和狗都是动物&#xff0c;猫在完成吃饭行为时吃猫粮&#xff0c;狗在完成吃饭行为时吃狗粮&#xff0c;猫和狗都会叫&#xff0c;狗在完成这个行为…

MySQL SQL语句精要:DDL、DML与DCL的深度探究

在数据库技术的浩瀚星空中&#xff0c;MySQL犹如一颗璀璨的星辰&#xff0c;以其卓越的性能、灵活的架构以及广泛的适用性&#xff0c;深受全球众多开发者的青睐。而 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;作为与数据库交互的核心语…

MYSQL笔记2

创建表&#xff1a; 格式&#xff1a; create table 表名(表选项) 表定义选项格式为&#xff1a; 列名1 列类型1 约束, 列名2 列类型2 约束,…… 默认的情况是&#xff0c;表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在&#xff0c;则会出现错误 使…

Linux修炼:开发工具

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》、《Linux修炼&#xff1a;终端…

基于 CentOS 7 的 LVS+DR+Web+NFS 旅游攻略分享平台部署

1 项目概述 1.1 旅游攻略平台项目背景 随着互联网旅游行业的快速发展&#xff0c;用户对旅游攻略分享平台的高可用性和稳定性提出了更高要求。传统单服务器架构在面对高并发访问时容易出现性能瓶颈&#xff0c;导致响应延迟甚至服务中断。本项目基于 LVSDRWebNFS 架构&#x…