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、主要品牌及其产品
- Intel(英特尔):80C31、80C51、87C51,80C32、80C52、87C52等;
- Atmel(艾特梅尔):89C51、89C52、89C2051,89S51(RC),89S52(RC)等;
- Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;
- 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、命名规则
STC89C52系列区分90C版本及HD版本,如何识别90C版及HID版:通过查询单片机表面文字最下面一行最后几个字母,最后几个字母为90C,则该单片机为90C版本(本开发板使用);最后几个字母为HD,则该单片机为HD版本。
3、单片机内部结构
3-1、单片机内部结构图
STC89C52系列单片机是STC推出的新一代高速/低功耗/超引强抗干扰/超低价的单片机,指令代码完全兼容传统8051单片机,12时钟每机器周期和66时钟每机器周期可以任意选择。在KeilC开发环境中,选择Intel8052编译,头文件包含<reg51.h>即可。
功能清单如下所示:
- 增强型8051单片机,6时钟每机器周期和12时钟每机器周期可任意选择,指令代码完全兼容传统8051。
- 工作电压:
STC89C52系列工作电压:5.5V-3.8V(5V单片机)。
STC89LE52系列工作电压:3.6V-2.4V(3V单片机)。 - 工作频率范围:0 ~ 35MHz,相当于普通8051的0 ~ 70MIHz,实际工作频率可达42MHz。
- 片内Flash程序存储器:4K/8K/12K/14K/16K/32K/40K/48K/56K/62K字节
- 片上集成1280字节或512字节RAM
- 通用I/0口(35/39个),复位后为:P1/P2/P3/P4是准双向口/更弱上拉(普通8051传统I/O口);P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
- ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(RxD/P3.0.TxD/P3.1)直接下载用户程序,数和沙即可完成一片
- 有EEPROM功能
- 看门狗
- 内部集成MAX810专用复位电路,外部晶体20M以下时,可省外部复位电路,复位脚可直接接地。
- 共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用。
- 4路外部中断,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。
- 通用异步串行口(UART),还可用定时器软件实现多个UART。
- 工作温度范围:-40 ~ +85°C(工业级)/0~75°C(商业级)
- 封装:LQFP-44,PDIP-40,PLCC-44,PQFP-44。强烈推荐选择择LQFP-44贴片封装。
3-2、单片机内部结构
STC89C52系列单片机的内部结构框图如所示。STC89C52单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、I/O接口、EEPROM、看门狗等模块。STC89C52系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。
3-3、单片机内部管脚图
3-4、单片机最小系统
- 复位电路:电容充电时相当于短路,通过C1直接链接RST引脚,随着C1不断充电,之后C1就会断路,RST连接GND,从而达到上电复位的效果。
- 对于最小系统而言,给单片机供电后,连接晶振电路即可运行起来,为了保证产品的稳定性,需要集成复位电路或晶振电路。
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
#include <REGX52.H>void main()
{/* Light Up LED0 */P2 = 0xFE;
}
4-4、Download Code
5、LED Flash
5-1、新建工程
5-2、创建延时函数
5-3、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、新建工程
#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数据类型
6-3、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);}
}
参考资料
- 单片机
- STC: 1T 8051 单片机创新者, ISP/IAP 技术创新者,中华有为:除了胜利,我们已无路可走
- 8051 microcontroller FAQ
- 51单片机入门教程-2020版 程序全程纯手打 从零开始入门