freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于spce061a的智能密碼鎖系統(tǒng)的軟件設(shè)計(jì)(編輯修改稿)

2025-07-24 19:00 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 Reti。L_FIQ_TimerA: //FIQ_TimerA中斷服務(wù)程序 [P_INT_clear]=R1。 Call _BSR_FIQ_Routine //語(yǔ)音識(shí)別中斷服務(wù) Call F_FIQ_Service_SACM_S480。 //語(yǔ)音播放中斷服務(wù) Pop R1,R5 from [sp]。 Reti。L_FIQ_TimerB: //FIQ_TimerB中斷服務(wù)程序 [P_INT_clear]=R1。 Pop R1,R5 from [sp]。 Reti。 傳感器信號(hào)檢測(cè)模塊本系統(tǒng)利用熱釋人體紅外傳感器,將其檢測(cè)到人進(jìn)入的信號(hào)通過(guò)一系列轉(zhuǎn)換后送入單片機(jī)的IOB2口。通過(guò)對(duì)單片機(jī)IOB2口的檢測(cè)可以得到一組高低電平。程序中規(guī)定當(dāng)IOB2口為低電平“0”時(shí),表明有人進(jìn)入該房間;若檢測(cè)到的信號(hào)為“1”時(shí),表明無(wú)人進(jìn)入。單片機(jī)可以通過(guò)IOB2口的相應(yīng)變化而做出不同的響應(yīng)。所需單片機(jī)資源:IOB2流程圖如下:程序:……void zd_int0() interrupt 2{unsigned char h。f=0。for(h=0。h10。h++) //檢查傳感器送入信號(hào)(IOB2狀態(tài))10次,共1S{delay(100)。if([P_IOB_DATA]==0) f++}}……程序說(shuō)明:當(dāng)檢測(cè)到送入IOB2口的信號(hào)為“0”時(shí),此時(shí)檢測(cè)IOB2口信號(hào)10次后,調(diào)用延時(shí)10S的程序來(lái)等待用戶復(fù)位,當(dāng)用戶沒(méi)有復(fù)位時(shí)程序開(kāi)始轉(zhuǎn)向報(bào)警部分執(zhí)行,即開(kāi)始模擬摘機(jī)。若單片機(jī)復(fù)位,程序則從開(kāi)始處執(zhí)行,然后重新檢測(cè)傳感器電路送入的信號(hào)來(lái)判斷是否要報(bào)警。傳感器檢測(cè)到信號(hào)開(kāi) 始信號(hào)處理送入IOB2判斷IOB2口信號(hào)是否為“0”?后續(xù)處理YN結(jié) 束           圖10 傳感器檢測(cè)流程圖 電話信號(hào)檢測(cè)模塊電話信號(hào)檢測(cè)模塊是通過(guò)對(duì)電話線上的信號(hào)進(jìn)行檢測(cè),確定在進(jìn)行報(bào)警的時(shí)候能否占用電話線的資源。電話檢測(cè)模塊主要為鈴流信號(hào)檢測(cè)。通過(guò)檢測(cè)電話線上的鈴流信號(hào)可以知道此時(shí)電話是否可以撥通[13]。鈴流簡(jiǎn)單的說(shuō),就是電話機(jī)在鈴響的時(shí)候電話線上的電流。鈴流檢測(cè)電路的作用就是檢測(cè)電話線上的鈴流信號(hào),以便為單片機(jī)提供電話鈴響的次數(shù)。檢測(cè)電路將檢測(cè)到的信號(hào)送入單片機(jī)的IOB3口。IOB3口是SPCE061A單片機(jī)的定時(shí)計(jì)數(shù)器TA的輸入口,通過(guò)TA計(jì)數(shù)器的計(jì)數(shù)來(lái)判斷電話機(jī)響鈴的次數(shù),通過(guò)對(duì)單片機(jī)中斷的設(shè)置進(jìn)而判斷電話是否接通。程序流程圖如下:開(kāi) 始呼叫電話脈沖次數(shù)是否響應(yīng)中斷?檢測(cè)信號(hào)送入IOB3鈴流電路信號(hào)檢測(cè)電話接通發(fā)送語(yǔ)音TA清0NY結(jié) 束 圖11 電話信號(hào)檢測(cè)模塊程序流程圖CPU占用資源:定時(shí)計(jì)數(shù)器TA;IOB3口……unsigned char ta_flag=0。 // 定時(shí)計(jì)數(shù)器TA/*計(jì)數(shù)器TA初始化*/void init_timer(){TMOD=0X50 //TA工作于模式1,16位計(jì)數(shù)TH0=(655361000)%256 //計(jì)數(shù)1000個(gè)脈沖初值 TL0=(655361000)%256IE=0X92 //開(kāi)中斷}/*1000個(gè)脈沖計(jì)數(shù)中斷服務(wù)子函數(shù)*/void js0() interrupt 1{n++。TH0=(655361000)%256 //計(jì)數(shù)1000個(gè)脈沖初值 TL0=(655361000)%256}程序說(shuō)明:給定時(shí)計(jì)數(shù)器一初值,鈴流檢測(cè)電路送入單片機(jī)IOB3口的信號(hào)為一組高低電平組成的周期性脈沖信號(hào)。TA對(duì)送入的信號(hào)進(jìn)行計(jì)數(shù),若計(jì)數(shù)溢出,說(shuō)明電話沒(méi)有撥通,程序響應(yīng)TA的中斷,程序轉(zhuǎn)向模擬掛機(jī),同時(shí)重新向TA賦初值。單片機(jī)延時(shí)1S后重新摘機(jī)、發(fā)送撥碼信號(hào)、鈴流檢測(cè),直到撥通電話。若在撥電話過(guò)程中有外部電話打入,則可通過(guò)程序中的摘機(jī)與掛機(jī)電路讓打入的電話關(guān)斷。 模擬摘掛機(jī)模塊本系統(tǒng)中對(duì)外部電話的呼叫可以分為以下幾步:CPU模擬摘機(jī)、發(fā)送電話號(hào)碼呼叫、接通電話、CPU模擬掛機(jī)等幾步。系統(tǒng)中的模擬摘掛機(jī)電路其實(shí)是一個(gè)電子開(kāi)關(guān)。用以保護(hù)本系統(tǒng)所使用的電話機(jī)不被本系統(tǒng)所獨(dú)占[11]。該模塊的程序流程圖如下:本模塊占用系統(tǒng)資源:IOB8口……Void MNZGJ(){R1=0100H[P_IOB_DIR]=R1[P_IOB_ATTRIB]=R1sbit kz=[P_IOB_DATA]。[P_IOB_DATA]==1。call L_delay。[P_IOB_DATA]==0。call L_delay。[P_IOB_DATA]==1。call L_delay。voit bh。 //轉(zhuǎn)向DTMF編碼發(fā)送處執(zhí)行}前 期 處 理開(kāi) 始模擬摘機(jī)撥 號(hào) 判斷是否接通 電話?后續(xù)處理YN結(jié) 束模擬掛機(jī)延 時(shí)…… 圖12模擬摘掛機(jī)程序流程圖CPU首先執(zhí)行模擬摘機(jī)程序后才能執(zhí)行發(fā)送DTMF編碼進(jìn)行撥號(hào),如果電話沒(méi)有接通,CPU執(zhí)行掛機(jī)程序,掛斷電話后延遲一段時(shí)間重新摘機(jī)、撥號(hào),直至接通,進(jìn)行下一步處理。 DTMF編碼發(fā)送模塊本系統(tǒng)采用HT9200A編碼芯片。CPU發(fā)出控制指令到HT9200A,HT9200A初始化后開(kāi)始執(zhí)行編碼發(fā)送程序。其中DTMF信號(hào)輸出端低五位發(fā)送的程序與所撥電話的號(hào)碼值有以下關(guān)系[16]:表2 DTMF編碼與號(hào)碼值對(duì)應(yīng)關(guān)系撥 號(hào)D4D3D2D1D0100001200010300011400100500101600110700111801000901001001010*0101101100A01101B01110C01111D00000OFF11111DTMF在串行發(fā)送數(shù)據(jù)時(shí)低位在前,振蕩建立時(shí)間為10MS,CLK最大為500K,在設(shè)計(jì)時(shí)一般取為100K。占用單片機(jī)資源:IOBIOBIOB3程序如下:……include include R1=0100H //HT9200選中芯片[P_IOB_DIR]=R1[P_IOB_ATTRIB]=R1sbit HT9200_DATA=[P_IOB_DATA]。 //輸入數(shù)據(jù)R1=0002H[P_IOB_DIR]=R1[P_IOB_ATTRIB]=R1sbit HT9200_CLK=[P_IOB_DATA]define delay_5us() _nop_()。_nop_() //延時(shí)程序void delayMs(unsigned char sed)/*延時(shí)1毫秒*/{ unsigned int i。while(sed){ for(i=i0。i)。 }}void sendHt9200Bit(unsigned char dtmfData) /*發(fā)送一位DTMF號(hào)碼*/{ unsigned char N=5。 HT9200_CE=0。 //選中HT9200 delayMs(10)。 //延時(shí)10ms,以使其起振 while(N) { if(dtmfDataamp。0x01) { HT9200_DATA=1。 } else { HT9200_DATA=0。 } delay_5us()。 //延時(shí)5μS HT9200_CLK=0。 //輸出鎖存 delay_5us()。 //延時(shí)5μS HT9200_CLK=1。 //時(shí)鐘上升沿 dtmfData1。 //數(shù)據(jù)右移一位 } delayMs(60)。 //延時(shí)60ms,發(fā)送DTMF HT9200_CE=1。 //禁止HT9200 }void sendDTMF(unsigned char *s,l) /*發(fā)送一串DTMF號(hào)碼,定義指針變量S*/{ while(l) { sendHt9200Bit(*s)。 //轉(zhuǎn)向發(fā)送一位處執(zhí)行 delayMs(50)。 //延時(shí)50msDTMF間隔 s++。 //S+1 }}void main(void){ unsigned char data haoma[]={8,7,6,5,4,3,2,1}。 sendDTMF(haoma,8)。 while(1)。 //循環(huán)}……程序說(shuō)明:選中HT9200A芯片后對(duì)其進(jìn)行相應(yīng)的初始化,在程序中設(shè)定發(fā)送的電話號(hào)碼長(zhǎng)度為N,在每發(fā)送一位號(hào)碼之后要執(zhí)行N1程序,看其結(jié)果是否為0,直至N=0時(shí)表明電話號(hào)碼已經(jīng)發(fā)送完畢,系統(tǒng)完成撥號(hào)呼叫程序。開(kāi)始初始化
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1