1.操作系统与处理器概念

 OS Opetation system 操作系统

 51单片机(8位单片机):

主要厂商:

Atmel(AT89C51)

Philip( P89V51 增强型单片机 在线编程)

STC宏晶半导体( STC89C51 STC89C52 STC89C52RC)

处理器架构:

x86(32位)   x64(64位)   8051(8位)    ARM(32位)

常见处理器单元:

CPU:Central Processing Unit, 中央处理器, 完成指令处理和数据运算

MCU:Micro Controller Unit 微控制器,集成度高,把所有功能集成到一块芯片中(CPU、RAM、

                ROM、Timer、GPIO、中断、UART),成本低,应用简单控制领域

MPU:Micro Processing  Unit ,微处理器,集成度低,只有一块单独的CPU芯片,需要单独外接存

           储模块、外设模块、成本高,复杂应用领域,跑Linux操作系统

GPU:Graphics Processing Unit ,图形处理器,图形处理,图像渲染

NPU:Neural Processing Unit 神经网络处理器,AI推理、AI加速,神经网络处理,卷积算法

FPU:Float Point Unit ,浮点数运算单元,大部分集成在CPU内部

SOC:System On Chip (片上系统),将很多个芯片集成到一起

2.存储体系

内存和外存的特点:

内存:读写速度快,掉电数据丢失,价格昂贵(内存条),存放程序中的常量

外存:读写速度快,掉电数据不丢失,价格便宜(硬盘、SD卡)存放程序、代码、指令,

单片机内部存储:

ROM:Read Only Memory 只读存储器,存放单片机程序、代码

指令

RAM:Random Acess Memory ,随机访问存储器,存放程序运行过程中的变量

CPU与RAM三大总线及作用

地址总线:CPU通过地址总线寻找RAN中的地址,最大寻址范围2^8 ( 256byte ) 单向

数据总线:CPU与RAM之间进行数据传输 双向

控制总线:CPU通过控制总线发送控制指令,双向

例:int a = 2;

       int b = 3;

       int sum = a+b;

       //CPU通过控制总线发送指令

      //CPU需要从RAM中读取a、b值(地址)

      //CPU运算

      //CPU通过数据总线将运算结果写回到RAM

3.时钟与频率基础

主频: CPU工作频率

频率单位换算:

HZ

KHZ          1KHZ =  10^3HZ

MHZ         1MHZ = 10 ^3KHZ = 10^6HZ

GHZ         1GHZ = 10 ^3MHZ = 10^9HZ

THZ        1THZ = 10^3GHZ = 10^12HZ

换算规律

小频率 -> 大频率: 除

大频率 -> 小频率: 乘

eg:

主频: 2.1GHZ -> HZ: 2.1GHZ * 10^9 = 2,100,000,000HZ

时间(时间和频率呈倒数关系) : 1 / 2,100,000,000HZ = 0.5ns

时间单位:s,ms,us,ns

4.51单片机硬件平台

芯片型号:STC89C52、STC89C52RC

晶振:12.0000MHZ、11.0592MHZ

开发底板:HC6800-MS、普中51-MS

单片机最小系统:电源电路、晶振电路、复位电路

芯片封装形式

        双列直插式40引脚封装

        划分成4组: P0 、P1 、P2 、P3, 每组有8个引脚

网络编号说明:

        本质是一根导线, 避免复杂物理连线,

        相同网络编号的引脚在实际电路中是彼此连通的

位运算:

1.     |:按位或 :对应位的bit进行比较,如果都为0,则结果为0,如果两个bit中有一个bit 为1,结果为1

应用场景:指定位置1 将第n位置1,就1<<n位

t = t | (1 << n);

t |= (1 << n);

2.     &:按位与: 对应位的bit进行比较,如果都为1,结果为1;如果有一个bit为0,结果为0

应用场景:指定位清0 将第n位清0,就~(1 << n)

t &= ~(1 << n);

3.    << :左移

4.     >>: 右移

5.    ^: 按位异或,将对应位的bit进行比较,相同为0,相异为1

6.    ~: 按位取反

5.LED模块(共阳极发光二极管)

1.    电阻阻值识别(数字标注法):
      数字标注法,前面两位/三位作为有效数字,最后一位数表示10的几次方

102:10 * 10^2 = 1KΩ

103:10 * 10^3 = 10k

2.   外设寄存器:
      能够操作硬件,具有固定地址的空间

led模块用到了P2寄存器

#define P2 *((unsigned char *)A0)

P2 = 0xFF; // 1111 1111

P2 = 0x00; // 0000 0000

//led初始化
void led_init(void)
{
	P2 = 0xFF;
}

//LED全亮
void led_all_on(void)
{
	P2 = 0;
}

//LED全灭
void led_all_off(void)
{
	P2 = 0xFF;
}

//LED翻转
void led_nor(void)
{
	P2 = P2^ 0xFF;
}

//指定某个led灯亮
void led_on(unsigned int n)
{
	P2 = ~n;
}

6.数码管模块(共阴极数码管

1.51单片机搭载4位共阴极数码管

2.先位选(NPN三极管)P10 P13

3.再段选 (给定对应引脚高电平即可点亮该段)

数码管动态显示原理

利用人眼视觉暂留效应

选择第一位数码管显示一个数值,快速刷新delay(100);

选择第二位数码管显示一个数值,快速刷新delay(100);

//0~9
unsigned char seg[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//位选
void Select_Bit(unsigned int n)
{
	P1 &= ~(0x0F << 0);//P1寄存器低四位清零
	P1 |= (1 << n); //选中第n位数码管显示
}

//段选
void Select_Seg(unsigned int n)
{
	P0 = seg[n];
}

void Digiter_show(unsigned int n)
{
	int m = 0;
	int t = 0;
	while(1)
	{
		m = n%10;
		P0 = 0;
		Select_Bit(t++);
		Select_Seg(m);
		delay(10000);
		n /= 10;
	}
}

7.外设寄存器

单片机中,定时器、串口、ADC、IO口、中断、PWM这些硬件外设,各自配套一组专用存储单元,用来配置参数、读取状态、收发数据,这组单元叫外设寄存器

控制led灯用到的外设:通用IO,P2寄存器,

控制数码管用到的外设:通用IO口,P1寄存器,P0寄存器

指定位清零:将第n位清0   t &=~(1<<n)

指定位置1:将第n位置1   t |= (1<<n)


 


 

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