快捷搜索:  汽车  科技

如何说对数学的热爱(缘缘学单片经验手记)

如何说对数学的热爱(缘缘学单片经验手记)我们要想那个亮就选择上面的那组开关,给它一个0,其它的都给成1,我们称这一组为位,至于下面的那一组,它是亮什么内容的,我们称这一组为段,这样就好控制多了,明白了这个,我们再给它加四个,这样就组成了8位的8段数码管了:我们不可能用5个P口去控制这么多的端口,怎么办呢,我们把开关接到一个排座上,然后把负极的一面全部串连到一起,这时,我们就会看到,我们占用的端口很少了,就这么两个:看了它是不是很明了了,只要我们给它个低电平,它就会把电源与负载接通,是不是很有趣啊,这时你可能会问,我们的单片机能定义成高电平,要这么麻烦干嘛,有问题挺不错,说明你学得很认真,这么简单的问题缘缘还是想想再说了:普通的51单片机IO口输出的电流很弱,普通的一个LED可能都点不亮,但是51的IO口灌电流能力很强,如果用数码管是共阴的可以直接接到IO口,共阳 的因为IO口的输出电流太弱,根本没法驱动数码管,所以应该加三极或者

上节缘缘给你们讲了下LED是怎样变成数码管的,这一节呢,讲什么呢,那就还讲LED吧,缘缘只会这个的,缘缘发现LED挺好玩的,只要把LED玩会了,那数码管就自然不在话下,那么,今天就跟缘缘一起玩玩多个LED吧,想信你会喜欢的。

我们通过一个LED的别一种排列,看到了一个数码管的诞生,而且,我们借助于操作LED的经验,把数码管玩了个爽,那么一个是那样的,多个是怎么样的呢,这是昨天我们讲的LED与数码管之间的那点事:

如何说对数学的热爱(缘缘学单片经验手记)(1)

我们看到,其实LED与数码显示的原理基本上是一样的,那么,就让我们回归原始,继续用LED说说数码管之间的那点事吧,1个数码管(8个LED)很好弄:

如何说对数学的热爱(缘缘学单片经验手记)(2)

我们看到,这4组LED都接到了电源的正极,我们分开控制时很容易,但是这却与我们的想法相距甚远,我们不能一起去控制他们,也就是让那组不亮,那组亮,难道就没有一个办法吗?答案是有的,就是在电源与LED之间接个开关,用你那小手手去按吧,想要那个亮了就按那个,缘缘发现那是一种吃力活,所以缘缘给你介绍一种电子开关——就是PNP三极管。什么?不懂这个,哦,那没关系,你不必懂它,你只要会用它就行了,其PNP三极管的工作原理如下(在后面的图上的三极管因为库的问题全都把箭头画反了,原理是以下面这个为主,接法是一样的:)

如何说对数学的热爱(缘缘学单片经验手记)(3)

看了它是不是很明了了,只要我们给它个低电平,它就会把电源与负载接通,是不是很有趣啊,这时你可能会问,我们的单片机能定义成高电平,要这么麻烦干嘛,有问题挺不错,说明你学得很认真,这么简单的问题缘缘还是想想再说了:

普通的51单片机IO口输出的电流很弱,普通的一个LED可能都点不亮,但是51的IO口灌电流能力很强,如果用数码管是共阴的可以直接接到IO口,共阳 的因为IO口的输出电流太弱,根本没法驱动数码管,所以应该加三极或者其他的驱动芯片驱动,如74HC573等...

啊!又啰嗦了半天,啥意思呢,就是单片机的IO口的灌电流能力很强,意思你给它接个负载,前题是IO口被置为低电平,这时,电流就会从电源正极级负载流向 IO,这时的IO口相当于接电源负极,所以,电流大些也不太要紧,但是它定义为1时输出的电流很小,不能驱动这些数码管。所以,我们用上面的那种三极管去 当开关控制数码管 :

如何说对数学的热爱(缘缘学单片经验手记)(4)

我们不可能用5个P口去控制这么多的端口,怎么办呢,我们把开关接到一个排座上,然后把负极的一面全部串连到一起,这时,我们就会看到,我们占用的端口很少了,就这么两个:

如何说对数学的热爱(缘缘学单片经验手记)(5)

我们要想那个亮就选择上面的那组开关,给它一个0,其它的都给成1,我们称这一组为位,至于下面的那一组,它是亮什么内容的,我们称这一组为段,这样就好控制多了,明白了这个,我们再给它加四个,这样就组成了8位的8段数码管了:

如何说对数学的热爱(缘缘学单片经验手记)(6)

看看,是不是明白点了呢,我们把它的端口定义下:

如何说对数学的热爱(缘缘学单片经验手记)(7)

到这里,我们基本上明白了这个一组的数码管是怎么回事,我们看看别人的原理图也是这样的吗?

