娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于STM32(F103ZE)的LD3320語音控制系統(tǒng)

發(fā)布者:EnchantedMelody最新更新時間:2025-01-07 來源: jianshu關(guān)鍵字:LD3320  語音控制系統(tǒng) 手機看文章 掃描二維碼
隨時隨地手機看文章

基于STM32(F103ZE)的LD3320語音控制系統(tǒng)

暑假快完了也什么成果,就打算做點東西來讓這個暑假充實點。發(fā)現(xiàn)手頭有一個LD3320語音模塊,又剛學C#上位機,就想結(jié)合一個做一個小項目。
第一次寫,多多包含。

我的目的是:可以語音控制一個LED燈 如果有條件就控制明亮度然后在LCD上顯示出來,并且在上位機上也可以顯示當前狀態(tài)和控制LED狀態(tài)。


材料

  • STM32開發(fā)板(我用的是正點原子的戰(zhàn)艦V3 STM32F103ZET6大家也可以用自己的開發(fā)板做)

  • LD3320語音模塊

  • 杜邦線

  • 嗯 還需要電腦軟件

  • keil4 或 keil5   因為下載的例程文件是keil4寫的  而手頭LCD屏的頭文件都是keil5戰(zhàn)艦的  所以兩個都用到了
    -VS2017
    -串口調(diào)試助手  我用的是XCOME

然后就開始做了。

制作過程

  • 硬件部分

想去找一些關(guān)于LD3320的資料。
我先去淘寶找了這個模塊,發(fā)現(xiàn)有瀏覽了幾家商家之后發(fā)現(xiàn)了資料關(guān)于LD3320的,很完整。附上料地址http://www.waveshare.net/wiki/LD3320_Board
發(fā)現(xiàn)他有keil4已經(jīng)寫好的程序,我就下載下來,然后又找到引腳圖


**雖然已經(jīng)有圖了,但是還要提醒下VCC和GND千萬不要接反了?。?**

這樣硬件部分就連接好了,接下來就是程序和上位機了-


  • 程序部分

拿到例程后發(fā)現(xiàn)他的LED燈的端口不同,改成我們板子的LED

#define LED1_PIN            GPIO_Pin_5

#define LED1_GPIO_PORT      GPIOB

#define LED1_GPIO_CLK       RCC_APB2Periph_GPIOB


#define LED2_PIN            GPIO_Pin_5

#define LED2_GPIO_PORT      GPIOE

#define LED2_GPIO_CLK       RCC_APB2Periph_GPIOE


