![]() |
發(fā)布時間: 2021-12-14 13:09
正文摘要:本帖最后由 qwettyuio 于 2021-12-14 16:48 編輯 #include <reg52.h> #define UC8 unsigned char #define UI16 unsigned int #define one_line_DATA P1 void Line_1A_WT588H(UI16 USER_DATA ... |
本帖最后由 188610329 于 2021-12-15 13:28 編輯 qwettyuio 發(fā)表于 2021-12-15 09:51 要是實在不行, 你先試試看兩線串口協(xié)議能不能驅(qū)動? WT588H好像不支持按鍵操作, WT588D還能用按鍵測試一下。方便判斷芯片是否正常工作。 |
188610329 發(fā)表于 2021-12-14 17:42 我用的是89c51,修改了延時的 |
188610329 發(fā)表于 2021-12-14 17:42 不是,修改了延時的 |
qwettyuio 發(fā)表于 2021-12-14 16:50 反正,我這邊是可以用的, 你delay25us 里面的步進有沒有根據(jù)你單片機實際 速度修改? 我這個147, 是在STC15系列 24MHz 情況下的設(shè)置。 你難道也是? |
188610329 發(fā)表于 2021-12-14 16:46 現(xiàn)在最頂層的就是他們給的一線串口通信函數(shù) |
188610329 發(fā)表于 2021-12-14 16:44 官方燒錄進去才發(fā)貨給我的,地址是1地址 |
最關(guān)鍵的是: 測試的話,要這樣寫…… 你之前那樣寫, 不停的在發(fā)指令, WT588 壓根沒機會執(zhí)行指令。 void main() { Delay25us(200); Delay25us(200); Delay25us(200); SendOrder_WT588(0x0010); while(1); } |
那你就要確認,你的 聲音文件又沒有正確燒錄到 Flash 里面了。 如果 Flash 里面空的也是無法播放的。 |
188610329 發(fā)表于 2021-12-14 16:35 這是官方給的控制函數(shù),和以前我使用的STM32一鍵連接JQ8400-FLJQ8900語音模塊不一樣,不知道那一步驟出現(xiàn)了問題 /*-------------------------------------- ;模塊名稱: Line_1A_WT588H(UI16 USER_DATA) ; 功 能:實現(xiàn)一線串口通信函數(shù) ; 入 參:USER_DATA ; 出 參: ; one_line_DATA //數(shù)據(jù)線 ;-------------------------------------*/ #define UC8 unsigned char #define UI16 unsigned int #define one_line_DATA P1 void Line_1A_WT588H(uint USER_DATA) { uchar i; bit B_DATA; ddata_temp = USER_DATA; pdata_temp = ddata_temp& 0X00FF; ddata_temp>>= 8; pdata_temp<<= 8; ddata_temp |= pdata_temp;//用戶數(shù)據(jù)賦值 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; //拉高數(shù)據(jù)傳輸線,準備傳輸數(shù)據(jù) 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; } |
188610329 發(fā)表于 2021-12-14 16:35 P17連接到data端口 |
不是啊, 我用的是 P17 你應(yīng)該 sbit 到你的 IO上才對吧? 你實際連接的的是單片機哪個IO? P01? |
188610329 發(fā)表于 2021-12-14 15:13 試用了一下代碼,連接P17引腳LED不斷變化,但是busy引腳沒有變化,一直是高電平 #include <reg52.h> #define u8 unsigned char #define u16 unsigned int #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; //設(shè)置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); //發(fā)送高八位指令 Delay25us(80); //delay 2ms SendByte_WT588(WTOrder); //發(fā)送低八位指令 } void main() { while(1) { SendOrder_WT588(0x0010); } } |
你先用我給你的代碼試試,可能的話,監(jiān)測一下BUSY口是否有信號,然后再考慮 DAC輸出的問題。 P.S. 你如果要連續(xù)發(fā)送兩條指令的話,根據(jù)我的經(jīng)驗,兩條指令之間應(yīng)該間隔30ms以上。才能確保兩條指令都被接受并且執(zhí)行, Line_1A_WT588H(0x0001); //播放1地址音樂 Line_1A_WT588H(0xFFF2); //循環(huán)1地址播放 你這樣寫,很可能會作為噪音被直接拋棄。 |
Powered by 單片機教程網(wǎng)