如何说对数学的热爱(缘缘学单片经验手记)(8)

我们看到,他们把三极管没有画的,但实际上,在制作他们的开发板时一定会加上的,这里,你要记下,不管是共阳的还是共阴的,只有编码不一样,其它的操作都 一样的,因为只有低电平才是效的,所以共阳极时,三极管接到位那里,如果是共阴的,三极管就会接到段的这边,但不管怎么接,在原理图里是不画的,亲们,以 后看这个一定记得有个PNP三极管在幕后工作哦:

如何说对数学的热爱(缘缘学单片经验手记)(9)

说了这么多,我们怎么让制作一个属于自己的数码管实验板呢,这个很好做的,缘缘用的是共阳的,一起跟我DIY吧:

1、准备的材料,四位一体的数码管2个,1K的电阻8个,PNP三极管8个(缘缘用的是 S 9015),8针一组的排针两个,万用板一块:

如何说对数学的热爱(缘缘学单片经验手记)(10)

2、下面我们先弄清楚四位一体数码管的管脚定义,还记得缘缘教你的方法吗,用两根线接电源,一个根上面一个1K的电阻,这样做的原因一个是为了防止电流过大把显示的部分击穿,第二个原因是在短路的瞬间有电阻保护,不会对电源造成影响:

如何说对数学的热爱(缘缘学单片经验手记)(11)

依次弄清楚它的管脚定义,这是缘缘写的,字很不好看哦,莫怪,淡定!

缘缘为了好记,就用W代表位,W1就是这个数码管从左边开始到右边的第一个位了,A-H我们在上一节说过了,就是段了,位就是数码管的那一个显示,段就是在这一个上面显示什么,亲,明白了吗?

如何说对数学的热爱(缘缘学单片经验手记)(12)

现在,我们先在万用板上把三极管弄上,这里给你们说个诀窍,只要是PNP型的三极管,上面写C的一脚就是集电极了,中间就是基极(控制极),剩下的那个就是发射极了,就是就接负载的,我们把C的一端放在最上面,把中间的向后面掰一下,与两边的错开,这样方便我们焊线,完了在发射基上把电阻焊上:

如何说对数学的热爱(缘缘学单片经验手记)(13)

下面我们把数码管放到上面,主意位置,不要离三极管太近:

如何说对数学的热爱(缘缘学单片经验手记)(14)

我们再把两个排针放面下面,我们定义前面的一个为位,后面的一个为段,按上面写的对应焊上,我们让最左边的一个为第一位,这样,在接单片机能很好地对应上:

如何说对数学的热爱(缘缘学单片经验手记)(15)

完了我们用导线把电阻接到前面的一个排针上,第一针接第一 位,后面的排针我们第一个接A,把两个的A都接到一起,其后依次把B、C、D、E、F、G、H跟A一样接到排针上,这样,我们的实验板就完成了,是不是很 简单啊,完了我们再把三极管的C全部串连起来,再引条线,接我们的电源正极,这样,数码管实验板大功告成:

如何说对数学的热爱(缘缘学单片经验手记)(16)

现在,我们就可以控制我们的这组数码管了,我们先写个测试的程序看看效果:

P0接位,P1接段

#include < reg52.h >

void main()

{

P0=0x00;

P1=0x00;

}

我们编译,把它烧写到单片机里面,这时,我们看到我们的数码管全亮了,那么我们让最后一个亮吧,我们就直接把P0改一下,改成P0=0xfe;我们看到,达到了我们的效果,所以,对于这个,现在亲们可以发挥自己的想像了,基本情况就是P0控制的是那个数码管工作,而P1控制的是显示什么,至于显示什么,我们在前一章中就讲了,数码管还能显示什么,就是那些0-F的数字呗。

那么,到这里,我们就可以用我们的方法去控制这些数码管了,比如,我让第一个亮,用总线法,1111 1110,换算成16进制就是0xfe,把这个数送给位选,然后我们让这个数码管显示0,通过上一节我们得知0的编码是0xc0;那么程序就是这个样子的:

#include < reg52.h >

void main()

{

P0=0xfe;//位选,让第一个数码管亮

P1=0xc0;//段选,让数码管亮0;

}

通过这个,我们就可以进行更高级的操作了,那我们写个程序吧,就让前四个数码管每隔1秒显示0、1、2、3,我们只要用个for循环就可以了,缘缘用的是12M的晶震,各位请按自己的晶震调整时间哦。

如何说对数学的热爱(缘缘学单片经验手记)(17)

是不是很简单啊,亲们,你们试试,让这8个数码管每隔秒显示一个数,循环显示1-F,很好办到的,中不过位代码用两次了,缘缘这里就不写了,提醒大家写for延时时,条件的后面是“;”号,可不是“,”号哦。

