基于51單片機的RGB背光系統(tǒng)_第1頁
基于51單片機的RGB背光系統(tǒng)_第2頁
基于51單片機的RGB背光系統(tǒng)_第3頁
基于51單片機的RGB背光系統(tǒng)_第4頁
基于51單片機的RGB背光系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西安郵電大學(xué)專業(yè)課程設(shè)計報告書院系名稱:電子工程學(xué)院學(xué)生姓名:學(xué)號:專業(yè)名稱:光電子技術(shù)系班 級:實習(xí)時間:2013-10-082013-10-18一課程設(shè)計題目基于51單片機的RGB背光系統(tǒng)二任務(wù)和要求1.收集資料并繪制51單片機的最小系統(tǒng)原理圖,熟悉單片機開發(fā)環(huán)境KEIL C51和C語言編程。2.查閱資料了解I2C總線協(xié)議。3.參照LED驅(qū)動芯片NCP5623和串口通信芯片MAX232數(shù)據(jù)手冊繪制總電路圖。4.根據(jù)電路圖在面包板上連接電路并測試。5.畫出軟件流程圖并在KEIL C51開發(fā)環(huán)境上編寫源代碼并調(diào)試。6.利用STCISP下載軟件將調(diào)試好的代碼燒錄到單片機中,在面包板觀察LED亮暗

2、變化,然后通過改動源代碼實現(xiàn)LED現(xiàn)象的不同功能。7.分析總結(jié)此次課程設(shè)計過程中遇到了問題及解決辦法和心得體會并撰寫設(shè)計報告。三總設(shè)計方案硬件設(shè)計:采用單片機作為LED的控制核心器件,選用NCP5623實現(xiàn)LED背光源的靜態(tài)顯示。單片機主要實現(xiàn)的功能是通過I2C協(xié)議控制NCP5623芯片,NCP5623根據(jù)單片機發(fā)送的命令調(diào)節(jié)3種顏色的LED的亮度從而達到背光的效果。NCP5623是安森美半導(dǎo)體推出的高能效3路輸出LED驅(qū)動器,帶有I2C接口,并且內(nèi)置漸進調(diào)光功能,3路LED可獨立控制,總LED電流可達90mA,并且是一種無鉛器件。軟件設(shè)計:NCP5623是接收單片機的命令而產(chǎn)生動作,單片機給

3、NCP5623芯片發(fā)送指令是通過I2C總線,兩者之間通過I2C協(xié)議進行通信。(I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機系統(tǒng)所需的包括總線裁決和高低速器件同步功能高性能串行總線。I2C總線只有兩根雙向信號線,一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL)。NCP5623能實現(xiàn)的功能如下表:I2C AddressCOMMANDBits7:0OperationNote$70000X XXXXSystem Shut DownBits4:0 are irrelevan$700010 0000 0011 1111Set Up the ILED currentILED register Bi

4、ts4:0 contain the ILED value as defined by the IREF value$700100 0000 0101 1111Set Up the RED PWM REDPWM Bits4:0 contain the PWM value$700110 0000 0111 1111Set Up the GREEN PWMGREENPWM Bits4:0 contain the PWM value$701000 0000 1001 1111Set Up the BLUE PWMBLUEPWM Bits4:0 contain the PWM value$701010

5、0000 1011 1111Set Up the IEND UpwardUPWARD Bits4:0 contain the IEND value$701100 0000 1101 1111Set Up the IEND DownwardDWNWRD Bits4:0 contain the IEND value$701110 0001 1111 1111Set Up the Gradual Dimming time and run the sequenceGRAD Bits4:0 contain the TIME value該表的$70代表NCP5623的I2C器件寫地址對于NCP5623來講

6、沒有讀操作。該器件的命令為1個字節(jié),它可以被認為是I2C傳輸?shù)膬?nèi)容部分。該字節(jié)最高3位用來表征命令,后面5位用來表征命令的參數(shù),比如001表示對個3個LED亮度同時進行控制,而后面5位則表示亮度。下面是每個命令的子程序?qū)崿F(xiàn),I2C_Start()是啟動I2C總線讀寫函數(shù),I2C_Stop()是停止I2C傳輸函數(shù),write_Byte()是傳輸數(shù)據(jù)函數(shù)。每個命令的實現(xiàn)開頭都應(yīng)該有I2C_Start()啟動傳輸,最后應(yīng)該有I2C_Stop()停止I2C總線活動。4 單元電路設(shè)計1. STC89C52單片機最小系統(tǒng)模塊最小系統(tǒng)電路圖單片機最小系統(tǒng)是在單片機上接晶振電路和復(fù)位電路,VCC接高電平,GN

