51单片机基础(1)

一、基础知识

1.51单片机介绍

①单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。

②单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。

③在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

注:io口指单片机上的一组引脚,用于与外部设备进行数据交互。它可以实现数字输入、数字输出、模拟输入、模拟输出等功能。

a124c744d677420b9059a2a38452a371.jpg

 7c3ab643a55e4be2bab21e59887401f2.jpg

 af1a87b1edc1447982230f3fa02c38d3.jpg

2.51所用的运算符

05a8520a2011443c9947a63cbc29ad52.jpg

 3.①传统方式编程太过繁杂,故可以用模块化编程(有.c文件:函数、变量的声明和.h文件:可被外部调用的函数、变量的声明)

②预编译(#……)

7b42101d883f4dca8859fc6ad711a876.jpg

 ③举例

667bf2a06b134f008fe86ee9f2ba6624.jpg

 4.寄存器

32301d0a303f43bbbe896dd3753e217c.jpg

 5.51的数据类型

6a0f83bd6e2543d7aa7a5469e7936840.jpg

 ①位变量——bit:是C51 编译器的一种扩充数据类型,它的值是一个二进制位,不是0 就是1。函数可包含类型为"bit"的参数,也可以将其作为返回值。对位变量定义的限制。

②特殊功能寄存器——sfr:是一种扩充数据类型,值域为0~255。用于访问51单片机内部的所有特殊功能寄存器。“sfr”是定义语句的关键字,其后必须跟一个MSC-51单片机真实存在的特殊功能寄存器名,“=”后面必须是一个整型常数,不允许是带有运算符的表达式,是特殊功能寄存器“sfr-name”的字节地址,这个常数值的范围必须在SFR地址范围内,位于0x80-0xFF。

③16位特殊功能寄存器——sfr16:为C51的扩充数据类型,只不过是用来定义单片机的内部16位特殊功能寄存器,并且占用两个内存单元。

④可寻址位——sbit:是C51 中的一种扩充数据类型,利用它可以访问芯片内部的RAM 中的可寻址位或特殊功能寄存器中的可寻址位。

注:sbit和bit区别:bit和其他普通变量类型(如int)类似,只不过是定义的是一个位普通变量,而sbit定义的位必需是特殊功能寄存器或内部RAM区中的可寻址位。

二、51单片机操作

1.1点亮LED

①LED:又叫发光二极管,是一种常用的发光器件,通过电子与空穴复合释放能量发光,可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。

f107b7f24f6841a2bbbc3daf0eb67bf6.jpg

 ②原理

ecfb5785846648df91e77b993c5d32c4.jpg

079f62577ce541f69bb731aeb295c940.jpg 

 注:①LED一边接VCC(正极),另一边接负(低电平)则被点亮。若寄存器为一,通过驱动器,给LO口高电平;若寄存器为零,给io口低电平。②CPU:储存代码

 

③代码

aa80bbd58f6c4d8bb079da71fb431c64.png

 ④结果(LED一亮一灭)

1ab47ac7176b42259b04ea35fa0c4596.jpg

 1.2LED闪烁

①代码

2a1bf175dade45f59e82f41b26e629b5.jpg

 注:单片机扫描速度过快,导致代码执行太快,从而导致LED闪的特别快,所以需要添加一个Delay函数来延时。

②结果:LED以1s为周期的闪烁

1.3LED流水灯

①代码

(1)

df1188256f474cf0be3ea89e1e9590e1.jpg

094891022f54463fb2f8ecd9967ac78e.jpg 

 代码(2)

77da00ee06f3416aa80b3b7594a14ba1.jpg

 ②结果:前两个LED运行时间间隔为一秒,后面的时间间隔为100毫秒

2.1独立按键控制LED亮灭

①独立按键的介绍

(1)轻触按键:一种电子开关,按下时开关接通,松开开关断开。原理:通过轻触按键内的金属弹片受力弹动来实现接通和断开。

029deb80cfd44fa69da9cccf5229d90c.jpg

 

注:弹片被按下时,三个点会连接,实现导通

②原理

ce28918079f1424385a780f00bf766bc.jpg

b9f0b4ce6bac424c9a78de80f1934664.jpg 独立按键一边接GND(低电平),一边接io口(默认高电平)。即:按键没有按下,io口保持高电平,寄存器值为1,LED不会被点亮;按键按下,io口变为低电平,寄存器值为0,LED会被点亮。

③代码

a236f215b3f94b73926270520875dbae.jpg

 ④结果:LED按下会点亮,松手会灭。

2.2独立按键控制LED状态

①按键的抖动:对于机械开关,断开闭合时,由于机械触点的弹性作用,一个开关闭合时不会马上稳定的接通,断开时也不会一下断开,所以在一瞬间有一连串的抖动。

900182cf5e564e32b855534caae05fcb.jpg

 ②解决方法:通过Delay延时函数把抖动时间延时过去

③代码

a6acf1aca26b467f87a9645d82aa7207.jpg

 ④结果:按下k1,松手时LED亮,再按下,松手时LED灭。

2.3独立按键控制LED显示二进制

①代码

45399b68be9940cfbaedf82806cdba4e.jpg

 ②结果:按k1,使LED以二进制点亮。

2.4独立按键控制LED移位

①代码

5f639563bddc41f7a07a4a8f19673591.jpg

4afde70617fa42158c9a8216930c7168.jpg 

 ②结果:按k1,灯往左移;按k2,灯往右移。

3.1静态数码管

①数码管介绍:

八个LED有两种连接方式:共阴极连接和共阳极连接

注:51开发部是共阴极连接

bc36ead07daf40f2ac8812aff59c1478.jpg

85f90649ae664c13b0ac2db8e39f841f.jpg 

 注:3,8(位选)接地(低电平),另一边接高电平(io口值为1)会被点亮。

②四位一体数码管

96b29000dc3449a290d964cdc94ca272.jpg

ea1d503e0fcf406faccf8b14111c9ddb.jpg 538f9f1d8bcc4926a088104359c8af7b.jpg

6df8c72f7a6242ff8aae53b261fd7da7.jpg 

 

 注:12,9,8,6为位选,接高电平的话,负极接到了正极,则不亮;接低电平则亮。下面的引脚给高电平则亮,低电平不亮。

74LS138芯片:A,B,C为输入端,Y0-7是输出端,该芯片接电源,G1,G2A,G2B是使能端(类似于开关),G1接高电平,G2A,G2B接低电平时开始工作。C,B,A给的值是二进制,转化为十进制,对应输出端有效(低电平0),实现三个线控制八个线。

高电平驱动能力弱,低电平驱动能力强。

③多位同时显示的方法:不断很快的扫描,通过余晖达到同时显示。

④代码

1a4df9e53333469e84070b36cae28699.jpg

 ⑤结果:第二位显示3。

3.2动态数码管显示

①代码

24bdec25b15c4619b8fc0d40ba13f9ac.jpg

7fff212762884fde88d2c697f9c6f96f.jpg 

 注:加入Delay函数是为了消影。

4.1LCD1602

2b91569b16d74c1aa12efbc00c558473.jpg

f7fa03c9ce8644cfbdae26e3af83d6ed.jpg 

 5.1矩阵键盘

①原理:矩阵形式,可减少io口的占用。采用逐行或逐列的扫描。逐行扫描:把一行看为一个整体,给P14-17赋值,若这个整体接低电平,则这个整体有效,若给1,则无效,然后控制P10-13口,若P1=0,则代表按键按下(和独立按键类似)。在这我们使用逐列扫描,如果使用逐行扫描,因为引脚冲突,蜂鸣器会响。逐列扫描:把一列看成一个整体,给P10-13赋值,再控制P14-17口来判断按键是否按下。

fc0a43cf9b8f43b9a1261f3440f91f6b.jpg

 ②扫描

076786d926eb43f88a030bd0e7b1c42d.jpg

 ③代码

2ba3b2ad9c65462d8ce187c8e83b7cd8.jpg

 ④结果

9553cff1b2df453a9d6464d96dfb7f71.jpg

 注:按键按顺序从一排列到16,显示在LCD上。

6.1定时器/计数器(单片机内部)

①作用:用于计时系统;替代上时间的Delay。

②STC89C52RC有三个定时器(T0、T1、T2)。

③过程

01316e667b1f4c7ab7210da54a2af57e.jpg

 ④定时器的工作模式

.T0和T1均有四种工作模式

    模式0:13位定时器/计数器

    模式1:16位定时器/计数器(常用)

    模式2:8位自动重装模式

    模式3:两个8位计数器

.模式一

46ae20ec1d3245c2aad20ddcab6c298a.jpg

c00c5f8baf6a4652821abb550c4e351c.jpg

 

(1)计数部分

TL0和TH0:十六位(两个字节)(65535个数)的计数器,高字节是TH,低字节是TL,0代表是定时器0。

过程:左边的时钟提供脉冲,每来一个脉冲,计数器的值就加一,加到最大值之后,在下一个脉冲的时候,会产生溢出,计数器会回到0(65535+1=0),会制一个标志位---TF0,它会向中断系统申请中断。

(2)控制部分

控制时钟,控制启动暂停。TR0:控制定时器的启动和暂停

(3)时钟部分

时钟最初的来源有两个:一个是SYSclk(系统时钟,即晶振周期,我使用的开发部晶振为11.0592MHz),另一个是T0pin(单片机外部的一个接口)。

晶振上电之后通过内部元件(压电陶瓷),这种陶瓷会发出固定频率的振动,用这种信号产生一个固定的频率。产生的脉冲会被12分频,开关如果连到12分频,输出频率就是11.0592/12赫兹,周期就是12/11.0592us,计数单元每隔12/11.0592us计数一次,计到最大值,就会产生中断。

c/T(T上有横杠):如果配置为1(高电平)的话,就是c功能,也就是计数器功能(T0pin);如果给0,上面横杠代表低电平,就是T功能(定时器功能)。

6.2中断系统

①作用:使CPU具有对外界紧急事件的实时处理能力而设置的。

②定义:CPU正在处理某件事时发生了紧急事件,CPU暂停当前工作,去处理紧急事件,处理完之后,再回到原来被中断的地方,继续原来的工作。

注:请求CPU中断的请求源是中断源。每个中断源都有一个优先级别,CPU先响应优先级别最高的中断请求。

中断嵌套:当CPU正在处理一个中断源时,发生了另一个优先级更高的中断源请求,CPU暂停原来中断源的处理,去处理优先级别更高的中断源,处理完之后,再回来继续处理原来的中断源。有中断嵌套的中断系统是多级中断系统,反之则是单级中断系统。

 

5966a700f665461891ed52a331b8c95e.jpg

 ③STC89C52RC中断资源

.中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器中断1、串口中断、外部中断2、外部中断3)

