久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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

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

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

本程序的原理圖:

本文引用地址:http://cqxgywz.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;
}
}

效果圖:



評論


技術專區

關閉