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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-基于單片機(jī)的智能化紅外遙控器-閱讀頁(yè)

2024-12-23 17:51本頁(yè)面
  

【正文】 (小于 10ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、 體積小等特點(diǎn) 。 圖 AT24C02 引腳圖 第 12 頁(yè) 共 45 頁(yè) 圖 AT24C02 時(shí)序圖 引腳功能介紹如下: A0(引腳 1):器件地址的 A0 位。 A2(引腳 3):器件地址的 A2 位。 SDA(引腳 5):數(shù)據(jù)總線引腳。 TEST(引腳 7):測(cè)試引腳, Vcc(引腳 8):電源線引腳。 R/W 決定數(shù)據(jù)傳輸?shù)姆较?,?dāng) R/W= 1時(shí),是從 存儲(chǔ)器讀出數(shù)據(jù),當(dāng) R/W= 0 時(shí),是向存儲(chǔ)器寫入數(shù)據(jù)。地址范圍是 00H~ FFH。片內(nèi) 8K Flash 存儲(chǔ)器可在線重新編程,或使用通用的非易失性存儲(chǔ)器編程器。 STC89C52RC 單片機(jī) ,基于 STC89C51 內(nèi)核 ,是新一代增強(qiáng)型單片機(jī) ,指令代碼完全兼容傳統(tǒng) STC89C51,速度快 8~ 12倍 ,帶 ADC,4路 PWM,雙串口 ,有全球唯一 ID號(hào) ,加密性好,抗干擾強(qiáng)。 40 個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根, 4組 8位共 32 個(gè) I/O 口,中斷口線與 P3口 線復(fù)用。 2. Pin40:正電源腳,工作時(shí),接 +5V 電源。 4. Pin18:時(shí)鐘 XTAL2 腳,片內(nèi)振蕩電路的輸出端。另外一種是外部時(shí)鐘方式,即將 XTAL1接地,外部時(shí)鐘信號(hào)從 XTAL2 腳輸入。 Pin1Pin8 為 輸入輸出腳。 7. Pin9:RESET/Vpd 復(fù)位信號(hào)復(fù)用腳,當(dāng) STC89C52RC 通電,時(shí)鐘電路開始工作,在RESET 引腳上出現(xiàn) 24 個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。此外, RESET/Vpd 還是一復(fù)用腳, Vcc 掉 電期間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部 RAM 的數(shù)據(jù)不丟失。而訪問內(nèi)部程序存儲(chǔ)器時(shí), ALE 端將有一個(gè) 1/6 時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。 9. Pin29:當(dāng)訪問外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào), PC的 16 位地址數(shù)據(jù)將出現(xiàn)在 P0和 P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到 P0 口上,由 CPU 讀 入并執(zhí)行。如 EA 為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。 C 語言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語言,它既有高級(jí)語言的各種特征,又能直接操作系統(tǒng)硬件。 ( 2)寄存器分配和尋址方式由編譯器進(jìn)行管理。 ( 4)可使用與人的思維更相近的關(guān)鍵字和操作函數(shù)。 ( 6) C 語言中的庫(kù)文件提供了許多標(biāo)準(zhǔn)的例程。 ( 8) C 語言可移植性好且非常普及。 4K 字節(jié)以上的程度, C 語言的優(yōu)勢(shì)更能得到發(fā)揮。故在本系統(tǒng)中,單片機(jī)程序采用 C 語言編寫, 使用 Keil C51 編譯軟件來編程 。 Keil uVision2 版本功能齊全,集編輯、編譯、仿真于一體 ,支持匯編和 C 語言的程序設(shè)計(jì), 與匯編相比, C 語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用 界面友好,易學(xué)易用 。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到 Keil C51 生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。 Keil uVision2 的運(yùn)行界面如下圖 所示。 由于受到存儲(chǔ)空間和代碼長(zhǎng)度的限值,硬件中的按鍵并沒有完全充分使用。 系統(tǒng)軟件首先對(duì)定時(shí)器設(shè)置和初始化液晶顯示。此時(shí)要繼續(xù)按下編號(hào)為 36的某個(gè)按鍵,然后可以用紅外遙控器對(duì)準(zhǔn)接收頭按下遙控器上需要學(xué)習(xí)的鍵,將學(xué)到的紅外信號(hào)綁定到該編號(hào)鍵,并將學(xué)習(xí)到的紅外解碼數(shù)據(jù)存到 EEPROM中。根據(jù)按鍵的編號(hào)找到相應(yīng) EEPROM中的地址,讀出紅外數(shù)據(jù),并將此數(shù)據(jù)調(diào)制經(jīng)紅外發(fā)射頭發(fā)射出去。盡管通信 協(xié)議中有不同的幀格式,如幀頭、系統(tǒng)碼、操作碼、同步碼、幀間隔碼、幀尾等,根據(jù)記錄下降沿間的間隔時(shí)間來測(cè)量紅外遙控信號(hào)的高低電平的脈寬值的原理,用戶甚至不需要了解通信協(xié)議的具體內(nèi)容,只需知道低電平 (有紅外發(fā)送載波 )信號(hào)時(shí)長(zhǎng)和高電平 (無紅外發(fā)送載波 )信號(hào)時(shí)長(zhǎng)就可以實(shí)現(xiàn)遙控命令的學(xué)習(xí)和存儲(chǔ)。由于紅外接收信號(hào)直接接單片機(jī)的外部中斷 0端口,當(dāng)輸入信號(hào)產(chǎn)生低電平跳變時(shí),系統(tǒng)啟動(dòng)內(nèi)部定時(shí)器 1,依次對(duì)輸入高低電平脈沖寬度值計(jì)時(shí)。 在設(shè)計(jì)中選擇 24 MHz晶振,一個(gè)機(jī)器周期是 ,計(jì)數(shù)器采用 16 位計(jì)數(shù)器,可以記錄的最大時(shí)間間隔為 ;每次學(xué)習(xí)結(jié)束后,都將學(xué)習(xí)到的存儲(chǔ)在 單片機(jī) 內(nèi)部存儲(chǔ)區(qū)的遙控命令數(shù)據(jù)壓縮,并根據(jù)按鍵和 LCD顯示屏的顯示數(shù)據(jù)統(tǒng)一編碼再存入 EEPROM。 學(xué)習(xí)功能部分程序設(shè)計(jì): /*************外部中斷 0*********************/ void inter0 (void) interrupt 0 using 1//下降沿一到,即進(jìn)入中斷服務(wù)程序 { EX0=0。 //清零 TL1 = 0。 TR1=1。 //數(shù)組指針 timeout = 0。 RX_flag = 1。 End_flag=0。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data[0] = TH1。 TH1 = 0。 //步驟二:定時(shí)器 1對(duì)起始幀的正脈寬測(cè)量。 //定時(shí)器 1開始計(jì)數(shù) timeout = 0。amp。 } else { Head_flag = 0。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data[2] = TH1。 TH1 = 0。 for (u8_i=0。 u8_i++)//系統(tǒng)碼 這里有 26個(gè)脈沖,用掉 104個(gè)存儲(chǔ)單元 { //步驟三:定時(shí)器 1對(duì)數(shù)據(jù)幀的負(fù)脈寬測(cè)量。 //定時(shí)器 1開始計(jì)數(shù) timeout = 0。 while(ir_in == 0)//檢測(cè)是否還是低電平,高電平到來才退出循環(huán)。 if (timeout10000)//超過時(shí)間直接退出 { RX_flag = 0。 } } TR1=0。//定時(shí)器 1計(jì)數(shù)值,負(fù)脈寬計(jì)數(shù)值 PW_data[PW_pt++] = TL1。 //清零 TL1 = 0。 TR1=1。 if(RX_flag) { length++。 while(ir_in) //檢測(cè)是否還是高電平,低電平到來才退出循環(huán)。 第 21 頁(yè) 共 45 頁(yè) if (timeout10000)//超過時(shí)間直接退出 { RX_flag = 0。 } } TR1=0。//定時(shí)器 1計(jì)數(shù)值,負(fù)脈寬計(jì)數(shù)值 PW_data[PW_pt++] = TL1。 //清零 TL1 = 0。 PW_pt = 0。 u8_i16。這里做成循環(huán)形式 TR1=1。 RX_flag = 1。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data2[PW_pt++] = TH1。 TH1 = 0。 //步驟四:定時(shí)器 1對(duì)數(shù)據(jù)幀的正脈寬測(cè)量。 //定時(shí)器 1開始計(jì)數(shù) timeout = 0。amp。 } if(PW_data2[PW_pt2]20)//檢測(cè)是否到了結(jié)束幀 { End_flag = 0。 } RX_flag = 1。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data2[PW_pt++] = TH1。 TH1 = 0。 } //步驟六:假如數(shù)據(jù)已經(jīng)傳完,結(jié)束幀是怎么樣的。 u8_i2。這里做成循環(huán)形式 TR1=1。 RX_flag = 1。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data2[PW_pt++] = TH1。 TH1 = 0。 //步驟四:定時(shí)器 1對(duì)數(shù)據(jù)幀的正脈寬測(cè)量。 //定時(shí)器 1開始計(jì)數(shù) timeout = 0。amp。 } if(PW_data2[PW_pt2]20)//檢測(cè)是否到了結(jié)束幀 { End_flag = 0。 第 24 頁(yè) 共 45 頁(yè) } RX_flag = 1。 { timeout++。 break。 //定時(shí)器 1關(guān)閉計(jì)數(shù) PW_data2[PW_pt++] = TH1。 TH1 = 0。 } //數(shù)據(jù)處理部分:對(duì)數(shù)據(jù)幀的正脈寬判斷,是 0還是 1。 / if (Head_flag) { Data_Process()。 } 數(shù)據(jù)壓縮編碼 在軟件設(shè)計(jì)時(shí)采用了脈寬測(cè)量技術(shù),但在數(shù)據(jù)存儲(chǔ)時(shí)發(fā)現(xiàn)數(shù)據(jù)占用的內(nèi)存容量太大,讀寫 EEPROM時(shí)間很長(zhǎng),應(yīng)尋求一種數(shù)據(jù)無損壓縮的方法,既可降低內(nèi)存和 E PROM占用容量,又能提高系統(tǒng)運(yùn)行速度。在系統(tǒng)設(shè)計(jì)時(shí),只要選擇合理的設(shè)計(jì)方案,就能解決這個(gè)問題。 數(shù)據(jù)壓縮編碼部分程序設(shè)計(jì): 第 25 頁(yè) 共 45 頁(yè) /********************************************************************** ** 函數(shù)名稱: Data_Process ** 入口參數(shù): 緩沖區(qū) ** 出口參數(shù): 緩沖區(qū) ** 功能描述:處理脈寬緩沖數(shù)據(jù) **********************************************************************/ void Data_Process(void) { uchar i。 write_(0x80+0x40+12)。W39。 //write_date(39。)。 System_Code = 0。 //功能碼 Funtion_Anti_Code = 0。 //先存好數(shù)據(jù)低脈沖的脈寬。 //L_time = 8。 //算好系統(tǒng)碼 for(i=0。 i++) { L_time = PW_data[length]。 L_time |= PW_data[length+1]。 H_time = 8。 if (H_timeL_time) 第 26 頁(yè) 共 45 頁(yè) { temp = H_time L_time。// //length++。 LO_time = PW_data[length+3]。// //length++。 LZ_time = PW_data[length+3]。// //length++。 LZ_time = PW_data[length+3]。 } //算出功能碼 length = 0。 for(i=0。 i++) { L_time = PW_data2[length++]。 L_time |= PW_data2[length++]。 第 27 頁(yè) 共 45 頁(yè) H_time = 8。 if (H_timeL_time) { temp = H_time L_time。 //結(jié)束碼高電平 PW_data[16] = PW_data2[length2]。//低位 } if (tempCOMP_NUM)//1 { Funtion_Code=(Funtion_Code1)|0x00000001。// } } else { Funtion_Code=(Funtion_Code1)。 i8。 L_time = 8
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1