改之后,看他已經(jīng)寫的指令有哪些,有“流水燈”、“閃爍”、“按鍵觸發(fā)”、“全滅”、“狀態(tài)”這幾個,試試管用不管  看串口部分配置是 115200 的波特率,打開串口調(diào)試工具
設(shè)置好波特率之后打開串口  按復(fù)位鍵  對著模塊用清晰的普通話講“流水燈”  (哈哈  開始說的幾次都沒識別出來 還以為有問題  慢點清晰后成功率明顯提高了。
附圖:


第一部分 嘗試就成功了  接下來就是 修改代碼 加上LCD 在LCD上也可以顯示當時命令和狀態(tài)。
還有就是把發(fā)送給上位機的串口數(shù)據(jù)做好 以便上位機能更好的識別命令和執(zhí)行命令。
找了半天,戰(zhàn)艦V3的LCD就只有正點原子哥寫好的,是用keil5寫的,還是在sys的支持下(因為sys頭文件我在移植到keil4上時就有很多error),所以只能在5上寫了。首先先創(chuàng)個工程把源代碼原封不動的移植到5上,執(zhí)行后結(jié)果正常,然后添加LCD的程序,因為sys頭文件包含了delay、sys、usart所以串口部分也要替換掉,在主函數(shù)里添加頭文件 初始化等函數(shù);

 //添加頭文集 

#include 'delay.h'

#include 'sys.h'

 

//主函數(shù)下添加 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

delay_init();

uart_init(115200);


然后試試,也正常。
接下來就是添加LCD程序

//添加頭文件   

#include 'lcd.h' LCD_Init();

//主函數(shù)里添加 

LCD_Clear(WHITE);

POINT_COLOR=RED;

LCD_ShowString(72,100,200,16,16,'Hello STM32!');   


除了在代碼里加這些 還要在工程項目里把lcd的.c文件添加進去 在路含 lcd文件夾
顯示正常 然后我發(fā)現(xiàn)這樣就只能寫英文 不能寫漢字 于是就添加了漢字顯示

//在lcd.c下添加 

void LCD_ShowChinese(u16 x,u16 y,u8 num,u8 size,u8 mode)

{                                       

    u8 csize;

    u8 temp,t1,t;   

    u16 y0=y;

    csize=(2*(size/8+((size%8)?1:0))*(size/2));     //得到字體一個字符對應(yīng)點陣集所占的字節(jié)數(shù)

    for(t=0;t    {   

        if(size==12)temp=chinese_12[num][t];        //調(diào)用1206字體  

        else if(size==16)temp=chinese_16[num][t];   //調(diào)用1608字體

        else if(size==24)temp=chinese_24[num][t];   //調(diào)用2412字體

        else return;                                //沒有字體庫

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

        {               

            if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);

            else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);

            temp<<=1;

            y++;                                

            if((y-y0)==size)

            {

                y=y0;

                x++;

                break;

            }   

        }    

    }                                         

//在lcd.h下添加

void LCD_ShowChinese(u16 x,u16 y,u8 num,u8 size,u8 mode);//在指定位置顯示一個漢字


因為用的時16*16大小的字體 所以在字庫里添加字組時要添加到const unsigned char chinese_16[40][32]里。
接下來就是字體取模  我用這個PCtoLCD2002軟件,配置好后,添加我們要用到的字體。


下邊就是我們要的字組,復(fù)制到剛才說的數(shù)組里,在程序中添加  就OK了,還有好多漢字 我就不一一列舉了,方法是一樣的。 注意要把數(shù)字變大足以裝下字組。

//主函數(shù)下添加 

LCD_ShowChinese(29,40,5,16,1);      //開

LCD_ShowChinese(46,40,6,16,1);      //始

LCD_ShowChinese(63,40,7,16,1);      //運

LCD_ShowChinese(78,40,8,16,1);      //行

LCD_ShowChinese(95,40,9,16,1);      //L

LCD_ShowChinese(103,40,10,16,1);    //D

LCD_ShowChinese(111,40,11,16,1);    //3

LCD_ShowChinese(119,40,12,16,1);    //3

LCD_ShowChinese(127,40,13,16,1);    //2

LCD_ShowChinese(135,40,14,16,1);    //0

LCD_ShowChinese(143,40,15,16,1);    //測

LCD_ShowChinese(160,40,16,16,1);    //試

LCD_ShowChinese(177,40,17,16,1);    //程

LCD_ShowChinese(194,40,18,16,1);    //序


這樣就可以正常顯示漢字了
然后找到LD3320.c文件下 語識別后要執(zhí)行的部分 添加要顯示的漢字 這樣就做好了。注意:要在顯示之前添加
LCD_ShowString(72,100,200,16,16,' ');這樣顯示其下次的會把上次的覆蓋掉,顯示的就是新的內(nèi)容。 試試


添加或修改口令

在LD3320.c里

 //在LD_AsrAddFixed函數(shù)中sRecog[DATE_A][DATE_B]數(shù)組里加上你要說的口令的拼音

 //比如第二個閃爍

 uint8  sRecog[DATE_A][DATE_B] = {

                'liu shui deng',

                'shan shuo',

                'an jian chu fa',

                'quan mie',

                'zhuang tai'


};

//和我的一樣即可

//在pCode[DATE_A]數(shù)組中添加指令,數(shù)組序號要對應(yīng)比如上邊第二個是閃爍,這個數(shù)組中就要相應(yīng)閃爍的函數(shù)

//比如第二個ss

    uint8  pCode[DATE_A] = {

                                                                CODE_LSD,   

                                                                CODE_SS,   

                                                                CODE_AJCF,

                                                                CODE_QM,   

                                                                CODE_JT     

                                                            };  

        

//在Board_text函數(shù)中添加相應(yīng)執(zhí)行的函數(shù)

//比如第二個Flicker_LED()

static void Board_text(uint8 Code_Val)

{                                                                                    

    switch(Code_Val)  //???á1??′DD?à1?2ù×÷

    {

        case CODE_LSD:  //?üá??°á÷??μ??±

            Glide_LED();

        break;

        case CODE_SS:     //?üá??°éá???±

            Flicker_LED();

        break;

        case CODE_AJCF: //?üá??°°′?ü′¥·¢?±

            Key_LED();

        break;

        case CODE_QM:       //?üá??°è??e?±

            Off_LED();

        break;

        case CODE_JT:       //?üá??°×′ì??±

            Jt_LED();

        break;

        default:break;

    }   

}                   

//在下邊添加相應(yīng)函數(shù)所要執(zhí)行的動作

//Flicker_LED函數(shù)

static void Flicker_LED(void)

{

    LED1_ON();

    LED2_ON();

    Delayms(0XFFF);

    LED1_OFF();

    LED2_OFF();

    Delayms(0XFFF);

}


這樣就添加了我們想要的命令了

完美!

接下來就是給上位機寫好數(shù)據(jù)  我們用串口1。除了添加中斷是否接收完成,還要添加們要用指令。
代碼如下:

//在usart.c或者stm32f10x_it.c里添加

void USART1_IRQHandler(void)                    //串口1中斷服務(wù)程序

{

    u8 Res;

    int  i=0;

    #if SYSTEM_SUPPORT_OS       //如果SYSTEM_SUPPORT_OS為真,則需要支持OS

    OSIntEnter();    

    #endif

    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中斷(接收的數(shù)據(jù)必須是0x0d 0x0a結(jié)尾)

    {

        Res =USART_ReceiveData(USART1); //讀取接收到的數(shù)據(jù)

        if((USART_RX_STA&0x8000)==0)//接受未完成

        {

            if(USART_RX_STA&0x4000)//接收到了0x0d

            {

                if(Res!=0x0a)USART_RX_STA=0;//接收錯誤,重新開始

                else USART_RX_STA|=0x8000;  //接收完成了

                if(USART_RX_STA&0x8000)

                {

                    if(strcmp(USART_RX_BUF,'全亮')==0)

                        {

[1] [2]
關(guān)鍵字:LD3320  語音控制系統(tǒng) 引用地址:基于STM32(F103ZE)的LD3320語音控制系統(tǒng)

上一篇:【調(diào)試記錄】STM32 HAL庫硬件I2C從機Seq DMA方式不定長接收和發(fā)送
下一篇:參照STM32時鐘樹配置STM32CubeMX Clock Configuration(STM32L011G4U6為例)

推薦閱讀最新更新時間:2025-04-24 07:40

智能家電語音控制系統(tǒng)的完整設(shè)計方案
一、項目概述 1.1 引言 智能家電語音控制系統(tǒng)是一款代替家庭日常用到的紅外遙控器集成到一起并且可以通過語音信號進行控制的智能系統(tǒng),它可以對平常家庭中需要用到紅外遙控器的家電(如電視、空調(diào)、DVD等)進行語音控制,免去多個遙控器操作不方便和遙控器使用范圍的限制。 1.2 項目背景/選題動機 普通家庭中都會有很多需要紅外遙控器控制的家電,由于紅外線傳輸會受到空間位置影響,并且過多遙控器會導(dǎo)致使用不便的問題,為解決這些問題,于是設(shè)計一個可將多個遙控設(shè)備集中于一體并且可以通過聲音控制其常用功能的集成設(shè)備,并且在家電關(guān)閉的時候能自動切斷其電源,達到節(jié)能的目的。 二、需求分析 功能要求 具有語音操作功能的單片機,可以發(fā)布遙控
[單片機]
智能家電<font color='red'>語音</font><font color='red'>控制系統(tǒng)</font>的完整設(shè)計方案
ISD4004語音芯片的工作原理及智能控制系統(tǒng)中的應(yīng)用
??? 摘要: ISD4044是一種采用ChipCorder專利技術(shù)的語音芯片。此芯片無須A/D轉(zhuǎn)換和壓縮就可以直接儲存,沒有A/D轉(zhuǎn)換誤差,在一個記錄位(BIT)可存儲250級聲音信號,相當于通常的A/D記錄的8倍。片內(nèi)集成了晶體振蕩器、麥克前置放大器、自動增益控制等,只要很少的外圍器件,就可以構(gòu)成個完整聲音錄放系統(tǒng)。本文介紹了ISD4004的原理、特點、功能及其在智能控制系統(tǒng)中的應(yīng)用。 ??? 關(guān)鍵詞: ISD4004 單片機 89C51 1 概述 ISD4004是美國ISD公司制造的一種新款語音芯片。與ISD其它系列語音產(chǎn)品不同的是,ISD4004是一種微控制器“從”設(shè)備,而“主”控制器可以是內(nèi)置有
[應(yīng)用]
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 探索| 周至县| 格尔木市| 侯马市| 邹城市| 金溪县| 华安县| 扶风县| 获嘉县| 尼勒克县| 中牟县| 英超| 准格尔旗| 东兴市| 景谷| 文成县| 安陆市| 中卫市| 尉犁县| 繁峙县| 嘉兴市| 长兴县| 永清县| 五寨县| 河北区| 宣化县| 读书| 五原县| 辽阳县| 吴江市| 延吉市| 焦作市| 镇江市| 长兴县| 宣化县| 靖远县| 安国市| 泾源县| 玉林市| 全椒县| 阳信县|