單片機流水燈_第1頁
單片機流水燈_第2頁
單片機流水燈_第3頁
單片機流水燈_第4頁
單片機流水燈_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計第1章 概 述隨著科學技術的發(fā)展,單片機因其高可靠性和高性價比,在智能家用電器、儀器儀表等諸多領域內得到了極為廣泛的應用。當前單片機對家用電器呈現出外形簡單化、功能多樣化、性能優(yōu)越化的發(fā)展趨勢。紅外遙控器具有使用方便、功耗低、抗干擾能力強的特點,因此它的前景是不可估量的。簡單紅外收發(fā)器是在紅外遙控的基礎上,利用紅外線進行點對點的數據通信裝置。目前,其相應的軟件和硬件技術都已比較成熟。它是把紅外線作為載體的遙控方式。紅外遙控是一種無線、非接觸控制技術,具有結構簡單、制作方便、成本低廉、抗干擾能力強、信息傳輸可靠、易實現,同時,由于采用紅外線收發(fā)器件時,工作電壓低、功耗低、外圍電路簡

2、單等優(yōu)點,因此,被諸多電子設備,特別是家用電器廣泛采用,并越來越多的應用到計算機系統中。  系統要實現的功能:紅外發(fā)射器、紅外接收器,要實現遠距離(10米)的發(fā)射與接收。  紅外收發(fā)的特點是不影響周邊環(huán)境、不干擾其它電器設備。電路調試簡單,只要按給定電路連接無誤,一般不需任何調試即可投入工作;編解碼容易。  信息可以直接通過紅外光進行調制傳輸,例如,信息直接調制紅外光的強弱進行傳輸,也可以用紅外線產生一定頻率的載波,再用信息對載波進行調制,接收端去掉載波,取到信息。第2章 設計目的及設計要求2.1 設計目的訓練學生綜合運用己學課程的基本知識,獨立進行單片機應用技術

3、開發(fā)工作,掌握單片機程序設計、調試,應用電路設計、分析及調試檢測。2.2 設計要求本次單片機課程設計的設計要求如下:  1、 應用MCS-51單片機設計簡單紅外收發(fā)器;  2、 選用紅外發(fā)射、紅外接收器,紅外發(fā)射、接收距離大于10M;3、 硬件設計根據設計的任務選定合適的單片機,根據控制對象設計接口電路。設計的單元電路必須有工作原理,器件的作用,分析和計算過程;  4、 軟件設計根據電路工作過程,畫出軟件流程圖,根據流程圖編寫相應的程序,進行調試并打印程序清單; 5、 原理圖設計根據所確定的設計電路,利用

4、Protel等有關工具軟件繪制電路原理圖、PCB板圖、提供元器件清單。2.3 紅外收發(fā)器簡介紅外線發(fā)射器是一種遙控設備,具有遙控功能。它通過紅外線發(fā)射管在一定范圍內向外發(fā)射光線,從而達到控制信號的作用,廣泛應用于消費電子、工業(yè)和通信等紅外線接發(fā)器、數據傳輸技術等領域。紅外線接收器是一種可以接收紅外信號并能獨立完成從紅外線接收到輸出與TTL電平信號兼容的器件,體積和普通的塑封三極管差不多,適合于各種紅外線遙控和紅外線數據傳輸。具有小型設計、內置專用IC 寬角度及長距離接收、抗干擾能力強、能抵擋環(huán)境干擾光纖、低電壓工作的特點。第3章 紅外收發(fā)器硬件電路設計及電路描述3.1 電路總體設計框架按照系統

