資源簡介
系統是利用P9813模塊來實現照明與彩燈閃爍等功能,P9813模塊輸入電壓為5V~6.5V,內置紅綠藍三原色led燈,通過P9813模塊可以控制彩燈的顏色以及亮度。同時,
代碼片段和文件信息
/*
*========================================================================================================
*
*?File????????????????:?RGB_LED.c
*?Hardware?Environment:
*?Build?Environment???:?AVR?Studio?4.18?+?Winavr?20100110
*?Version?????????????:?V1.0
*?By??????????????????:?Chen?Zhe
*
*??????????????????????????????????(c)?Copyright?2013-2017?WaveShare
*???????????????????????????????????????http://www.waveShare.net
*??????????????????????????????????????????All?Rights?Reserved
*
*========================================================================================================
*/
#include?
#include?“avr_rgb_led.h“
uint8?Color_R=0;
uint8?Color_G=0;
uint8?Color_B=0;
uint8?C_Loop=0;
void?delay_ms(unsigned?int??ms)
{
?????for(volatile?unsigned??int?i=0;i ??
}
/************?generation?clock?*********************/
void?ClkProduce(void)
{??
??SCL_LOW;????//?SCL=0
delay_ms(20);
??SCL_HIGH;?????//?SCL=1
??delay_ms(20);
???
}
?
/**********??send?32?zero?********************/
void?Send32Zero(void)
{
????unsigned?char?i;?
SDA_LOW;???//?SDA=0
for?(i=0;?i<32;?i++)
{
??????????ClkProduce();
????}
}
?/*********?invert?the?grey?value?of?the?first?two?bits?***************/
uint8?TakeAntiCode(uint8?dat)
{
????uint8?tmp?=?0;
tmp=((~dat)?&?0xC0)>>6; ?
return?tmp;
}
?
/******?send?gray?data?*********/
void?DatSend(uint32?dx)
{
????uint8?i;
?
for?(i=0;?i<32;?i++)
{
????if?((dx?&?0x80000000)?!=?0)
{
????????
????????SDA_HIGH;?????//??SDA=1;?
}
else
{
?????????????SDA_LOW;????//??SDA=0;?
}
?
dx?<<=?1;
????????ClkProduce();
}
}
?
/*******?data?processing??********************/
void?DataDealWithAndSend(uint8?r?uint8?g?uint8?b)
{
????uint32?dx?=?0;
?
????dx?|=?(uint32)0x03?<30;?????????????//?The?front?of?the?two?bits?1?is?flag?bits
????dx?|=?(uint32)TakeAntiCode(b)?<28;
????dx?|=?(uint32)TakeAntiCode(g)?<26;
????dx?|=?(uint32)TakeAntiCode(r)?<24;
?
????dx?|=?(uint32)b?<16;
????dx?|=?(uint32)g?<8;
????dx?|=?r;
?
????DatSend(dx);
}
int?main(void)?
{? ?
?SCL_SDA_OUT;??//PD0?PD1?OUT
?SCL_SDA_HIGH;//?PD0?PD1?HIGH
while(1)
{
char?ij;
? Send32Zero();
for(j=0;j {
DataDealWithAndSend(10000); ??//?display?red
}
Send32Zero();
delay_ms(60000);??????????????????//?four?delay_ms()?about?1s
delay_ms(60000);
delay_ms(60000);
delay_ms(60000);
Send32Zero();
for(j=0;j {
DataDealWithAndSend(00100); ??//?display?green
}
Send32Zero();
delay_ms(60000);
????delay_ms(60000);
delay_ms(60000);
????delay_ms(60000);
Send32Zero();
for(j=0;j {
DataDealWithAndSend(01000); ??//?display?blue
}
Send32Zero();
delay_ms(60000);
????delay_ms(60000);
delay_ms(60000);
????delay_ms(60000);
Send32Zero();
for(j=0;j
- 上一篇:最小二乘法擬合原理及代碼實現
- 下一篇:泵站遠程監控系統
評論
共有 條評論