当前位置:首页 > 单片机 > 单片机
[导读]//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);
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