專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

AVR單片機(jī)-數(shù)碼管2(動(dòng)態(tài)掃描)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年10月24日   【字體:

  前面說(shuō)了數(shù)碼管的靜態(tài)掃描,但是在大多數(shù)場(chǎng)合下都是動(dòng)態(tài)掃描。動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。這樣一來(lái),就沒(méi)有必要每一位數(shù)碼管配一個(gè)鎖存器,從而大大地簡(jiǎn)化了硬件電路。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。

 本程序的原理圖:


 

源程序:

/*
 * shumaguan1.c
 *
 * Created: 2011-6-24 20:45:16
 *  Author: ZYIN
 */

#include <avr/io.h>
char temp;
int i,h,num,k;

unsigned char led0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
       0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
       0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};

void delay(void)
{
 unsigned int j;
 j=1000;
 while(j--);
}

int main(void)
{
 DDRF=0xff;
 PORTF=0b00000110;
 DDRA=0xff;
 DDRC=0xff;
    while(1)
    {
  
  for(k=0;k<45;k++)
  {
   temp=0b00000001;
   for(i=0;i<8;i++)
   {
    num=i+h;
    PORTA=temp;
    PORTC=~led0[num];
    delay();
    temp<<=1;
   }
   }
  h++;
  if(h==24)
  h=0;
   }
}

效果圖:

 

關(guān)閉窗口

相關(guān)文章