原创 7.I/O并行口直接驱动LED数码管显示

2008-10-18 15:17 2972 3 4 分类: MCU/ 嵌入式

1.     实验任务


如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。


2.   共阴极的字形码表




“0”


3FH


 


“8”


7FH


 


“1”


06H


 


“9”


6FH


 


“2”


5BH


 


“A”


77H


 


“3”


4FH


 


“b”


7CH


 


“4”


66H


 


“C”


39H


 


“5”


6DH


 


“d”


5EH


 


“6”


7DH


 


“E”


79H


 


“7”


07H


 


“F”


71H


 


 


3、实现程序


         汇编程序


                   ORG 0<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


START:               MOV R1,#00H


NEXT:                MOV A,R1


                            MOV DPTR,#TABLE


                            MOVC A,@A+DPTR


                            MOV P0,A


                            LCALL DELAY


                            INC R1


                            CJNE R1,#10,NEXT


                            LJMP START


DELAY:              MOV R5,#20


D2:                      MOV R6,#20


D1:                      MOV R7,#248


                            DJNZ R7,$


                            DJNZ R6,D1


                            DJNZ R5,D2


                            RET


TABLE:              DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH


                            END


 C语言源程序


#include <AT89X51.H>


unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,


                            0x6d,0x7d,0x07,0x7f,0x6f};


unsigned char dispcount;


 


void delay02s(void)


{


  unsigned char i,j,k;


  for(i=20;i>0;i--)


  for(j=20;j>0;j--)


  for(k=248;k>0;k--);


}


 


void main(void)


{


  while(1)


    {


      for(dispcount=0;dispcount<10;dispcount++)


        {


          P0=table[dispcount];


         P2=table[9-dispcount];  //P0口重复显示0到9加计数,P2口9到0减计数


          delay02s();


        }


    }


}


点击看大图


4、总结


       数码管显示只要计算好字形码一般没有问题


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1615276 2008-10-18 19:02

支持一下,楼主
相关推荐阅读
用户168877 2013-05-20 22:22
2013年博客更新了
       现在回想起刚开始写技术博客的我,感慨良多。那时的我还是一个刚刚技术入门的学生,一晃都快五年了。这几年虽然做了很多项目,但越发感觉自己的技术成长的步伐变慢了,为什么呢?难道80后的我已...
用户168877 2008-12-29 10:03
DSP调试遇到仿真器错误不要怕
    CCS加仿真器在连接DSP时,由于各种原因CCS会出现一些错误,最多的是不能初始化DSP错误,而这种错误有又多种原因造成,因此会在报错窗口上显示不同的错误代码。大体总结一下吧,从第一次CCS和...
用户168877 2008-12-21 23:06
我的学习工具小照
图片从右向左依次为:1、SEED-XDSUSB2.0仿真器,巨旧,还有点小问题,时常连接不上DSP,条件简陋啊2、TMS320LF2407A开发板是这款DSP的最小系统板,背面焊接有ISSI的64K1...
用户168877 2008-12-12 21:08
LF2407A定时器1中断闪烁LED
      利用项目组以前废弃的电机控制板(+15V供电)做了一下DSP点亮LED的实验,板上DSP为TMS320LF2407A,调试了一个星期左右。期间遇到了很多问题,最终还是调试成功啦,而且基本学...
用户168877 2008-11-15 00:27
8255输入输出实验(一)
实验目的使用8255A的PA口作为输出口,外接8位发光二极管,编写程序使发光二极管循环点亮8255 8255A是可编程并行输入输出接口芯片,实现数据的输入输出,其接口有1、IO口电路:三个八位并口,P...
用户168877 2008-11-15 00:26
8255输入输出实验(二)
实验目的  使用8255A的PA口作为输出口,PB口作为输入口,讲PB口读入的案件信号送8位LED发光二极管显示。  8255A与单片机的连接方式见实验一实现程序       ORG 00HPORTA...
EE直播间
更多
我要评论
1
3
关闭 站长推荐上一条 /3 下一条