手把手教你学习单片机-硬件基础知识

去耦电容的应用

 C16 和 C19 起到的作 用是一样的,C10 的作用和他们两个不一样。

容值比较大的电容,理论上可以理解成水缸或者水池子,同时,大家可以直接把电流理 解成水流。

作用一,缓冲作用。当上电的瞬间,电流从电源处流下来的时候,不稳定,容易冲击电 子器件,加个电容可以起到缓冲作用。

作用二,稳定作用。我们的一整套电路,后级电子器件的功率大小都不一样,而器件正 常工作的时候,所需电流的大小也不是一成不变的。比如后级有个器件还没有工作的时候, 电流消耗是 100mA,突然它参与工作了,电流猛的增大到了 150mA,这个时候如果没有一 个水缸的话,电路中的电压(水位)就会直接突然下降,比如我们的 5V 电压突然降低到 3V 了。而我们系统中有些电子元器件,必须高于一定的电压才能正常工作,电压太低就直接不 工作了,这个时候水缸就必不可少了。电容会在这个时候把存储在里边的电量释放一下,稳 定电压,当然,随后前级的电流会及时把水缸充满的。

另一种电容 C10,它容值较小,是 0.1uF,也就是 100nF,是用来 滤除高频信号干扰的。

三极管在数字电路中的应用

 三极管有截止、放大、饱和三种工作状态。放大状态主要应用于模拟电路中,且用法和 计算方法也比较复杂

而数字电路主要使用的是三极管的开关特性,只用 到了截止与饱和两种状态

三极管的用法特点,关键点在于 b 极(基极)和 e 级(发射极)之间的电压情况,对于 PNP 而言,e 极电压只要高于 b 级 0.7V 以上,这个三极管 e 级和 c 级之间就可以顺利导通。 也就是说,控制端在 b 和 e 之间,被控制端是 e 和 c 之间。

 三极管基极通过一个 10K 的电阻接到了单片机的一个 IO 口上,假定是 P1.0,发射极直接接到 5V 的电源上,集电极接了一个 LED 小灯,并且串联了 一个 1K 的限流电阻最终接到了电源负极 GND 上。

如果 P1.0 由我们的程序给一个高电平 1,那么基极 b 和发射极 e 都是 5V,也就是说 e 到 b 不会产生一个 0.7V 的压降,这个时候,发射极和集电极也就不会导通,LED不会点亮。

 

 单片机的 IO 口电流承受能力, 不同型号不完全一样,就 STC89C52 来说,官方手册的 81 页有对电气特性的介绍,整个单 片机的工作电流,不要超过 50mA,单个 IO 口总电流不要超过 6mA。

 74HC138 三八译码器的应用

 在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时满足不了我们的 设计需求,比如我们的 STC89C52 一共有 32 个 IO 口,但是我们为了控制更多的器件,就要 使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑。

 三八译码器,就是把 3 种输入状态翻译成 8 种输出状态。

74HC138 有 1~6 一共是 6 个输入引脚,但是其中 4、5、6 这三个引脚是使 能引脚。

想让这个 74HC138 正常工作,ENLED 那个输入位置必须输入低电平,ADDR3 位置必须 输入高电平,这两个位置都是使能控制端口。

 LED闪烁

首先看 74HC138,我们要让 LEDS6 为低 电平才能导通三极管 Q16,所以 ENLED = 0;ADDR3 = 1;保证 74HC138 使能。然后 ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;这样保证了三极管 Q16 这个开关开通,5V 电源加到 LED 上。

而 74HC245 左侧是通过 P0 口控制,我们让 P0.0 引脚等于 0,就是 DB_0 等于 0,而右 侧 DB0 等于 DB_0 的状态,也是 0,那么这样在这一排共 8 个 LED 小灯当中,只有最右侧 的小灯和 5V 之间有压差,有压差就会有电流通过,有电流通过我们的 LED2 就会发光了。

#include<reg52.h>

sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()  //void即函数类型
{
    //以下为声明语句部分
    unsigned int i = 0;  //定义一个无符号整型变量i,并赋初值0
    
    //以下为执行语句部分
    ENLED = 0;   //U3、U4两片74HC138总使能
    ADDR3 = 1;   //使能U3使之正常输出
    ADDR2 = 1;   //经U3的Y6输出开启三极管Q16
    ADDR1 = 1;
    ADDR0 = 0;
    while (1)
    {
        LED = 0;                  //点亮小灯
        for (i=0; i<30000; i++);  //延时一段时间
        LED = 1;                  //熄灭小灯
        for (i=0; i<30000; i++);  //延时一段时间
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本目录下提供的是《手把手你学51单片机(C语言版)》材中所有例程与作业习题的源代码。 请将整个目录复制到电脑硬盘上使用,如直接在光盘路径下打开工程可能会导致软件报错。 运行目录下的Clean.bat可以清理程序编译过程中产生的中间文件和临时文件。 lesson2 (第2章): 点亮一个LED示例,所在章节2.4 lesson3 (第3章): LED闪烁示例,所在章节3.5 lesson4 (第4章): 4_1:用P0口控制LED的示例,所在章节4.8 4_2:用P0口控制实现流水灯效果,所在章节4.8 4_t4:作业题4,逐次右移的流水灯效果,所在章节4.9 4_t5:作业题5,左右往复移动的流水灯效果,所在章节4.9 lesson5 (第5章): 5_1:基于定时器查询模式的LED闪烁,所在章节5.2.3 5_2:静态点亮数码管的某几段,所在章节5.3.2 5_3:数码管静态显示一位字符,所在章节5.3.3 5_t3:作业题3,定时器查询模式实现左右移动的流水灯,所在章节5.4 5_t5:作业题5,变更lesson5_3的正计数为倒计数,所在章节5.4 lesson6 (第6章): 6_1:数码管动态显示原理示例(if...else if...语句示例),所在章节6.4 6_2:数码管动态显示原理示例(switch...case...语句示例),所在章节6.4 6_3:基于中断带消隐的数码管动态显示示例,所在章节6.5 6_t4:作业题4,在lesson6_3多位数字显示的基础上不显示高位的0,所在章节6.6 6_t5:作业题5,变更lesson6_3的正计数为倒计数,所在章节6.6 lesson7 (第7章): 7_1:基于数码管计时程序的静态变量演示,所在章节7.2 7_2:点亮LED点阵上的一个点,所在章节7.3 7_3:点亮LED点阵上的一行,所在章节7.3 7_4:点亮LED点阵上的全部点,所在章节7.3 7_5:LED点阵显示静态图形,所在章节7.4 7_6:LED点阵显示纵向移动的动画,所在章节7.5.1 7_6_h:LED点阵显示横向移动的动画(掉转板子方向的取巧方式),所在章节7.5.2 7_7:LED点阵显示横向移动的动画,所在章节7.5.2 7_t3:作业题3,lesson7_6的向上移动改为向下移动,所在章节7.6 7_t4:作业题4,lesson7_7的向左移动改为向右移动,所在章节7.6 7_t5:作业题5,基于LED点阵的9~0倒计数,所在章节7.6 7_t6:作业题6,独立LED、数码管、点阵LED同时全亮,所在章节7.6 lesson8 (第8章): 8_1:基于数码管计时程序的函数调用演示,所在章节8.2 8_2:按键基本原理演示例程,所在章节8.4.3 8_3:独立按键扫描原理演示例程,所在章节8.4.3 8_4:独立按键消抖原理演示例程,所在章节8.4.4 8_5:独立按键扫描并消抖的演示例程,所在章节8.4.4 8_6:矩阵按键扫描并消抖的演示例程,所在章节8.4.5 8_7:基于矩阵按键和数码管实现的简易加法计算器,所在章节8.5 8_t4:作业题4,变更lesson8_5的递增计数为递减计数,所在章节8.6 8_t5:作业题5,在lesson8_7基础上实现简易加减计算器,所在章节8.6 lesson9 (第9章): 9_1:步进电机驱动的基础示例,所在章节9.3.3 9_2:步进电机转动任意角度的示例,所在章节9.3.4 9_3:实用的步进电机驱动示例,所在章节9.3.5 9_4:按键控制步进电机转动的示例,所在章节9.3.6 9_5:蜂鸣器驱动的基础示例,所在章节9.4 9_6:蜂鸣器演奏简单乐谱——“两只老虎”,所在章节9.4 lesson10 (第10章): 10_1:基于数码管显示的数字秒表,所在章节10.1 10_2:基于PWM方式控制LED的亮度,所在章节10.2 10_3:基于PWM方式控制LED实现呼吸灯效果,所在章节10.2 10_4:交通信号灯示例,所在章节10.3 10_5:长短按键/连续按键功能实现示例,所在章节10.5 10_t3:作业题3,数码管计时与流水灯同时运行的示例,所在章节10.6 lesson11 (第11章): 11_1:普通IO口模拟实现串口通信的示例,所在章节11.4 11_2:单片机硬件UART查询方式实现串口通信的示例,所在章节11.5.3 11_3:单片机硬件UART中断方式实现串口通信的示例,所在章节11.5.3 11_4:UART串口通信及控制数码管显示的示例,所在章节11.6 11_t5:作业题5,UART串口控制流水灯流动和停止,所在章节11.7 11_t6:作业题6,UART串口控制蜂鸣器的开关,所在章节11.7 lesson12 (第12章): 12_1:指针作为函数参数的示例,所在章节12.1 12_2:指向变量的指针与变量关系的示例,所在章节12.2 12_3:指针、字符串、字符数组、ASCII码演示示例,所在章节12.3 12_4:1602液晶基本操作演示示例,所在章节12.4 lesson13 (第13章): 13_1:1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.2 13_2:多c文件示例,1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.3 13_3:整型数为操作数的简易+-*/计算器,所在章节13.4 13_4:基于帧模式的实用串口程序示例,所在章节13.5 13_t2:作业题2,1602液晶显示两行字符串,并实现整屏的重复右移,所在章节13.6 lesson14 (第14章): 14_1:寻址I2C总线上存在的和不存在的地址,将应答状态显示到液晶上,所在章节14.2 14_2:用单字节读写模式访问EEPROM,每次+1后写回,所在章节14.3.1 14_3:用多字节读写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.2 14_4:用连续读与分页写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.3 14_5:读取EEPROM中的数据显示到液晶,并可通过UART修改EEPROM中的数据,所在章节14.4 14_t3:作业题3,以lesson10_4为基础实现可通过UART设定时间的交通灯示例,所在章节14.5 14_t4:作业题4,基于液晶、按键、EEPROM的密码锁示例,所在章节14.5 lesson15 (第15章): 15_1:用单次读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.4 15_2:用突发读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.5 15_3:DS1302实现简易电子钟,通过按键校时,所在章节15.5 lesson16 (第16章): 16_1:接收NEC协议的红外编码并将用户码和键码显示到数码管上,所在章节16.3 16_2:控制DS18B20测量温度并将温度值显示到液晶上,所在章节16.4 16_t2:作业题2,用遥控器控制步进电机正反转,所在章节16.5 16_t4:作业题4,带温度显示的电子钟,所在章节16.5 lesson17 (第17章): 17_1:将模拟输入通道0、1、3的电压值显示到液晶上,所在章节17.4 17_2:由按键控制DA输出可调电压值,所在章节17.6 17_3:由按键控制DA输出可变化的波形,所在章节17.7 17_t3:作业题3,可调频率的信号发生器,所在章节17.8 lesson18 (第18章): 18_1:RS485基本示例,接收任意数据帧并添加回车换行后送回,所在章节18.1 18_2:基于RS485的Modbus通信示例,支持寄存器读写操作,所在章节18.3 18_t3:作业题3,基于Modbus协议实现电子钟校时,所在章节18.4 lesson19 (第19章): 19_1:多功能电子钟例程,所在章节19.4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一壶浊酒..

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

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

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

打赏作者

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

抵扣说明:

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

余额充值