您的位置 首页 电源

AVR单片机-数码管2(动态扫描)

前面说了数码管的静态扫描,但是在大多数场合下都是动态扫描。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数

前面说了数码管的静态扫描,但是在大多数场合下都是动态扫描。动态显现的特点是将一切位数码管的段选线并联在一起,由位选线操控是哪一位数码管有用。这样一来,就没有必要每一位数码管配一个锁存器,然后大大地简化了硬件电路。选亮数码管选用动态扫描显现。所谓动态扫描显现即轮流向各位数码管送出字形码和相应的位选,使用发光管的余辉和人眼视觉暂留效果,使人的感觉如同各位数码管一起都在显现。动态显现的亮度比静态显现要差一些,所以在挑选限流电阻时应略小于静态显现电路中的。

本程序的原理图:

源程序:

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

效果图:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/255580.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部