亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
MT8880振鈴檢測(cè)摘機(jī)DTMF接收單片機(jī)程序
[打印本頁]
作者:
晗晴微語
時(shí)間:
2016-10-25 10:32
標(biāo)題:
MT8880振鈴檢測(cè)摘機(jī)DTMF接收單片機(jī)程序
振鈴檢測(cè)摘機(jī)DTMF接收程序
完整代碼下載:
振鈴檢測(cè)摘機(jī)DTMF接收例程.rar
(17.48 KB, 下載次數(shù): 51)
2016-10-25 10:31 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
部分源碼預(yù)覽:
//-----------------------------------------------------------------------------
// MT8880_DTMF_receiving.c
//-----------------------------------------------------------------------------
// Copyright 2017 尖峰學(xué)子.
//
// Program Description:
//
// 這是用于測(cè)試MT8880模塊接收DTMF信號(hào)功能
// 首先,在手機(jī)撥打了號(hào)碼后,通過振鈴檢測(cè),自動(dòng)摘機(jī),
// 接收DTMF信號(hào)通過串口發(fā)送到PC機(jī),并且通過P1上連接的LED來顯示。通過按#號(hào)鍵可以遠(yuǎn)程關(guān)閉電話機(jī)
// 端口說明:
// P2^0--D0
// P2^1--D1
// P2^2--D2
// P2^3--D3
// P2^4--R/W
// P2^5--RSO
// P2^7--zj_control 控制摘掛機(jī)
// P3^2--zljc 檢測(cè)振鈴信號(hào)
// P3^3--IRQ 接收DTMF時(shí)產(chǎn)生中斷信號(hào)接外部中斷1
// P1 接八個(gè)led
//
// How To Test:
//
// 1) 將模塊各個(gè)端口與單片機(jī)鏈接好;
// 3) 通過手機(jī)撥打該電話號(hào)碼可以通過示波器觀察振鈴檢測(cè)端ZLJC的信號(hào);
// 2) 用手機(jī)撥打該電話后,運(yùn)行程序后可按手機(jī)上號(hào)碼;通過觀察窗口可以發(fā)現(xiàn)接收到的數(shù)字正是你按下的鍵值
//
//
// 硬件要求: 51單片機(jī) 電話線 晶振:12M
// Target: MT8880 AND AT89C51
// Tool chain: Keil C51 7.50 / Keil EVAL C51
// Command Line: None
//-----------------------------------------------------------------------------
// Include Files
//-----------------------------------------------------------------------------
#include <reg51.h>
//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------
#define uchar unsigned char
#define uint unsigned int
sbit zj_control=P2^7;//控制摘掛機(jī);
uchar rx_num; //接收數(shù)據(jù)寄存器;
uchar ring_num; //振鈴次數(shù);
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void initialize(void); //MT8880芯片初始化函數(shù)
void rece_init(void); //MT8880接收初始化函數(shù)
void StartUART( void );//串口初始化函數(shù)
void R_S_Byte(uchar R_Byte);//串口發(fā)送子函數(shù)
//-----------------------------------------------------------------------------
// /* 主函數(shù)(主程序) */
//-----------------------------------------------------------------------------
void main(void)
{
P2=0xff; //端口初始化
StartUART(); //串口初始化
initialize(); //MT8880芯片初始化子函數(shù);
rece_init(); //接收初始化子函數(shù);
zj_control=1;
for(;;) ; //等待接收
}
//-----------------------------------------------------------------------------
// /* MT8880芯片初始化子函數(shù) */
//-----------------------------------------------------------------------------
void initialize(void)
{ P2=0x3f; /* 讀SR */
P2=0x20; /* CRA=0000 */
P2=0x20; /* CRA=0000 */
P2=0x28; /* CRA=1000 */
P2=0x20;
} /* CRB=0000 */
//-----------------------------------------------------------------------------
// /*接收初始化子函數(shù) */
//-----------------------------------------------------------------------------
void rece_init(void)
{
P2=0x24; /* CRA=0100 */ //設(shè)置為 DTMF收發(fā)模式
EA=1; //開總中斷
ES=1; //開串口接收中斷
EX0=1; //開外中斷0:用于檢測(cè)振鈴信號(hào)
IT0=1; // 邊沿觸發(fā)
EX1=0; //關(guān)外中斷1:用于接收DTMF信號(hào)
IT1=1; //邊沿觸發(fā)
}
//-----------------------------------------------------------------------------
// /*振鈴檢查中斷服務(wù)程序 */
//請(qǐng)先用示波器測(cè)試振鈴信號(hào)端,在有電話撥入的時(shí)候,是否產(chǎn)生了振鈴信號(hào)再接入單片機(jī)
//入接入號(hào)不能產(chǎn)生中斷信號(hào),考慮是否下拉信號(hào)比較入,可考慮接個(gè)下拉電阻。
//-----------------------------------------------------------------------------
void int0(void) interrupt 0
{
ring_num++;//每次振鈴將會(huì)參數(shù)25個(gè)左右的中斷脈沖,
R_S_Byte(11);//發(fā)送一個(gè)0x0B到串口;
if(ring_num>=50) //在振鈴響三下的時(shí)候自動(dòng)摘機(jī)。
{
ring_num=0;//清除振鈴計(jì)數(shù)寄存器
zj_control=0; //有來電自動(dòng)摘機(jī)
EX0=0;//關(guān)閉外部中斷0
EX1=1;//開外部中斷1 準(zhǔn)備接收DTMF信號(hào)
}
}
//-----------------------------------------------------------------------------
// /*dtmf接收中斷服務(wù)程序 */
//-----------------------------------------------------------------------------
void int1(void) interrupt 2
{ P2=0x3f; /* 讀SR */
P2=0x1f; /* 讀RDR */
rx_num=P2&0x0f; //讀取數(shù)據(jù),存入接收寄存器中;
R_S_Byte(rx_num); //將接收到的DTMF信號(hào)轉(zhuǎn)為數(shù)字后通過串口發(fā)送到PC機(jī);
P1=rx_num; //通過P1端口上的LED顯示接收到的數(shù)據(jù);
//也可如此通過控制IO口的方式進(jìn)而控制繼電器的開關(guān),達(dá)到控制電器的目的
if(rx_num==12) //#號(hào)鍵遠(yuǎn)程關(guān)閉電話機(jī)。
{
zj_control=1; //按#號(hào)鍵遠(yuǎn)程關(guān)閉電話機(jī)
EX0=1;//打開外部中斷0 ,再次進(jìn)入振鈴檢查
EX1=0;//關(guān)閉外部中斷1
}
//此處程序可以發(fā)揮,加入密碼識(shí)別,家電控制,語音提示信號(hào)切入,等等
}
//-----------------------------------------------------------------------------
// /* 串口初始化子函數(shù) */
//-----------------------------------------------------------------------------
void StartUART( void )
{ //波特率9600
SCON = 0x50; //串口工作方式選擇,選擇在工作方式1
TMOD = 0x20;
TH1 = 0xfd;
TL1 =
………………
………………
復(fù)制代碼
MT8880模塊資料:
http://www.denmoz.com/bbs/dpj-57219-1.html
作者:
admin
時(shí)間:
2016-10-25 14:25
51黑有你更精彩!!!
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1