【51单片机】我见过最基础最全最好的单片机教学没有之一!!
2025-09-25 来源:bilibili
单片机
一,了解

二,C语言学习



1byte=8bit




三,51单片机最小系统

连接线的作用就是将单片机电压和电脑电压匹配

四,点亮一个LED灯
#include
sbit LED1 =P2^0;(位声明,具体是P1^0还是P2^0,要看开发板原理图LED模块部分)
void main()
{
LED1 = 0;(低电平,LED具有单向导电性,当LED 的正端接了高电位,负端连接了低电位,且正负端电位差超过1.8V以上时,LED就会亮起来。)
while(1)
{}
(这是一个死循环,代码不再向下执行,{}中的代码不停地检测某个条件,当条件符合时,跳出该循环,继续向下执行,防止程序跑飞https://www.cnblogs.com/phemiku/p/11410350.html)
}
说明:
while(1){}和while(1);
while(1)会循环执行后面的语句
while(1);表示一个死循环,循环一直运行下去,因为条件一直为真.
while(1){……}是让单片机一直执行{……}中内容,防止程序跑飞,通常用于主程序主体,确保程序持续执行
while(1);是一条指令,它让单片机停在这个位置,一般用来检测中断,只有cpu收到中断指令,才会跳出while(1),进入中断服务子程序;
你只要记住whlie(1)本质是死循环,while(1)中的指令会不断重复执行,除非有中断,while(1);可以看作while(1){//空指令},它执行的是空指令,于是单片机就停在这行代码处.
原文链接:https://blog.csdn.net/weixin_45749794/article/details/104652970
while用法
while(条件)
{
语句组;
}
当没有花括号时,例
while(n<100)
y=y+n;
此时一直循环,一直判断求和,只执行这两语句,无法跳出循环,可用ctrl+break跳出循环
五,花样流水灯

for循环
for(循环变量赋初值; 循环条件; 循环变量增值)
{
语句
}
——————————————————————————————————————————————
循环变量初始值
for(; 循环条件; 循环变量增值)
{
语句
}
执行过程:
求解表达式1。
求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。
求解表达式3。
转回上面第2步继续执行。
循环结束,执行 for 语句下面的语句。
从这个执行过程中可以看出,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。http://c.biancheng.net/view/172.html
自增自减
b=a++;这里先做b=a,再使a增1。++正好相反,例如b=++a;这里先使a=a+1,再将得到的a的值赋值给b.

清翔零基础教你学51单片机-05(实现花样流水灯) P5 - 52:41
运算符<
例:<<(左移)
11111111
11111110⬅(左移1位)
11111100⬅(左移2位)
理解:最低位补0,最高位移出去,推进0
字符循环左移_crol_(操作字符型变量,不能操作I/O口)
例:_crol_
11111110←
11111101←(左移1位)
11111011←(左移2位)
注意:0在一群1里面循环
例:
temp = _crol_(temp,1)/*将temp左移一位*/
注:以上要将其转化为16进制,前加0x
关于void delay()的说明:
①main表示主函数。main()函数作为整个程序的一个打开窗口,所有的函数无论如何执行,都必须返回到main()函数中。同样的,main()函数也是整个程序的关闭窗口,main()函数的结束意味着程序的结束。main()函数,既是开始也是结束。程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。
②用户自定义函数。从函数定义的角度看,函数可分为库函数和用户定义函数两种。
库函数:printf 、 scanf 、 getchar 、putchar、gets、puts、strcat等函数均属此类。
用户自定义函数:由用户按需要写的函数。对于用户自定义函数, 不仅要在程序中定义函数本身, 而且在主调函 数模块中还必须对该被调函数进行类型说明,然后才能使用。
③void: 中文翻译为'无类型',有的也叫'空类型'。常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。
知识参考链接:
https://zhidao.baidu.com/question/182289611953096564.html
https://blog.csdn.net/yang_0102/article/details/89289368
https://zhidao.baidu.com/question/144685055.html
https://blog.csdn.net/weixin_35714577/article/details/117070610
https://blog.csdn.net/wit_732/article/details/106314624

注:keil的一个项目下建立多个程序时(一个项目下只能有一个程序,多个程序是为了检验程序是否写的正确),编译时可选择编译当前程序,此时编译的时当前页面的程序。
六,数码管静态显示





LED点阵考试不要求,暂时不学
七,LCD1602
RS:发送数据(显示数据)或命令(实现我们想要的状态)到液晶。H(高电平):数据;L(低电平):命令。(具体看手册)
R/W:读取液晶内部数据或状态。
注:液晶本身内部有RAM,我们发送的数据和命令,液晶需要先保存到缓存里,再写到内部寄存器或RAM,这个过程需要一定时间,故读写状态之前要判断液晶忙不忙。
EN或(E):即enable,意为使能,指的是激活该管脚,电源芯片才会有输出。高电平(1)时读取信息,负跳变时执行指令。
http://c.biancheng.net/cpp/html/1929.html

显示一个字符的操作过程:读状态➡写命令➡写数据➡自动显示

让液晶显示字符,首先对其进行初始化设置:对有、无光标、光标移动方向、光标是否闪烁及字符移动方向等进行设置。而对LCD1602的初始化、读、写光标设置、显示数据的指针设置等,都是单片机向LCD1602写入命令字来实现。命令字见下表。



换老师了,建议去看UP“编程一时爽”,中断讲的很好理解
中断的思维导图需要的可以看看
https://pan.baidu.com/s/1iQmSeePdExU19cV04kAaAQ
提取码:1111
八,中断系统







上一篇:青花瓷51单片机代码
下一篇:51单片机知识重点汇总二
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