.中断优先级:4个

.中断号(中断的入口)

c37c71d786d84755ada978f9d6c49199.jpg

 ④相关的寄存器

0b3db89a3f984bc99e1082d40d03fa8e.jpg

322a5d33f0fd4b138b4f9c460fb93b0e.jpg 

.寄存器是连接软硬件的媒介,相当于复杂机器的“操作按钮”。

.在单片机中寄存器就是一段特殊的RAM存储器,可以存储和读取数据,每一个寄存器背后都连接了一根导线,控制着电路的连接方式。

.TCON

3e8e590fc7374f4aaadc126d52e335a6.jpg

 TRO:定时器T0的运行控制位。该位由软件置位。当GATE(TMOD.3)=0,TR0=1时允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=0且INT0(上有横杠)输入高电平时,允许T0计数。

TF0:定时器/计数器T0的溢出中断标志。T0加到最大值后溢出,由硬件置“1”TF0,向CPU请求中断,保持CPU响应该中断时,硬件清“0”TF0。

.TMOD

e4f0d9353a44477c81919469844cf44f.jpg

M1、M0:控制定时器/计数器0模式的选择,一开始配置成0 1。

37e19703d0f84e33b43c685031e480ce.jpg

 注:非门:左边给1,右边就变成0(把数据反向)。或门:输入全为0,输出为0,其他均输出1。与门:输入端有0,输出就是0,输入端全为1,输出1。