那么一个程序写这么多代码太麻烦了,少了好还好办,多了都搞不清楚怎么办了,是不是有一种更好的办法呢,缘缘给你们说一种表格函数吧,就是把数码管要显示的段码,位码做成一个表,然后根据条件找它们,通常是以下面这种方式写的:共阳极0到f的编码为:

uchar code table[]={0xc0 0xf9 0xa4 0xb0 0x99 0x92 0x82 0xf8 0x80 0x90 0x88 0x83 0xc6 0xa1 0x86 0x8e};

这个code是指程序存储器ROM中的一块,而table就是表格的意思,在弄清楚这ocde这个的含义之前,让我们看看我们的单片机的存储器吧:

如何说对数学的热爱(缘缘学单片经验手记)(18)

这张图是不是很熟悉呢,振荡器就是接晶震的,也就是说在1秒震荡多少次,这个频率就是晶震了,接多少的晶震,就按多少的晶震震荡,在讲解延时时,我们大概说了它的原理,现在让我们看看RAM和ROM是怎么回事:

数据存储器RAM:

MCS-51单片机内部有128个字节(现在的比这个大)的随机存取存储器RAM,作为用户的数据寄存器,这能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。

程序存储器ROM:

MCS-51单片机的程序存储器用于存放应用程序和表格之类的固定常数。

区别:

ROM存放指令代码和一些固定数值,程序运行后不可改动;RAM用于程序运行中数据的随机存取,掉电后数据消失..code就是指将数据定义在ROM区域,具只读属性,例如一些LED显示的表头数据就可以定义成code存储在ROM。

亲们,明白了吗,我们做的那个表文件就会跟程序文件一起烧写到ROM中,当ROM的中程序在运行时,就会读取ROM中表的数值,但是,程序不会改写它们, 它们是固定不变的,而在RAM中,处理的就是我们的延时程序了,就是那些数值每算一下,都会在RAM中产生一个值的。

现在我们看看我们的单片机的RAM和ROM:(看它的说明文件哦)

91系列:

如何说对数学的热爱(缘缘学单片经验手记)(19)

缘缘用的是12C5A60S2,那么缘缘为什么要选这款呢,相信你看了这张图就会明白:

如何说对数学的热爱(缘缘学单片经验手记)(20)

怎么样,缘缘用的单片机速度快,RAM和ROM都很大,重要是还带有其它功能哦,亲们,以后选单片可要看着哦!

好了,我们现在明白了这个code是怎么回事了,那么我们写个程序来看看效果吧,还是上面那个,我们让它每隔一秒显示一个数,而且位置也要变化:

如何说对数学的热爱(缘缘学单片经验手记)(21)

看看,程序是不是特别地简单呢,如果想变化得快一点,我们就调整延时,假如,我们要让这组二极管显示固定的12345678该怎么办呢,我们先了解一个概念,人眼的视觉暂留效应和发光二极管熄灭时的余辉效应:

视觉暂留现象(Visual staying phenomenon,duration of vision)又称“余晖效应”。

人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

是光对视网膜所产生的视觉在光停止作用后,仍保留一段时间的现象,其具体应用是电影的拍摄和放映。原因是由视神经的反应速度造成的,其时值是二十四分之一秒(大约就是41.67MS)。是动画、电影等视觉媒体形成和传播的根据。 视觉实际上是靠眼睛的晶状体成像,感光细胞感光,并且将光信号转换为神经电流,传回大脑引起人体视觉。感光细胞的感光是靠一些感光色素,感光色素的形成是需要一定时间的,这就形成了视觉暂停的机理。

其实不难理解它,缘缘记得小时候看电影,就是被这个效应骗了……

那么我们看看这个怎么用到我们的数码管上:

动态显示:

所谓动态显示就是一位一位地轮流点亮各位数码管(扫描),对于数码管的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位数码管在工作(点亮),但利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参峰,可实现亮度较高较稳定的显示。

现在,我们就调整时间试试这种效果吧,我们把它调到500US试试,如果效果不好了,那就调小些,亲们自己试着调哦,缘缘就把500US的程序写出来供亲们参考(看看延时是怎么更改的,不太明白的参见以前的帖子哦):

如何说对数学的热爱(缘缘学单片经验手记)(22)

对于数码管,我们算是讲完了,在以后的应用中,只是套用就行了,亲们,你们会了吗?缘缘用了一中午的时间总算把帖子弄完了,这时才感觉到好饿的,亲们,咱们下节见,至于缘缘会说什么,暂时保密了,可以猜一猜哦,缘缘先吃早点去了哦,……

了解全系列缘缘单片机系列教程,请关注微信公众号ickeybbs 回复“缘缘”即可获得缘缘系列教程的链接以及视频。

猜您喜欢: