51单片机学习 day1

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);

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

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

t &= ~(1 << n);

  1. << :左移

  2. >>: 右移

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

  4. ~: 按位取反

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

  1. 电阻阻值识别(数字标注法):

数字标注法,前面两位/三位作为有效数字,最后一位数表示10的几次方

102:10 * 10^2 = 1KΩ

103:10 * 10^3 = 10k

  1. 外设寄存器:

能够操作硬件,具有固定地址的空间

led模块用到了P2寄存器

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

P2 = 0xFF; // 1111 1111

P2 = 0x00; // 0000 0000

cpp 复制代码
//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);

cpp 复制代码
//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)

相关推荐
LCG元2 小时前
STM32 RS485 Modbus RTU通信系统设计:从协议解析到工程实战
stm32·单片机·嵌入式硬件
星恒随风2 小时前
C++ 继承进阶:默认成员函数、多继承、虚继承与组合设计
开发语言·c++·笔记·学习
电子云与长程纠缠2 小时前
UE中使用TGuardValue与TInlineComponentArray数据结构
开发语言·数据结构·学习·ue5·游戏引擎
caimouse3 小时前
MM 学习笔记 10:页面文件与系统加载器
笔记·学习·reactos
一只小菜鸡..3 小时前
南京大学 操作系统 (JYY) 学习笔记:Hello, OS World! (程序的机器视角)
java·笔记·学习
lazy H4 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
a11177615 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao15 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
sramdram16 小时前
MCU微控制器OA打印机方案
单片机·嵌入式硬件·mcu·mcu微控制器