導航:首頁 > 操作系統 > 51單片機語音控制圖解

51單片機語音控制圖解

發布時間:2023-08-23 21:22:06

『壹』 求大神解釋下51單片機蜂鳴器的工作原理 下面是原理圖 急!

工作原理非常簡單:圖示電路為灌電流驅動方式(低電平有效),Q5為開關三極體,平時I/O口P3.6輸出高電平,因Q5為PNP型三極體,故高電平使得基極電位接近Vcc,三極體截止處於集電極迴路的蜂鳴器不響,當P3.6輸出低電平時Q5經由Vcc-Q5eb-R17-P3.6到地迴路獲得基極電流而飽和導通,蜂鳴器得電發出鳴響。

『貳』 凌陽單片機語音控制課程設計

我這有一篇網上下的,摘 要

本文主要介紹了目前常用的單片機(61和51單片機)對語音控制小車、紅外遙控小車以及循跡小車的實現。本文說明大致方案設計和著重介紹了軟體設計過程。
本設計以凌陽公司生產的61單片機為主控晶元製作了語音控制小車,實現了語音採集,語音播放以及特定人的語音識別功能。在此基礎上實現了聲音對小車的前進、倒車、左轉、右轉以及停車等狀態的控制。大體上實現了語音控制小車的基本功能。
紅外遙控及循跡小車是以51單片機為控制芯•片實現的。該部分由3個51系列單片機系統組成。其中,一個單片機(發送單片機)負責處理紅外遙控程序,一個單片機(主控單片機)負責小車電機控制和相關信息處理,還有一個單片機(接收單片機)負責處理測溫和液晶顯示程序。三個單片機之間通過引線實現短距離的通信,以使它們可以相互配合,各司其職,使整個系統的實現和控制更為靈活方便。
以上系統的實現可以運用於特殊環境(人員不可達)下小車的遠程式控制制和相關的智能操作。同時也可運用於智能監控和智能決策等相關場合,為實現智能化操作和管理提供方便。

『叄』 推薦一款適合51單片機的語音識別模塊

推薦使用YQ5969,該模組系列可以支持1--8個咪頭,該語音晶元可以根據客戶具體需求提供單核--4核 32bit ARM核心的不同方案,可以支持本地和雲端識別不同需求。5米內本地識別率 93%以上,雲端識別率97%。從麥克風中輸入詞條(即語音指令),與存儲在 SPI Flash 中語音相對比,如果一致,即識別正確,之後模塊的串口 TX 會輸出相應的指令,並且三個 IO 口(OUTA-OUTC)會輸出相應的電平,同時喇叭播放語音。

『肆』 51單片機最小系統原理圖

我是一名單片機工程師,下面的講解你參考一下.

.

51單片機共有40隻引腳.下面這個就是最小系統原理圖,就是靠這四個部分,這個單片機就可以運行起來了.(看下面的數字標記,1234)

.

這個腳是存儲器使用選擇腳,當這個腳接」地」時,那麼就是告訴單片機,選擇使用外部存儲器,當這個腳接」5V」時,說明單片機使用內部存儲器.

如果選擇外部的存儲器,太浪費單片機僅有的資源,所以這一腳永遠接電源5V(如上圖所示),使用單片機的內部存儲器.

5 如果內部存儲器不夠容量,最多選擇更高級的容量,就可以解決容量不夠的問題了,就是這么簡單

.

一天入門51單片機:點我學習

.

我是歲月哥,願你學習愉快!

『伍』 MCS-51系列單片機包括哪幾個主要部件各自的邏輯功能如何急!!!

MCS-51單片機存儲器結構2008年06月01日 星期日 12:31MCS-51單片機在物理結構上有四個存儲空間:

1、片內程序存儲器
2、片外程序存儲器
3、片內數據存儲器
4、片外數據存儲器

但在邏輯上,即從用戶的角度上,8051單片機有三個存儲空間:

1、片內外統一編址的64K的程序存儲器地址空間(MOVC)
2、256B的片內數據存儲器的地址空間(MOV)
3、以及64K片外數據存儲器的地址空間(MOVX)
在訪問三個不同的邏輯空間時,應採用不同形式的指令(具體我們在後面的指令系統學習時將會講解),以產生不同的存儲器空間的選通信號。

程序內存ROM

