嵌入式软件--51单片机 DAY 1

一、单片机

1.单片机概念

51单片机(或称8051单片机)原是指1980年由Intel公司推出的一种8位微控制器系列,现在更多的指实现了8 051 指令集 (单片机的"语言")的一系列单片机。8位指的是寄存器的位数和数据总线的位数,内部的ALU也是8位的,一次操作能处理8位的数据。32位指的是寄存器是32位的,也是同样的道理。

2.命名规范

比如:STC89C52RC-40I-LOFP44

STC 89 C 52 R C - 40 I-LOFP 44

STC:生产公司的简写

89:内核单片机的具体型号

C:工作电压高电压 5.5V-3.3V L:低电压3.6V-2.0V

52:程序空间大小,可以理解为电脑的硬盘,存放用户数据,断电不丢失。

RC RAM大小,RC是512字节,RD+是1280字节

40工作频率 25 40 50个标准,单位是兆赫兹。

I 工作温度 工业级 -40到-85度 C:商业级,0°C到70°C

LOFP:封装类型

44:管脚数

3.引脚

电源引脚:VCC、Gnd,用于为单片机供电

复位引脚:RST ,重启

时钟引脚:XTAL1,XTAL2 用于连接时钟源,为单片机提供时钟信号

通用输入输出引脚:GPIO P0--P4。即可读取外部数据,也可输出。

4.开发环境

嵌入式的开发环境需要两个部分,软件和硬件。

我们所学的51单片机所需的开发板分为核心板和扩展板。

核心板3D渲染图:

核心板与扩展板焊接相连,保证合格。

软件开发环境

Keil是一个运行在Windows系统中的单片机集成开发环境(Integrated Development Environment),其提供了代码编辑、代码编译、仿真和调试等功能。

官网的下载地址为:Keil Embedded Development Tools for Arm, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families.

STC-ISP是STC专门为STC芯片设计的烧录工具。

官方下载地址为:http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.92A.zip

5.使用

VScode也可以安装拓展EIDE来编译51单片机程序。

编译成功的程序。可以在硬盘中找到hex文件。用STC(用typeC线连接电脑与单片机芯片),打开程序烧录进单片机芯片,便可以使用了。

二、案例

1.闪烁LED

LED1每秒钟闪烁一次!

思路:我们通过原理图知道,与LED灯相连的芯片引脚为P00。想让LED1闪烁,只需让P00的值不断地在0和1之间循环变化即可。

cpp 复制代码
#include <STC89C5xRC.H>
#include "Com_Util.h"
#define LED1 P00
void main()
{
    while (1)
    {
       LED1=~LED1;
       Com_Util_Delay1ms(100);//循环闪烁,延迟100毫秒
    }

}

2.流水灯

p00=0亮,=1灭,其他引脚亦是如此。

我们先定义一个中间值,temp,让temp=0x01(0000 0001)。让p0=~temp=0xFE(1111 1110),p0最低位为0,如此LED1亮,其他不亮。之后让temp继续左移(0000 0010),P0=1111 1101,LED2亮。如此循环往复。等到temp=1000 0000,p0=0111 1111,最后一个灯亮起,最后再让temp=0x01,继续循环。再一次让temp=0x01时,p0=0x7F

cpp 复制代码
#include <STC89C5xRC.H>
#include "Com_Util.h"
void main()
{
       u8 temp=0x01;//0000 0001
       while(1)
       {
       P0=~temp;//1111 1110
       temp<<=1;//0000 0010
       Com_Util_Delay1ms(100);
       if(P0==0X7F)
       {
        temp=0x01;
       }
       }
      while (1){

      }
      
      
}

3.正反来回灯

让LED灯来回流走。

我们已经知道,temp=10000 0000,p0=1111 1111灯光闪烁已经到了尽头。如果要实现来回走。就要在p0=1111 1111时,变为p0=0111 1111,这就需要temp=1000 0000.如果想要跳出循环,可以设置变量,利用两个死循环的分别让正反两种走法实现。

cpp 复制代码
#include <STC89C5xRC.H>
#include "Com_Util.h"
void main()
{
       u8 temp=0x01;//0000 0001
       u8 tamp=0x80;//1000 0000
       u8 a=1,b=1;
       while(a)
       {
       P0=~temp;//1111 1110
       temp<<=1;//0000 0010
       Com_Util_Delay1ms(100);
      if(P0==0x7F)
      {
        temp=0x01;
        a=0;
      }
       }
      while (b){
      P0=~tamp;
      tamp>>=1;
       Com_Util_Delay1ms(100);
       if(P0==0xFE)
       {
        tamp=0x80;
        b=0;
       }
      }
      
      
}
相关推荐
scan132 分钟前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu011 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
深圳市青牛科技实业有限公司3 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比3 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie4 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
西瓜籽@4 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^138287988726 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张7 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
m0_7393128710 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章10 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频