久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8817|回復: 7
收起左側

UART 二線串口通信 單片機控制語音模塊

[復制鏈接]
ID:124745 發表于 2016-8-31 21:51 | 顯示全部樓層 |閱讀模式
最近在學UART串口通信。我想通過51單片機通過二線串口通訊控制音樂播放器模塊。
[size=14.1666660308838px]選用的是JQ8400模塊。 214238mex4h6ebthe26gll.png.thumb.jpg

通過下載在單片機的程序,然后通過二線串口控制語音模塊。程序如下(然而并沒有驅動模塊播放。。。)
  1. #include

  2. void UART1_SendByte(unsigned char dat);
  3. void ConfigUART(unsigned int baud);
  4. void Music_play();
  5. void Flash_swtich();
  6. void delay(unsigned int i);

  7. void main()
  8. {
  9.         EA = 1; //使能總中斷
  10.         ConfigUART(9600);
  11.         Flash_swtich();
  12.         Music_play();
  13.         while (1);
  14. }
  15. /* 串口配置函數,baud-通信波特率 */
  16. void ConfigUART(unsigned int baud)
  17. {
  18.         SCON = 0x50; //配置串口為模式 1
  19.         TMOD &= 0x0F; //清零 T1 的控制位
  20.         TMOD |= 0x20; //配置 T1 為模式 2

  21.         TH1 = 256 - (11059200/12/32)/baud; //計算 T1 重載值
  22.         TL1 = TH1; //初值等于重載值
  23.         ET1 = 0; //禁止 T1 中斷
  24.         ES = 1; //使能串口中斷
  25.         TR1 = 1; //啟動 T1
  26. }

  27. void UART1_SendByte(unsigned char dat)
  28. {

  29.           SBUF = dat;
  30.         while(!TI);        
  31.         TI = 0;
  32.         delay(1000);
  33. //        SBUF=dat; //將數據寫入到串口緩沖
  34. //        sending=1;         //設置發送標志
  35. //        while(sending); //等待發送完畢
  36. }        

  37. void Music_play()                  
  38. {
  39.     UART1_SendByte(0xAA);
  40.     UART1_SendByte(0x02);
  41.     UART1_SendByte(0x00);
  42.     UART1_SendByte(0xAC);
  43. }

  44. void Flash_swtich()
  45. {
  46.     UART1_SendByte(0xAA);
  47.     UART1_SendByte(0x0B);
  48.     UART1_SendByte(0x01);
  49.     UART1_SendByte(0x02);
  50.         UART1_SendByte(0xB8);
  51. }

  52. void delay(unsigned int i)
  53. {
  54. unsigned char j;
  55. for(i;i>0;i--)
  56.   for(j=200;j>200;j--);

  57. }

  58. /* UART 中斷服務函數 */
  59. void InterruptUART() interrupt 4
  60. {
  61.         unsigned char temp;
  62.         if (RI) //接收到字節
  63.         {
  64.                 RI = 0; //手動清零接收中斷標志位
  65.                 temp = SBUF;
  66.         }
  67.         if (TI) //字節發送完畢
  68.         {
  69.                 TI = 0; //手動清零發送中斷標志位
  70.         }
  71. }
復制代碼


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2016-9-4 15:26 | 顯示全部樓層
這個很好,是贈送版?
回復

使用道具 舉報

ID:124745 發表于 2016-9-22 22:10 | 顯示全部樓層
admin 發表于 2016-9-4 15:26
這個很好,是贈送版?

不是啊 啊。我用電腦上位機跟模塊可以通訊,但是下載程序到單片機,讓單片機控制語音模塊,現在程序還沒寫好,
回復

使用道具 舉報

ID:108298 發表于 2016-9-23 16:59 | 顯示全部樓層
沒有看懂
回復

使用道具 舉報

ID:157748 發表于 2017-1-5 16:38 | 顯示全部樓層
1025263254 發表于 2016-9-22 22:10
不是啊 啊。我用電腦上位機跟模塊可以通訊,但是下載程序到單片機,讓單片機控制語音模塊,現在程序還沒 ...

上位機怎么和語音模塊連線
回復