定址范圍:0000H ~ FFFFH 容量64KB
EA = 1,定址內部ROM;EA = 0,定址外部ROM
地址長度:16位
作用: 存放程序及程序運行時所需的常數。
七個具有特殊含義的單元是:
0000H —— 系統復位,PC指向此處;
0003H —— 外部中斷0入口
000BH —— T0溢出中斷入口
0013H —— 外中斷1入口
001BH —— T1溢出中斷入口
0023H —— 串口中斷入口
002BH —— T2溢出中斷入口

內部數據存儲器RAM
物理上分為兩大區:00H ~ 7FH即128B內RAM 和 SFR區。
作用:作數據緩沖器用。

下圖是8051單片機存儲器的空間結構圖

程序存儲器

一個微處理器能夠聰明地執行某種任務,除了它們強大的硬體外,還需要它們運行的軟體,其實微處理器並不聰明,它們只是完全按照人們預先編寫的程序而執行之。那麼設計人員編寫的程序就存放在微處理器的程序存儲器中,俗稱只讀程序存儲器(ROM)。程序相當於給微處理器處理問題的一系列命令。其實程序和數據一樣,都是由機器碼組成的代碼串。只是程序代碼則存放於程序存儲器中。
MCS-51具有64kB程序存儲器定址空間,它是用於存放用戶程序、數據和表格等信息。對於內部無ROM的8031單片機,它的程序存儲器必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程序存儲器讀取程序。對於內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程序存儲中讀取程序,當PC值超過內部ROM的容量時,才會轉向外部的程序存儲器讀取程序。
當=1時,程序從片內ROM開始執行,當PC值超過片內ROM容量時會自動轉向外部ROM空間。
當=0時,程序從外部存儲器開始執行,例如前面提到的片內無ROM的8031單片機,在實際應用中就要把8031的引腳接為低電平。
8051片內有4kB的程序存儲單元,其地址為0000H—0FFFH,單片機啟動復位後,程序計數器的內容為0000H,所以系統將從0000H單元開始執行程序。但在程序存儲中有些特殊的單元,這在使用中應加以注意:
其中一組特殊是0000H—0002H單元,系統復位後,PC為0000H,單片機從0000H單元開始執行程序,如果程序不是從0000H單元開始,則應在這三個單元中存放一條無條件轉移指令,讓CPU直接去執行用戶指定的程序。
另一組特殊單元是0003H—002AH,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:
0003H—000AH 外部中斷0中斷地址區。
000BH—0012H 定時/計數器0中斷地址區。
0013H—001AH 外部中斷1中斷地址區。
001BH—0022H 定時/計數器1中斷地址區。
0023H—002AH 串列中斷地址區。
可見以上的40個單元是專門用於存放中斷處理程序的地址單元,中斷響應後,按中斷的類型,自動轉到各自的中斷區去執行程序。從上面可以看出,每個中斷服務程序只有8個位元組單元,用8個位元組來存放一個中斷服務程序顯然是不可能的。因此以上地址單元不能用於存放程序的其他內容,只能存放中斷服務程序。但是通常情況下,我們是在中斷響應的地址區安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間去執行,這樣中斷響應後,CPU讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程序。

下圖是ROM的地址分配圖:

從上圖中大家可以看到,0000H-0002H,只有三個存儲單元,3個存儲單元在我們的程序存放時是存放不了實際意義的程序的,通常我們在實際編寫程序時是在這里安排一條ORG指令,通過ORG指令跳轉到從0033H開始的用戶ROM區域,再來安排我們的程序語言。從0033開始的用戶ROM區域用戶可以通過ORG指令任意安排,但在應用中應注意,不要超過了實際的存儲空間,不然程序就會找不到。

數據存儲器

數據存儲器也稱為隨機存取數據存儲器。數據存儲器分為內部數據存儲和外部數據存儲。MCS-51內部RAM有128或256個位元組的用戶數據存儲(不同的型號有分別),片外最多可擴展64KB的RAM,構成兩個地址空間,訪問片內RAM用「MOV」指令,訪問片外RAM用「MOVX」指令。它們是用於存放執行的中間結果和過程數據的。MCS-51的數據存儲器均可讀寫,部分單元還可以位定址。
MCS-51單片機的內部數據存儲器在物理上和邏輯上都分為兩個地址空間,即:
數據存儲器空間(低128單元);
特殊功能寄存器空間(高128單元);
這兩個空間是相連的,從用戶角度而言,低128單元才是真正的數據存儲器。下面我們就來詳細的與大家講解一下:

