智能客房控制器的設(shè)計(jì)_第1頁(yè)
智能客房控制器的設(shè)計(jì)_第2頁(yè)
智能客房控制器的設(shè)計(jì)_第3頁(yè)
智能客房控制器的設(shè)計(jì)_第4頁(yè)
智能客房控制器的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)書(shū)課題名稱智能客房控制器的設(shè)計(jì)目 錄緒論3第1章AT89S52概述41.1 AT89S52的功能41.2 AT89S52的特性4第2章客房控制器的系統(tǒng)結(jié)構(gòu)52.1 客房控制器的系統(tǒng)結(jié)構(gòu)52.2 控制器電路硬件設(shè)計(jì)52.3 I/O輸入電路設(shè)計(jì)6第3章 AT89S52控制的電路73.1 AR89S52控制LED顯示時(shí)間83.2 4X4矩陣式鍵盤(pán)按鍵93.2.1 試驗(yàn)任務(wù)103.2.2硬件電路原理圖113.2.3 系統(tǒng)板上硬件連線123.2.4程序設(shè)計(jì)內(nèi)容133.2.5 程序框圖143.2.6 C語(yǔ)言源程序103.3 LED點(diǎn)陣顯示103.3.1 8X8LED點(diǎn)陣顯示驅(qū)動(dòng)技術(shù)原理圖103.3

2、.2 16X16LED點(diǎn)陣顯示漢字103.4 紅外線發(fā)射電路的設(shè)計(jì)103.4.1紅外線傳感器103.4.2放大電路的基本知識(shí)103.4.3半導(dǎo)體三極管103.4.4紅外線發(fā)射電路圖11第4章總結(jié)31致謝32參考文獻(xiàn)33摘 要介紹了智能客房控制系統(tǒng)的結(jié)構(gòu)、功能和特點(diǎn)。給出了以At89S52單片機(jī)為主控制器的客房控制器輸入、輸出硬件接口電路的設(shè)計(jì),并對(duì)其特點(diǎn)做出闡述。結(jié)合控制系統(tǒng)的功能要求,對(duì)軟件設(shè)計(jì)的程序流程及實(shí)現(xiàn)的基本過(guò)程進(jìn)行了說(shuō)明。關(guān)鍵詞:At89S52  智能客房  單片機(jī)  樓宇自動(dòng)化隨著智能建筑和樓宇自動(dòng)化的飛速發(fā)展,出現(xiàn)了與傳統(tǒng)家居有著本質(zhì)差別的智能家居

3、,給住戶提供了高品質(zhì)的生活環(huán)境。與普通家居相比,智能家居不僅具有傳統(tǒng)的居住功能,提供舒適、安全、高品位、宜人的家庭環(huán)境,而且將原來(lái)的被動(dòng)靜止結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂心軇?dòng)智慧的工具,提供全方位的信息交換功能,幫助家庭與外部保持信息交流暢通,優(yōu)化人們的生活方式,幫助人們有效的安排時(shí)間,增強(qiáng)家居生活的安全性,并實(shí)現(xiàn)有效的節(jié)能管理。因此,智能家居在人們生活中獲得了越來(lái)越廣泛的應(yīng)用。本文以賓館客房的智能控制和管理為例,介紹基于At 89S52單片機(jī)的智能客房控制系統(tǒng)的設(shè)計(jì)。第1章AT89S52概述 AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。AT89S52使用

4、Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,AT89S52擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。1.1 AT89S52功能AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇

5、節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。1.2 AT89S52 特性· 兼容MCS-51指令系統(tǒng)· 8k可反復(fù)擦寫(xiě)(>1000次)ISP Flash ROM · 1000次擦寫(xiě)周期· 32個(gè)雙向I/O口· 工作電壓· 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器· 時(shí)鐘頻率0-33MHz · 全雙工UART串行中斷口· 128x8bit內(nèi)部RAM · 低功耗空閑和省

