精品国产Av无码久久久蜜臀-免费看a级淫秽真实动作衫视频-人妻无码一区二区三区免费视频-奶好大 好长 好紧免费视频

logo

【開源獲獎案例】基于T5L芯片的多功能物聯(lián)網(wǎng)開發(fā)套件

                                ——來自迪文開發(fā)者論壇

本期為大家推送迪文開發(fā)者論壇獲獎開源案例——?基于T5L芯片的多功能物聯(lián)網(wǎng)開發(fā)套件?。工程師充分運用了T5L1芯片的豐富外設(shè)功能,集成了USB、音頻喇叭、PWM信號接口、RGB彩燈、WiFi模塊、直流電機等多種接口,為物聯(lián)網(wǎng)領(lǐng)域的學習者、測試者和開發(fā)者提供了一個靈活、高效的物聯(lián)網(wǎng)開發(fā)平臺,極大滿足了用戶在硬件資源方面的多元化需求,助力廣大開發(fā)者輕松開啟物聯(lián)網(wǎng)探索之旅。


【演示視頻】

完整開發(fā)資料含迪文屏DGUS工程資料與C51代碼,獲取方式:

1. 前往迪文開發(fā)者論壇獲取:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=10189&extra=&_dsign=4d738c3c

2. 微信公眾號中回復“物聯(lián)開發(fā)套件”獲取。


PCB板外設(shè)接口

PCB板外設(shè)接口

UI素材展示

UI素材展示1UI素材展示2

UI素材展示3UI素材展示4

UI素材展示5

GUI工程設(shè)計

GUI工程設(shè)計


C51工程設(shè)計

(1)JPG圖片顯示在屏幕的核心代碼如下:

void sys_draw_jpg(u16 vp,u8 *jpg_data,u32 data_len)

{

        u32 i;

        for(i=0;i<data_len;i++)

        {

                if((jpg_data==0xFF)&&(jpg_data[i+1]==0xD8))

                        break;

         }

                if(i==data_len)

                        return;

                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)RGB燈帶顯示相關(guān)的程序如下:

void rgbled_send_zero()

{

        u8 i;

        RGBLED_SDA = 0;

        for(i=0;i<32;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;

        return dat;

}

void rgbled_send_data(u32 dat)

{

        u8 i;

        for(i=0;i<32;i++)

        {

                if(dat&0x80000000)

                        RGBLED_SDA = 1;

                else

                        RGBLED_SDA = 0;

                dat <<= 1;

                RGBLED_SCL = 0;

                sys_delay_about_us(200);

                RGBLED_SCL = 1;

                sys_delay_about_us(200);

        }        

}

//數(shù)據(jù)處理

void rgbled_process(u8 r,u8 g,u8 b)

{

        u32 dat = 0;

        dat |= (u32)0x03 << 30;  

        dat |= (u32)rgbled_reverse_data(b) << 28;

        dat |= (u32)rgbled_reverse_data(g) << 26;

        dat |= (u32)rgbled_reverse_data(r) << 24;

        dat |= (u32)b << 16;

        dat |= (u32)g << 8;

        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)iic協(xié)議驅(qū)動代碼如下:

#include "iic.h"

sbit IIC_SDA_PIN = P2^2;

sbit IIC_SCL_PIN = P2^3;

#define SDA_IN()  P2MDOUT&=0xFB

#define SDA_OUT() P2MDOUT|=0x04

#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);         

        while(READ_SDA)

        {

                ucErrTime++;

                if(ucErrTime>250)

                {

                        IIC_Stop();

                        return 1;

                }

        }

        IIC_SCL=0;          

        return 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;

        for(t=0;t<8;t++)

{              

        IIC_SDA=(txd&0x80)>>7;

        txd<<=1;           

        delay_us(2);  

        IIC_SCL=1;

        delay_us(2);

        IIC_SCL=0;       

        delay_us(2);

}         

}

u8 IIC_Read_Byte(u8 ack)

{

        u8 i,receive=0;

        SDA_IN();

        for(i=0;i<8;i++ )

        {

                IIC_SCL=0;

                delay_us(2);

                IIC_SCL=1;

                receive<<=1;

                if(READ_SDA)receive++;   

                delay_us(1);

        }                                         

        if (!ack)

                IIC_NAck();

        else

                IIC_Ack();

        return receive;

}