7597adac6f0a4469b607b507fb770b5b.jpg

 .EA(总开关):CPU总中断允许控制位,EA等于0相当于开关断开

 .ET0:T0的溢出中断允许位,ET0=1,允许T0中断;ET0=0,禁止中断

.IP:中断优先级控制寄存器低

065d4bfedf12439c871367a67d9c232d.jpg

⑤代码

27d141a1297d4aaf80510d7128ed5d2e.jpg

18b62112010e4147936574f7e7551994.jpg 

 4e72b990e8b942b9af15376279ae41c0.jpg

88ec86e1836f471c8aeaaecf45723ff7.jpg 

 ⑥结果:按K1,流水灯向左流动;按K2,流水灯向右移动。

 7.1串口

①作用:可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大扩展了单片机的应用范围,增强了单片机系统的硬件实力。

②原理

e15fdaa9b4e44f95962f2323dc4b493a.jpg

 .发送端(TXD)和接收端(RXD)要交叉连接

.当电平标准不一致时,需要加电平转换芯片

 .单向数据传输,直接一根通信线

a1b9f27245cf4bf884702f148e2ff978.jpg

4447986cdc9a48cfa482575b0a54c315.jpg 0251bd632f034633874c065514ba115f.jpg

 注:

.这个整体都在MCU里,最左边是数据的总线。