6、電模式· 中斷喚醒省電模式· 3級(jí)加密位· 看門(mén)狗(WDT)電路· 軟件設(shè)置空閑和省電功能· 靈活的ISP字節(jié)和分頁(yè)編程· 雙數(shù)據(jù)寄存器指針第二章 客房控制器的系統(tǒng)結(jié)構(gòu)2.1 客房控制器的系統(tǒng)結(jié)構(gòu)    與傳統(tǒng)客房相比,現(xiàn)代客房在室內(nèi)裝備上已經(jīng)有了很大的改進(jìn),主要體現(xiàn)了智能、舒適、高效、節(jié)能和便利的特點(diǎn)??头靠刂葡到y(tǒng)的總體結(jié)構(gòu)如圖1所示,主控制器需要對(duì)客房?jī)?nèi)的廊燈、夜燈、房燈、吧燈以及清理、勿擾、門(mén)鈴等開(kāi)關(guān)進(jìn)行控制和管理。而總制開(kāi)關(guān)、節(jié)電開(kāi)關(guān)用于客房的節(jié)能控制,求救按鈕、門(mén)磁開(kāi)關(guān)等則是基于安全方面的考慮。

7、主控制器通過(guò)對(duì)風(fēng)機(jī)和電磁閥的控制,可以調(diào)節(jié)客房的溫度。溫度控制器主要用于時(shí)鐘、日歷、風(fēng)機(jī)狀態(tài)的顯示和客房溫度的設(shè)定。主控制器通過(guò)RS485總線與溫控器進(jìn)行通信,通過(guò)現(xiàn)場(chǎng)總線與酒店的服務(wù)臺(tái)及工程部的管理服務(wù)器進(jìn)行通信。     智能客房控制器在安全、舒適、節(jié)能和強(qiáng)化功能方面具有以下特點(diǎn):(1)不僅實(shí)現(xiàn)了對(duì)客房?jī)?nèi)的燈具、背景音樂(lè)、空調(diào)、服務(wù)等常規(guī)設(shè)施的控制,還有緊急救助、防盜報(bào)警等監(jiān)控功能。此外,客房控制器通過(guò)現(xiàn)場(chǎng)總線將客房狀態(tài)傳送到樓層服務(wù)臺(tái)、總臺(tái)等,從而實(shí)現(xiàn)了客房的遠(yuǎn)程控制和管理。  (2 ) 強(qiáng)弱電分開(kāi),所有的強(qiáng)電控制都是由12V弱

8、電繼電器的控制來(lái)實(shí)現(xiàn),安全性好。 (3) 用插卡節(jié)電開(kāi)關(guān)控制客房總電源,客人進(jìn)入賓館客房時(shí)插卡取電,客人離開(kāi)時(shí)拔卡斷電;設(shè)置“總制”鍵,客人入睡前,按此鍵后系統(tǒng)便進(jìn)入低能耗狀態(tài);客房室內(nèi)溫度控制采用模糊控制,大大降低賓館中央空調(diào)的能耗。   (4)  客房有人時(shí),客房溫度由客人通過(guò)溫度控制器設(shè)定,由主控制器通過(guò)對(duì)風(fēng)機(jī)、電磁閥的控制來(lái)完成;而無(wú)人或待租時(shí),總臺(tái)向主控制器發(fā)送命令,使空調(diào)處于節(jié)能狀態(tài)。2.2 控制器硬件電路設(shè)計(jì)    為降低成本、小體積和滿足控制功能,主控制器選用技術(shù)成熟、性價(jià)比高的AT89S

