AL控制组——单片机学习笔记(任务2)

一、学前准备

1.软件

  • Keil 5
  • STC ISP

2.硬件

  • 51单片机开发板(学习使用的是STC89C52或者STC89C52RC版本)
  • 笔记本电脑
  • 对应开发板配套的资料(内部原理图等)(必备)

( 软件安装包、开发板资料百度网盘链接:
链接: link
https://pan.baidu.com/s/1vDTN2o8ffvczzNQGfyjHng?pwd=gdzf,提取码:gdzf,链接里压缩包的解压密码:51 ,如果打不开请复制链接到浏览器再打开)

二、单片机外设与其相应的原理图及操作方式


前言——在读懂原理图之前我们需要掌握以下基础知识:

1.原理图中的黄色倒三角是二极管,只有在两侧有电压差时才会导通(并且顺序固定,尖角为0,平角为1,为0即低电平即低压,为1即高电平即高压)。
2.VCC表示正极(即该侧为1),GND表示接负极或者接地(该侧为0)。
3.十六进制:1 2 3 4 5 6 7 8 9 A B C D E F在编码时前面要加0x表示是十六进制。要知道十六进制和二进制之间的相互转换(如0x0F对应的二进制是0000 1111)十六进制与二进制的转换
4.单片机中的寄存器(如Px引脚的寄存器)是八位的,我们常使用十六进制来对寄存器进行操作(如令P2=0xFE,则其对应的寄存器的数据为1111 1110)
5.在单片机原理图中如“P20”这种表达,它表示P2引脚的寄存器中的0号位,它在代码中表现为“P2_0”,同时值得一提的是,如果可以表达为“P2_ x”的形式,即可以单独操控P2寄存器所属的8个位之一的某号位,那么我们称为“可位寻址”,如果不可以单独对下属的某个位进行操作而只可以对整体(如TMOD寄存器只可以整体赋值TMOD=0x01),则称为“不可位寻址” 。*
6.单片机的这些io口默认为高电平,为1。(即P2等默认为1111 1111)

1.单片机

外观:在这里插入图片描述
原理图:在这里插入图片描述

可以看到核心两侧分布有两列形如“Pxx”的东西,它表示的即是引脚,我们就是通过Keil 5软件编写代码来对这些“Pxx”的寄存器进行输入或者检测,来操控单片机外设的。例如,要想使LED模块亮起D1灯,就可以写下"P2_0=0;“,从而点亮,此处体现了上述“输入”;要想检测独立按键K1是否按下,可以通过写下"if(P3_1==0){P2_ 0=0;};”,从而通过D1灯是否亮起来检测K1是否按下,此处体现了上述“检测”。

2.LED模块

外观:在这里插入图片描述

原理图

LED模块是我们学习单片机最先接触的外设,它的原理图比较简单,通过原理图我们可以知道:
1.在单片机中控制LED灯的“窗口”是“P2x”如"P2_0"

2.要想达到“某个灯亮起”的效果,对应在内部电路里,就是要让“这个灯的电路导通”,在前言中的第1条中我们提到过如何让这种电路导通,只需要给尖口0,即P20=0,在代码里体现为“P2_0=0”,则可以让D1亮起。

3.由前言我们知道P2的寄存器可位寻址,也就是说,我们既可以对P2整体赋值,也可以单独对它的某个位进行赋值(若令P2=0xFE则相当于P2_0=0)。

3.独立按键

外观在这里插入图片描述
原理图在这里插入图片描述

独立按键可以用来当作控制LED模块和数码管模式的按钮,十分有趣,同样的通过原理图我们可以知道:
1.由图我们可以知道,控制独立按键需要通过P3的寄存器,而且与LED灯不同的是,LED灯对P2的控制是“P2=”是赋值,而对P3的操作我们是“if(P3==)”是读取。

2.由前言第6条可知,P3默认等于0xFF,即1111 1111,而看到独立按键右侧都连在了GND上,由前言第2条可知,这一侧为低平电压,即0,当我们按下按键如按下K1,则接通了K1所在的电路,会使原本的P3_1=1变为P3_1=0,我们可以理解为“将它接地了”(好像涉及到了io口的工作模式,为“弱上拉”,是后面的知识,我也不清楚,不过我们可以暂时简单的理解为“0的力量比1的力量大”,从而使P3_1=0)

3.理解了第1条,我们就可以理解前面单片机内容里的代码“if(P3_1==0){P2_0=0;}”了,因为P3_1默认等于1,所以当按下时它变为0,我们便可以通过检测这一变化来执行一些操作,如达到“按下K1按键,D1就亮起”的效果。

4.数码管

外观:在这里插入图片描述
74HC138译码器外观:在这里插入图片描述

原理图:在这里插入图片描述

在这里插入图片描述
单个LED的结构图:(A,B,C,D,E,F,G分别代表一个二极管)在这里插入图片描述

通过前面的学习,想必我们现在已经对单片机有了一定的了解,接下来我们要看的便是可以显示数字的数码管啦:
1.数码管显示我们分两步进行,首先要通过控制74HC138译码器来让指定的LED显示,然后在根据LED上8个二极管的分布位置来控制相应的电路导通,从而使数码管显示我们想要的效果。

2.由74HC138译码器的原理图我们可以知道,通过控制P2_2,P2_3,P2_4三个位置,我们可以指定某个LED“可以亮”(每次对这三个输入后,只能对应一个LED灯,例如,我们令P2_2=0,P2_3=1,P2_4=1,则LED7“可以亮”(从000——LED1、001——LED2…、110——LED7、111——LED8))

3.首先在读数码管的原理图前,我们需要知道单个LED上8个二极管的连法是共阴极连法,也就是说这8个二极管的尖角连在一条导线上,如图:
在这里插入图片描述
在结合数码管原理图,发现,8个LED灯的相同位置上的二极管连在同一条导线上,即无论是LED1的A还是LED2的A都连在同一条导线上,而且这些二极管的平角侧接的是P0寄存器,它也同样和前言第6条所说的一样,默认为高平电压1111 1111。所以我们便可以理解前面所说“可以亮”的含义了,就是说,通过控制P22,P23,P24,经过74HC138译码器,指定想要的LED灯的共尖角侧为0,此时其他LED的共尖角侧为1,在结合前言第1条,尽管这些LED灯相同位置的二极管连在同一导线上,我们此时对P0输入也只会对共尖角侧为0的那个LED灯产生影响。

4.从上述三条其实可以知道,每次数码管只能显示一个LED灯才对,那如何做到同时显示多个LED灯呢?这里涉及到一种物理现象余晖效应,通过利用这个效应,我们可以达到同时显示多个LED灯的效果,如我们首先【点亮LED1,让它显示数字2,!延时极短时间,然后我们点亮LED2,让它显示数字6,延时极短时间(此时LED1已经熄灭)】,然后我们一直循环括号里面的步骤,就可以达到同时显示26的效果,为什么要延时呢?因为如果不延时的话,如!号后面的延时去掉,则只会显示6而不会显示2,其实2也亮了,但是它太快熄灭了,我们肉眼还没来得及看到它,6就亮了起来,于是我们只能看到6。那为什么不把两个延时都去掉呢?因为如果两个延时都去掉的话,就可能出现重影现象,重影现象就是指在不该亮的地方它亮了,为什么会出现这种情况呢?重影产生原因以及消影的方法(跳转至4:57开始观看即可)。

到此,我们已经初步了解了单片机,LED模块,独立按键,以及数码管。后续的内容请关注后续文章…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值