Example #1
0
void display_clear()
{
	for(uint8_t i = 0; i < 8; i ++){
		display_digits[i] = 0;
		max7219_write(i + 1, 0);
	}
}
Example #2
0
void display_init()
{
	// enable port
	DDRB |= (1 << MAX7219_DIN) | (1 << MAX7219_CLK) | (1 << MAX7219_LOAD);

	// set initial values
	max7219_write(MAX7219_REG_DECODE, 0);
	max7219_write(MAX7219_REG_SCAN, 7);
	max7219_write(MAX7219_REG_TEST, 0);
	max7219_write(MAX7219_REG_SHUTDOWN, 1);
	
	// set brightness
	max7219_write(MAX7219_REG_BRIGHTNESS, 0x08);

	display_clear();
}
Example #3
0
int main(int argc, char* argv[])
{
	
	int n;
	 api_io.init(MAX7219_CS, OUT_PUSH_PULL);	//初始化引脚
	 api_io.init(MAX7219_DAT, OUT_PUSH_PULL);
	 api_io.init(MAX7219_CLK, OUT_PUSH_PULL);

	MAX7219_CS_HIGH;	//三个引脚设置为高电平
	MAX7219_CLK_HIGH;
	MAX7219_DAT_HIGH;

	max7219_init();


	u8_t bits[8] = {0x3c, 0x42, 0xa5, 0x81, 0xa5, 0x99, 0x42, 0x3c};	//:-)

	// {0x3c, 0x42, 0x99, 0xa9, 0xa9, 0x9d, 0x42, 0x3c}; //symbol @

	for(n = 0; n < sizeof(bits); n++)
		max7219_write(n+1, bits[n]);	//write to 7219 buf




	LOG_INFO("main: MAX7219 starting...\r\n");


	return ADDON_LOADER_GRANTED;
//err_exit:
//	return ADDON_LOADER_ABORT;
}
Example #4
0
void display_set_dots(uint8_t enabled)
{
	if(enabled) {
		SET_BIT(display_digits[7], 2);
	}
	else {
		CLR_BIT(display_digits[7], 2);
	}
	
	max7219_write(8, display_digits[7]);
}
Example #5
0
void display_set_dot(uint8_t position, uint8_t enabled)
{
	uint8_t shift = 6 - position;
	
	if(enabled) {
		SET_BIT(display_digits[6], shift);
	}
	else {
		CLR_BIT(display_digits[6], shift);
	}
	
	max7219_write(7, display_digits[6]);
}
Example #6
0
int JSON_RPC(draw)(jsmn_node_t* pjn, fp_json_delegate_ack ack, void* ctx)	//继承于fp_json_delegate_start
{
	int ret = STATE_OK;
	char* err_msg = NULL;
	u8_t bits[8], n;

	LOG_INFO("DELEGATE max7219.draw.\r\n");



/*
{
	"method":"draw",
	"params":"0123456789ABCDEF"	// 8bytes = 16hexs
}

*/
//	pjn->js point to very begining of json string.
//	pjn->tkn is the token object which points to json element "0123456789ABCDEF"
//	Google "jsmn" (super lightweight json parser) for detailed info.

	if(NULL == pjn->tkn || 
	    JSMN_STRING != pjn->tkn->type ||											//must be string
	    STATE_OK != jsmn.tkn2val_xbuf(pjn->js, pjn->tkn, bits, sizeof(bits), NULL)){		//parse string into binary array
		ret = STATE_ERROR;
		err_msg = "param error.";
		LOG_WARN("max7219:%s.\r\n", err_msg);
		goto exit_err;
	}

	char str[64];
	utl.snprintf_hex(str, sizeof(str), bits, sizeof(bits), 0x80|' ');	//Just print to debug console, 0x80 means up case,' 'means seperate by space
	LOG_INFO("max7219: %s \r\n", str);

	for(n = 0; n < sizeof(bits); n++)
		max7219_write(n+1, bits[n]);	//write to 7219 buf



//exit_safe:
	if(ack)
		jsmn.delegate_ack_result(ack, ctx, ret);	//just reurn {"result":0}
	return ret;

exit_err:
	if(ack)
		jsmn.delegate_ack_err(ack, ctx, ret, err_msg);	//return {"error":{"code":xxx, "message":"yyyy"}}
	return ret;
}
Example #7
0
void display_set_char(uint8_t position, char ch)
{
	uint8_t shift = 6 - position;
	uint8_t bitmask = charset[ch - 32];
	
	for(uint8_t pos = 0; pos < 8; pos++) {
		
		if((bitmask & (1 << pos))) {
			SET_BIT(display_digits[pos], shift);
		}
		else {
			CLR_BIT(display_digits[pos], shift);
		}
		
		max7219_write(pos + 1, display_digits[pos]);
	}
}
Example #8
0
void display_set_brightness(uint8_t brightness)
{
	max7219_write(MAX7219_REG_BRIGHTNESS, brightness);
}