单片机点亮led管(01)

如何开始学习单片机

1:实践第一

2:补充必要的理论知识,缺什么补什么

3:做工程积累经验(可以在网络上收集题目,也可以有自己的想法大胆的实验)

单片机是什么?

单片机(Microcontroller)是一种集成了中央处理器(CPU)、内存和各种输入输出(I/O)接口的微型计算机系统。它通常由微控制器芯片构成,被广泛应用于嵌入式系统中。

与传统的个人计算机(PC)相比,单片机的规模更小、功耗更低且价格更便宜。它被设计用来完成特定的任务,如控制、测量、监测等。单片机通常搭载了一套完整的指令集,能够执行各种软件程序,并可以与外部硬件设备进行通信。

单片机的特点在于它的集成度高、体积小、功耗低,具有实时响应能力和可编程性。它可以通过编程来实现各种功能,并且可以根据不同的应用需求进行定制和扩展。

单片机广泛应用于各个领域,如家电控制、汽车电子、智能设备、工业自动化等。它在嵌入式系统中发挥着重要的作用,为各种设备提供了智能化和自动化的功能。

电平特性

数字电路的电平特性指的是在数字电路中,不同电平代表的逻辑状态以及它们之间的切换条件。在数字电路中,通常使用两种状态来表示逻辑信息,即高电平(High Level)和低电平(Low Level)。

高电平通常表示逻辑上的1,低电平通常表示逻辑上的0。具体电平的电压数值可以根据具体的数字电路标准和逻辑家族而有所差异。

在大多数数字电路中,高电平和低电平之间有一个电压阈值,用于判断电路信号的逻辑状态。当信号电压高于电压阈值时,被认为是高电平;当信号电压低于电压阈值时,被认为是低电平。

电平的切换有两个重要的条件:

  1. 上升沿(Rising Edge):当电压从低电平状态切换到高电平状态时,称为上升沿。上升沿通常表示信号的从低到高的转变,可以触发某些动作或操作。
  2. 下降沿(Falling Edge):当电压从高电平状态切换到低电平状态时,称为下降沿。下降沿通常表示信号的从高到低的转变,也可以触发某些动作或操作。

电平的稳定性和切换条件对于数字电路的正确工作至关重要。在设计和实现数字电路时,需要考虑电平特性,确保信号能够正确地被解释和传递,以实现预期的逻辑功能。

数字电路中只有两种电平:高和低,本次课程中定义单片机使用的是TTL电平,高 +5V 低0V,RS232电平:计算机的串口高-12V,低+12V,所以计算机与单片机之间的通讯需要加电平转换芯片MAX232

进制转换

进制转换是指将一个数值从一种进制表示转换为另一种进制表示的过程。以下是常见的进制转换规则:

  1. 二进制(Binary)转换为十进制(Decimal):
    • 将二进制数从右向左写出,每位数与2的幂相乘,然后求和。
  2. 十进制转换为二进制:
    • 用除2取余法,将十进制数不断除以2,直到商为0,然后将余数按从下往上的顺序排列起来。
  3. 二进制转换为八进制(Octal):
    • 将二进制数按照每3位进行分组,然后将每组转换为对应的八进制数。
  4. 八进制转换为二进制:
    • 将八进制数中的每个八进制位转换为对应的3位二进制数。
  5. 二进制转换为十六进制(Hexadecimal):
    • 将二进制数按照每4位进行分组,然后将每组转换为对应的十六进制数。
  6. 十六进制转换为二进制:
    • 将十六进制数中的每个十六进制位转换为对应的4位二进制数。
  7. 十进制转换为十六进制:
    • 用除16取余法,将十进制数不断除以16,直到商为0,然后将余数按从下往上的顺序排列起来,若余数为10-15,则可以用字母A-F来表示。
  8. 十六进制转换为十进制:
    • 将十六进制数的每位数与16的幂相乘,然后求和。

这些是常见的进制转换规则,根据不同的进制之间的关系,可以通过相应的计算方法来进行进制的转换,以上的知识需要学会二进制转换和16进制的转换B为后缀表示2进制,H结尾表示16进制

二进制各个进制位的对应关系

点击查看图片来源

二进制转换为16进制

1001B --> 9 --> 9H,
1010B–>10–>AH,
00101100 --> 44 --> 2CH

4个二进制表示的是16进制44,表示的是 16*2= 32 然后 44 -32 = 12,也可以除去16看余数

二进制数的逻辑运算

