mega64_max7219.c

来自「Max7219驱动四位数码管LED」· C语言 代码 · 共 71 行

C
71
字号
//----------------------------------------------------------------
//  max7219 显示
//----------------------------------------------------------------

void led_write( unsigned char address , unsigned char data)
{
	unsigned char i;
	unsigned char temp;

	cbi( PORTA , LED_LOAD);
	delay_us(10);
	
	for( i=0 ; i<8 ; i++ ) {
		cbi( PORTA , LED_CLK );
		asm("nop");
		if( (address&0x80) == 0x80 ){
			sbi( PORTA , LED_DIN);
		}
		else {
			cbi( PORTA , LED_DIN);			
		}
		sbi( PORTA , LED_CLK );
		address = address<< 1 ;
		asm("nop");
	}
	
	for( i=0 ; i<8 ; i++ ) {
		cbi( PORTA , LED_CLK );
		asm("nop");
		if( (data&0x80) == 0x80 ){
			sbi( PORTA , LED_DIN);
		}
		else {
			cbi( PORTA , LED_DIN);			
		}
		sbi( PORTA , LED_CLK );
		data = data<< 1 ;
		asm("nop");
	}
	
	sbi( PORTA , LED_LOAD );
	delay_us(10);
}				

// max7219 初始化
void init_max7219()
{
	led_write(0x09,0x00);//译码模式:非译码
	led_write(0x0a,0x06);//亮度控制
	led_write(0x0b,0x05);//扫描位数控制:0-6
	led_write(0x0c,0x01);//非关断模式
	led_write(0x0f,0x01);//测试模式
	delay_ms( 10 );
	led_write(0x0f,0x00);//显示模式

}

void dis_led ( unsigned char *str_ptr , unsigned int led )
{
	
	led_write(0x0b,0x05);//扫描位数控制:0-5
	led_write( 0x0a ,g_control.led );//亮度控制
	led_write( 0x0c , 0x01);//非关断模式
	led_write( 0x0f , 0x00);//显示模式

	led_write( 0x01 , str_ptr[0] );
	led_write( 0x02 , str_ptr[1] );
	led_write( 0x03 , str_ptr[2] );
	led_write( 0x04 , str_ptr[3] );
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?