7、D接地。單片機為宏晶公司生產(chǎn)的STC89C52RC,外部晶振為12MHz。2. MAX232串口下載模塊MAX232為美信公司生產(chǎn)的串口芯片,通過引腳R1OUT和T1IN分別與單片機的P3.0(RxD)和P3.1(TxD)連接實現(xiàn)通信。3. LED驅(qū)動芯片NCP5623電路模塊NCP5623為安森美公司生產(chǎn)的一種LED驅(qū)動芯片,上圖LED為共陽極接法,還需接100左右限流電阻,SDA為數(shù)據(jù)端,接單片機P2.0,SCL為時鐘端,接單片機P2.1.5 總電路圖根據(jù)各模塊連接總的電路圖如下:6 軟件部分I2C協(xié)議總流程圖I2C起始函數(shù)響應(yīng)函數(shù)字節(jié)數(shù)據(jù)發(fā)送函數(shù)I2C終止函數(shù)I2C協(xié)議響應(yīng)函數(shù)寫控制字1

8、. I2C起始與終止函數(shù)SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。 起始函數(shù)void I2C_Start(void) /定義I2C起始函數(shù)SDA=1; /SCL為高電平時,SDA由高電平變?yōu)榈碗娖綍r為開始delay();SCL=1;delay();SDA=0;delay();SCL=0;delay();終止函數(shù)void I2C_STOP(void)/定義I2C終止函數(shù)SDA=0;delay(); /SCL為高電平時,SDA有高電平變?yōu)榈碗娖綍r為終止SCL=1;delay();SDA=1;delay();

9、2. 字節(jié)傳送與應(yīng)答每一個字節(jié)必須保證是8位長度。數(shù)據(jù)傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。字節(jié)傳送函數(shù)void Send_byte(unsigned char zdata)unsigned char j; SCL=0; for(j=0;j8;j+) /在SCL=0時,發(fā)送8位數(shù)據(jù) if(zdata&0x80) /判斷第一位是否為高SDA=1; / 第一位為高,SDA=1elseSDA=0; / 第一位為低,SDA=0zdata=zdata1;/發(fā)送第二位數(shù)據(jù)delay();SCL=1;delay();SCL=0;/數(shù)據(jù)只有在SCL由1變

10、為0時才改變delay();SDA=1;delay();void init(void) SDA=1;SCL=1;響應(yīng)函數(shù)void ack(void) /響應(yīng)函數(shù)unsigned char i;SCL=1;delay();while(SDA=1)&(i200)i+;SCL=0;delay();3. 寫入過程主控器發(fā)送起始信號后,立即發(fā)送尋址字節(jié),這時,總線上的所有器件都將尋址字節(jié)中的7位地址與自己器件地址相比較,如兩者相同,則該器件認為被主控器尋址,并根據(jù)讀寫位確定是被控發(fā)送器或被控接收器。void write_byte(unsigned char dat)init();I2C_Start();

11、Send_byte(0x70); /芯片地址ack();Send_byte(dat);ack();I2C_STOP();LED控制部分:NCP5623中每個燈的控制地址如下表:7 課程設(shè)計中遇到的問題及解決辦法問題1:芯片與面包板之間接觸不良,易出現(xiàn)短路。解決辦法:我自己找了塊PCB板子在上面焊接了電路,結(jié)果很穩(wěn)定。問題2:MAX232電路模塊電容選擇錯誤(101),導(dǎo)致源代碼下載不成功。解決辦法:最后經(jīng)過老師指導(dǎo)調(diào)換了電容(104)成功解決問題。問題3:下載完代碼驗證結(jié)果,LED亮暗變化太快,中間間隔時間短。解決辦法:在每個LED變化過程中加延時使其更好的把效果顯示出來,而且還加了一個滅函數(shù)

12、,讓其在變化過程中更好的過度。問題3:對LED驅(qū)動芯片NCP5623了解甚少,導(dǎo)致在編寫程序是摸不著頭腦。解決辦法:在網(wǎng)上查找芯片手冊,認真閱讀,里面有有關(guān)芯片的地址和數(shù)據(jù)。8 分析與總結(jié) 對待任何一次課程設(shè)計我都會盡全力去做好,并且我對課程設(shè)計也很感興趣,這次也不例外,因為我非常喜歡動手,所以第一天在老師講完課程設(shè)計題目和注意事項后我就抓緊時間設(shè)計電路,于是第二天老師檢查完電路圖后我就領(lǐng)到了器件,很幸運,為數(shù)不多的LED驅(qū)動芯片NCP5623我也領(lǐng)了一塊,我先把NCP5623焊在轉(zhuǎn)接板上,很成功達到要求。接著我就在面包板上搭了電路,很不穩(wěn)定,老是接觸不良,程序下載失敗。感覺自己焊接技術(shù)還不錯

