欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1776|回復: 5
收起左側

想請教一唯創芯片WT588H16-16S芯片怎么使用一線串口通信

[復制鏈接]
ID:858009 發表于 2021-12-13 10:37 | 顯示全部樓層 |閱讀模式
首次接觸這種芯片,想請教一下怎么通過單片機控制其播放音樂,一線串口通信,先請教一下控制代碼流程


電路圖

電路圖
回復

使用道具 舉報

ID:336378 發表于 2021-12-13 15:34 | 顯示全部樓層
官網不是用例程嗎??。
回復

使用道具 舉報

ID:509408 發表于 2021-12-13 16:26 | 顯示全部樓層
資料上不全都有嗎?只不過那個示例程序比較糙。最好是自己動手封裝成一個函數。
回復

使用道具 舉報

ID:979299 發表于 2021-12-13 16:43 | 顯示全部樓層
一線串口DAC輸出,是指一路音源吧,由DATA和BUSY控制輸入,還是得兩根線,就算全雙工也是這樣
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 13:06 | 顯示全部樓層
cba_cba 發表于 2021-12-13 15:34
官網不是用例程嗎??。

例程到沒有
自己寫的不行,想問一下在原因
#include <reg52.h>
#define UC8 unsigned char
#define UI16 unsigned int
#define one_line_DATA  P1
sbit DATA = P0^1;
sbit keys = P3^0;
int z;
void Delay_10us(z)    //延時子程序1
{
        unsigned char a,b,c;
        for(a=15;a>0;a--)
                for(b=200;b>0;b--)
                for(c=100;c>0;c--);
}

void Line_1A_WT588H(UI16 USER_DATA)
{
        UC8 i;
        bit B_DATA;
        UC8 num_temp=0;
        UI16 ddata_temp ,pdata_temp;
        ddata_temp = USER_DATA;
        pdata_temp = ddata_temp& 0X00FF;
        ddata_temp>>= 8;
        pdata_temp<<= 8;
        ddata_temp |= pdata_temp;//用戶數據賦值
        num_temp = 16;
        one_line_DATA = 0;
        Delay_10us(500); //延時 5MS
        B_DATA = (bit)(ddata_temp&0X0001);
        for(i=0;i<num_temp;i++)
        {
                if(i==8)
                {
                        one_line_DATA = 1;
                        Delay_10us(200); //延時 2MS
                        one_line_DATA = 0;
                        Delay_10us(500); //延時 5MS
                }
                one_line_DATA = 1; //拉高數據傳輸線,準備傳輸數據
                if(B_DATA==0)
                { /*表示邏輯電平 0*/
                        Delay_10us(20); // 延時 200us
                        one_line_DATA = 0;
                        Delay_10us(60); // 延時 600us
                }
                else
                { /*表示邏輯電平 1*/
                        Delay_10us(60); // 延時 600us
                        one_line_DATA = 0; Delay_10us(20); // 延時 200us
                }
                ddata_temp = ddata_temp>>1;
                B_DATA = (bit)(ddata_temp&0x0001);
        }
        one_line_DATA = 1;
}
void main()
{
        while(1)
        {
                if(keys==0)
                {
                        Delay_10us(100);
                        if(keys==0)                     //接收低電平觸發
                        {
                                Line_1A_WT588H(0x0001);     //播放1地址音樂
                                Line_1A_WT588H(0xFFF2);     //循環1地址播放
                        }
                }               
        }
}
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 14:40 | 顯示全部樓層
用我這個吧,delay25us 的時間,需要你根據你的單片機時間自己重新定義一下 t 的初值,其他的,你直接調用 SendOrder_WT588()  即可

#ifndef        _WT588_C_
#define _WT588_C_

sbit        WT588IO = P1^7;

void        Delay25us(u8 DelayTime)
{
        u8        t;
        while(DelayTime--)
        {
                t = 147;
                while (--t);       
        }
}

void        SendByte_WT588(u8 ByteDat)
{
        u8        i;
        WT588IO        = 0;
        Delay25us(200);                //delay 5ms
        WT588IO        = 1;
        for(i=0;i<8;i++)
        {
                Delay25us(8);        //delay 200us
                ByteDat        >>= 1;
                WT588IO        = CY;        //設置1/0
                Delay25us(16);        //delay 400us
                WT588IO        = 0;        //IO低電平
                Delay25us(8);        //delay 200us
                WT588IO        = 1;        //IO高電平
        }
}

void        SendOrder_WT588(u16 WTOrder)
{
        SendByte_WT588(WTOrder >> 8);        //發送高八位指令
        Delay25us(80);                //delay 2ms
        SendByte_WT588(WTOrder);        //發送低八位指令
}

#endif
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表