5、設計的功能的要求,確定設計系統主要由發(fā)射模塊與接收模塊兩部分組成。  發(fā)送模塊先由輸入信號,以二進制信號的形式,傳送給單片機,然后單片機將待發(fā)送的二進制信號編碼調制為一系列的脈沖串信號,通過紅外發(fā)射管發(fā)射紅外信號。紅外接收模塊普遍采用價格便宜,性能可靠的一體化紅外接收頭接收紅外信號,它同時對信號進行放大、檢波、整形,得到TTL電平的編碼信號,再傳送給單片機,經單片機解碼并由數碼管顯示接收到的數據。紅外發(fā)射電路單片機輸入信號紅外接收頭輸出信號單片機圖1 總體設計框圖3.2 單片機AT89C2051簡介單片機就是在一塊半導體硅片上集成了未處理器(CPU),存儲器(RAM,ROM,EPRO

6、M)和各種輸入、輸出接口(定時器/計數器,并行I/O口,串行口,A/D轉換器以及脈寬調制器PWM等),這樣一塊集成電路芯片具有一臺計算機的屬性。  MCS-51單片機的類型包含:基本型、增強型、低功耗型、專用型、超8位型、片內閃爍存儲器型。  MCS-51單片機的硬件結構:微處理器、數據存儲器、程序存儲器、4個8位并行I/O口、1個串行口、2個16位定時 器/計數器、中斷系統、特殊功能寄存器AT89C2051引腳如圖2所示。(RXD)P3.0(TXD)P3.1XTAL2RST/VPPXTAL1(INT0)P3.2(INT1)P3.3(T0)P3.4(T1)P3.5GNDVC

7、CP1.7P1.6P1.5P1.4P1.3P1.2P1.1(AIN1)P1.0(AIN0)P3.71234567891011121314151617181920圖2 AT89C2051引腳圖3.2.1 單片機內部結構AT89C2051是一帶有2K字節(jié)閃速可編程可擦除只讀存儲器(EEPROM)的低電壓,高性能8位CMOS微型計算機。它采用ATMEL的高密非易失存儲技術制造并和工業(yè)標準MCS51指令集和引腳結構兼容。通過在單塊芯片上組合通用的CPLI和閃速存儲器,ATMEL AT89C2051是一強勁的微型計算機,它對許多嵌入式控制應用提供一定高度靈活和成本低的解決辦法3.2.2 單片機

8、功能AT89C2051提供以下標準功能:2K字節(jié)閃速存儲器,128字節(jié)RAM,15根I/O口,兩個16位定時器,一個五向量兩級中斷結構,一個全雙工串行口,一個精密模擬比較器以及兩種可選 的軟件節(jié)電工作方式??臻e方停止CPU工作但允許RAM、定時器/計數器、串行工作口和中斷系統繼續(xù)工作。掉電方式保存RAM內容但振蕩器停止工作并禁止有其它部件的工作到下一個硬件復位。3.2.3 單片機復位復位是使CPU和系統中的其他功能部件都處在一個確定的初始狀態(tài), 并從這個狀態(tài)開始工作。無論是在單片機剛開始接上電源時, 還是斷電后或者發(fā)生故障后都要復位。89系列單片機的復位信號是從R

9、ST引腳輸人到芯片的施密特觸發(fā)器中的。當系統處于正常工作狀態(tài)時, 且振蕩器穩(wěn)定后, 如果RST引腳有一個高電平并維持2個機器周期(24個振蕩周期), 則CPU就可響應并且將系統復位。本此設計使用的是上電復位。上電壓從無到有在RESET處會先處于高電平一段時間,然后由于該點通過 電阻接地則RESET該點的電平會逐漸的改變?yōu)榈碗娖剑瑥亩沟脝纹瑱C復 位口電平從1到0,達到給單片機復位的功能。3.3 紅外收發(fā)模塊3.3.1 紅外發(fā)射模塊復位是使CPU和系統中的其他功能部件都處在一個確定的初始狀態(tài), 并從這個狀態(tài)開始工作。無論是在單片機剛開始接上電源時,

10、0;還是斷電后或者發(fā)生故障后都要復位。89系列單片機的復位信號是從RST引腳輸人到芯片的施密特觸發(fā)器中的。當系統處于正常工作狀態(tài)時, 且振蕩器穩(wěn)定后, 如果RST引腳有一個高電平并維持2個機器周期(24個振蕩周期), 則CPU就可響應并且將系統復位。本此設計使用的是上電復位。上電壓從無到有在RESET處會先處于高電平一段時間,然后由于該點通過 電阻接地則RESET該點的電平會逐漸的改變?yōu)榈碗娖?,從而使得單片機復 位口電平從1到0,達到給單片機復位的功能。開始輸入信號初始化,紅外發(fā)射端口信號掃描紅外數據發(fā)射圖3 紅外發(fā)射流程圖3.3.2 紅外接收模塊紅外接收電路主要

