单片机实习       
课题:    数码管动态显示数字
LED数码管动态显示
     共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。
原理示意图:
     
   从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或0电平。这样才能显示的。 例:如要显示0,则要  a,b,c,d,e,f六个字段亮就显示0了,而gdp字段不亮;这样只要向P0口送出相应的代码即可,
编码方法如下表:
dp
g
f
e
d
c
b
a
显示的字符
编码
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
0
0
1
0
0
1
0
0
0C0H
1
0
1
1
1
0
1
1
1
0F9H
1
1
0
0
0
0
1
0
2
0A4H
1
0
1
0
0
0
1
0
3
0B0H
0
0
1
0
1
0
1
1
4
99H
0
0
1
0
0
1
1
0
5
92H
0
0
0
0
0
1
1
0
6
82H
1
0
1
1
1
0
1
0
7
0F8H
0
0
0
0
0
0
1
0
8
80H
0
0
1
0
0
0
1
0
9
90H
程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符。
5
双位数码管显示控制程序及说明
START:  MOV R0,#0            ;清零
        MOV DPTR,#TABLE      ;指定查表起始地址
LOOP:    ACALL DISPLAY        ;调用子程序DISPLAY
        INC R0              ;R01
        CJNE R0,#100,LOOP    ;R0未到100则转换
        JMP START            ;跳转
DISPLAY: MOV A,R0            ;R0里的数据送入A
        MOV B,#10            ;10送入B
        DIV AB              ;a b相除
        MOV 20H,A            ;十位送入20H
        MOV 21H,B            ;个位送入21H
        MOV R3,#50          ;50送入R3
LOOP1:  MOV A,21H            ;取个位数
        ACALL CHANG          ;调用子程序CHANG
        CLR P2.4            ;开个位显示
        ACALL DLY            ;调用子程序DLY
        SETB P2.4            ;关闭个位显示
        MOV A,20H            ;取十位数
                          6
ACALL CHANG          ;调用子程序CHANG 
        CLR P2.5            ;开十位显示
    ACALL DLY            ;调用子程序DLY
        SETB p2.5            ;关闭十位显示
        DJNZ R3,LOOP1        ;循环50动态清零是什么意思 
        RET                  ;子程序返回
CHANG:  MOVC A,@A+DPTR      ;查表   
        MOV P0,A            ;查表结果送入P0
        RET                  ;子程序返回
DLY:    MOV R6,#20          ;典型延时子程序延时
D1:    MOV R7,#248          ;10ms
        DJNZ R7,$           
        DJNZ R6,D1           
        RET
TABLE: DB 0C0H,0F9H,0A4H    ;表数据共阳极数码管显示代码
      DB 0B0H,99H,92H,82H
      DB 0F8H,80H,90H
END
7
心得体会
时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实训在这一周内完成了。俗话说好的开始是成功的一半。说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。最后,要注重程序的调试,掌握其方法。
虽然这次的实习算起来在实训室的时间只有一周,不过我们都有自己的实验板。 硬件的焊接和程序的编程均由自己完成。再实验过程中也有很多问题,如不够细心粗心焊错线,或因为对理论知识的学习理解不够深刻而出现编程出现错误等等。
    通过这次单片机实习,我加深了对单片机理论的理解,将理论很好地应用到实际当中去,使之成为自己的东西。
这个设计过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。作为一名自动化专业的快大三学生,我觉得做单片机实训是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想实训就为我们提供了良好的实践平台。
首先在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们在实训时,抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想。