Yn dizze útjefte yntrodusearje wy it priiswinnende iepen-boarne gefal fan DWIN Developer Forum - Multi-funksjonele IoT-ûntwikkelingskit basearre op T5L-chip. Yngenieurs brûke folslein de rike perifeare funksjes fan 'e T5L1-chip, yntegreare USB, audio-sprekkers, PWM-sinjaal-ynterface, RGB-kleurljochten, Wi-Fi-modules, DC-motoren en oare ynterfaces, foar it fjild fan Internet of Things-learlingen, testers en ûntwikkelders om biede in fleksibel en effisjint ûntwikkelingsplatfoarm foar Internet of Things, dat sterk foldocht oan 'e diversifisearre behoeften fan 'e brûker yn termen fan hardware-boarnen, en helpt de mearderheid fan ûntwikkelders om de ferkenningsreis fan Internet of Things maklik te begjinnen.
【PCB Perifeare ynterface】
【UI ûntwerp】
【GUI ûntwerp】
【C51 Design】
(1) De kearnkoade foar JPG-ôfbyldings dy't op it skerm werjûn wurde is as folget:
void sys_draw_jpg(u16 vp,u8 *jpg_data,u32 data_len)
{
u32 ik;
foar(i=0;i
{
if((jpg_data==0xFF)&&(jpg_data[i+1]==0xD8))
brekke;
}
if(i==data_len)
weromkomme;
data_len = (data_len-i)/2+1;
sys_write_vp(vp+2,jpg_data+i,data_len);
data_len |= 0x5AA50000;
sys_write_vp(vp,(u8*)&data_len,2);
}
(2) It programma yn ferbân mei RGB strip werjefte is as folget:
void rgbled_send_zero()
{
u8 ik;
RGBLED_SDA = 0;
foar(i=0;i
{
RGBLED_SCL = 0;
sys_delay_about_us(200);
RGBLED_SCL = 1;
sys_delay_about_us(200);
}
}
u8 rgbled_reverse_data(u8 dat)
{
dat = ((~dat) & 0xC0) >> 6;
werom dat;
}
void rgbled_send_data(u32 dat)
{
u8 ik;
foar(i=0;i
{
as (dat&0×80000000)
RGBLED_SDA = 1;
oars
RGBLED_SDA = 0;
dat
RGBLED_SCL = 0;
sys_delay_about_us(200);
RGBLED_SCL = 1;
sys_delay_about_us(200);
}
}
// gegevens ferwurking
void rgbled_process(u8 r, u8 g, u8 b)
{
u32 dat = 0;
dat |= (u32)0×03
dat |= (u32)rgbled_reverse_data(b)
dat |= (u32)rgbled_reverse_data(g)
dat |= (u32)rgbled_reverse_data(r)
dat |= (u32)b
dat |= (u32)g
dat |= r;
rgbled_send_data(dat);
}
void rgbled_show(u8 r, u8 g, u8 b)
{
P2MDOUT |= 0x0C;
rgbled_send_zero();
rgbled_process(r, g, b);
rgbled_process(r, g, b);
}
void rgbled_init (void)
{
rgbled_show(0,0,0);
}
(3) De iic protokol stjoerprogramma koade is as folget.
#include "iic.h"
sbit IIC_SDA_PIN = P2^2;
sbit IIC_SCL_PIN = P2^3;
#define SDA_IN() P2MDOUT&=0xFB
#define SDA_OUT() P2MDOUT|=0×04
#define IIC_SCL IIC_SCL_PIN
#define IIC_SDA IIC_SDA_PIN
#define READ_SDA IIC_SDA_PIN
#define delay_us sys_delay_about_us
void IIC_Init (void)
{
P2MDOUT |= 0x0C;
IIC_SDA = 1;
IIC_SCL = 1;
}
void IIC_Start(void)
{
SDA_OUT();
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;
delay_us(4);
IIC_SCL=0;
}
void IIC_Stop(void)
{
SDA_OUT();
IIC_SCL=0;
IIC_SDA=0;
delay_us(4);
IIC_SCL=1;
delay_us(4);
IIC_SDA=1;
}
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN();
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
wylst (READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
werom 1;
}
}
IIC_SCL=0;
werom 0;
}
void IIC_Ack (void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
}
void IIC_NAck (void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=1;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
}
void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;
foar(t=0;t
{
IIC_SDA=(txd&0×80)>>7;
txt
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
delay_us(2);
}
}
u8 IIC_Read_Byte(u8 ack)
{
u8 ik, ûntfange=0;
SDA_IN();
foar(i=0;i
{
IIC_SCL=0;
delay_us(2);
IIC_SCL=1;
ûntfange
if (READ_SDA) ûntfange++;
delay_us(1);
}
as (!ack)
IIC_NAck();
oars
IIC_Ack();
werom ûntfange;
}
Post tiid: Jun-19-2024