您的位置 首页 解答

Linglong之AVR程例5 数码管4位显现

现在我们让4位数码管显示4位数字,这里用的动态扫描法。这里说一个这个写这个程序要注意的地方:1动态描的循序。首先是将数据送入段选端

现在咱们让4位数码管显现4位数字,这儿用的动态扫描法。

这儿说一个这个写这个程序要注意的当地:

1 动态描的循序。首先是将数据送入段选端,再翻开要显现位的位选端,再延时,最终便是开闭一切的位选端。这个假如没有处理好很简单呈现鬼影。

2 延时。我这儿是延时5ms。看了下延时作用还不错。

关键是了解动态扫描的思维:咱们先点亮第一位数码管,亮5ms.再点亮第二位数码管,亮5ms.这时第一位是不亮的,如此循环下去。因为人眼5ms反映不过来,看上去便是4位数码管都是亮的。

比较粗陋的源程序:

#include <avr/io.h> //IO口头文件调用
#include
#define uchar unsigned char //声明
#define uint unsigned int

uchar reg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //8位数码管字型编码表

int main(void)
{
DDRB = 0xff; //这两行表明设制IO寄存器为输出
DDRC = 0xff;

while(1)
{

PORTC = reg[0]; //送数据到第一位数码管
PORTB = 0xfe; //翻开第一位数码管位选端
_delay_ms(5); //延时5MS
PORTB = 0xff; //封闭第一位数码管位选端

PORTC = reg[5];
PORTB = 0xfd;
_delay_ms(5);
PORTB = 0xff;

PORTC = reg[1];
PORTB = 0xfb;
_delay_ms(5);
PORTB = 0xff;

PORTC = reg[0];
PORTB = 0xf7;
_delay_ms(5);
PORTB = 0xff;

}
}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部