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

下載本文檔

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

文檔簡介

1、西安郵電學院專業(yè)課程設計報告書院系名稱:電子工程學院學生姓名:專業(yè)名稱:班 級:實習時間:11年5 月 9日 至 11年1 月 20日 1課程設計題目背光燈系統(tǒng)2任務和要求 通過STC89C52、MAX232、NCP5623連接好硬件電路,設計一個簡單的背光燈系統(tǒng),了解協(xié)議和5623的功能表以及相關的知識。編寫程序控制紅、綠、藍3個LED進行有規(guī)律的亮滅。所設計的背光燈系統(tǒng)應該完成以下功能:1、可以實現(xiàn)背光燈系統(tǒng)亮度的調節(jié);2、可以利用三原色實現(xiàn)背光燈系統(tǒng)顏色的調節(jié);3、整個系統(tǒng)的變化過程清晰可辨。3總體方案的選擇實驗要求設計一個背光燈系統(tǒng),并實現(xiàn)亮度和顏色的調節(jié)。亮度方面,考慮到LED的亮度

2、和通過它的電流成正比,因此可以通過控制電流來實現(xiàn)亮度的調節(jié),注意要加一個限流電阻。顏色方面,考慮到利用紅黃藍三原色可以獲得多種顏色,因此通過三原色各自亮度的調節(jié)達到顏色的調節(jié)。實驗流程圖:閱讀相關資料熟悉實驗目的以及要求設計實驗進程電路設計程序編寫電路的檢測程序的調試導入程序觀察實驗現(xiàn)象實驗結束滿意不滿意4單元電路的設計STC89C52單元電路MAX232單元電路NCP5623單元電路五、總體電路圖六、軟件部分,I2C協(xié)議及LED控制部分。(1)、I2C協(xié)議#include#include #include#define NOP() _nop_() /* 定義空指令 */#define _No

3、p() _nop_() /*定義空指令*/sbit SCL=P20; /I2C 時鐘 sbit SDA=P21; /I2C 數(shù)據(jù) bit ack; /*應答標志位*/* 起動總線函數(shù) 函數(shù)原型: void Start_I2c(); 功能: 啟動I2C總線,即發(fā)送I2C起始條件. */void Start_I2c() SDA=1; /*發(fā)送起始條件的數(shù)據(jù)信號*/ _Nop(); SCL=1; _Nop(); /*起始條件建立時間大于4.7us,延時*/ _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; /*發(fā)送起始信號*/ _Nop(); /* 起始條件鎖定時間大于4

4、s*/ _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /*鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù) */ _Nop(); _Nop();/* 結束總線函數(shù) 函數(shù)原型: void Stop_I2c(); 功能: 結束I2C總線,即發(fā)送I2C結束條件. */void Stop_I2c() SDA=0; /*發(fā)送結束條件的數(shù)據(jù)信號*/ _Nop(); /*發(fā)送結束條件的時鐘信號*/ SCL=1; /*結束條件建立時間大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /*發(fā)送I2C總線結束信號*/ _Nop(); _N

5、op(); _Nop(); _Nop();/* 字節(jié)數(shù)據(jù)發(fā)送函數(shù) 函數(shù)原型: void SendByte(UCHAR c);功能: 將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應答,并對此狀態(tài)位進行操作。(不應答或非應答都使ack=0)發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無應答或損壞。*/void SendByte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /*要傳送的數(shù)據(jù)長度為8位*/ if(cBitCnt)&0x80)SDA=1; /*判斷發(fā)送位*/ else SDA=0;

6、 _Nop(); SCL=1; /*置時鐘線為高,通知被控器開始接收數(shù)據(jù)位*/ _Nop(); _Nop(); /*保證時鐘高電平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /*8位發(fā)送完后釋放數(shù)據(jù)線,準備接收應答位*/ _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /*判斷是否接收到應答信號*/ SCL=0; _Nop(); _Nop();/* 字節(jié)數(shù)據(jù)接收函數(shù) 函數(shù)原型: UCHAR RcvByte();功

7、能: 用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應答信號), 發(fā)完后請用應答函數(shù)應答從機。 */ unsigned char RcvByte() unsigned char retc; unsigned char BitCnt; retc=0; SDA=1; /*置數(shù)據(jù)線為輸入方式*/ for(BitCnt=0;BitCnt8;BitCnt+) _Nop(); SCL=0; /*置時鐘線為低,準備接收數(shù)據(jù)位*/ _Nop(); _Nop(); /*時鐘低電平周期大于4.7s*/ _Nop(); _Nop(); _Nop(); SCL=1; /*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/ _Nop(

8、); _Nop(); retc=retc1; if(SDA=1)retc=retc+1; /*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中 */ _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); return(retc);/* 應答子函數(shù)函數(shù)原型: void Ack_I2c(bit a);功能: 主控器進行應答信號(可以是應答或非應答信號,由位參數(shù)a決定)*/void Ack_I2c(bit a) if(a=0)SDA=0; /*在此發(fā)出應答或非應答信號 */ else SDA=1; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop()

9、; /*時鐘低電平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; /*清時鐘線,鉗住I2C總線以便繼續(xù)接收*/ _Nop(); _Nop(); (2)、LED控制部分#includesbit SCL=P20;sbit SDA=P21;/*紅燈變化狀態(tài)數(shù)組*/unsigned char code Red_string32=0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C ,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x