运算是实现必须都有的,否则就没有,这种逻辑关系的一种运算,运算符为" . ",其运算规则为 0.0 = 0, 0.1 = 1.0 = 0, 1.1 = 1,全真为真,有假为假运算符为点号 . 。c语言中的与运算符规则: 1&1 = 1 , 1&0 = 0, 0&0 = 0

运算是实现必须都有的,否则就没有,这种逻辑关系的一种运算,运算符为" + "运算的规则如下 有真为真。全假为假

c语言中的与运算符规则:1 | 1 = 1 , 1 | 0 = 1, 0 | 0 = 0,在单片机的运算符为1 |+1 = 1 , 1 + 0 = 1, 0 + 0 = 0。

运算实现必须都有的,否则就没有,这种逻辑关系的一种运算,运算符为" 数字或字母上面加上一横"非运算在c语言中的表示是,取反真就是假,假就是真 !1 = 0, !0 =1

异或运算是实现必须都有的,否则就没有,这种逻辑关系的一种运算,运算符为" 一个小圈圈里面包含一个加号 ",运算规则为相同为0不同为1,异或在c语言中的表示为0^0 = 0 , 0 ^1 = 1, 1^1 = 0.

此外在c语言中还有 短路与 短路非 短路或。

单片机的介绍

80C51是英特尔公司推出的一款经典的8位单片机系列。它是基于英特尔的MCS-51架构,是一种非常受欢迎和广泛应用的单片机系列。

80C51单片机系列具有以下特点:

  1. 8位处理器架构:80C51系列采用8位的中央处理器(CPU),具有较低的功耗和成本,适合各种嵌入式应用。
  2. 存储器:80C51单片机有内部的ROM(只读存储器)和RAM(随机存储器),ROM用于存储程序代码,RAM用于存储数据。
  3. 外设接口:80C51单片机系列提供了丰富的外设接口,包括通用输入/输出(GPIO)、串行通信接口(UART)、定时器/计数器、模拟到数字转换器(ADC)等,方便与外部设备进行通信和控制。
  4. 中断系统:80C51单片机具有灵活的中断系统,可以处理多个中断源,实现快速响应和处理外部事件。
  5. 时钟和定时器:80C51单片机内部集成了时钟电路和定时器/计数器,可以提供精确的时间基准和实现各种定时功能。
  6. 低功耗模式:80C51单片机支持多种低功耗模式,以实现节能和延长电池寿命。

80C51单片机系列在各种应用领域得到了广泛的应用,包括家电、工业自动化、通信设备、仪器仪表、汽车电子等。由于其成熟稳定、易于使用和广泛的软件和硬件资源支持,80C51单片机已经成为许多工程师和学习者首选的嵌入式控制器。

目前常用的80C51系列单片机产品有:

  1. AT89C51系列:这是常用的基于英特尔80C51架构的单片机系列。它具有较高的性能、丰富的外设接口和灵活的中断系统。常见的型号有AT89C51、AT89C51RC、AT89C51RD等。
  2. STC89C51系列:这是中国STC公司(STC Micro)推出的80C51系列单片机。它采用相同的指令集和架构,但具有更多的存储器和更丰富的外设接口。常见的型号有STC89C51、STC89C52、STC89C58等。
  3. NXP P89V51RD2系列:这是荷兰恩智浦(NXP)公司推出的80C51系列单片机。它具有较高的性能和较大的存储器容量,支持更多的外设接口和功能。常见的型号有P89V51RD2、P89V51RB2、P89V51RD2BN等。
  4. Silicon Labs C8051F系列:这是美国硅实验室(Silicon Labs)推出的80C51系列单片机。它融合了传统的80C51架构和先进的集成电路技术,具有较高的性能和较低的功耗。常见的型号有C8051F320、C8051F340、C8051F380等。

这些80C51系列单片机产品在嵌入式系统、工业控制、通信设备、汽车电子等领域得到了广泛的应用。不同厂商的产品具有略微的差异,但基本保持了80C51的兼容性,可以使用相同的软件开发工具和编程语言进行开发。

单片机5后面的数字决定了内部存储空间的大小STC89C52,STC89C51,后面的值乘以4K表示程序内部存储空间的大小,则内部存储空间为2*4K = 8K。PDIP表示的是该单片机的封装型号

总线型单片机介绍
在这里插入图片描述非总线型单片机介绍

在这里插入图片描述
各个引脚功能的定义

