标题: 单片机数码管的动态显示,带讲解 [打印本页]

作者: 3lian    时间: 2014-2-26 19:21
标题: 单片机数码管的动态显示,带讲解
51开发板上的数码管是共阳极 ,
两个锁存器的锁存端分别和单片机的 P2.6,P2.7 相连。
其中: U1(段选)的数据输入端接到单片机的P0口;
            U2(位选)的数据输入端接到单片机的P2口;

动态显示的过程是:
第一个数码管显示0,延迟一会,第二个显示1,延迟一会,依次。。。 利用发光二极管的余晖和人眼视觉暂留效应,使人感觉数码管的各位都在显示,其实是,数码管是一位一位的轮流显示,人眼没办法分辨出来。
注意:加消影语句。

动态显示的程序:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]=
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x90,0x88};
uchar code table2[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

sbit wela=P2^7;
sbit dula=P2^6;
uint n,m;
void delay ()
{ uint i,j;
    for(i=0;i<5;i++)
   for(j=0;j<100;j++);

}
void main()
{
  while(1)
{
   wela=1;
P2=0XFF;  //  消影
P2=table2[n];
wela=0;
n++;  if(n==7) n=0;
  dula=1;
            P0=0XFF;  
P0=table1[m];
dula=0;
    delay();   
        m++; if(m==7) m=0;

     }
  }






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1