您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机LED数码管的实验 正文
LED数码管的实验

LED数码管的实验

点击数:7604 次   录入时间:03-04 11:53:18   整理:http://www.55dianzi.com   PIC单片机
本次的实验,将在复位(RESET)PIC芯片后,可以见到数码管显示出"0"的字样,之后自动换成"1",依次一直往更高的数字显示,直到显示完"9"之后,又重新回到显示"0"的地方,然后再重复显示,这样周而复始,不停地按规律显示。

1. 目的
□电路上:了解数码管对应LED的关系。
□ 程序上:学习在PIC汇编语言中,如何调用程序指令与返回指令,来达到索引查表的目的。
2. 材料


表5-5 材料

3. 电路

图5-16 原理图

4. 实照

图5-17 实照

5. 步骤
1. 将PIC 单片机 插到面包板。
2. 将石英振荡器的两个引脚,名接到PIC的OSC1、OSC2两引脚上(石英振荡器的两个引脚没有极性之分,倒过来接也没关系)。
3. 拿一个20pF的电容,将其中的一个脚与PIC 单片机 的OSC1连接,而另一个脚接地。同样的再拿一个电容如法炮制,拿另一个电容,一个脚接地,另一个脚改接PIC的OSC2。
4. 将PIC的MCLR、VCC接电源的+5V端,而VSS接+0V。
5. 将PIC的RB1到RB7等七个脚,各接一个300Ω的电阻,而电阻的另一端则分别连接数码管,请依图5-18所示的配置来接线:

图5-18 接线图

1. 本次以共阳的数码管为例,数码管共有十个引脚,标COM的代表共阴或共阳端,若为共阴型的数码管就是、要接电源负端,若为共阳型的数码管则要接电源正端。两个COM引脚是相同的,因其中一个就要以了,若两个都接也可以。如图5-19所示。

图5-19共阳数码管结构示意图

2. 的八人引脚在图中分编号对应到PIC的端口B,以及数码管的显示面。
3. 此次的实验,并不用数码管的Dot ,以及PIC端口B的第一个引脚(RBO)。

6. 流程图

图5-20 流程图
7. 程序
□标号说明
·RESET:起始程序的进入点,PIC复位后即会跳到此处
·RE_DO:递增显示程序的进入点
·CLR_F8:修正显示值的程序进入点
·FIND_TAB:查表前置操作的进入点,若显示值递增后无需修正的话,可直接跳往此处
·TRANS:查表子程序的进入点
·DELAY:延时子程序的进入点
·DELAY1:延时重复递减判断的进入点(1)
·DELAY2:延时重复递减判断的进入点(2)
□寄存器使用配置情况
·F2:将在查表子程序中,用做查表的起始值
·F3:执行中参考用的标志位
·F6:输出显示信号到数码管用的输出端口
·F8:显示值的保存处
·F9:延时程序的外部循环计数器
·F10:延时程序的中部循环计数器
·F11:延时程序的内部循环计数器


8.说明
(1) 跳跃至100H的地方,而00H到FFH的地方留给子程序用。
(2) 设置端口B为输出,清除寄存器F8,显示起始数字到数码管上等操作,此处显示出"0",并且使F8寄存器也为"00",而让显示出来的数字跟F8所存的值相同。
(3) 调用延时子程序,因为刚显示完新的,必须停留一阵子,再将这新数字替换掉。
(4) 将F8寄存器的值递增1,然后存一份给寄存器,由W寄存器与立即值10D("D"表示十进位)作XOR运算,如果W寄存器和立即值是一样的话,XOR出来的结果会等于"0",这个时候"Z"标志位会变为"1",假若W寄存器与立即值(此次为10D)不相同的话,"Z"标志位将?quot;0"。
XOR运算
要诀:两个输入都一样时(同样为"1"或者是同样为"0"),输出为"0",两个输入都不同(一个为"1"一个为"0",或一个为"0",另一个为"1"),输出为"1"。
(5) 使用BTFSS指令,来判断"Z"标志位是不是"1",是的话就跳一行指令再继续往下执行;而"1"的话,就直接往下执行。
(6) 因为作完比较指令后,若是W寄存器与立即值10D相同的话,经过XOR运算后,将使"Z"标志位设为"1",代表F8的值已经递增到"10"了(因为W寄存器的值在比较之前是由F8寄存器传来)。因为本次实验要将显示由"9"转回成"0"所以我们就将已到"10"的F8寄存器改写为0,才能使接下来的显示操作符合我们所需。
(7) 这次实习我们只显示0到9的数字,这个显示值我们存在F8寄存器里面,每显示完一个值,我们就将F8的内容加1,准备下一次的显示而且一旦加到10,我们就将它改为0,然后又从0往更高的数字显示。
这种将10改0的操作就是为了保持F8内容的正确性,因为显示查表的程序只能接受0-9的值,而且这值是源自F8寄存器的。
最后我们将正确的F8内容写一份到W寄存器,由查表程序从W寄存器获得F8的存储器值,以供查表。
至于清除"Z"标志位的设置(我们只想拷贝F8的值到W寄存器,其他的改变一律不要)。
(8) 经过查完表之后,所得到的转换值已经放在W寄存器里了,所以将W寄存器的值写入F6(通道B)后,就显示出新的值了。
(9) 跳跃回到以前所作过的部分,从起始程序的下面继续开始,一直重复地作下去。
(10) 查表子程序的作法是将查表的第几行的值先放在W寄存器里面,然后用PC的值跟W寄存器相加并且写入PC,这时候程序会因为先前W放的值而跳跃多少位置,最后跳到的位置,会执行返回主程序的操作,并且把查到的值放入W里,这样主程序就可以从W找到查表所查也的值了。
(11) 延时子程序可参考以前的输出端口实验,但这里的程序延时效果较长,不过都是以同一原理所写成。
9 . 除错
假若学习的效果与预期的不符,或者没有动静的话,可以注意下的提醒:
1. 共阴共阳的特性刚好是相反的,思绪必须清晰,才不至颠倒。
2. 数码管的引脚与PIC的端口引脚必须与查表值配合,当然可以任意更换连线与查表程序。但只有电路与程序相与匹配才能显示正常,由此你可以感受到软硬件结合的真实感。
3. 程序中的运算结果,最后要存到什么地方一定要弄清楚,作者本身就曾将查表子程序中的ADDWF2,1误写成ADDWF2,0,以致无法显现"0"之外的数字。
   


本文关键字:LED数码管  PIC单片机单片机-工控设备 - PIC单片机

上一篇:SLEEP模式的实验