164驱动8位LED显示 CVAVR程序

单片机实验

27人已加入

描述

164驱动数码管显示

//芯片 ATMEGA16L

//时钟 4MHz 内部

//采用CVAVR编写,使用了系统自带延时函数

//PD0 PD1 模拟164时序

#include

#include

#define hc164_data PORTD.0

#define hc164_clk PORTD.1

void//164驱动数码管显示

//芯片 ATMEGA16L

//时钟 4MHz 内部

//采用CVAVR编写,使用了系统自带延时函数

//PD0 PD1 模拟164时序

#include

#include

#define hc164_data PORTD.0

#define hc164_clk PORTD.1

void led164_display (void); // 数码管显示

void hc164_send_byte (unsigned char byte);

unsigned char ledxs[8] = {1,2,3,4,5,6,7,8}; // 数码管显示缓冲区 1

unsigned char ledxs2[8] = {0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0,17}; // 数码管显示缓冲区 2

flash unsigned char tab[] = {0xb7,0x12,0x67,0x76,0xd2,0xf4,0xf5,0x16,0xf7,0xf6,0xd7,0xf1,0xa5,0x73,0xe5,0xc5,0,0xff};

//共阴极代码 0-F, 全灭,全亮

void main(void)

{

delay_ms(200);

PORTD = 0xFF;

DDRD = 0xFF; //PD输出

while(1)

{

led164_display ();

}

}

void hc164_send_byte (unsigned char byte)

{

unsigned char i;

for(i=0;i《8;i++)

{

hc164_data = byte & ( 1 《《 i );

hc164_clk = 1;

hc164_clk = 0;

}

}

void led164_display (void)

{

unsigned char i;

for(i=0;i《8;i++)

{

hc164_send_byte ( tab[ ledxs[i] ]);

delay_ms(1);

}

delay_ms(2000);

for(i=0;i《8;i++)

{

hc164_send_byte ( tab[ ledxs2[i] ]);

delay_ms(1);

}

delay_ms(2000);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分