新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機-數碼管2(動態掃描)

        AVR單片機-數碼管2(動態掃描)

        作者: 時間:2016-11-29 來源:網絡 收藏
        前面說了數碼管的靜態掃描,但是在大多數場合下都是動態掃描。動態顯示的特點是將所有位數碼管的段選線并聯在一起,由位選線控制是哪一位數碼管有效。這樣一來,就沒有必要每一位數碼管配一個鎖存器,從而大大地簡化了硬件電路。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。動態顯示的亮度比靜態顯示要差一些,所以在選擇限流電阻時應略小于靜態顯示電路中的。

        本程序的原理圖:

        本文引用地址:http://www.104case.com/article/201611/323498.htm


        源程序:

        /*
        * 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;
        }
        }

        效果圖:



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 静海县| 永兴县| 罗定市| 鞍山市| 陆河县| 连江县| 齐河县| 新源县| 祁东县| 灌南县| 普兰县| 乳源| 长沙县| 清苑县| 石狮市| 佛冈县| 盐津县| 黔南| 刚察县| 清苑县| 收藏| 琼中| 杂多县| 揭阳市| 确山县| 靖安县| 和林格尔县| 桃园县| 天祝| 泸溪县| 丹东市| 中西区| 永新县| 罗甸县| 太湖县| 松滋市| 民乐县| 南阳市| 武威市| 巴楚县| 忻州市|