单片机的引脚功能定义可以根据具体的单片机型号和芯片厂商有所不同。以下是一般常见的引脚功能定义,以供参考:

  1. VCC(电源正极):单片机的供电引脚,接入电源正极(一般为+5V)。
  2. GND(地):单片机的接地引脚,接入电源负极(地)。
  3. XTAL1/XTAL2:晶体振荡器引脚。XTAL1连接晶体振荡器的一个引脚,XTAL2连接晶体振荡器的另一个引脚,用于提供单片机的时钟信号。
  4. RST(复位):复位引脚,用于将单片机复位到初始状态。
  5. P0.x - P3.x:I/O引脚。这些引脚可以设置为输入或输出,并与外部设备进行通信。
  6. EA/VPP:扩展地址/编程电压引脚。EA引脚用于选择外部存储器的地址空间,VPP引脚用于编程单片机。
  7. ALE/PROG:地址锁存使能/编程引脚。ALE引脚用于指示地址锁存器是否有效,PROG引脚用于选择编程模式。
  8. PSEN:程序存储器使能引脚。用于指示外部程序存储器是否有效。
  9. INTx:外部中断引脚。用于连接外部中断源,并触发中断服务程序。
  10. T0/T1:定时器引脚。T0和T1引脚用于连接定时器/计数器,并计算时间间隔或脉冲宽度。

值得注意的是,具体的引脚功能定义可能会因为不同的单片机型号、芯片厂商和封装类型而有所差异。因此,在使用特定的单片机时,建议参考其相关的数据手册或引脚定义表,以确定具体的引脚功能定义。

CPU的概念**

CPU(Central Processing Unit),中央处理器,是计算机系统的核心组件之一,负责执行计算机指令并控制计算机的操作。

CPU主要包括以下几个部分:

  1. 控制单元(Control Unit):负责解析和执行计算机指令,控制数据的流动和操作的顺序。它从内存中读取指令,解码指令并生成相应的控制信号,控制其他部件的操作。
  2. 算术逻辑单元(Arithmetic Logic Unit,ALU):负责执行算术和逻辑运算,如加减乘除、比较、移位等。ALU可以对数据进行加工处理和转换,产生计算结果。
  3. 寄存器(Registers):是CPU内部的高速存储器,用于存储指令、数据和控制信息。寄存器有各种类型,如程序计数器(Program Counter,PC)用于存储下一条指令的地址,累加器(Accumulator)用于存储计算结果等。
  4. 数据通路(Data Path):由数据总线、地址总线和控制总线组成,用于在CPU内部和外部设备之间传输数据和控制信号。数据通路是CPU中各个部件之间的连接和传输通道。

CPU的主要功能是执行计算机指令,包括从内存中读取指令、解码指令、执行指令并产生结果。它通过时钟信号驱动,按照指令的顺序进行操作,并且可以根据需要从内存中读取和存储数据。CPU的性能通常由时钟频率、指令集、缓存容量等因素决定,不同的CPU有不同的性能和功能特性。

RAM的概念

RAM(Random Access Memory),随机存取存储器,是计算机系统中的一种主要存储设备,用于临时存储数据和程序。

RAM是一种易失性存储器,意味着当计算机关闭或重启时,其中存储的数据将被清除。RAM具有快速的读写速度,可以随机访问存储位置,因此称为随机存取存储器。

RAM的主要作用是提供给CPU临时存储和访问数据和指令。当计算机运行时,操作系统和应用程序将数据和指令加载到RAM中,CPU可以快速从RAM中读取和写入数据,以进行计算和处理。RAM的容量越大,计算机可以同时处理的数据量越大,运行速度也会相应提高。

RAM通常由DRAM(Dynamic Random Access Memory)或SRAM(Static Random Access Memory)组成。DRAM是一种容量较大且比较廉价的RAM,但读写速度相对较慢。SRAM则速度更快,但成本更高且容量较小,通常用于高性能的缓存存储器。

RAM的容量可以根据计算机的需求进行扩展,通过增加内存条或模块来提升计算机的性能。RAM的容量越大,计算机可以同时运行更多的程序和处理更复杂的任务。但需要注意的是,RAM的容量在一定程度上受限于计算机的操作系统和硬件架构的限制。

ROM的概念

ROM(Read-Only Memory)是一种只读存储器,用于存储固定的数据和程序,其内容在制造过程中被写入,一旦写入后就无法修改或擦除。

与RAM不同,ROM是一种非易失性存储器,意味着即使在断电的情况下,ROM中的数据也会被保留。ROM的存储内容在计算机系统启动时被加载,供计算机系统进行初始化和启动所需的操作。