9、52單片機(jī)。 AT89S52內(nèi)置在線可擦除編程8KB FLASH,不需要擴(kuò)展存儲(chǔ)器;具有32個(gè)可編程I/O口;而且采用了ISP在線編程,提高了調(diào)試效率, 減少了傳統(tǒng)燒寫(xiě)器燒寫(xiě)芯片時(shí)對(duì)芯片造成的損耗。2.3  I/O輸入電路設(shè)計(jì)    客房控制系統(tǒng)的最大特點(diǎn)是輸入、輸出開(kāi)關(guān)量多,主控制器單片機(jī)已有的I/O口不能滿足使用需求,需要進(jìn)行擴(kuò)展。為降低成本,采用簡(jiǎn)單的TTL電路擴(kuò)展I/O口,即單片機(jī)的P2.0、P2.1口地址信號(hào)作為譯碼器74LS139的輸入信號(hào),74LS139的輸出信號(hào)作為總線驅(qū)動(dòng)器74LS244的片選信號(hào),74LS244的8個(gè)輸出腳分別接單片機(jī)

10、P0口的8位,通過(guò)片選74LS244單片機(jī)即可把74LS244輸入腳上的數(shù)據(jù)讀入,其I/O輸入接口電路如圖2所示。IG01IG08是一組弱電端子輸入信號(hào)線,它們分別和8個(gè)弱電開(kāi)關(guān)相連。由于系統(tǒng)有24個(gè)開(kāi)關(guān)輸入量,因此,電路共用了3個(gè)74LS244,當(dāng)片選信號(hào)CS1CS3中有一個(gè)有效時(shí),其對(duì)應(yīng)74LS244上的數(shù)據(jù)就被讀入到單片機(jī)中。圖3  I/O輸出接口電路原理圖為保證用電安全,智能客房控制系統(tǒng)的輸出電路采用了弱電控制強(qiáng)電的方式,即用12V繼電器控制220V交流電。輸出接口電路也采用TTL電路擴(kuò)展I/O口,即單片機(jī)的P2.2、P2.3口地址信號(hào)作為譯碼器74LS139的輸入信號(hào),74

11、LS139的輸出信號(hào)作為74LS273鎖存器的片選信號(hào);74LS273鎖存器的8個(gè)輸入腳分別接單片機(jī)P0口的8位,其輸出經(jīng)達(dá)林頓功率驅(qū)動(dòng)芯片ULN2803,即可控制繼電器;I/O輸出接口電路如圖3所示。由于系統(tǒng)有24個(gè)開(kāi)關(guān)輸出量,因此,電路共用了3個(gè)74LS273和3個(gè)ULN2803,當(dāng)片選信號(hào)CS4CS6中有一個(gè)有效時(shí),其對(duì)應(yīng)74LS273上的數(shù)據(jù)即可輸出到繼電器。    控制器的其它電路主要還有,為了在系統(tǒng)出現(xiàn)故障或程序跑飛的情況下,控制器能夠自動(dòng)恢復(fù)正常工作,采用MAX813L芯片設(shè)計(jì)了看門(mén)狗監(jiān)測(cè)和系統(tǒng)復(fù)位電路;為了實(shí)現(xiàn)主控制器與總臺(tái)及溫控器的通信,采用MA

12、X1487E芯片設(shè)計(jì)了RS485通信接口電路。第三章 AT89S52控制的電路3.1AT89S52控制LED顯示時(shí)間時(shí)間萬(wàn)年歷程序程序 2009-05-28 08:56:40 閱讀15 評(píng)論0   字號(hào):大中小 訂閱/#include<windows.h>#include<iostream>#include<string>#include<ctime>#include<windows.h>      int hour,min,sec; 

13、      /定義整型時(shí)分秒。int year,month,day;       /定義整型年月日。void print();void printhour();       /函數(shù)調(diào)用。void printmin();void printsec();void printyear();void printmonth();void printday();void progress();using na

14、mespace std;void main() string password; cout<<"-"<<endl; cout<<"歡迎使用時(shí)鐘萬(wàn)年歷軟件"<<endl; /輸出提示。 cout<<"請(qǐng)根據(jù)提示完成時(shí)間設(shè)置"<<endl; cout<<"初始密碼:wang:"<<endl; cout<<"-"<<

15、;endl; cout<<"+"<<endl; cout<<"+設(shè)置時(shí)間+"<<endl;     /初始化時(shí)間。 cout<<"+"<<endl; printhour();       /設(shè)置小時(shí)。 printmin();      &

