AVR單片機-數(shù)碼管1
其余8個引腳各自引出,稱為“段選線”,各段可以分別控制 。
使用LED數(shù)碼管時,要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對數(shù)字或字符進行編碼。七段數(shù)碼管加上一個小數(shù)點,共計8段。因此為LED顯示器提供的編碼正好是一個字節(jié)。
共陽極數(shù)碼管譯碼表:
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
0 1 2 3 4 5
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,
6 7 8 9 A B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 無顯示
共陰極的譯碼表只需對共陽極的譯碼表取反就可以得到。
本程序的實驗原理圖:
源程序:
/*
* 數(shù)碼管.c
*
* Created: 2011-6-24 17:24:05
* Author: ZYIN
*/
#include <avr/io.h>
unsigned char led0[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void delay(void)//延時函數(shù)
{
long int j;
j=200000;
while(j--);
}
int main(void)
{
DDRF=0xff;//設(shè)置PF口為輸出
PORTF=0b00000110;//設(shè)置74hc573鎖存器
DDRC=0xff;
DDRA=0xff;
PORTA=0xff;
while(1)
{
int i;
for(i=0;i<16;i++)
{
PORTC=~(led0[i]+0x80);//循環(huán)顯示,加0x80意思是把小數(shù)點點亮
delay();//延時一下
}
}
}
效果圖:AVR studio 5編譯結(jié)果
評論