基于PIC單片機的紅外遙控設計_第1頁
基于PIC單片機的紅外遙控設計_第2頁
基于PIC單片機的紅外遙控設計_第3頁
基于PIC單片機的紅外遙控設計_第4頁
基于PIC單片機的紅外遙控設計_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、XXXX大學本科畢業設計基于PIC單片機的紅外遙控設計學生姓名 所 在 系專業名稱班 級學 號指導教師XXX大學教務處年 月基于PIC單片機的紅外遙控設計學生: 指導教師:內容提要:遙控器是現代電子控制系統的重要部件。可以利用無線電波、可見光、紅外光、超聲波作為傳輸介質遠距離操控電子設備。由于其功耗低、可靠性高和互相干擾小等優點,已在現實生活中得到了廣泛應用。在目前的家用電器中,如電視機、家庭影院和數字音像設備中,大多都采用了紅外線遙控電路。而這套“基于PIC單片機的紅外遙控設計”則是以Microchip公司生產的16F877a芯片為模版,價格低廉,電路結構簡單,據此本設計提出了一種簡單易行的

2、紅外遙控器的設計。關鍵詞:PIC單片機 紅外遙控 簡單易行PIC MCU-based infrared remote control designAbstract:The remote control of modern electronic control systems are an important component. Can make use of radio waves, visible light, infrared light, ultrasonic remote control as the transmission medium of electronic equipme

3、nt. Because of its low power consumption, high reliability, and interfere with each other the advantages of small, have been in real life has been widely applied. In the current household appliances such as televisions, home theater and digital audio-visual equipment, most of them have adopted the i

4、nfrared remote control circuit. This set of "PIC-based single-chip design of the infrared remote control" is based on Microchip produced chips for 16F877a template, cheap, simple circuit structure, whereby the design of a simple infrared remote control design. Key words:PIC Single-chip inf

5、rared remote control is simple一、前言(一)開發的背景自從1800年英國天文學家赫歇爾發現紅外輻射至今,紅外技術的發展經歷了將近兩個世紀。從那時開始,紅外輻射和紅外元件、部件的科學研究逐步發展,但發展比較緩慢,直到1940年前后才真正出現現代的紅外技術。隨著科技的不斷發展,各系統間的聯系越來越緊密,對各系統間的數據傳遞的要求也越來越高,但是外部設備越多,連接用的線也越多,短距離聯接的發展必然要走向無線聯機,目前主要的短距離無線連接技術有紅外通信技術和藍牙技術,前者采用紅外線,后者采用無線電波作為信息傳播的媒介。紅外無線通訊的技術與藍牙相比較,紅外技術具有比較成熟,

6、接口電路簡單,成本低等諸多優點。紅外遙控是通過紅外設備將單片機與外部設備聯系起來進行通訊,實現系統間的無線通訊。自從紅外技術出現以來,美國、英國、前蘇聯等國競相發展。特別是美國,大力研究紅外技術在軍事方面的應用。目前,美國將紅外技術應用于單兵裝備、裝甲車輛、航空和航天的偵察監視、預警、跟蹤以及武器制導等各個領域。 1993年,由二十多個大廠商發起成立了紅外數據協會(IrDA),統一了紅外通訊的標準,這就是目前被廣泛使用的IrDA紅外數據通訊協議及規范。IrDA專司制訂和推進能共同使用的低成本紅外數據互連標準,支持點對點的工作模式。由于標準的統一和應用的廣泛,更多的公司開始開發和生產IrDA模塊

7、,技術的進步也使得IrDA模塊的集成越來越高,體積也越來越小。IrDA1.0可支持最高115.2kbps的通信速率,而IrDA1.1可以支持的通信速率達到4Mbps。本課題是專業知識綜合用于前沿科技的一個嘗試,本人堅信此次研究和設計的成果具有一定的現實意義。(二)開發的目標本系統的基本任務和目標就是,通過紅外發射電路的設計,實現單片機利用紅外信號,通過發射電路與外界聯系,實現對外的遙控控制,其中包含了輸入設備紅外鍵盤,和紅外傳感器的使用。借助軟件部分的設計,實現系統的總體功能,紅外遙控。總的說來,完成此設計主要有四個模塊:·發射及接收電路的設計;·編碼及解碼程序;·

8、;紅外傳感器的選取和使用;·紅外鍵盤的設計。(三)開發的思路 設計基于單片機的紅外遙控,我們要從發射接收電路,編碼解碼,傳感器,紅外鍵盤幾個方向入手。在軟件部分中,我們主要是先要畫好系統原理圖,還有明確系統各部分功能,發射接收電路的設計,編碼及解碼程序,在硬件部分中,主要是發射和接收電路的硬件設計,紅外傳感器的使用,以及紅外鍵盤的設計。二、設計基礎(一)PIC單片機的介紹1PIC單片機常識據統計,我國的單片機年容量已達13億片,且每年以大約16%的速度增長,但相對于世界市場我國的占有率還不到1%。這說明單片機應用在我國才剛剛起步,有著廣闊的前景。培養單片機應用人才,特別是在工程技術人