ROM有多种类型,包括以下几种常见的:

  1. PROM(Programmable Read-Only Memory):可编程只读存储器,用户可以一次性编程其中的数据,但一旦编程完成后无法修改。
  2. EPROM(Erasable Programmable Read-Only Memory):可擦除可编程只读存储器,用户可以通过特定的操作将其中的数据擦除,并重新编程。EPROM通常需要使用紫外线照射来进行数据擦除。
  3. EEPROM(Electrically Erasable Programmable Read-Only Memory):电可擦除可编程只读存储器,与EPROM相比,EEPROM可以通过电子擦除操作来修改其中的数据,而无需使用紫外线照射。
  4. Flash ROM:一种特殊的EEPROM,通常用于存储固件、操作系统和固定的程序。Flash ROM可以通过特定的操作进行擦除和重新编程,被广泛应用于各种电子设备中。

ROM在计算机系统中起着重要的作用,它存储了计算机系统的基本引导程序、固件、BIOS等关键信息,确保了计算机系统能够正常启动和运行。此外,ROM还用于存储一些重要的数据,如加密密钥和校准数据等。

I/O的作用

I/O(Input/Output)是计算机系统中的输入和输出操作,用于将数据从计算机系统的内部与外部设备之间进行传输。

I/O的作用包括以下几个方面:

  1. 数据输入:通过I/O操作,计算机系统可以从外部设备(如键盘、鼠标、传感器等)获取用户输入的数据。这些输入数据可以用于控制计算机系统的行为、进行数据处理和执行特定的操作。
  2. 数据输出:通过I/O操作,计算机系统可以将数据传输到外部设备(如显示器、打印机、音频设备等),以便向用户呈现计算机系统处理的结果、显示图像、播放音频等。
  3. 存储器访问:I/O操作还可以用于将数据从主存储器(RAM)传输到外部存储设备(如硬盘、固态硬盘、光盘等)或者从外部存储设备读取数据到主存储器中。这样可以实现数据的长期存储和快速访问。
  4. 设备控制:I/O操作还可以用于控制外部设备的行为,如调整显示器的亮度和对比度、控制打印机的打印速度和打印模式等。通过控制外部设备,计算机系统可以实现更加灵活和个性化的操作。

总之,I/O的作用是实现计算机系统与外部世界的数据交换和控制,使计算机系统能够与用户进行交互,从外部设备读取数据和输出数据,以及进行数据的存储和访问。

T/C的概念和作用

T/C(Timer/Counter)是计算机系统中的定时器和计数器。定时器用于生成一定时间间隔的定时信号,计数器用于计数外部事件的次数或者计时器生成的定时信号的周期数。

T/C的概念和作用包括以下几个方面:

  1. 定时功能:定时器可以按照预设的时间间隔生成定时信号。这个定时信号可以用于计时、同步操作、控制外部设备等。例如,在操作系统中,定时器可以用于调度任务、实现时间片轮转等。
  2. 计数功能:计数器可以对外部事件的次数进行计数。这个外部事件可以是由外部设备产生的信号,如脉冲、触发信号等。计数器的计数功能可以用于测量事件的频率、计算外部设备的速度等。
  3. PWM(Pulse Width Modulation)生成:定时器可以生成PWM信号,即通过改变信号的占空比来控制输出信号的功率或者模拟电压的大小。PWM信号在电机控制、LED亮度调节等领域有广泛的应用。
  4. 延时功能:通过定时器的计时功能,可以实现程序的延时操作。在一些需要控制时间的应用中,通过设置定时器的计数值,可以实现精确的延时操作。

总之,T/C的概念和作用是在计算机系统中实现定时、计数、PWM生成和延时等功能。通过定时器和计数器,计算机系统可以控制时间和事件的发生,实现各种应用需求。

5个中断控制系统

  1. PIC(Programmable Interrupt Controller):PIC是一种常见的中断控制系统,用于处理多种设备的中断请求。它允许系统处理多个中断源,并对中断进行优先级排序和分发,确保每个中断被及时处理。
  2. APIC(Advanced Programmable Interrupt Controller):APIC是一种高级的中断控制系统,用于多处理器系统中的中断分发和处理。它支持更大的中断数量、更高的中断优先级和更灵活的中断处理方式,以适应复杂的多核处理器系统。
  3. VIC(Vector Interrupt Controller):VIC是一种用于处理嵌入式系统中中断请求的控制系统。它通过向量中断表(Vector Interrupt Table)来管理中断处理程序,并提供中断优先级和中断屏蔽等功能。
  4. ICU(Interrupt Controller Unit):ICU是一种中断控制单元,常用于嵌入式系统中。它用于集中管理和控制各种外部设备的中断请求,并将中断请求传递给处理器进行处理。
  5. INTC(Interrupt Controller):INTC是一种中断控制器,常用于嵌入式系统中。它用于管理和控制各种外设的中断请求,负责中断的分发和处理,以确保系统对中断请求进行及时响应。

