单片机
返回首页

【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. 求解表达式1。

  2. 求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。

  3. 求解表达式3。

  4. 转回上面第2步继续执行。

  5. 循环结束,执行 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



八,中断系统









进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 红外开关

  • LM317过压保护

  • 0-30V/20A 大功率稳压电源(采用LM338)

    相关电子头条文章