9、員中普及單片機知識有著重要的現實意義。當今單片機廠商琳瑯滿目,產品性能各異。針對具體情況,我們應選何種型號呢?首先,我們來弄清兩個概念:集中指令集(CISC)和精簡指令集(RISC)。采用CISC結構的單片機數據線和指令線分時復用,即所謂馮.諾伊曼結構。它的指令豐富,功能較強,但取指令和取數據不能同時進行,速度受限,價格亦高。采用RISC結構的單片機數據線和指令線分離,即所謂哈佛結構。這使得取指令和取數據可同時進行,且由于一般指令線寬于數據線,使其指令較同類CISC單片機指令包含更多的處理信息,執行效率更高,速度亦更快。同時,這種單片機指令多為單字節,程序存儲器的空間利用率大大提高,有利于實現

10、超小型化。屬于CISC結構的單片機有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、臺灣Winbond(華邦)W78系列、荷蘭Pilips的PCF80C51系列等;屬于RISC結構的有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韓國三星公司的KS57C系列4位單片機、臺灣義隆的EM-78系列等。一般來說,控制關系較簡單的小家電,可以采用RISC型單片機;控制關系較復雜的場合,如通訊產品、工業控制系統應采用CISC單片機。不過,RISC單片機的迅速完善,使其佼佼者在控制關系復雜的場合也毫不遜色。根據程序存儲方式的不同

11、,單片機可分為EPROM、OTP(一次可編程)、QTP(掩膜)三種。我國一開始都采用ROMless型單片機(片內無ROM,需片外配EPROM),對單片機的普及起了很大作用,但這種強調接口的單片機無法廣泛應用,甚至走入了誤區。如單片機的應用一味強調接口,外接I/O及存儲器,便失去了單片機的特色。目前單片機大都將程序存儲體置于其內,給應用帶來了極大的方便。2PIC單片機的特點和工作原理(1)PIC最大的特點是不搞單純的功能堆積,而是從實際出發,重視產品的性能與價格比,靠發展多種型號來滿足不同層次的應用要求。就實際而言,不同的應用對單片機功能和資源的需求也是不同的。比如,一個摩托車的點火器需要一個I

12、/O較少、RAM及程序存儲空間不大、可靠性較高的小型單片機,若采用40腳且功能強大的單片機,投資大不說,使用起來也不方便。PIC系列從低到高有幾十個型號,可以滿足各種需要。其中,PIC12C508單片機僅有8個引腳,是世界上最小的單片機。(2)精簡指令使其執行效率大為提高。PIC系列8位CMOS單片機具有獨特的RISC結構,數據總線和指令總線分離的哈佛總線(Harvard)結構,使指令具有單字長的特性,且允許指令碼的位數可多于8位的數據位數,這與傳統的采用CISC結構的8位單片機相比,可以達到2:1的代碼壓縮,速度提高4倍。(3)產品上市零等待(Zero time to market)。采用P

13、IC的低價OTP型芯片,可使單片機在其應用程序開發完成后立刻使該產品上市。(4)PIC有優越開發環境。OTP單片機開發系統的實時性是一個重要的指標,象普通51單片機的開發系統大都采用高檔型號仿真低檔型號,其實時性不盡理想。PIC在推出一款新型號的同時推出相應的仿真芯片,所有的開發系統由專用的仿真芯片支持,實時性非常好。就我個人的經驗看,還沒有出現過仿真結果與實際運行結果不同的情況。(5)其引腳具有防瞬態能力,通過限流電阻可以接至220V交流電源,可直接與繼電器控制電路相連,無須光電耦合器隔離,給應用帶來極大方便。(6)徹底的保密性。PIC以保密熔絲來保護代碼,用戶在燒入代碼后熔斷熔絲,別人再也

14、無法讀出,除非恢復熔絲。目前,PIC采用熔絲深埋工藝,恢復熔絲的可能性極小。(7)自帶看門狗定時器,可以用來提高程序運行的可靠性。(8)睡眠和低功耗模式。雖然PIC在這方面已不能與新型的TIMSP430相比,但在大多數應用場合還是能滿足需要的。3PIC單片機的分類初檔8位單片機:PIC12C5XXX16C5X系列PIC16C5X系列是最早在市場上得到發展的系列,因其價格較低,且有較完善的開發手段,因此在國內應用最為廣泛;而PIC12C5XX是世界第一個八腳低價位單片機可用于簡單的智能控制等一些對單片機體積要求較高的地方,前景十分廣闊。中檔8位單片機:PIC12C6XX/PIC16CXXX系列P

