原创 数码管操作

2008-11-6 22:05 1849 7 7 分类: MCU/ 嵌入式

关于数码管的显示,采用动态的方法。基于开发板。
先是段选,打通一个573,然后把数字送到573,然后关闭573,锁存起来。这是573的Q0-Q7都会保存这个数字。
然后打通另外一个573,是低电平选中,选择一个数码管。然后断开573,保持选中。
这样控制8个数码管,一个PORT口就能搞定了。


下面这个这个程序,是让6个数码管显示1-6,不动,虽然在闪烁,但是你看不到。
while (1)
      {


       for(i=0;i<6;i++)
 {
 //PORTA|=BIT(3);
 PORTA=1<<3;
 PORTB=a;
 //PORTA&=~BIT(3);
 PORTA=0;
 
 PORTB=0XFF; // 需要
 PORTB&=~(1<<(i));
 //PORTA|=BIT(4);
 PORTA=1<<4;
 //PORTA&=~BIT(4);
 PORTA=0;
 delay_ms(2);   // 扫描时间,这个设置为4ms,你就基本看不出闪烁了。 
 }
       PORTB="FF";
       delay_ms(300);
      // Place your code here


      };
这个程序是1个数码管,显示1-6,显示的时间,可以由delay来控制。
while (1)
      { for(i=0;i<6;i++)
 {
 //PORTA|=BIT(3);
 PORTA=1<<3;
 PORTB=a;
 //PORTA&=~BIT(3);
 PORTA=0;
 
 PORTB=0XFF;
 PORTB=0XFE;
 //PORTA|=BIT(4);
 PORTA=1<<4;
 //PORTA&=~BIT(4);
 PORTA=0;
 delay_ms(400);    
 }


      // Place your code here


      };



这个程序,是流水的数字,没有用子函数。
while (1)
      {
       for(j=0;j<30;j++)
       {
       for(i=0;i<6;i++)
 {
 //PORTA|=BIT(3);
 PORTA=1<<3;
 PORTB=a;
 //PORTA&=~BIT(3);
 PORTA=0;
 
 PORTB=0XFF; // 需要
 PORTB&=~(1<<(i));
 //PORTA|=BIT(4);
 PORTA=1<<4;
 //PORTA&=~BIT(4);
 PORTA=0;
 delay_ms(2);
   // 扫描时间,这个设置为4ms,你就基本看不出闪烁了。 
 }
 
 
 }  j这层循环,是用来控制闪现的时间,如果不加这里的数组变换,这个就是1-6的一闪一闪,固定的数码管。
 /
 for(k=1;k<6;k++)
 {
 t=a[0];
 a[0]=a[k];
 a[k]=t;
 }    // 这个是改变数组的顺序,让它每次闪烁的时候,数码管的值不一样。
          PORTA="1"<<4;
          PORTB="0XFF";
          delay_ms(100);  这个延时,是用来控制灭的时间 
           PORTA="0";
      // Place your code here


      };

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /3 下一条