10、58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F;/*綠燈變化數(shù)組狀態(tài)*/unsigned char code Green_string32=0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C ,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F;/*藍燈變化狀態(tài)數(shù)組*/unsigned char code Blue_string32=0x80,0x81,

11、0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C ,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F;/*延時*/void Delay_IIC(void) ; ;/*void Delay_1(void) int i,j; for(i=0;i1000;i+ ) /for(j=0;j100;j+) ; */void Delay(void)int i;for(i=0;i6;i+) ;/*傳輸函數(shù)*/vo

12、id Trans(unsigned char Data) int i; for(i=0;i8;i+) if(Data&0x80) SDA=1 else SDA=0 Delay_IIC(); SCL=1; Delay_IIC(); SCL=0; Data=Data1; /*啟動IIC*/void start_IIC(void) SDA=1; Delay(); SCL=1; Delay(); SDA=0; Delay(); SCL=0;/*停止IIC*/void stop_IIC(void) SDA=0;Delay();SCL=1;Delay();SDA=1;Delay();/*應答信號*/int

13、 Ack(void) int i; SDA=1; Delay_IIC(); SCL=1; Delay_IIC(); i=SDA; SCL=0; return i;/*傳輸?shù)刂?/void address_Data_trans(void) int i,j,k; while(1) start_IIC(); Trans(0x70); Ack(); for(i=0;i32;i+) Trans(Red_stringj); Ack(); Delay_1(); for(j=0;j32;j+) Trans(Green_stringj); Ack(); Delay_1(); for(k=0;k32;k+) Tr

14、ans(Blue_stringj); Ack(); Delay_1();stop_IIC();Delay_IIC();SDA=1;SCL=1;/* 主函數(shù)*/void main(void) address_Data_trans();七、設計過程中發(fā)生的問題及解決的方法1.在進行電路設計之前要仔細查找相關資料,并且要認真仔細閱讀老師發(fā)給的資料,否則,做起來會很迷茫。2、實驗中用到的5623芯片比較小,焊接時容易滑動。因此我先用膠帶將它固定在底座上再焊接,這樣會容易很多。3.按照電路連接器件的時候要細心,我都是在每連完一個器件后用萬用表測試電路的各相連管腳是否連通,如果不連通就要檢查是否是器件問題

15、或者面包板的問題,及時解決問題,保證電路無誤在進行下步連接。4.在試驗之前對于IC總線協(xié)議有了比較深入的學習,因為這一部分在編程中要求比較高。在I2C總線上每傳輸一位數(shù)據(jù),都有一個時鐘脈沖相對應,其邏輯“0”和“1”的信號電平取決于該點的正端電源VDD的電壓。I2C總線數(shù)據(jù)傳輸時,在時鐘線高電平期間數(shù)據(jù)線上必須保持有穩(wěn)定的邏輯電平狀態(tài),高電平為數(shù)據(jù)1,低電平為數(shù)據(jù)0。只有在時鐘線為低電平時,才允許數(shù)據(jù)線上的電平變化。5.這次實習中最大的問題就是下載程序,由于器件和軟件的原因,總是提醒請上電,無法下載程序,最后只能通過單片機開發(fā)板才將程序下載。這部分我們下去后會好好研究,找出問題所在,將它弄好。

16、八、分析和總結1.過此次課程設計我對單片機STC89C52芯片、MAX232以及5623芯片有了一定的了解,對于硬件和如見的結合也有了一定的了解,知道了如何用軟件對硬件進行控制。 2.深刻了解了協(xié)議(1)二線傳輸。I2C總線上有所有的結點,如主器件(單片機、微處理器)、外圍器件、接口模塊等都連在同名端SDA、SCL上。(2)系統(tǒng)中有多個主器件時,這些器件可以做總線的主控制器(無中心主機),(3)I2C總線傳輸時,采用狀態(tài)碼管理方法。(4)延時函數(shù):是通過架構空循環(huán),然后根據(jù)計算機主頻以及機器周期以及指令周期計算出延時的長短。起動總線函數(shù):SDA置為1,SCL置為1,然后SDA置為0,產(chǎn)生下降沿

17、觸發(fā)總線啟動 (5)結束總線函數(shù):SDA置為0, SCL置為1,SDA置為1從而觸發(fā)總線停止。 (6)字節(jié)數(shù)據(jù)發(fā)送函數(shù):發(fā)送過來的數(shù)據(jù)與上0x80H,得到傳送過來的一位數(shù)據(jù),之后數(shù)據(jù)左移一位再與上0x80H,得到第二位數(shù)據(jù),如此循環(huán)八次即可接受一個字節(jié)的數(shù)據(jù)。在這次課程設計中,我們運用到了以前所學的專業(yè)課知識,如:C語言、匯編語言、模擬和數(shù)字電路知識等。雖然過去從未獨立應用過它們,這次能夠將多門知識來一個大連接,相會融合,相會運用對于自己是一個挑戰(zhàn),也是一個鍛煉。9參考文獻:例說51單片機(C語言版) 人民郵電出版社 張義和等編著tgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKk

18、nBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XA

溫馨提示

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

評論

0/150

提交評論