15、IC中檔產品是Microchip近年來重點發展的系列產品,品種最為豐富,其性能比低檔產品有所提高,增加了中斷功能,指令周期可達到200ns,帶AD,內部E2PROM數據存儲器,雙時鐘工作,比較輸出,捕捉輸入,PWM輸出,I2C和SPI接口,異步串行通訊(USART),模擬電壓比較器及LCD驅動等等,其封裝從8腳到68腳,可用于高、中、低檔的電子產品設計中,價格適中,廣泛應用在各類電子產品中高檔8位單片機:PIC17CXX系列PIC17CXX是適合高級復雜系統開發的系列產品,其性能在中檔位單片機的基礎上增加了硬件乘法器,指令周期可達成160ns,它是目前世界上8位單片機中性價比最高的機種,可用于

16、高、中檔產品的開發,如馬達控制(二)相關背景知識 116F877a基本知識(1)16F877a的基本架構單片機是中央處理單元(CPU),存儲器(Memory)及輸入/輸出單元三大部分組成。其中CPU可分為兩部分,即算術邏輯單元(ALU)及控制單元(CU),CPU通過總線(BUS)執行程式碼的Fetch、Decode、算術邏輯運算及讀寫時鐘信號的控制。存儲器單元提供存放程序與資料的空間,包含只讀存儲器(ROM)和隨機存取存儲器(RAM)。而輸入/輸出單元提供與外界周邊設備或元件的管道 ,如圖一所示。 圖1 單片機基本架構(2)PIC16F877a的特性說明如下:采用高性能的RISC CPU核心8

17、位微電腦控制芯片8K×14Flash程序存儲器5組I/O端口(A,B,C,D,E)368Bytes數據存儲器及256Bytes的EEPROM數據存儲器2組8位定時器TMR0,TMR2,及1組16位定時器TMR1支持14個中斷處理(3)PIC16F877a單片機核心架構PIC16F877a單片機是RISC架構單片機,它所采用的Harvard結構和過去一般單片機所采用的Von Neumann結構最大的差異在于總線的改變,如圖2所示。Von Neumann結構是傳統的單片機結構,程序存儲器和數據存儲器是在同一個存儲體區塊,存儲器與CPU之間只使用單一總線,不論是對程序存儲器或數據存儲器作存

18、取都是使用此總線,因此要完成一個指令通常必須依序使用總線,從指令的提取、解碼、資料讀取、執行到資料的寫入,最后的結果是一個指令大都需要等待好幾個周期才能完成。Harvard結構改善了這樣的缺點,主要是程序存儲器和數據存儲器使用不同的存儲體區塊,而且也有各自獨立的總線,這樣的做法就大大改善了指令執行的頻寬,兩條總線可以同時工作,最大的優點是當一個指令在執行時,已經可以去抓下一個指令,因此對于運作的效率會有顯著的提升。 圖2 Harvard架構與Von Neumann架構比較(4)存儲器基本知識 PIC16F877a單片機共有3個存儲器塊,它們是程序存儲器,數據存儲器,EEPROM數據存儲器。程序

19、存儲器和數據存儲器有它自己的總線,各自工作而不受對方影響。 PIC16F877a有一個13位程序計數器它的尋址能力達8K×14程序存儲器空間,而且PIC16F877a的Flash存儲器空間正好是8K×14,當尋址超出上面可執行的地址范圍時將導致回繞。復位向量在0000h中,而中斷向量在0004h中。 數據存儲器被分為4個體,它包括通用寄存器(GPR)和特殊功能寄存器(FSR),位 RP0,RP1是塊抉擇位。RP1 RP0 STATUS6:5=0 0 體0=01 體1 =10 體2 =11 體3 每個塊的范圍達到7Fh(128bit),每個塊的較低位存儲單元保存SFRS,在S

20、FRS上面是GPRS作為靜態RAM操作的。所有執行的塊包括SFR。一些經常使用的SFRS可以從一個體鏡像到另一個體來減少代碼和實現快速訪問。 在實際應用編程中會經常使用到兩個比較特殊的寄存器:INDF和FSR。它們是實現間接尋址所必需的兩個寄存器。位于RAM數據存儲器的的最頂端、地址碼最小的INDF寄存器,它雖有地址編碼,但其實不是一個物理上的寄存器。間接尋址通過使用INDF寄存器而成為可能。任何使用INDF寄存器的指令其實是通過文件選擇寄存器FSR來訪問所指向的寄存器。在PIC16F877a中所采用的這種獨特而巧妙的構想,可以使指令集得到很大程度的精簡。 電源控制寄存器PCON電源控制寄存器

