登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 三极管的原理及其应用 如何用单片机点亮一个小灯

[复制链接]
发表于 2018-1-23 22:57:30 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机入门学习
学习安排: 观看金沙滩单片机教学视频写出与开发部单片机相适应的程序来点亮小灯
开始时间: 2018-01-22
结束时间: 2018-01-23
三极管我们在上学期培训的时候有过认识,分为PNP和NPN两种类型 QQ截图20180123215637.png

横向左侧的引脚叫做基极,中间有个箭头,一头连接基极,另一头连接的是发射机,那么剩下的一个就是集电极。

三极管有截止,放大,饱和三种工作状态,三极管的类型和用法有这样一句口诀:箭头朝内pnp,导通电压顺箭头过,电压导通,电流控制。

QQ截图20180123220209.png 以此为例,想要这个小灯点亮,我们必须要p1.0输出一个低电平,这样才能使三极管导通,小灯才会有电流通过。(这里我们介绍一下,三极管的基极和发射极之间大概有0.7v的压降,输入的是5V电压,那么其中4.3V的电压都加在了R47上)

为什么要介绍这个三极管呢,因为在我们的单片机上,想要点亮小灯,必须保证 QQ截图20180123220740.png 此图上的三极管导通,因为这个三极管控制了整个LED灯群的通断,那么如何使这个三极管导通呢,刚刚说三极管的时候已经介绍到了,答案是使LEDS6输出一个低电平,如何使此引脚输出一个低电平,我们可以继续看开发板的原理图,看到LEDS6与74HC138这个芯片相连, QQ截图20180123221706.png 我们打开这个芯片的数据手册,通过查看这个芯片的真值表 QQ截图20180123221504.png 我们可以知道当A0输出低电平,A1和A2输出低电平的时候,LEDS6输出的才是低电平。

然后我们开始点亮小灯的下一步, QQ截图20180123221950.png 我们看到小灯与芯片74HC245相连,此芯片相当于控制单个小灯的开关,我们选择一个想要点亮的小灯(这里我选择D10),小灯与芯片的B8引脚相连,通过查看芯片的数据手册我们知道A8与B8是通路,而且必须在使能端ENLED输入低电平的时候才能运作,这是我们找到A8与单片机相连的地方 QQ截图20180123222758.png 看到与单片机的p0.7相连,ENLED端与p1.1相连,到此为止,整个电路已经联通完成,不过我们离点亮小灯只完成了一半。

接下来我们需要打开kiel软件进行程序编写, QQ截图20180123223103.png 程序大致如此,开头调用我们使用的单片机的一些寄存器数据,然后定义LED和ENLED对应的单片机引脚,根据刚才说的,让ENLED输出低电平就是0,p20就是A3输出0,p21和p22输出1,下面的循环语句是用来控制小灯的亮和灭的,我们定义一个i,让i=i+1循环50000次然后再导通,因为单片机本身循环需要时间,所以我们这样写出来可以明显看出灯在闪烁。然后将此程序编码出来,用IPS下载到单片机开发板上,我们就能看到小灯D10在闪烁。

这就是我这两天的学习成果,如何利用单片机点亮一个小灯,或许对于大多数同学来说我的进度有些落后,不过我也会坚持努力学习下去,如果上文有什么错误希望大家帮我指出来,另外提一个疑问,为什么我将i<50000改成i<100000之后小灯是常亮不闪的呢,是因为单片机因为次数太多无法循环么?



好懒~~不想说~~~
发表于 2018-1-23 23:28:41 | 显示全部楼层
unsigned int 取值范围0-65535
好懒~~不想说~~~
 楼主| 发表于 2018-1-24 00:03:56 | 显示全部楼层
Posion 发表于 2018-1-23 23:28
unsigned int 取值范围0-65535

明白了谢谢
好懒~~不想说~~~
 楼主| 发表于 2018-1-24 00:04:23 | 显示全部楼层
最大是0---65535,8位2进制数,有符号也是8位2进制,只不过第一位用来表示符号了,所以有符号的范围是-32768---32767.
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表