11、由單片機、紅外接收頭和顯示部分組成,發(fā)射端發(fā)射的紅外信號經過接受處理,傳給單片機。接收電路使用一體化的紅外接裝置,將發(fā)送的信號接收,放大、檢波、整形,并且經P1.0傳輸可以讓單片機識別的TTL信號,經單片機解碼由數碼管顯示。首先初始化紅外接收端口,然后檢測是否接收紅外信號,如果接收到紅外信 號就調用接收子程序,然后就通過數碼管顯示當前LED燈熄滅的狀態(tài)如此循環(huán)。開始初始化紅外接收端口 接收紅外信號 N Y調用接收程序 數碼管顯示結束圖4 紅外接收流程圖第4章 總 結這次課程設計是對我們學習微機原理及單片機課程的檢驗及實際應用能力的一次提高。我們所設計的是紅外收發(fā)器。所能實現的是紅外的發(fā)射和接收

12、,發(fā)射部分通過鍵盤輸入數字通過AT89C51編碼并用紅外二極管發(fā)射出去。接收部分通過另外一塊AT89C51通過中斷方式接收紅外信號并解碼,最后從數碼管顯示所按下的鍵號。    原理圖的設計時我們使用了Altium6.0這個強大的繪圖工具,由于一些實際的器件在器件庫中無法找到,我們只有自己制作,在這個過程中我們學到了很多的知識和方法。在制作PCB印刷電路板的時候,很多器件的封裝與實際尺寸存在很大的差別,為了獲得準確的封裝,我們實際測量了所給器件的大小與規(guī)格,自己制作與之匹配的封裝庫,這讓我們明白實踐是出真知的唯一途徑,只有親自動手,實際才能測試才能獲得最可靠的設計數

13、據。當然我們也出現了嚴重的失誤,由于對電源與地的距離估計不足,導致兩者過近,出現了短接的危險。因此我們不得不重新處理這個問題,這個教訓也告誡了我們,對于任何小的 細節(jié)都不能掉以輕心,小的疏忽也會造成大的損失。對于電路圖和電路板都應當采取科學謹慎的態(tài)度,這是保證是的基本實驗結果產生的前提,在正式焊接前,對電路板的核查測試應當細心備至,反復檢測才不會導致最終的失敗。    程序的編寫過程也給了我們很大的收獲。在編寫程序之前,我們查閱了大量的相關資料,力求做到規(guī)范清晰。在把握了整體的思路后,我們先從程序流程圖  著手, 將整個程序分成若干模塊,分開編

14、寫,一邊發(fā)現問題一邊解決問題,并在實驗板上檢驗程序測試情況,根據現象不斷修改。在這個過程中我們體會到編程的技巧,設置子程序的合理性,同時對單片機最小系統的設計有了整體的理解和深刻的體會,使我們的思維的鍛煉與能力培養(yǎng)有了很大的提高和長足的進步。    本次課程設計雖然時間很短,但收獲卻很大。首先我們對單片機最小系統的設計有了整體的把握,對程序編寫的合理與規(guī)范性有了深刻的理解,建立起程序設計的一般思路,以及Altium6.0的使用方法,其強大的功能給我們提供了很大的幫助,通過原理圖的設計過程,使我們認識到了這個軟件的重要性,我們會以此為契機,在日后的學習中會繼續(xù)使用它

15、,使其發(fā)揮更大的功能。參考文獻1 單片微型計算機與接口技術,李群芳、黃建編著,電子工業(yè)出版社; 2 單片機原理及應用,張毅剛編著,高等教育出版社;   3 51系列單片機及C51程序設計,王建校,楊建國等編著,科學出版社;4 單片機原理及接口技術,李朝青編著,北京航空航天大學出版社;   5 張毅剛,彭喜源.MCS-51單片機應用設計M.哈爾濱:哈爾濱工業(yè)大學出版社,1997.附錄1 系統電路圖圖5 程序仿真原理圖附錄2 主要源代碼紅外發(fā)射模塊#include <reg52.H>#define

16、 uchar unsigned char#define uint unsigned int /共陽極/*0,1,2,3,4,5,6,7,8,9,*/uchar code seg=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;uint count;uint buf_count=0;uchar buf=0; uchar sys1; /系統碼1bit endcode=0,new_code=0;uchar sys2,common_code_count=0,key_bit_count,buf_key_code,key_code,ir_status;