13、,所以我自己找了一塊PCB板子,就先把51單片機的最小系統(tǒng)焊在板子上,焊完之后那串口下載線試了下結(jié)果下載失敗,當時用萬用表測試了電路,沒有短路,斷路等現(xiàn)象,電路也很正確,不知是哪出現(xiàn)問題,最后聽老師說把MAX232串口芯片模塊的電容從101換成104,因為焊好的板子拆卸比較困難,沒辦法,找了5個104獨石電容把電容調(diào)換了,完了之后接上串口線隨便找了一個代碼,編譯下生成HEX文件,下載成功!內(nèi)心竊喜。 最小系統(tǒng)完成后我把自己焊接好的NCP5623芯片也和最小系統(tǒng)焊在了一塊,最后檢查了電路。 硬件是軟件的基礎(chǔ),我的基礎(chǔ)已經(jīng)打好,接下來就是重任,畫流程圖寫代碼。認真看完NCP5623芯片手冊后開始寫

14、代碼,不寫不知道,一寫嚇一跳,一步一步很是艱難呀,錯誤連篇,于是就看別人弄好的代碼,了解下別人的思路,最后經(jīng)過自己的修改和老師同學(xué)的幫忙完成了源代碼的編譯。下載到板子上,效果很明顯,紅綠藍交替亮暗,很是吸引注意,于是我就很著急找老師驗收,結(jié)果碰了一鼻子灰,老師問我實現(xiàn)燈滅功能的函數(shù)里那個for語句有什么作用,我沒回答上來,很是尷尬,老師就讓先下去認真看看,懂了之后再回答,下去后經(jīng)過研究,問同學(xué),最后修改了一下代碼,找老師匯報情況,老師很認真的給我講解了部分知識。經(jīng)過這次實習(xí)我學(xué)習(xí)很多知識,最重要的是有頗豐的實習(xí)經(jīng)驗,感謝同學(xué)的幫助,更感謝老師的悉心指導(dǎo)和無私奉獻!九附錄程序源代碼:#inclu

15、de /頭文件#define _NOP() /空指令sbit SCL=P21;sbit SDA=P20;void delay1(unsigned int t)unsigned char i;for(;t0;t-) for(i=6425;i0;i-);void delay(void) /定義延時函數(shù)_NOP();_NOP();_NOP();_NOP();_NOP();void I2C_Start(void) /定義I2C起始函數(shù)SDA=1; /SCL為高電平時,SDA由高電平變?yōu)榈碗娖綍r為開始delay();SCL=1;delay();SDA=0;delay();SCL=0;delay();vo

16、id I2C_STOP(void) /定義I2C終止函數(shù)SDA=0;delay(); /SCL為高電平時,SDA有高電平變?yōu)榈碗娖綍r為終止SCL=1;delay();SDA=1;delay(); void ack(void) /響應(yīng)函數(shù)unsigned char i;SCL=1;delay();while(SDA=1)&(i200)i+;SCL=0;delay();void Send_byte(unsigned char zdata)unsigned char j; SCL=0; for(j=0;j8;j+) /在SCL=0時,發(fā)送8位數(shù)據(jù) if(zdata&0x80) /判斷第一位是否為高S

17、DA=1; / 第一位為高,SDA=1elseSDA=0; / 第一位為低,SDA=0zdata=zdata1; /發(fā)送第二位數(shù)據(jù)delay();SCL=1;delay();SCL=0;/數(shù)據(jù)只有在SCL由1變?yōu)?時才改變delay();SDA=1;delay();void init(void) SDA=1;SCL=1;void write_byte(unsigned char dat)init();I2C_Start();Send_byte(0x70);ack();Send_byte(dat);ack();I2C_STOP();void mie()unsigned char i;write_

18、byte(0x40);write_byte(0x60);write_byte(0x80);void main(void)unsigned char i;while(1)write_byte(0x3f);mie();for(i=0x40;i0x5f;i+)write_byte(i); /紅燈逐漸變亮delay1(1000); delay1(2000); for(i=0x60;i0x7f;i+) /綠燈逐漸變亮write_byte(i);delay1(1000); delay1(2000);for(i=0x80;i0x40;i-) /紅燈逐漸變暗write_byte(i);delay1(1000)

19、;mie();delay1(2000);for(i=0x7f;i0x60;i-) /綠燈逐漸變暗write_byte(i);delay1(1000); mie();delay1(2000); for(i=0x9f;i0x80;i-)/藍燈逐漸變暗write_byte(i);delay1(1000); mie();delay1(5000); for(i=0x40;i0x40;i-) write_byte(i);write_byte(i+0x20);write_byte(i+0x40);delay1(1000); delay1(2000);10 參考文獻新概念51單片機C語言教程 電子工業(yè)出版社 郭天祥著STC89C52芯片手冊 宏晶公司生產(chǎn)MAX232芯片手冊 美信公司生產(chǎn)NCP5623芯片手冊 安森美公司生產(chǎn)西安郵電大學(xué)電子工程學(xué)院專業(yè)課程設(shè)計 過程考核表學(xué)生姓名班級/學(xué)號承擔(dān)任務(wù)實驗室(單位)所在部門光電子技術(shù)

溫馨提示

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

評論

0/150

提交評論