.时钟部分:靠控制T1的溢出率,经过分频,来控制收发器的采样时间,从而控制波特率。

 .SBUF:写操作时,写入的是发送寄存器,读操作时 读出的是接受寄存器。

 ③UART:四种工作模式

模式0:同步移位寄存器

模式1:8位UART,波特率可变

模式2:9位UART,波特率固定

模式3:9位UART,波特率可变

注:波特率:串口通信的速率(发送和接受各数据位的间隔时间)

④寄存器

deab18d4f40f4effad8d1ce6996ef7f4.jpg

 8.1LED点阵屏

7e8881f637c841499060b3747a5137c2.jpg

 .LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素
以“8"字型排列而已。
.LED点阵屏与数码管一样,有共阴和共阳两种接法。
.LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示。

②原理

51ae9de77e2b4571bade15f8d1d457f4.jpg

 注:SER(串形数据)给移位寄存器输入,SERCLK(串形时钟),每来一个上升沿,数据就会一位一位的向下走,RCLK可以把输入的八个数据搬到右边的输出缓存中,溢出的数据会移到QH'中

③引脚对应关系

754bffece896407aa7d0d3d14dbb1cea.jpg

 ④代码

d1e3ac74046e43a09e285b70ff01cdc7.jpg

b829d5481ca343f5bd97d1be9705e660.jpg 

 ⑤结果(哭脸)

2e713f89bc6d4340b7ff232bee5b1074.jpg

 

 

 

  • 14
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
51单片机是一种广泛应用的微控制器,它的应用范围涵盖了许多领域,如电子、通信、汽车、医疗器械等等。以下是一些51单片机基础知识的汇总: 1. 51单片机是由Intel公司推出的一款8位微控制器,其基础架构是由哈佛结构和冯诺依曼结构组成。 2. 51单片机的主频一般在1MHz~33MHz之间,可以通过外部晶振或内部时钟源来控制。 3. 51单片机的存储器包括ROM、RAM、EEPROM和片内XRAM等,其中ROM存储程序代码,RAM存储数据,EEPROM用于存储非易失性数据,片内XRAM是可扩展的RAM。 4. 51单片机的I/O端口共有4个,分别为P0、P1、P2和P3,每个端口有8个引脚,可用于输入输出操作。 5. 51单片机的中断系统包括5个中断源,分别为外部中断0、外部中断1、定时器/计数器0中断、定时器/计数器1中断和串口中断。 6. 51单片机的定时器/计数器共有2个,分别为定时器/计数器0和定时器/计数器1,可用于计时、计数和PWM等操作。 7. 51单片机的串口通信包括UART和SPI两种通信方式,可用于与其他设备进行数据传输。 8. 51单片机的编程语言包括汇编语言和C语言,其中汇编语言具有高效性和灵活性,而C语言则具有易于学习和调试的优点。 9. 51单片机的开发工具包括Keil、IAR、SDCC等,其中Keil是最为常用的开发工具之一。 10. 51单片机的应用领域包括电子、通信、汽车、医疗器械等,其应用范围广泛,是一种非常重要的微控制器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

情报员007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值