資源簡介
用GUi界面做出來的DTMF雙音多頻撥號系統的模擬設計,實現DTMF信號的產生及檢測,

代碼片段和文件信息
t1=‘123A‘;t2=‘456B‘;t3=‘789C‘;t4=‘*0#D‘;?%?DTMF?信號代表的16?個數
tm=[double(t1);double(t2);double(t3);double(t4)];%?DTMF?信號代表的16?個ASCII?值
i=0;
N=205;?%DFT?采樣點數
K=[1921232532353943];?%8?個基頻對應的8?個k?值
f1=[697770852941];?%?行頻率向量
f2=[1209133614771633];?%?列頻率向量
Y1=input(‘?鍵入電話號碼=?‘‘s‘);?%?輸入一串數字
Y2=double(Y1);%?輸入字符串變成ASCII?碼
T=length(Y2);?%求輸入號碼長度
Y3=zeros(1T);%接收端電話號碼初值為零
for?l=1:T;?%分別對每位號碼數字處理:產生信號,檢測
d=Y2(l);?%計算出第l?位號碼數字
for?p=1:4;
for?q=1:4;
if?tm(pq)==d;?breakend?%?檢測與l?位號碼相符的列號q
end
if?tm(pq)==d;?breakend?%?檢測與l?位號碼相符的行號p
end
n=0:1023;
x?=?sin(2*pi*n*f1(p)/8000)?+?sin(2*pi*n*f2(q)/8000);%?構成雙音頻信號
pause(0.1)?%相鄰信號響聲之間加0.1?秒停頓
%?接收檢測端的程序
X=fft(xN)?;?%?用FFT?算法計算DFT?樣本
val?=?abs(X(K));?%?列出八點DFT?的摸
figure(1)?
subplot(43l);
stem(Kval‘.‘);grid;xlabel(‘k‘);ylabel(‘|X(k)|‘)?%?畫出8?點DFT(k)?的幅度
axis([0?50?0?120]);
limit?=?80;?%基頻檢測門限為80
for?s=5:8;
if?val(s)?>?limit?break?end?%?查找列號
end
for?r=1:4;
if?val(r)?>?limit?break?end?%?查找行號
end
Y3(l)=tm(rs-4);?%將號碼表示成一個ASCII?向量
end
Y=char(Y3);?%將ASCII?轉化成字符串表示的電話號碼
disp(‘接收端檢測到的號碼為:?‘)
disp(Y)?%?顯示接收到的電話號碼
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7977??2018-05-30?10:23??telephone.fig
?????文件??????14586??2018-05-31?10:48??telephone.m
?????文件???????1347??2018-05-29?11:19??phone.m
-----------?---------??----------?-----??----
????????????????23910????????????????????3
評論
共有 條評論