低128單元:
片內數據存儲器為8位地址,所以最大可定址的范圍為256個單元地址,對片外數據存儲器採用間接定址方式,R0、R1和DPTR都可以做為間接定址寄存器,R0、R1是8位的寄存器,即R0、R1的定址范圍最大為256個單元,而DPTR是16位地址指針,定址范圍就可達到64KB。也就是說在定址片外數據存儲器時,定址范圍超過了256B,就不能用R0、R1做為間接定址寄存器,而必須用DPTR寄存器做為間接定址寄存器。

從上圖中我們可以看到,8051單片機片內RAM共有256個單元(00H-FFH),這256個單元共分為兩部分。其一是地址從00H—7FH單元(共128個位元組)為用戶數據RAM。從80H—FFH地址單元(也是128個位元組)為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。

1、通用寄存器區(00H-1FH)
在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那麼在程序中怎麼區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程序狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的D3和D4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關系如下表所示。惹程序中並不需要用4組,那麼其餘的可用做一般的數據緩沖器,CPU在復位後,選中第0組工作寄存器。

2、位定址區(20H-2FH)
片內RAM的20H—2FH單元為位定址區,既可作為一般單元用位元組定址,也可對它們的位進行定址。位定址區共有16個位元組,128個位,位地址為00H—7FH。位地址分配如下表所示:

++++++++

CPU能直接定址這些位,執行例如置「1」、清「0」、求「反」、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為定址區。

3、用戶RAM區(30H-7FH)
在片內RAM低128單元中,通用寄存器佔去32個單元,位定址區佔去16個單元,剩下的80個單元就是供用戶使用的一般RAM區了,地址單元為30H-7FH。對這部份區域的使用不作任何規定和限制,但應說明的是,堆棧一般開辟在這個區域。

高128單元:(80H-FFH)
前面提到,在片內的RAM中,高128位是專用寄存器區,因這節比較重要,所以我們單獨的安排一節課跟大家介紹。下節課我們就重點介紹51單片機片內RAM的高128位,即專用寄存器區

『陸』 用51單片機控制ISD1820語音晶元的原理圖及c程序或匯編程