这些中断控制系统在计算机和嵌入式系统中起着重要的作用,它们负责管理和调度中断请求,确保系统能够正确地响应各种外部事件和设备的中断需求。

C51的特点

C51是一种基于Intel 8051架构的单片机(Microcontroller),具有以下特点:

  1. 8位CPU架构:C51使用8位的位宽进行数据和指令处理,适用于处理简单的任务和控制应用。由于其简单的架构,C51的指令集较为简洁,易于学习和理解。
  2. 内置存储器:C51内置了程序存储器(Program Memory)和数据存储器(Data Memory),通常采用的存储器类型为ROM(Read-Only Memory)和RAM(Random Access Memory)。程序存储器用于存储程序代码,数据存储器用于存储变量和临时数据。
  3. 多个通用I/O引脚:C51通常具有多个通用输入/输出引脚(General Purpose Input/Output, GPIO),可以与外部设备进行连接和通信。这些引脚可通过编程配置为输入或输出,以实现与外部世界的交互。
  4. 低功耗设计:C51具有低功耗特性,适用于对电源要求较高的应用场景,如电池供电的设备。它通常采用了多种功耗管理技术,如睡眠模式和时钟控制,以降低功耗并延长电池寿命。
  5. 丰富的外设接口:C51通常具有多种外设接口,如串口通信接口(UART)、SPI(Serial Peripheral Interface)接口、I2C(Inter-Integrated Circuit)接口等。这些接口可以与其他设备进行通信和数据交换,从而扩展了C51的功能和应用范围。
  6. 嵌入式系统开发环境:为了方便开发者进行程序编写和调试,C51通常提供了集成开发环境(Integrated Development Environment, IDE),其中包括编译器、调试器、仿真器等工具,简化了嵌入式系统的开发过程。

C51和AMS51的区别

C51和AMS51都是基于Intel 8051架构的单片机,但它们之间存在一些区别:

  1. 制造商不同:C51是由英特尔(Intel)开发和制造的单片机,而AMS51是由迈思博(Nuvoton)公司(前身为飞思卡尔(Freescale))开发和制造的单片机。
  2. 周边外设不同:C51和AMS51的具体型号和系列可能会有不同的外设配置。虽然它们都支持通用输入/输出引脚(GPIO)、串口通信接口(UART)、SPI接口、I2C接口等常见外设,但具体的引脚数量、工作电压、工作频率等可能会有差异。
  3. 特殊功能不同:C51和AMS51的某些型号和系列还可能具有一些特殊功能和特性。例如,一些AMS51型号可能具有更高的工作频率和更多的存储容量,一些C51型号可能具有更低的功耗和更广泛的软件生态系统。
  4. 支持和开发工具不同:C51和AMS51由不同的制造商提供支持和开发工具。C51通常使用KEIL C编译器和相关开发工具进行编程和调试,而AMS51则使用迈思博公司提供的开发工具套件。
  5. 可用性和市场情况不同:由于C51是由英特尔开发的早期单片机,它的市场份额和可用性可能比AMS51更广泛。而AMS51则在一些特定的市场和应用领域有着较好的表现,例如汽车电子、工业控制等。

C51数据类型介绍
在这里插入图片描述
c语言的运算符

一、算术运算符

C语言提供了 6 个算术运算符,包括加、减、乘、除、取余和自增、自减。这些运算符常常用于数学计算,可以对数字进行加减乘除运算,以及获取数字的余数。

  • 加法运算符(+):加法运算符用于两个数字相加,并返回它们的和。例如,3 + 4 将返回 7;
  • 减法运算符(-):减法运算符用于两个数字相减,并返回它们的差。例如,5 - 2 将返回 3;
  • 乘法运算符(*):乘法运算符用于两个数字相乘,并返回它们的积。例如,2 * 6 将返回 12;
  • 除法运算符(/):除法运算符用于两个数字相除,并返回它们的商。例如,8 / 2 将返回4;
  • 取余运算符(%):取余运算符用于获取两个数字相除的余数,并返回余数。例如,5 % 2 将返回 1;
  • 自增自减运算符(++、–):自增自减运算符分为前置自增自减和后置自增自减,分别表示先进行运算再进行自增自减操作和先进行自增自减操作再进行运算。例如,i++ 表示先返回 i 的值再将 i 加 1,而 ++i 表示先将 i 加 1 再返回i的值。