21、的內容包括2個有效位,用其中一個來記錄和區分是否發生了上電復位、外部引腳輸入低電平引起的人工復位、還是看門狗超時溢出復位。在本系統的設計中就會用到該寄存器中的位進行判斷進入哪個程序模塊。 電源上電復位標志位 =1 沒有發生上電復位 =0 發生了上電復位。當發生上電復位之后,應該用軟件及時將其置1,以便下次利用該比特來判斷是否發生了電源上電復位。2.FLASH程序存儲器的背景知識 存儲器是任何計算機系統都不可缺少的一類重要的外圍器件或部件。在計算機系統中應用的存儲器有外部存儲器(又叫輔助存儲器)和內部存儲器(又叫主存儲器)之分。外部存儲器有:磁帶存儲器(多用于大型計算機)、軟磁盤存儲器、硬磁盤存

22、儲器、只讀光盤存儲器、可讀寫光盤存儲器、卡式存儲器(例如IC卡)等;內部存儲器目前都用半導體存儲器。而常見的半導體存儲器器件分為RAM、ROM和NVRAM,而它們往下又細分為多個分支,FLASH程序存儲器就是ROM中的一種,其內容斷電后也不丟失,可反復檫寫多次,并且容易實現在線檫寫,其檫寫速度基本同于EEPROM,但是其制造成本更低、芯片面積更小。適應于不僅要求內容可以修改而掉電后又不丟失,而且又要求成本更低、存儲容量更大的電器設備中。雖然EEPROM和FLASH存儲器都可以多次電檫和電寫,但EEPROM的讀寫次數要高的多。因此,FLASH存儲器適合用來燒寫那些改動不太頻繁的用戶程序或參數,有

23、利于降低單片機成本。PIC16F87X單片機內部同時具備兩種電檫和電寫存儲器,分別是用于存儲數據的EEPROM和用于固化用戶程序的FLASH,它們都能夠在適合PIC單片機正常工作的VDD電壓范圍內實現讀寫操作。也就是說,單片機內部自帶電荷泵升壓電路,即使是燒寫操作也不需要外加高電壓。FLASH程序存儲器的讀寫操作是以14位的單指令字節為單位進行的,對于其的寫操作實際是對某一指定單元進行的“先檫除,后寫入”的操作。對于程序存儲器的讀寫操作允許進行“校驗和”的計算,以便提高可靠性。燒寫到FLASH程序存儲器中的內容,不一定都是有效指令代碼,也可以利用這個14位寬的存儲器,存放一些固定參數等。當CP

24、U執行到存放著這些無效指令代碼的區域是,產生與執行空操作指令NOP同樣的結果。但是對于FLASH程序存儲器進行單個指令字節的寫入操作,將會暫停其他指令的執行,直到寫操作完成,并在寫操作進行期間,不能對程序存儲器的任何單元進行取指操作,即在此期間不能執行任何指令。原因是,FLASH是一個整體,當對其任何一個單元進行燒寫操作時,升壓電荷泵啟動工作,對FLASH整體施加了高電壓,在這個不適合FLASH正常讀取操作的高電壓存續期間,FLASH暫時失去了程序存儲器的角色。總之,FLASH不能同時扮演“被燒寫存儲器”和“取指令存儲器”雙重角色。為了解決這個矛盾,在PIC16F87X系列單片機中采用的解決方

25、案是,作為一個整體的FLASH程序存儲器,在對一個單元進行燒寫并且電源自動切換到電荷泵供電時,CPU自動停頓而進入等待狀態。在一次燒寫操作完畢,FLASH工作電壓再自動切換到正常值時,CPU才繼續執行FLASH中的程序。對于PIC16F87X,在燒寫FLASH時,雖然不能執行FLASH中的指令,但是系統時鐘仍然振蕩,片內各個外圍模塊仍然正常工作,可以檢測到中斷事件的發生,并進行排隊等待,直到寫操作完成之后才會得到響應。具體處理過程是,一旦寫操作完成,如果中斷源對應的各個中斷屏蔽位都是開放的,并且該中斷源的中斷請求發生在寫操作期間,那么,在執行完預先抓取到指令寄存器中的指令之后,將立刻轉向中斷矢

26、量地址去執行中斷服務子程序。FLASH不是直接影射到RAM存儲器地址空間的,也就是說,它并不與RAM統一編址。因此,FLASH兩者都不能被用戶程序直接訪問,而只能通過專用寄存器進行間接的訪問。為了達到間接訪問它們的目的,額外增加了6個特殊功能寄存器:EEADR、EEADRH、EEDATA、EEDATH、EECON1、EECON2。FLASH程序存儲器允許以指令字節(14位)進行讀寫操作,但是寫操作會暫停CPU對FLASH區中指令的執行,直到寫操作完成。當CPU間接訪問FLASH程序存儲器時,EEADRA和EEADRH一起用來存放指向某一單元的13位(或12位或11位)地址碼,EEDATA和EE