使用道具 舉報

ID:406568 發表于 2018-10-8 15:59 | 顯示全部樓層
你好,可以問一下你以前做的單片機控制語音模塊最終怎么樣了
回復

使用道具 舉報

ID:393452 發表于 2019-5-1 15:10 | 顯示全部樓層
請問您有單片機串口控制語音模塊播放的完整程序嗎
回復

使用道具 舉報

ID:301791 發表于 2019-5-2 12:20 | 顯示全部樓層
#include "JQ8900CMD.h"

uint8_t code Cmd_02[] = {0xAA, 0x0B, 0x01, 0x01, 0xB7};        //從SD卡播放
uint8_t code Cmd_03[] = {0xAA, 0x0B, 0x01, 0x02, 0xB8};        //從FLASH播放

uint8_t code Cmd_QMUp[] = {0xAA, 0x05, 0x00, 0xAF};                        //上一曲指令
uint8_t code Cmd_QMDow[] = {0xAA, 0x06, 0x00, 0xB0};                //下一曲指令

uint8_t code Cmd_Run[] = {0xAA, 0x02, 0x00, 0xAC};                        //播放指令
uint8_t code Cmd_Stop[] = {0xAA, 0x04, 0x00, 0xAE};                        //停止指令

uint8_t code Cmd_VoltUp[] = {0xAA, 0x14, 0x00, 0xBE};                //音量加
uint8_t code Cmd_VoltDow[] = {0xAA, 0x15, 0x00, 0xBF};                //音量減

uint8_t code Cmd_SJ[] = {0xAA, 0x18, 0x01, 0x05, 0xC8};                                //目錄隨機播放
uint8_t code Cmd_FLASH[] = {0xAA, 0x08, 0x02, 0x02, 0x2F, 0xE5};        //FLASH 根目錄
uint8_t code Cmd_SD[] = {0xAA, 0x08, 0x02, 0x01, 0x2F, 0xE4};                //SD 根目錄

static uint8_t CmdData[20];                //控制指令緩沖


//==================================================================================//
//        @ 函數名稱:JQ8900_SetVolt
//        @ 功能說明:設置播放音量,0~30級
//==================================================================================//
void JQ8900_SetVolt( uint8_t volt )
{
        if (volt>30)        volt = 30;
        CmdData[0] = 0xAA;
        CmdData[1] = 0x13;
        CmdData[2] = 0x01;
        CmdData[3] = volt;
        CmdData[4] = CmdData[0]+CmdData[1]+CmdData[2]+CmdData[3];
        USART_SendDatas(CmdData,5);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_SetQM
//        @ 功能說明:設置曲目
//==================================================================================//
void JQ8900_SetQM( uint8_t volt )
{
        // if (volt>30)        volt = 30;
        CmdData[0] = 0xAA;
        CmdData[1] = 0x07;
        CmdData[2] = 0x02;
        CmdData[3] = 0x00;
        CmdData[4] = volt;
        CmdData[5] = CmdData[0]+CmdData[1]+CmdData[2]+CmdData[3]+CmdData[4];
        USART_SendDatas(CmdData,6);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_QMUp
//        @ 功能說明:上一曲
//==================================================================================//
void JQ8900_QMUp( void )
{
        USART_SendDatas(Cmd_QMUp,4);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_QMDow
//        @ 功能說明:下一曲
//==================================================================================//
void JQ8900_QMDow( void )
{
        USART_SendDatas(Cmd_QMDow,4);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_Run
//        @ 功能說明:播放
//==================================================================================//
void JQ8900_Run( void )
{
        USART_SendDatas(Cmd_Run,4);
}


//==================================================================================//
//        @ 函數名稱:JQ8900_Stop
//        @ 功能說明:暫停
//==================================================================================//
void JQ8900_Stop( void )
{
        USART_SendDatas(Cmd_Stop,4);
}



//==================================================================================//
//        @ 函數名稱:JQ8900_VoltUp
//        @ 功能說明:音量加
//==================================================================================//
void JQ8900_VoltUp( void )
{
        USART_SendDatas(Cmd_VoltUp,4);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_VoltDow
//        @ 功能說明:音量減
//==================================================================================//
void JQ8900_VoltDow( void )
{
        USART_SendDatas(Cmd_VoltDow,4);
}



//==================================================================================//
//        @ 函數名稱:JQ8900_FlashFileCBQM
//        @ 功能說明:插播FLASH指定目錄  文件字母開頭01~99
//==================================================================================//
void JQ8900_FlashFileCBQM( uint8_t Data )
{
        uint8_t Temp1 = Data%100/10 + 0x30;
        uint8_t Temp2 = Data%10 + 0x30;
       
        CmdData[0] = 0xAA;
        CmdData[1] = 0x17;
        CmdData[2] = 0x0E;
        CmdData[3] = 0x02;
        CmdData[4] = 0x2F;
        CmdData[5] = 0xCF;
        CmdData[6] = 0xB5;
        CmdData[7] = 0xCD;
        CmdData[8] = 0xB3;
        CmdData[9] = 0x2A;
        CmdData[10] = 0x2F;
        CmdData[11] = Temp1;
        CmdData[12] = Temp2;
        CmdData[13] = 0x2A;
        CmdData[14] = 0x3F;
        CmdData[15] = 0x3F;
        CmdData[16] = 0x3F;
       
        CmdData[17] = CmdData[0]+CmdData[1]+CmdData[2]+CmdData[3]+CmdData[4]+CmdData[5] \
                                        +CmdData[6]+CmdData[7]+CmdData[8]+CmdData[9]+CmdData[10]+CmdData[11] \
                                        +CmdData[12]+CmdData[13]+CmdData[14]+CmdData[15]+CmdData[16];
        USART_SendDatas(CmdData,18);
}

//==================================================================================//
//        @ 函數名稱:JQ8900_ForSDSJBF
//        @ 功能說明:從SD隨機播放
//==================================================================================//
void JQ8900_ForSDSJBF( uint8_t Qm )
{
        USART_SendDatas(Cmd_02,5);                        //設置為SD卡磁盤
        USART_SendDatas(Cmd_SD,6);                        //選擇SD根目錄
        JQ8900_SetQM(Qm);                                                        //設置曲目1
        USART_SendDatas(Cmd_SJ,5);                        //目錄隨機播放
}

//==================================================================================//
//        @ 函數名稱:JQ8900_ForFlashSJBF
//        @ 功能說明:從FLASH隨機播放
//==================================================================================//
void JQ8900_ForFlashSJBF( uint8_t Qm )
{
        USART_SendDatas(Cmd_03,5);                        //設置為FLASH磁盤
        USART_SendDatas(Cmd_FLASH,6);                //選擇FLASH根目錄
        JQ8900_SetQM(Qm);                                                        //設置曲目1
        USART_SendDatas(Cmd_SJ,5);                        //目錄隨機播放
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 嫩草91在线| 久久综合爱| www.久久.com| 一级全黄视频 | 91黄色片免费看 | 欧美aⅴ片 | 在线免费观看视频黄 | 国产激情一区二区三区 | 久久久久久久av麻豆果冻 | 欧美在线视频网 | www国产成人免费观看视频,深夜成人网 | 欧美精品久久久 | 成人一区二区在线 | 亚洲欧美中文日韩在线v日本 | av日韩高清 | 亚洲成人免费在线 | 亚洲手机在线 | 日本涩涩视频 | 9999国产精品欧美久久久久久 | 91九色麻豆 | 一区二区不卡高清 | 亚洲综合国产精品 | 欧美乱淫视频 | 国产成人精品免费视频大全最热 | 欧美在线观看一区 | av在线播放网站 | 国产精品夜色一区二区三区 | 精品国产一区二区三区日日嗨 | av中文字幕在线播放 | www.久草.com | 日本激情一区二区 | 国产午夜精品一区二区三区四区 | 成人精品视频在线观看 | 国产在线视频一区二区董小宛性色 | 97超碰人人 | 中文字幕不卡视频在线观看 | 福利视频网站 | 久久久久久久久久久久91 | 日韩精品一区二区三区免费视频 | 欧美做暖暖视频 | 91精品国产综合久久久久久蜜臀 |