二、赋值运算符

赋值运算符用于将一个值赋给变量。赋值运算符的语法格式为“=”,左边是变量名,右边是要赋给变量的值。例如,a = 10; 将把值 10 赋给变量 a。

在 C语言中,赋值运算符还有一些扩展的形式,如“+=”、“-=”、“*=”、“/=”等等。这些运算符的作用是将左边变量的值和右边的值进行运算后再赋给左边的变量。例如,a += 10; 等同于a = a + 10;,即将变量 a 的值加上 10 后再赋给 a。

三、比较运算符

比较运算符用于比较两个值的大小,并返回布尔值 true 或 false。C语言提供了多个比较运算符,包括等于运算符、不等于运算符、大于运算符、小于运算符、大于等于运算符和小于等于运算符。

  • 等于运算符(==):等于运算符用于比较两个值是否相等,并返回布尔值 true 或 false。例如,if(a == 10)将判断变量 a 的值是否等于 10,如果条件为真,将返回 true;
  • 不等于运算符(!=):不等于运算符用于比较两个值是否不相等,并返回布尔值 true 或 false。例如,if(a != 10)将判断变量 a 的值是否不等于 10,如果条件为真,将返回 true;
  • 大于运算符(>):大于运算符用于比较两个值的大小,判断左边的值是否大于右边的值,并返回布尔值 true 或 false。例如,if(a > 10)将判断变量 a 的值是否大于 10,如果条件为真,将返回 true;
  • 小于运算符(<):小于运算符用于比较两个值的大小,判断左边的值是否小于右边的值,并返回布尔值 true 或 false。例如,if(a < 10)将判断变量 a 的值是否小于 10,如果条件为真,将返回 true;
  • 大于等于运算符(>=):大于等于运算符用于比较两个值的大小,判断左边的值是否大于或等于右边的值,并返回布尔值 true 或 false。例如,if(a >= 10)将判断变量 a 的值是否大于或等于 10,如果条件为真,将返回 true;
  • 小于等于运算符(<=):小于等于运算符用于比较两个值的大小,判断左边的值是否小于或等于右边的值,并返回布尔值 true 或 false。例如,if(a <= 10)将判断变量 a 的值是否小于或等于 10,如果条件为真,将返回 true。
四、逻辑运算符

C语言提供了三个逻辑运算符,包括与运算符、或运算符和非运算符。这些运算符用于比较条件表达式的结果,并返回布尔值 true 或 false。

  • 与运算符(&&):与运算符用于比较两个条件是否都为真,并返回布尔值 true 或 false。例如,if(a > 5 && b < 10) 将判断变量 a 是否大于 5,并且变量 b 是否小于 10,如果两个条件都为真,将返回 true;
  • 或运算符(||):或运算符用于比较两个条件是否有一个为真,并返回布尔值 true 或 false。例如,if(a > 5 || b < 10) 将判断变量 a 是否大于 5,或者变量 b 是否小于 10,如果有一个条件为真,将返回 true;
  • 非运算符(!):非运算符用于取反一个条件的结果,并返回布尔值 true 或 false。例如,if(!(a > 5)) 将判断变量 a 是否小于等于 5,如果条件为真,将返回 true。
五、位运算符

C语言提供了多个位运算符,用于对数字的二进制位进行操作。这些运算符包括按位与运算符、按位或运算符、按位异或运算符、按位取反运算符、左移运算符和右移运算符。

  • 按位与运算符(&):按位与运算符用于对两个二进制数的每一位进行比较,并返回二进制结果。例如,1010 & 1100 将返回 1000;
  • 按位或运算符(|):按位或运算符用于对两个二进制数的每一位进行比较,并返回二进制结果。例如,1010 | 1100 将返回 1110;
  • 按位异或运算符(^):按位异或运算符用于对两个二进制数的每一位进行比较,并返回二进制结果。如果两个数的某一位相同,则返回 0;如果不同,则返回 1。例如,1010 ^ 1100 将返回 0110;
  • 按位取反运算符():按位取反运算符用于对一个二进制数的每一位进行取反,并返回二进制结果。例如,1010 将返回 0101;
  • 左移运算符(<<):左移运算符用于将一个二进制数的所有位向左移动指定数量的位数,并返回二进制结果。例如,1010 << 2 将返回 101000;
  • 右移运算符(>>):右移运算符用于将一个二进制数的所有位向右移动指定数量的位数,并返回二进制结果。例如,1010 >> 2 将返回 0010。