27、DATH一起用來存放即將被寫入或讀出的14位數據(實際是用戶程序的指令代碼)。依據內部配置FLASH的容量不同,又可以分為以下3種情況。 對于PIC16F876877而言,配置的FLASH容量8K×14。用到了EEADR和EEADRH寄存器對的低13位,213 =8K。雖然最高3位沒有用到,但是必須將這幾位清0。原因是,當EEADR和EEADRH內部16位地址碼超出8K時,尋址范圍并不會繞回到FLASH的低地址單元上。例如,當EEADR和EEADRH內部16位地址碼為2000H時,尋址到的單元并不是0000H號單元。這樣做也便于用戶程序在PIC16F87X不同型號之間的移植和兼容。

28、對于PIC16F873874而言,配置的FLASH容量為4K×14,為PIC16F876877的一半。所以僅用到了EEADR和EEADRH內部16位地址碼的低12位,212=4K。雖然最高4位沒有用到,但是必須將這4位清0,理由同上。 對于PIC16F870871872而言,配置的FLASH容量僅為2K×14,為PIC16F876877的1/4。所以,僅用到了EEADR和EEADRH內部16位地址碼的低11位,211=2K。雖然最高5位沒有用到,但是必須要將這5位清0,理由同上。 3.片內FLASH程序存儲器結構和操作原理圖3 FLASH數據存儲器結構圖PIC16F877a

29、單片機內部,用于固化用戶程序的FLASH 。也把它當作一個外圍模塊來看待,對于它的操作與操作EEPROM數據存儲器也基本相同,只是其數據寬度和地址寬度都需要增加,因此,地址寄存器和數據寄存器都增加到了一對。FLASH與單片機內部總線之間,利用地址寄存器對EEADR:EEADRH和數據寄存器對EEDATA:EEDATH,作為用戶程序與FLASH存儲器打交道的對話窗口。從圖中可以發現,以上述4個寄存器為界,其左邊,在工作寄存器W和4個寄存器之間經過內部數據總線進行的是數據傳送,是由CPU執行用戶程序分4次來完成的;而右邊,在4個寄存器與FLASH之間的數據傳送則是靠硬件自動實現的。單片機向FLAS

30、H程序存儲器燒寫的程序代碼或數據,常常是最先來自于單片機外部,方法是可以經過端口模塊(如USART、SPI、I2C等),與外界進行通信并獲取程序代碼或數據,然后寫入FLASH。燒寫FLASH與向EEPROM中燒寫數據的操作過程相比,主要的不同之處有:地址碼有13位、12位或11位(分別對應876877、873874和872871870),需要2個地址寄存器并行工作;數據有14位,也需要2個數據寄存器并行工作。對于以FLASH為對象的燒寫操作,與CPU以FLASH為指令來源的程序執行,兩種操作行為之間存在著互斥關系。也就是說,這兩種操作絕對不能發生在同一時刻,其中的道理前面分析過。在對于FLAS

31、H寫操作期間,系統時鐘繼續振蕩,所有外設模塊繼續工作,如果中斷處于使能狀態,發生的中斷請求將排隊等候。一旦寫操作完成,CPU將繼續執行被中止的程序。能否燒寫FLASH,還與系統配置字的WRT位有關。在用程序燒寫器經過在線串行編程(ICSP)引腳,對單片機進行燒寫編程時如果將WRT位清0,此后就不能再以執行用戶程序來操縱控制寄存器EECON的方式,燒寫FLASH程序存儲器,如表1所列。我們在此可以主要關注內部寫操作與WRT的對應關系。表1 內部FLASH程序存儲器的讀寫狀態表配置位FLASH程序存儲器區間內部ICSPCP1CP0WRT讀操作寫操作讀操作寫操作00X全部是不不不010未保護區間是不

32、是不保護區間是不不不011未保護區間是是是不保護區間是不不不100未保護區間是不是不保護區間是不不不101未保護區間是是是不保護區間是不不不表2.10 內部FLASH程序存儲器的讀寫狀態表(續)110全部是不是是111全部是是是是說明: ICSP讀寫操作指借助于“程序燒寫器”經過在線串行編程(ICSP)引腳對單片機片內存儲器進行讀寫操作; 內部讀寫操作以執行用戶程序和通過操縱控制寄存器EECON的方式進行讀寫操作燒寫FLASH比燒寫EEPROM更需要慎重,以防程序失控導致死機。與向EEPROM單元中一次燒寫數據過程一樣,燒寫FLASH也需要多個步驟才能完成:應事先把長地址和長數據分別放入地址寄

33、存器對EEADRH:EEADR和數據寄存器EEDATH:EEDATA中,把EEPGD控制位置1,再將寫允許位WREN置1,最后再把寫啟動位WR置1。除了正在對于FLASH進行寫操作之外,平時WREN始終保持為0。只有在前一次的操作中把控制位WREN置1,后面的操作才能把控制位WR置1,也就是,這兩位的置1操作,絕對不能在1條指令的執行過程中同時完成,必須安排兩條指令。在一次寫操作完畢之后,WREN位由軟件清0。在一次寫操作尚未完成之前,如果用軟件清除WREN位,則不會停止本次寫操作過程。寫FLASH程序存儲器的操作步驟如下。把長地址碼分兩步送入地址寄存器對EEADRH:EEADR中,并且保證地