#include<reg52.h>
code unsigned char seg7code[11]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //顯示段碼
void Delay(unsigned int tc) //顯示延時程序
{while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
sbit TMDAT =P3^1; //DS18B20的數據輸入/輸出腳DQ,根據情況設定
unsigned int sdata;//測量到的溫度的整數部分
unsigned char xiaoshu1;//小數第一位
unsigned char xiaoshu2;//小數第二位
unsigned char xiaoshu;//兩位小數
bitfg=1; //溫度正負標志
void dmsec (unsigned int count) //延時部分
{
unsigned char i;
while(count--)
{for(i=0;i<115;i++);}
}
void tmreset (void) //發送復位
{
unsigned char i;
TMDAT=0; for(i=0;i<103;i++);
TMDAT = 1; for(i=0;i<4;i++);
}
bit tmrbit (void) //讀一位//
{
unsigned int i;
bit dat;
TMDAT = 0;
i++;
TMDAT = 1;
i++; i++;//微量延時 //
dat = TMDAT;
for(i=0;i<8;i++);
return (dat);
}
unsigned char tmrbyte (void) //讀一個位元組
{
unsigned char i,j,dat;
dat = 0;
for (i=1;i<=8;i++)
{ j = tmrbit();dat = (j << 7) | (dat >> 1); }
return (dat);
}
void tmwbyte (unsigned char dat) //寫一個位元組
{
unsigned char j,i;
bit testb;
for (j=1;j<=8;j++)
{ testb = dat & 0x01;
dat = dat >> 1;
if (testb)
{ TMDAT = 0; //寫0
i++; i++;
TMDAT = 1;
for(i=0;i<8;i++); }

else
{TMDAT = 0; //寫0
for(i=0;i<8;i++);
TMDAT = 1;
i++; i++;}
}
}
void tmstart (void) //發送ds1820 開始轉換
{tmreset();//復位
dmsec(1);//延時
tmwbyte(0xcc);//跳過序列號命令
tmwbyte(0x44);//發轉換命令 44H,
}
void tmrtemp (void) //讀取溫度
{
unsigned char a,b;
tmreset ();//復位
dmsec (1);//延時
tmwbyte (0xcc);//跳過序列號命令
tmwbyte (0xbe);//發送讀取命令
a = tmrbyte ();//讀取低位溫度
b = tmrbyte (); //讀取高位溫度
if(b>0x7f) //最高位為1時溫度是負
{a=~a; b=~b+1; //補碼轉換,取反加一
fg=0; //讀取溫度為負時fg=0
}
sdata = a/16+b*16; //整數部分
xiaoshu1 = (a&0x0f)*10/16; //小數第一位
xiaoshu2 = (a&0x0f)*100/16%10;//小數第二位
xiaoshu=xiaoshu1*10+xiaoshu2; //小數兩位
}
void DS18B20PRO(void)
{tmstart();
//dmsec(5);//如果是不斷地讀取的話可以不延時 //
tmrtemp();//讀取溫度,執行完畢溫度將存於TMP中 //
}
void Led()
{
if(fg==1) //溫度為正時顯示的數據
{ P2=P2&0xef;
P0=seg7code[sdata/10]; //輸出十位數
Delay(8); P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[sdata%10]|0x80; //輸出個位和小數點
Delay(8); P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[xiaoshu1]; //輸出小數點後第一位
Delay(8); P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[xiaoshu2]; //輸出小數點後第二位
Delay(4); P2=P2|0xf0;
}
if(fg==0)//溫度為負時顯示的數據
{ P2=P2&0xef;
P0=seg7code[11]; //負號
Delay(8); P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[sdata/10]|0x80; //輸出十位數
Delay(8); P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[sdata%10]; //輸出個位和小數點
Delay(8); P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[xiaoshu1]; //輸出小數點後第一位
Delay(4); P2=P2|0xf0;
}
}
main()
{fg=1;
while(1)
{
DS18B20PRO();
Led();
}
}

『柒』 51單片機如何實現語音功能

單片機需要增加語音功能,要麼選擇功能強大stm32之類的晶元,用內部的dac來模擬輸出,要麼就外掛一個語音晶元
語音晶元的作用
1、顧名思義,就在是產品上增加語音播報的功能,實現的也就是把語音播放出來
2、常見的如:停車場報金額、電梯報站、貨車報「左轉彎,請注意」等等,應用非常的廣泛
語音晶元的種類,不過主要的分類基本也就大致三種
1、第一種,稱之為OTP,就是那種SOP8封裝的語音晶元,內置幾段常用的語音,出廠之後就固話死了,不可修改
2、第二種,稱之為flash語音晶元,通常是一個主控晶元外掛一個spiflash,主控晶元是不變的,而flash則是可以重復燒錄的,但是語音往往只支持wav,所以音質會壓縮的很差。代表的如WT588D
3、第三種,就是現在最優秀的KT404A晶元,他是支持MP3解碼,比前面的兩種在技術上是一個跨越,將MP3這種優秀的技術應用於語音晶元上,同時他強大的usb直接虛擬flash成為U盤,這樣更新語音非常方便
您選的單片機有4個串口,隨便拿一個出來控制KT404A就好了
KT404A外掛一個spiflash,通過usb直接更新語音

閱讀全文

與51單片機語音控制圖解相關的資料

熱點內容
怎樣刪除手機內不用的英文文件夾 瀏覽:81
android獲得屏幕寬度 瀏覽:302
單片機根據波形寫代碼 瀏覽:669
應屆生程序員怎麼投簡歷 瀏覽:721
數學建模演算法與應用ppt 瀏覽:99
遠程怎麼訪問端游伺服器 瀏覽:106
打電話定位置的源碼 瀏覽:642
即時通訊平台源碼 瀏覽:457
安卓自助app怎麼轉到蘋果手機 瀏覽:328
雅馬哈迴音壁不能識別源碼 瀏覽:730
python如何移植到安卓 瀏覽:29
黃柱選股公式源碼 瀏覽:639
教育系統源碼達標 瀏覽:887
音效卡驅動安裝程序在哪個文件夾 瀏覽:60
錢還完了銀行不給解壓 瀏覽:169
linux的系統調用表 瀏覽:752
php怎麼轉換頁面 瀏覽:547
我的世界買了伺服器之後怎麼開服 瀏覽:829
r1234yf汽車空調壓縮機 瀏覽:147
ftp伺服器地址欄 瀏覽:902