16、#160; /設(shè)置分鐘。 printsec();        /設(shè)置秒鐘。 printyear();       /設(shè)置年份。 printmonth();       /設(shè)置月份。 printday();        /設(shè)置號(hào)數(shù)。 co

17、ut<<"請(qǐng)輸入密碼:"<<endl; cin>>password; while(password="wang")        progress();       /函數(shù)主要執(zhí)行過(guò)程。  system("cls");      /清屏函數(shù)。 

18、/以下是在程序中調(diào)用的函數(shù)。void print() cout<<"設(shè)置時(shí)間格式不正確"<<endl;void printhour() cout<<"輸入小時(shí)數(shù):"<<endl; cin>>hour; while(hour>=24|hour<0)    print();    /提示輸入時(shí)間不正確。   cin>>hour; void

19、 printmin() cout<<"輸入分鐘數(shù):"<<endl; cin>>min; while(min>=60|min<0)   print();    /提示輸入時(shí)間不正確。  cin>>min; void printsec() cout<<"輸入秒鐘數(shù):"<<endl; cin>>sec; wh

20、ile(sec>=60|sec<0)   print();    /提示輸入時(shí)間不正確。  cin>>sec; void printyear() cout<<"輸入年份:"<<endl; cin>>year; void printmonth() cout<<"輸入月份:"<<endl; cin>>month;&#

21、160;while(month>12|month<0)   print();    /提示輸入時(shí)間不正確。  cin>>month; void printday() cout<<"輸入號(hào)數(shù):"<<endl; cin>>day; while(day>30|day<0)   print();    /提示輸入時(shí)

22、間不正確。  cin>>day; void progress() /sec+; cout<<"-"<<endl; cout<<"北京時(shí)間:"<<endl; cout<<"-"<<endl; cout<<"YY:"<<"MM:"<<"DD:"<<endl; /

23、輸出年月日的標(biāo)題。 /cout<<year<<":"<<month<<":"<<day<<endl; cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; cout<<"_"<<endl; cout<<"

24、;HH:"<<"MM:"<<"SS:"<<endl; /輸出時(shí)分秒的標(biāo)題。 /cout<<hour<<":"<<min<<":"<<sec<<endl; cout<<hour<<"時(shí)"<<min<<"分"<<sec<<"秒"<<

25、endl; cout<<"_"<<endl; Sleep(1000);      /注意理解為什么要把延時(shí)放在這兒。 sec+;        /延時(shí)以后秒鐘加1. /為什么上面兩行的Sleep(1000);和sec+;要放在此處,而不放在下面。 /首先設(shè)置時(shí)間以后得顯示當(dāng)前設(shè)置時(shí)間,然后再延時(shí)一秒以后,秒鐘 /才加1,如果把sec+;放在執(zhí)行顯示過(guò)程的

26、前面,則顯示結(jié)果要比設(shè)置 /的時(shí)間晚一秒。注意此處的用意。 if(sec=60)         sec=0;      /當(dāng)增加到60,清零。     min+;      /同時(shí)分加1。  /Sleep(1000);     /延時(shí)1秒。 if(

27、min=60)            min=0;      /fen增加到60則清零。  hour+;      /hour加1。  if(hour=24)           hour=0;   

28、   /hour增加到24則清零。  sec=0;      /sec清零。  min=0;      /min清零。  day+;      /hour增加到24則day加1。   if(day=31)         

29、;   day=1;  month+;      /day增加到31(30號(hào)那一天完了以后)則month加1。   if(month=13)           month=1;  year+;      /month增加到13(12月那一月完了以后)則year加1。 