34、址不能超出目標單片機內部FLASH的最大地址范圍(對于870871872,2K×14的最大地址碼是07FFH;對于873874,4K×14的最大地址碼是0FFFH;對于876877,8K×14的最大地址碼是1FFFH)。 把準備燒寫的14位數據分兩步送入數據寄存器對EEDATH:EEDATA中。把控制位EEPGD置位,以指定FLASH作為燒寫對象。 把寫使能位WREN置1,允許后面進行寫操作。 清除全局中斷控制位GIE,關閉所有中斷請求。 執行專用的“5指令序列”這5條指令是固定搭配,道理同前:· 用一條移動指令把55H寫入到W;· 用一條移動

35、指令再把W中的55H轉入控制寄存器EECON2中;· 用一條移動指令把AAH寫入到W;· 用一條移動指令再把W中的AAH轉入控制寄存器EECON2中;· 操作啟動控制位WR置1。 執行2條NOP指令,給單片機足夠的進入寫操作的時間。 放開中斷總屏蔽位(如果打算利用EEIF中斷功能的話)。 清除寫允許位WREN,在本次寫操作沒有完畢之前,禁止重開新的一次寫操作。當寫操作完成時,控制位WR被硬件自動清0,中斷標志位EEIF被硬件置1(該位必須由軟件清0)。由于在對FLASH的寫操作期間,CPU不能執行任何指令,因此,就不能使用軟件查詢方式檢驗WR狀態位或EEIF標志位

36、,來判定寫操作是否完成。對于FLASH程序存儲器的寫操作是事關系統安全運行的大問題,需要謹慎對待,并且可以充分利用PIC16F87X單片機為解決此類問題而配置的一些片內軟、硬件資源,來設計一些有效的方法和措施。為了防止意外寫操作行為的發生,(意外寫操作主要是指由于某些偶然的原因單片機自發進行的、可能導致不良后果的一類寫操作行為。在某些特殊情況下單片機是不適合對FLASH程序存儲器進行寫操作的。)PIC16F87X單片機內部建立了多種保障機制。在上電復位時,寫操作使能控制位WREN自動被清0,以防止上電期間可能發生的意外寫操作。72ms的上電延時復位定時器PWRT(如果系統配置字定義為使能,即=

37、0),也可以防止上電期間可能發生的意外寫操作。可以由軟件編程的寫操作使能控制位WREN,平時保持為0,為寫操作的啟動設置了一道關卡。廠家規定的寫操作專用的“5指令序列”,如果順序顛倒、密碼出錯、不連續執行等,都不能啟動寫操作,從而有效地防止關機、電源跌落、電源受到強烈干擾、軟件失控期間,可能發生的意外寫操作。對于FLASH程序存儲器防止意外寫操作,PIC16F87X單片機內部,額外設置了更加嚴格的限制。那就是系統配置字中的CP1、CP0和WRT這3位(見表2.2或系統配置字的說明部分)。當CP1:CP0=00時,無論WRT等于何值,都會禁止任何對于FLASH存儲器的寫操作;當WRT=0時,無論

38、CP1:CP0等于何值,也都會禁止任何對于FLASH存儲器的寫操作。況且這三位不是由軟件所能改動的。一旦設置了此種寫保護功能,若想把它解除,只能對芯片全部擦除。4編碼及解碼原理(1)遙控發射器編碼發射電路編碼原理(一般家庭用的DVD、VCD、音響都使用這種編碼方式)。當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征: 采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖4所示。圖4 遙控碼的“0”和“1

39、” (注:所有波形為接收端的與發射相反)上述“0”和“1”組成的32位二進制碼經38kHz的載頻進行二次調制以提高發射效率,達到降低電源功耗的目的。然后再通過紅外發射二極管產生紅外線向空間發射,如圖5所示。圖5 遙控信號編碼波形圖UPD6121G產生的遙控編碼是連續的32位二進制碼組,其中前16位為用戶識別碼能區別不同的電器設備,防止不同機種遙控碼互相干擾。該芯片的用戶 識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。遙控器在按鍵按下后,周期性地發出同一種32位二進制碼,周期約為108ms。一組碼本身的持續時間隨它包含的二進制“

40、0”和“1”的個數不同而不同,大約在4563ms之間,圖6為發射波形圖。圖6 遙控連發信號波形當一個鍵按下超過36ms,振蕩器使芯片激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個引導碼(9ms),一個結果碼 (4.5ms),低8位地址碼(9ms18ms),高8位地址碼(9ms18ms),8位數據碼(9ms18ms)和這8位數據的反碼 (9ms18ms)組成。如果按鍵按下超過108ms仍未松開,接下來發射的代碼(連發碼)將僅由起始碼(9ms)和結束碼(2.25ms)組成。圖7 引導碼        

