<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)T89C51的音量控制電路與程序設計

基于A(yíng)T89C51的音量控制電路與程序設計

作者: 時(shí)間:2009-02-25 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/173894.htm

本文介紹的IC為,市面上有很多類(lèi)似的產(chǎn)品,例如:F、CD62429、CSC62429等。其實(shí),掌握了一兩種IC的編程方法,稍作改動(dòng)就很容易移植到其它產(chǎn)品上。是日本三菱公司的IC,調節范圍是0~-83dB,精度每步1dB,內部如圖一(詳見(jiàn)M62429的使用手冊)。

圖一 M62429內部

2 硬件

根據圖一而設計的電路如圖二。

圖二中已省略了與功放連接的其他電路,只剩下AT89C52的晶振部分、與M62429相關(guān)的電路、控制音量必需的按鍵電路等,加上電源之后,該電路可以獨立工作。由于A(yíng)T89C52真正的串口已用于其他用途,M62429的4腳(DATA)連至AT89C52的P2.2,M62429的5腳(CLOCK)連到AT89C52的P2.1。由這兩個(gè)引腳(P2.1、P2.2)作為與M62429通信,控制音量的數據便由這個(gè)發(fā)出。

音頻信號從LH1輸入,其中L通道信號經(jīng)過(guò)C1耦合到M62429 的1腳,被控制之后從2腳輸出,再經(jīng)C2耦合到LH2輸出到后級進(jìn)行放大。R通道信號經(jīng)C4耦合到M62429的8腳,被控制后從7腳輸出。經(jīng)C3耦合至LH2輸出到后級進(jìn)行放大。在LH1處輸入合適的音源,從LH2處就可以監聽(tīng)的情況。SW1為音量增加按鈕。SW2為音量減小按鈕,SW3為復位按鈕。

圖二 M62429與的連接

3 軟件設計

從M62429使用手冊可知,送去M62429的控制數據DATA為11位。通常的用法如表一:

表一:M62429 常用的11位數據(DATA )結構

表一中D2~D8是根據音量的大小變化需要改變的數據,其中D2~D6的編碼如表二,

表二 M62429音量衰減值與D2~~D6的關(guān)系

從表二看出,D2~D6控制步長(cháng)為4dB,需加上D7、D8(見(jiàn)表三)才能達到控制步長(cháng)為1dB的要求。例如最大音量時(shí)衰減值為0dB,查表二,D2~D6數據為10101,查表三,D7,D8為11,所以D2~~D8應為1010111,根據表一,D0~D10這11位數據為10101011111。同理,衰減值為-1dB時(shí)的11位數據為10101010111。由于系列處理數據是8位,由P2.2、P2.1組成的無(wú)法一次完成11位數據的發(fā)送工作。我們只好把這11位數據分為兩次發(fā)送,我們可以用先發(fā)送6位、后發(fā)送5位的方法(當然也可以用其他方法)發(fā)送。例如衰減0dB的數據10101011111,先發(fā)送前6位101010,后發(fā)送5位11111。由于系列單片機數據為8位,我們可以在這些數據后面加上“0”,補足8位。那么,衰減0dB的一組數據就成為了10101000和11111000。把這組數據用十六進(jìn)制數來(lái)表示的話(huà),就是A8H,F8H。用同樣的方法,可得出各個(gè)衰減值的數據。

我們設計程序的思路是:根據開(kāi)機預設衰減值,用查表法查出衰減數據,然后把數據發(fā)送出去,發(fā)送時(shí)先發(fā)第一個(gè)數據的前6位,再發(fā)送另一數據的前5位。由于M62429的控制范圍是0dB~-83dB。在這個(gè)范圍內,數字越大,音量越小。要增加音量,就要減少用于查表那個(gè)數字(程序中R4的值)??驁D如圖三。

圖三 程序方框圖

根據上述思路設計的程序如下:

ORG 00H

M429CK EQU P2.1 ;M62429時(shí)鐘COLCK

M429DA EQU P2.2 ;M62429數據DATA

UPVOL EQU P1.0 ;音量增加按鍵

DOWNVOL EQU P1.1 ;音量減少按鍵

MOV SP, #10H

MOV R4, #20 ;開(kāi)機預設衰減值

M62429: MOV A,R4 ;預設衰減值送A

RL A ;乘2

MOV DPTR,#TAB ;衰減數據表首址送DPTR

MOVC A,@A+DPTR;查出衰減數據

MOV 9H, A ;9H、R2為一組衰減數據的兩個(gè)存放單元

INC DPTR ;指向下一個(gè)數據

MOV A, R4

RL A ;乘2

MOVC A,@A+DPTR ;查出另一個(gè)衰減數據

MOV R2,A

CLR M429CK

MOV A,9H

CALL IN6BYT ;發(fā)送前6位數據

MOV A,R2

CALL IN5BYT ;發(fā)送后5位數據

UP: MOV C, UPVOL ;檢測音量增加按鍵

JC DOWN ;無(wú)按下,轉測音量減少鍵

CALL DELAY ;有按下,延時(shí)去抖

MOV C, UPVOL ;再測

JC DOWN

JB F0,EEE ;音量已是最大轉EEE

DEC R4 ;音量衰減值減1

CLR C

CJNE R4, #0, M62429;與音量最大值衰減0dB比較,未達最大,轉M62429

SETB F0 ;己是最大,建立標志

JMP M62429

EEE: INC R4 ;音量衰減值增1

CLR F0

JMP UP

DOWN: MOV C, DOWNVOL ;檢測音量減小鍵

JC UP

CALL DELAY

MOV C, DOWNVOL ;再測

JC UP

INC R4 ;音量衰減值增1

CLR C

CJNE R4, #83, BBB ;與音量最小值衰減83dB比較

LJMP M62429

BBB: JC M62429 ;R483 ,轉M62429

MOV R4,#83 ;R4>83,需修正,保證r4里的值=83

JMP M62429

IN6BYT: MOV R3,#6 ;發(fā)送6位數據子程序

本文創(chuàng )新點(diǎn):1、程序中控制數據用查表法查得,使之控制方便,容易理解。

2、軟件硬件結合緊密。

DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>