单片机需要掌握的重点

最小系统能够运行起来的必要条件:1:电源,2:晶振,3:复位电路

对单片机任意的IO口的随意操作:1:输出控制电平高低,2:输出检测电平高低

定时器:重点掌握最常用的方式2

中断:外部中断,定时器中断,串口中断

串口通信:单片机之间,单片机和计算机之间

单片机展示
在这里插入图片描述
自己动手实践需要的硬件材料

1:杜邦线,单头带帽,40根

2:小电路板一块

3:DS12C887片

4:焊锡

创建51单片机项目:
1:打开keil5软件
在这里插入图片描述2:创建一个项目
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述工程的目录结构如下所示

在这里插入图片描述在这里插入图片描述在这里插入图片描述查看开发板原理图:
在这里插入图片描述查看原理图时原理图中标号相同的表示物理连接
在这里插入图片描述

在这里插入图片描述在这里插入图片描述以下的内容涉及到模电相关知识
在这里插入图片描述在这里插入图片描述

第一个发光二级管
在这里插入图片描述将编写的程序下载到单片机中
在这里插入图片描述打开文件
在这里插入图片描述选中hex后缀的问价后点击打开
在这里插入图片描述将程序下载到单片机

在这里插入图片描述之后单片机的第一个led灯亮起

使用总线的方式点亮第二个发光二级板
在这里插入图片描述
在这里插入图片描述更改头文件操作
在这里插入图片描述在这里插入图片描述下载编程两个led亮起
在这里插入图片描述两个led灯亮起
在这里插入图片描述
1:点亮奇数位数的led灯

2:点亮最后一个发光管

3:点亮偶数位的发光管

4:尝试让第一个发光管闪烁

5:尝试设计出一个流水灯程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/162577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/Nb93582M_5usednAKp_Jtw) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** >- **&#x1f680;…

Linux | vim的入门手册

目录 前言 一、什么是vim 二、vim编辑器的模式 1、插入模式 &#xff08;1&#xff09;用vim打开文件 &#xff08;2&#xff09;进入插入模式 2、默认模式 &#xff08;1&#xff09;光标移动 &#xff08;2&#xff09;复制、粘贴与剪切操作 &#xff08;3&#x…

互联网Java工程师面试题·Java 总结篇·第七弹

目录 68、Java 中如何实现序列化&#xff0c;有什么意义&#xff1f; 69、Java 中有几种类型的流&#xff1f; 70、写一个方法&#xff0c;输入一个文件名和一个字符串&#xff0c;统计这个字符串在这个文件中出现的次数。 71、如何用 Java 代码列出一个目录下所有的文件&a…

【算法练习Day21】组合剪枝

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 组合剪枝总结&#xff1a; …

Linux系统管理:虚拟机OpenEuler安装

目录 一、理论 1.OpenEuler 二、实验 1.虚拟机OpenEuler安装准备阶段 2.安装OpenEuler 3.进入系统 一、理论 1.OpenEuler &#xff08;1&#xff09;简介 欧拉&#xff08;Euler&#xff09;是数字基础设施的开源操作系统&#xff0c;可广泛部署于服务器、云计算、边缘…

BookStack 详解及 Docker-Compose 部署

BookStack 是一款用于创建文档和文档管理的开源平台。它提供了一个直观且功能丰富的界面&#xff0c;可用于组织和管理各种文档&#xff0c;包括文档编写、编辑和共享。本文将介绍 BookStack 的核心功能&#xff0c;并展示如何使用 Docker-Compose 快速部署 BookStack。 BookS…

34 机器学习(二):数据准备|knn

文章目录 数据准备数据下载数据切割转换器估计器 kNN正常的流程网格多折交叉训练原理讲解距离度量欧式距离(Euclidean Distance)曼哈顿距离(Manhattan Distance)切比雪夫距离 (Chebyshev Distance)还有一些自定义的距离 就请读者自行研究 再识K-近邻算法API选择n邻居的思辨总结…

c语言内功修炼--深度剖析数据的存储

前言&#xff1a; 我们知道在c语言中的几种基本内置数据类型&#xff0c;分别是&#xff1a; char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 在…

攻防世界web篇-Training-WWW-Robots

直接点击给出的地址&#xff0c;然后会转到另一个网页界面&#xff0c;在这个界面&#xff0c;已经给出了提示&#xff0c;robots.txt 在浏览器中&#xff0c;直接在地址的后面加上robots.txt&#xff0c;会进到下面这个界面 因为对php语言一窍不通&#xff0c;所以这里纯粹就…