41、          圖8連發碼(2)遙控信號接收及解碼    接收電路可以使用一種集紅外線接收和放大于一體的一體化紅外線接收器,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數據傳輸。    接收器對外只有3個引腳:Out、GND、Vcc與單片機接口非常方便,如圖9所示。圖 9 脈沖信號輸出直接接在單片機的IO 口。 &#

42、160;   GND接在系統的地線(0V);     Vcc接在系統的電源正極(+5V);把紅外遙控器每一個按鍵的鍵值讀出來,并且通過實驗板上P1口的8個LED顯示出來,在解碼成功的同時并且能發出“嘀嘀嘀”的提示音。三 、各部分設計與實現(一)原理及總體設計 紅外遙控系統    通用紅外遙控系統由發射和接收兩大部分組成。應用編/解碼專用集成電路芯片來進行控制操作,如圖所示。發射部分包括鍵盤矩陣、編碼調制、LED紅外發送器;接收部分包括光、電轉換放大器、解調、解碼電路,如圖10所示。 圖10 紅外

43、線遙控系統框圖(二)各部分軟硬件實現1.紅外傳感器這里我們采用HS0038,HS0038 一體化紅外接收頭,接收頻率為38kHz1kHz管腳依次為:              1GND      2VCC          3OUT連接時,在VCC與GND之間并入一個0.1uF的電容有助于改進信號質量。其可以用于遙控編碼接收,也

44、可以用于低碼率的數據通訊。HS0038 信號電平:           38kHz 紅外發射接收到時:  OUT低電平輸出          38kHz 紅外發射接收不到時:OUT高電平輸出Hs0038的使用注意事項: 38kHz紅外發射信號在HS0038接收角度范圍邊沿區域時,接收信號不斷振蕩無法穩定,因此為保證信號質量,使用時發射接收盡力正對為好; HS0038用于數據通訊時,在標準RS232

45、下,波特率設置不要大于2400bps,否則HS0038無法區分到接收的信號(2400bps接近其帶寬極限了)。2紅外鍵盤 紅外鍵盤原理圖,如圖11、12、13、14。圖11 圖12圖13圖143.通用同步異步收發器USARTPIC16F87X單片機內部集成了兩個類型不同的串行通信模塊,即通用同步異步收發器USART(universal synchronousasynchronous receiver transmitter)模塊和主控同步串行端口MSSP(master synchronous serial port)模塊。前者的主要應用目標是系統之間的遠距離串行通信;而后者的主要應用目標是系統

46、內部近距離的串行擴展。與USART模塊有關的寄存器有9個,都在RAM陣列中具有統一的地址編碼。如表2所示。表2 與USART模塊相關的寄存器寄存器名稱寄存器符號寄存器地址寄存器內容bit7bit6bit5bit4bit3bit2bit1Bit0中斷控制寄存器INTCON0BH/8BH/10BH/18BHGIEPEIET0IEINTERBIET0IFINTFRBIF第一外設中斷標志寄存器PIR10CHPSPIFADIFRCIFTXIFSSPIFCCP1-IFTMR2-IFTMR1-IF第一外設中斷屏蔽寄存器PIE18CHPSPIEADIERCIETXIESSPIECCP1-IETMR2-IETM

47、R1-IFC口方向寄存器TRISC87HTRISC7TRISC6TRISC5TRISC4TRISC3TRISC2TRISC1TRISC0發送狀態兼控制寄存器TXSTA98HCSRCTX9TXENSYNC_BRGHTRMTTX9D接收狀態兼控制寄存器RCSTA18HSPENRX9SRENCRENADDENFERROERRRX9D發送寄存器TXREG19HUSART發送緩沖寄存器接收寄存器RCREG1AHUSART接收緩沖寄存器波特率寄存器SPBRG99H對于波特率發生器產生波特率的定義值發送狀態兼控制寄存器TXSTA,它是一個bit3不用,bit1只讀,其余6位可讀寫的寄存器,其中沒有一位讀取時

48、會返回0。其中的SYNC位是USART同步異步選擇位。等于1時,是同步模式,等于0時是異步模式;TXEN是發送使能位,為1時是使能發送,為0時是關閉發送功能。RCSTA是接收狀態兼控制寄存器,它是一個低三位只讀、高5位可讀寫的寄存器。其中的CREN是連續接收使能位。在異步模式下:等于1表示使能連續接收,等于0則是禁止連續接收;在同步模式下,等于1表示使能連續接收,直到該位被清0為止。該位優先于SREN位。等于0表示關閉連續接收。USART發送緩沖寄存器TXREG也是一個用戶程序可讀寫的寄存器。每次用戶發送的數據都是通過寫入該緩沖器來實現的。USART接收緩沖寄存器RCREG是一個用戶程序可讀寫