30、 3.2 4X4矩陣式鍵盤(pán)按鍵3.2.1試驗(yàn)任務(wù)如圖 4.14.2 所示,用 AT89S51 的并行口 P1 接 4 × 4 矩陣鍵盤(pán),以 P1.0 P1.3 作輸入 線 ,以 P1.4 P1.7 作輸出線;在數(shù)碼管上顯示每個(gè)按鍵的 “ 0 F ” 序號(hào)。對(duì)應(yīng)的按鍵的序號(hào)排列如圖 4.14.1 所示3.2.2 硬件電路原理圖 系統(tǒng)板上硬件連線( 1 把 “ 單片機(jī)系統(tǒng) “ 區(qū)域中的 P3.0 P3.7 端口用 8 芯排線連接到 “ 4X4 行列式鍵盤(pán) ”區(qū)域中的 C1 C4 R1 R4 端口上;( 2 把 “ 單片機(jī)系統(tǒng) ” 區(qū)域中的 P0.0/AD0 P0.7/AD7 端

31、口用 8 芯排線連接到 “ 四路靜 態(tài)數(shù)碼顯示模塊 ” 區(qū)域中的任一個(gè) a h 端口上;要求: P0.0/AD0 對(duì)應(yīng)著 a , P0.1/AD 1對(duì)應(yīng)著 b , , P0.7/AD7 對(duì)應(yīng)著 h 。3.2.4 程序設(shè)計(jì)內(nèi)容( 1 4 × 4 矩陣鍵盤(pán)識(shí)別處理( 2 每個(gè)按鍵有它的行值和列值 ,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和 CPU 通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量 “ 0 ” 和 “ 1 ” ,開(kāi)關(guān)的一端(列線)通過(guò)電阻接 V CC ,而接地是通過(guò)程序輸出數(shù)字 “ 0 ” 實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪 一個(gè)鍵

32、按下,鍵的功能是什么;還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。3.2.5 程序框圖3.2.6 C 語(yǔ)言源程序#include <AT89S52.H>unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char temp;unsigned char key;unsig

33、ned char i,j;void main(void)while(1)P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=

34、10;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0fP3=0xff;P3_5=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:k

35、ey=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp & 0x

36、0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f;if (temp!=0

37、x0f)for(i=50;i>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp

38、=temp & 0x0f;3.3 LED點(diǎn)陣顯示3.3.1 8X8 LED點(diǎn)陣顯示驅(qū)動(dòng)技術(shù)原理圖3.3.2 16×16點(diǎn)陣LED顯示漢字        Proteus中點(diǎn)陣LED最大為8×8點(diǎn)陣,不能用來(lái)顯示漢字,而四片接在一起又因?yàn)橐_太近,無(wú)法接線。然而,是不是這樣就意味著不能仿真“點(diǎn)陣漢字”了呢?筆者經(jīng)過(guò)研究,將庫(kù)里的8×8點(diǎn)陣LED修改后,將四片8×8點(diǎn)陣LED合并成一體,就成了16×16的點(diǎn)陣LED了。    該LED的特點(diǎn)是:

39、共陰、逐行掃描、低在前高位在后,上面的引腳為數(shù)據(jù)口,下面的引腳為行選引腳,低電平有效。    電路由AT89C52、4片74HC138、4片8×8點(diǎn)陣組成。74HC138用于選擇行,4片74HC138的有效順序?yàn)椋鹤笊?,右上,左下,右下。P0口作為數(shù)據(jù)口,4片74HC138列引腳都接到P0口。以下程序在16×16點(diǎn)陣LED上依次顯示“梅川酷子”四個(gè)字,分別用正向顯示和反向顯示,間隔兩秒鐘變換一次,電路圖和效果圖下圖所示。 AT89c52晶振頻率為24MHz,用T0定時(shí),改變變量flag值,從而讓程序確定顯示哪個(gè)漢字和顯示方式(正向or反向)。i

40、 nclude <atmelregx52.h>#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;/*flag變量MSB 7   6   5   4   3   2   1   0    LSB     × ×  

41、;        × Bit51,Bit4=0 時(shí),負(fù)向顯示Bit50,Bit4=1 時(shí),負(fù)向顯示Bit2.074HC138的片選信號(hào)*/int8 n;int8 code table32=0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x12,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x10,0x08,0x14,0x08,0x08,/*&quo

42、t;梅",0*/0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x21,0x04,0x20,0x02,0x00,/*"川",1*/0x00,0x08,0xFE,0x08,0x28,0x0A,0x28,0x7E,0xFE,0x0A,0xAA,0x09,0xAA,0xFF,0xEA,0x00,0x86,0x00,0x82,0x7E,0xFE,0x4

43、2,0x82,0x42,0x82,0x42,0xFE,0x7E,0x82,0x42,0x00,0x00,/*"酷",2*/0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x41,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x01,0x80,0x00/*"子",3*/;void delay(void);void main(void)int8 i;int8 j;int8

44、 index;flag=0x10;n=0;/定時(shí)器T0初始化TMOD=0x01;TH0=0xb1;TL0=0xe0;ET0=1;EA=1;TR0=1;while(1)index=flag&0x03;if(flag&0x30)=0x10)   /正向顯示        for(i=0;i<8;i+)      /顯示上半屏         

45、0; P0=tableindex2*i;            /左上            P2=i|0x08;                      delay();  &

46、#160;       P0=tableindex2*i+1;           /右上         P2=i|0x10;         delay();           

47、60;      for(i=8;i<16;i+)      /顯示下半屏         P0=tableindex2*i;         /左下        P2=(i-8)|0x20;        &#

48、160;             delay();                         P0=tableindex2*i+1;          /右下  &

49、#160;     P2=(i-8)|0x40;             delay();            if(flag&0x30)=0x20)   /反向顯示     for(i=0;i<8;i+)       &#

50、160;        P0=(tableindex2*i);          /左上          P2=i|0x08;                       del

51、ay();         P0=(tableindex2*i+1);           /右上         P2=i|0x10;       delay();             

52、;       for(i=8;i<16;i+)               P0=(tableindex2*i);             /左下         P2=(i-8)|0x20;   &#

53、160;                delay();        P0=(tableindex2*i+1);         /右下        P2=(i-8)|0x40;    

54、       delay();           void delay(void)int16 i;for(i=0;i<50;i+);void timer0() interrupt 1 using 3   TF0=0;TH0=0xb1;TL0=0xe0;        /10ms中斷一次if(n<200)    n+

55、;else /2秒改變一次    switch(flag)          case 0x10:          flag=0x11;/下次顯示正向“川”         break;             cas

56、e 0x11:          flag=0x12;/下次顯示正向“酷”         break;                case 0x12:           flag=0x13;/下次顯示正

57、向“子”           break;                      case 0x13:           flag=0x20;/下次顯示負(fù)向“川”          

58、break;                    case 0x20:            flag=0x21;/下次顯示負(fù)向“梅”            break;         

59、      case 0x21:           flag=0x22;/下次顯示負(fù)向“酷”           break;                   case 0x22:      &

60、#160;    flag=0x23;/下次顯示負(fù)向“子”           break;                      case 0x23:           flag=0x10;/下次顯示正向“梅”  

61、;         break;                     n=0;3.4紅外線發(fā)射電路的設(shè)計(jì)要將信號(hào)以紅外線的方式發(fā)射出去,首先要把脈沖信號(hào)進(jìn)行調(diào)制,而電路中的信號(hào)往往比較小,不能驅(qū)動(dòng)負(fù)載。所以要通過(guò)放大電路將信號(hào)放大,通過(guò)紅外線發(fā)光二極管發(fā)射出去。發(fā)射器件和放大電路是發(fā)射中必不可少的。3.4.1.紅外線傳感器要將紅外線發(fā)射出去,發(fā)射器件是必不可少的,則我們就要對(duì)紅外線的發(fā)射器件進(jìn)行選擇,要能夠發(fā)射比自然發(fā)射的紅外線有更強(qiáng)的輻射強(qiáng)度。而要對(duì)信號(hào)接收器件,則要有較強(qiáng)的接收能力,它能將接收的紅外線轉(zhuǎn)換成足夠強(qiáng)的電信

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論