无法访问 github ,解决办法

一、使用代理&#xff08;首选&#xff09; 这种办法只需要更改github.com为代理的域名即可&#xff0c;使用方式与GitHub除了域名不同其他都一样&#xff0c;速度挺快&#xff0c;可登陆&#xff0c;可提交。 1、查看当前的代理&#xff1a; git config --global --get htt…

VR、AR、MR、XR到底都是什么?有什么区别

目录 VRARMRXRAR、VR、MR、XR的区别 VR 英&#xff1a;Virtual Reality 中文翻译&#xff1a;虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容&#xff0c;为用户提供视觉、听觉等感官来模拟现实&#xff0c;具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器…

动态规划算法(3)--0-1背包、石子合并、数字三角形

目录 一、0-1背包 1、概述 2、暴力枚举法 3、动态规划 二、石子合并问题 1、概述 2、动态规划 3、环形石子怎么办&#xff1f; 三、数字三角形问题 1、概述 2、递归 3、线性规划 四、租用游艇问题 一、0-1背包 1、概述 0-1背包&#xff1a;给定多种物品和一个固定…

采用医疗AI、自然语言处理技术的java智能导诊导医系统源码

一套java智能导诊导医系统源码&#xff08;演示自主版权商业项目应用&#xff09; 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景…

Kotlin Compose Multiplatform 跨平台开发实践之加入 iOS 支持

前言 几个月前 Compose Multiplatform 的 iOS 支持就宣布进入了 Alpha 阶段&#xff0c;这意味着它已经具备了一定的可用性。 在它发布 Alpha 的时候&#xff0c;我就第一时间尝鲜&#xff0c;但是只是浅尝辄止&#xff0c;没有做过多的探索&#xff0c;最近恰好有点时间&…

计算机网络-计算机网络体系结构-网络层

目录 一、IPV4 IP数据报格式 *IP 数据报分片 *IPV4地址 分类 网络地址转换(NAT) 二、子网划分与子网掩码 *CIDR *超网 协议 ARP协议 DHCP协议 ICMP协议 三、IPV6 格式 IPV4和IPV6区别 地址表示形式 四、路由选择协议 RIP(路由信息协议) OPSF(开发最短路径优…

SpringBoot整合Caffeine实现缓存

Caffeine Caffeine是一种基于Java的高性能缓存库&#xff0c;它提供了可配置、快速、灵活的缓存实现。Caffeine具有以下特点&#xff1a; 高性能&#xff1a;Caffeine使用了一些优化技术&#xff0c;如基于链表的并发哈希表和无锁算法&#xff0c;以提供卓越的读写性能。容量…

nodejs+vue 学生宿舍管理系统设计与实现

可将教师信息、宿管信息、学生信息、楼栋信息等输入到系统中。只有管理员才能录入相关的资料&#xff0c;按照提示&#xff0c;输入相应的资料&#xff0c;而“导入”则可以通过上传档案&#xff0c;导入成功后&#xff0c;相应的寝室就会相应的减少。在录入大楼的时候&#xf…

Filebeat+Kafka+ELK日志分析架构

目录 一、zookeeper&#xff1a; 1. zookeeper 定义&#xff1a; 2. Zookeeper 工作机制: 3. Zookeeper 特点: 4. Zookeeper 数据结构: 5. Zookeeper 应用场景: 5.1 统一命名服务: 5.2 统一配置管理: 5.3 统一集群管理: 5.4 服务器动态上下线: 5.5 软负载均衡: 6. Zookeeper 选…

MAYA教程之建模基础命令介绍

基础命令 视图相关操作 旋转视图 : ALT 鼠标左键平移视图 : ALT 鼠标中键缩放视图 : 滚动鼠标滚轮 或者 ALT 鼠标右键切换视图 : 空格键回到模型 : F 视图状态 选择状态 : Q移动状态 : W旋转状态 : E缩放状态 : R 视图显示 正常显示 : 1正常圆滑同时显示 : 2圆滑显示 …

C#中List、Dictionary、HashSet用法以及区别

前言 在C#编程中&#xff0c;List、Dictionary和HashSet是常用的集合类型,它们都有自己的特点和适用场景。本篇博客将介绍它们的用法、区别及常见操作。深入了解这些集合类型&#xff0c;能够帮助我们更好地组织和处理数据。 1. List: List是一个有序可重复集合&#xff0c;可…