49、的寄存器。每次從對方傳送過來的數據,用戶都是從該緩沖器最后讀取出來的。SPBRG寄存器是用來控制一個獨立的8位定時器的溢出周期。該寄存器的設定值(0255)與波特率成反比關系。在同步方式下波特率僅由這一個寄存器決定,在異步方式下則由BRGH位和該寄存器共同確定。四、總結和體會通過這次紅外遙控的畢業設計,學習和使用芯片的具體應用,傳感器的選用,明白了不同芯片外圍接口使用時的工作方式。熟練掌握了它們的運用環境和使用時的方式控制,以及編程命令字的設置。進一步了解了所學芯片的基本的編程步驟及各種方式命令字的使用。將書本上所學的東西用在實際當中了,這加深了我們對可編程器件的理解。在這次設計過程中我有幾點

50、深刻的體會。1.經過這次設計,我體會到應該掌握豐富的理論知識,理論知識是設計的前提。但同時又決不能局限于理論。如某些地方的元件取值,應該大膽的根據經驗去判斷。2.平時課堂上所學習的知識大多比較陳舊,作為電子專業的學生,由于專業特點自己更要積極查閱當前的最新信息資料。一個人不可能什么都學過,什么都懂,因此,當你在設計過程中需要用一些不曾學過的東西時,就要去有針對性地查找資料,然后加以吸收利用,以提高自己的應用能力,而且還能增長自己見識,補充最新的專業知識。3.實踐能力得到了進一步提高,在設計過程中積累了一些經驗。4.設計對以前學過的理論知識起到了回顧作用。在整個設計之中是對數字電路、模擬電路課程

51、,單片機,微機原理等課程是綜合應用,并對其加以進一步的消化和鞏固,加深了對以前所學課程知識的掌握。5.在設計過程中,深深感受到自己在對一些器件的了解上,還存在很大差距,對他們的功能,參數都不是太熟悉。但是通過這次理論與實際的結合之后,認識比以前有不少提高。 五、謝辭首先感謝我的父母,正是你們的默默的付出,才讓我完成大學四年的學習,養育之恩,無以回報,你們永遠健康是我最大的幸福。還要感謝汪光宅老師,劉強老師,在畢業設計的制作過程中,老師們對我自始自終悉心教導、不斷鼓勵、一直督促我學習和制作,使我能夠順利完成畢業設計 ,也教給了我很多新的知識,令我獲益匪淺。他們嚴謹的治學態度深深的影響著我,讓我受

52、益一生,不論是工作還是生活中。同時我還要感謝梁明華,孫偉,劉亮宇,茍慶松等同學,正是他們同時給我的幫助,才讓我的畢業設計能夠順利完成。在此,對汪光宅老師、劉強老師以及給我提供幫助的同學致以誠摯的謝意。祝你們工作順利,身體健康!附錄(一)紅外鍵盤相關程序用WHILE實現的延時程序void delay16(unsigned int i)while(-i);/*void delay882us(void)delay16(100);/*void delay1000us(void)delay16(115);/*void delay4740us(void)delay16(546);非中斷方式串口輸出void

53、 ComOutChar(unsigned char OutData)SBUF = OutData; /輸出字符while(!TI); /空語句判斷字符是否發完TI = 0; /清TI/*/串口初始化晶振為.0592M方式波特率/*void InitCom(void)SCON = 0x50; /串口方式,允許接收TMOD = 0x21; /定時器定時方式,定時為模式,位模式TH1 = 0xFd;/設波特率為TL1 = 0xFd;PCON = 0x00; /波特率不加倍控制,SMOD為RI = 0;/清收發標志TI = 0;TR1 = 1; /啟動定時器(二)編碼及解碼程序接收,程序如下RF:BT

54、FSC PORTB,2 GOTO RF1BTFSS DOWNBIT CLRF RTCCOUNTBSF DOWNBIT BTFSS UPBIT RETLW 0BTFSC IDBIT GOTO RF3MOVLW 2AHSUBWF RTCCOUNT,0BTFSS STATUS,0GOTO RF2MOVLW 36HSUBWF RTCCOUNT,0BTFSC STATUS,0GOTO RF2BTFSC IDBITGOTO RF3MOVLW .8MOVWF LOOPMOVLW .3MOVWF LOOPCOUNTCLRF DATACOUNTBSF IDBITBSF DOWNBITBCF UPBITCLRF RTCCOUNTRETLW 0RF1:BTFSS DOWNBITRETLW 0BSF UPBITRETLW 0RF2:BCF DOWNBITBCF UPBITBCF IDBITCLRF RTCCOUNTRETLW 0 ;遙控接收RF3:MOVLW 02HSUBWF

溫馨提示

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

評論

0/150

提交評論