17、/系統碼2uchar dat; /數據碼uchar undat;/數據反碼sbit ir=P33 ;sbit led=P32 ;/延時子程序10usvoid delay_10us(unsigned char y)unsigned char x;for(x=y;x>0;x-); /主函數-void main() TMOD=0x02; EA=1; EX1=1; ET0=1; IT1=1; ir=1; TH0=0Xd2; /定時50us TL0=0Xd2; TR0=1;/開定時器中斷 P2=segkey_code%10; while(1) while(!new_code); P2=segkey

18、_code%10; new_code=0; TR0=1; /-void recive() interrupt 2 using 1 /如果信號合法,則放入buf_count,count清0,對下一個脈沖信號計時 if(count>20&&count<300) buf_count=count; count=0; delay_10us(10);/延時100us以消除下降沿跳變抖動 if(ir=0)/INT1引腳穩(wěn)定為低電平,則表法確實是信號,count重新計時,因上面延時了50us,故要補償1次TO中斷 count=2; if(buf_count>20&&a

19、mp;buf_count<300)/若收到的信號合法,則再進行信號分析 if(ir_status=0)/如果之前未收到引導碼 if(buf_count>250&&buf_count<300)/判斷是否引導碼13.5ms ir_status=1;/系統標記 buf_count=0;/ else if(ir_status=1)/收到引導碼 if(common_code_count>=15)/若收完16個脈沖 ir_status=2;/數據解碼標記 common_code_count=0;/系統碼計算清零 buf_count=0;/中斷計數暫存清0 else

20、if(buf_count>40&&buf_count<50)|(buf_count>20&&buf_count<30) buf_count=0; common_code_count+;/每收到一個信號自加1 else if(ir_status=2)/進入數據編碼接收 if(key_bit_count<8)/收到數據少于8位,則將收到的數據寫入buf_key_code if(buf_count>40&&buf_count<50) buf_count=0; buf_key_code>>=1; bu

21、f_key_code|=0x80;/收到1 key_bit_count+;/數據脈沖累加 else if(buf_count>20&&buf_count<30)/收到0 buf_count=0; buf_key_code>>=1;/收到0 key_bit_count+; else /若收完8位數據則做以下處理 ir_status=0;/接收狀態(tài)返回到空閑 key_code=buf_key_code; key_bit_count=0; buf_key_code=0; buf_count=0; TR0=0; new_code=1; /定時器中斷void ti

22、me0() interrupt 1 using 1 count+;/定時器中斷次數累加 紅外接收模塊#include <reg52.H>#include <intrins.h> #include <absacc.h> #define uchar unsigned char#define uchar unsigned char#define uint unsigned intsbit key1=P20;sbit key2=P21;sbit key3=P22;sbit key4=P23;sbit key5=P24;sbit key6=P25;sbit key7=

23、P26;sbit key8=P27;sbit T=P30;sbit TT=P31;uchar S1=0x55;uchar S2=0xAA;uchar buf;uchar i; /結束碼void TR_OVER() T=1; TH0=0XA6;TL0=0X28; /23MS while(TF0=0) ; T=0; TF0=0; TH0=0XDC;TL0=0X5C; /9.12MS while(TF0=0); T=1; TF0=0; TH0=0Xf7;TL0=0X36; /2.25MS while(TF0=0); TF0=0; T=0; /數據碼void TR_DATA(uchar dat) fo

24、r(i=0;i<8;i+) buf=dat&0x01; if(buf=1) TH0=0XFD;TL0=0XD0; /0.56MS T=1;while(TF0=0); T=0;TF0=0; TH0=0XF9;TL0=0X6B; /1.685MS while(TF0=0) ; TF0=0; if(buf=0) TH0=0XFD;TL0=0XD0; /0.56MS T=1;while(TF0=0); T=0;TF0=0; TH0=0XFD;TL0=0XCB; /0.565MS while(TF0=0) ;TF0=0; dat=dat>>1; /起始碼void TR_START() T=1; TH0=0XDC;TL0=0X5C; /9.12MS TR0=1; while(TF0=0); T=0;TF

溫馨提示

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

評論

0/150

提交評論