可調燈光系統程序設計.doc_第1頁
可調燈光系統程序設計.doc_第2頁
可調燈光系統程序設計.doc_第3頁
可調燈光系統程序設計.doc_第4頁
可調燈光系統程序設計.doc_第5頁
免費預覽已結束,剩余10頁可下載查看

下載本文檔

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

文檔簡介

課 程 設 計 課程名稱 單片機原理與接口技術 題目名稱可調燈光系統程序設計2015 年 1 月 16 日目 錄課程設計任務書 -1系統總體設計 -3軟件系統設計 -3 程序流程圖 -3 九級調光源程序代碼 -4 無級調光源程序代碼 -7 調試結果 -10設計感想與體會 -11廣東工業大學課程設計任務書題目名稱基于單片機與PWM技術的可調燈光系統程序設計學生學院信息工程學院專業班級信息工程(應用電子方向)12(1)班姓 名翁桂林學 號3112002505一、課程設計的內容本次課程設計的內容從下面兩個方面任選一個:一是在學院的單片機實驗平臺上進行,開發一個基于單片機與PWM技術的燈光調節系統,主要開發內容為按鍵定義、輸入與防抖動技術、PWM調節技術以及顯示技術等程序設計。二是利用51系列單片機及必要的外圍芯片、輸入輸出等接口電路設計開發一個簡易的單片機系統,在此基礎上,自行設計一個單片機應用程序來實現一些實用的功能。通過這些內容的設計、開發、安裝、調試等一系列工作,熟練掌握單片機系統的開發流程與工作機理,加深對所學課程知識的理解與把握,為將來相關的研究開發工作打下堅實的基礎。二、課程設計的要求與數據1 全面掌握硬件結構與電路原理;2 自行設計開發、編輯、調試應用程序; 3 必須有完善的功能介紹與調試過程說明;4 提供完整的軟件流程框圖。5 提供完整的程序清單。三、課程設計應完成的工作1 硬件理解與安裝調試;2 軟件設計與開發、調試;3 軟硬件聯合調試與實驗;4 按照學校要求撰寫并上交完整的課程設計報告5 完成課程設計答辯。四、課程設計進程安排序號設計各階段內容地點起止日期1查找資料,熟悉硬件電路或實驗平臺的資源圖書館或實驗1號館4042015年1月5日7日2整體方案設計,輸入輸出通道定義(方案一)或硬件安裝、調試與檢查(方案二)宿舍或實驗1號館4041月8日9日3軟件設計與流程圖編寫宿舍或實驗1號館4041月10日4程序編寫宿舍實驗1號館4041月11日12日5軟件調試,與硬件聯合調試宿舍或實驗1號館4041月13日6撰寫課程設計報告宿舍或實驗1號館4041月14日7課程設計答辯實驗1號館4041月15日16日五、應收集的資料及主要參考文獻1 吳寧. 80X86/Pentium 微型計算機原理及應用M. 北京:電子工業出版社,2004:1-249.2 蔡美琴. MCS-51系列單片機系統及其應用M.北京:高等教育出版社,2003:1-169.3 段晨東. 單片機原理與接口技術M. 北京: 清華大學出版社, 2013:1-3334 吳黎明等. 單片機實驗指導書M. 廣州:廣東工業大學教材科,2014發出任務書日期: 2015 年 1 月 5 日 指導教師簽名:計劃完成日期: 2015 年 1 月 16日 基層教學單位責任人簽章:主管院長簽章:一、系統總體設計: 設計背景:現當今,單片機的應用無處不在。利用單片機控制燈具的實例也不勝枚舉,可控制燈具的芯片也相當之多,而利用單片機控制燈具,達到人們預想效果的方法最為廣泛。它有功能多、價格優、外部電路簡單的特點,深受單片機愛好者及燈具控制制造商的青昧,用80C51 單片機及少數外部電路控制燈光,使燈具產生明暗效果。本次課設基于AMC51單片機綜合開發系統,利用單片機的定時中斷生成不同的PWM波形,通過調整PWM的周期、PWM的占空比從而控制輸出平均電壓,進而達到對電燈進行光度亮暗的控制調節的效果,實現對電燈的PWM調光控制。完成的功能及效果與目標:電燈9級PWM亮度調節設計思路:AMC51單片機綜合開發系統,利用單片機的定時中斷生成不同的PWM波形,設置為手動控制,分三個按鍵,九級調光,通過輸出不同的PWM占空比對電燈進行控制,從而實現對光度的調節,進行電燈的亮度調節。其中,K1鍵增加亮度K2鍵降低亮度,K3檔實現電燈的開關控制。工作原理:對于控制電燈由亮到暗或由暗到亮,采用的是脈寬PWM法。它是把每一脈沖寬度均相等的脈沖列作PWM波形,通過改變脈沖占空比可以調壓,采用適當控制方法即可使電壓與頻率協調變化。可以通過調整PWM的占空比而達到控制電流的目的。 PWM簡介: 脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用 微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。2、 軟件系統設計(1) 源程序流程圖(2) 源程序九級調光源程序DIRLOP EQU 38H /顯示字節數LDAN EQU 58H /電燈亮度檔值T2H EQU 59H /T1高8位定時值存儲器T2D EQU 5AH /T1低8位定時值存儲器LAMP EQU P1.2 /電燈控制位ORG 0000HAJMP STARTORG 000BHLJMP TIME1 /T0中斷程序(產生PWM基頻)ORG 001BHLJMP TIME2 /T1中斷程序(控制脈沖寬度)ORG 0030HSTART:SETB LAMP /程序初始化 MOV A,#0 MOV LDAN,A MOV TMOD,#11H /設定兩定時器為16位定時器 MOV IE,#10001010B /開啟兩定時器的中斷請求 MOV TH0,#0FCH /設定PWM基頻(500Hz) MOV TL0,#18H SETB TR0 /啟動計數器T0MAIN: ACALL KEY /調動鍵掃描子程序 ACALL TRANS /調動顯示拆字子程序 ACALL DISP /調動串行顯示子程序 ACALL DLYK /調動20ms延時程序 NOP NOP SJMP MAIN KEY: MOV P2,#0FFH /向P2口寫“1”,準備讀取數據 NOP NOPKEY1: JNB P2.0,K1 /判斷電燈變亮或變暗 JNB P2.1,K2 JNB P2.2,K3BACK: ACALL DONE /調用亮度值到PWM定時值轉換程序 RETK1: ACALL DLYK /按鍵防抖動延時 JB P2.0,BACKJ1: JNB P2.0,J1 /亮度檔值加1 INC LDAN MOV A,LDAN CJNE A,#9,BACK /限定最高檔值為8 DEC LDAN SJMP BACK K2: ACALL DLYK/按鍵防抖動延時 JB P2.1,BACKJ2: JNB P2.1,J2 /亮度檔值減1 MOV A,LDAN CJNE A,#0,J22 SJMP BACKJ22: DEC LDAN/按鍵防抖動延時 SJMP BACKK3: ACALL DLYK JB P2.2,BACKJ3: JNB P2.2,J3 /開關電燈 CPL TR0 NOPNOPSETB LAMP SJMP BACKDLYK:MOV R4,#4AH /20ms定時程序DLYK1:MOV R5,#62HDLYK2:DJNZ R5,DLYK2 DJNZ R4,DLYK1 RET DONE:MOV A,LDAN /亮度值到PWM定時值轉換程序 CJNE A,#0,DJ0 RETDJ0: CJNE A,#1,DJ1 /設定1檔定時值 MOV T2H,#0FFH MOV T2D,#83H RETDJ1: CJNE A,#2,DJ2 /設定2檔定時值 MOV T2H,#0FFH MOV T2D,#06H RETDJ2: CJNE A,#3,DJ3 /設定3檔定時值 MOV T2H,#0FEH MOV T2D,#89H RETDJ3: CJNE A,#4,DJ4 /設定4檔定時值 MOV T2H,#0FEH MOV T2D,#0CH RETDJ4: CJNE A,#5,DJ5 /設定5檔定時值 MOV T2H,#0FDH MOV T2D,#8FH RETDJ5: CJNE A,#6,DJ6 /設定6檔定時值 MOV T2H,#0FDH MOV T2D,#12H RETDJ6: CJNE A,#7,DJ7 /設定7檔定時值 MOV T2H,#0FCH MOV T2D,#95HDJ7: RETTIME1: MOV TH0,#0FCH /定時中斷0 MOV TL0,#18H PUSH ACC PUSH PSW MOV A,LDAN CLR P1.2 /開燈 CJNE A,#0,TM1 /0檔時立刻關掉電燈 SETB P1.2 SJMP TBACKTM1: CJNE A,#8,TM2 /8檔時亮度調到最大 CLR TR1 /關閉定時器1 SJMP TBACKTM2: MOV TH1,T2H /1至7檔時輸入T2定時值控制脈沖寬度 MOV TL1,T2D SETB TR1 /啟動定時器1TBACK: POP PSW POP ACC RETITIME2: SETB P1.2 /關掉電燈 CLR TR1 /關閉定時器1 RETI TRANS: MOV 3CH,LDAN /亮度檔值顯示拆字 MOV 3EH,#16 MOV 3FH,#17 RETDISP: MOV DIRLOP,#4 /串行顯示程序(4位數碼管) MOV R0,#3FH /3CH到3FH是顯示緩沖區DL0: MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR /查得相應的七段代碼 MOV SBUF,A /串行發送DL1: JNB TI,DL1 CLR TI DEC R0 DJNZ DIRLOP,DL0 RETTAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H /共陰七段數碼管代碼表 DB 0BEH,0E0H,0FEH,0E6H,0EEH,03EH,9CH DB 7AH,9EH,8EH,02H,1CHEND 無級調光源程序DIRLOP EQU 38H /顯示字節數DISP0 EQU 39H /串行顯示寄存器0DISP1 EQU 3AH /串行顯示寄存器1DISP2 EQU 3BH /串行顯示寄存器2LDAN EQU 58H /電燈亮度檔值T2H EQU 59H /T1高8位定時值存儲器T2D EQU 5AH /T1低8位定時值存儲器LAMP EQU P1.2 /電燈控制位ORG 0000HAJMP STARTORG 000BHLJMP TIME1 /T0中斷程序(產生PWM基頻)ORG 001BHLJMP TIME2 /T1中斷程序(控制脈沖寬度)ORG 0030HSTART: SETB LAMP /程序初始化 MOV A,#0 MOV LDAN,A MOV DISP0,A MOV DISP1,A MOV DISP2,A MOV TMOD,#11H /設定兩定時器為16位定時器 MOV IE,#10001010B /開啟兩定時器的中斷請求 MOV TH0,#0FCH /設定PWM基頻(500Hz) MOV TL0,#18H SETB TR0 /啟動計數器T0MAIN: ACALL KEY /調動鍵掃描子程序 ACALL TRANS /調動顯示拆字子程序 ACALL DISP /調動串行顯示子程序 ACALL DELAY100 /調動20ms延時程序 NOP NOP SJMP MAIN KEY: MOV P2,#0FFH /向P3口寫1,準備讀取數據 NOP NOPKEY1: JNB P2.0,K1 /判斷電燈變亮或變暗 JNB P2.1,K2 JNB P2.2,K3BACK: ACALL DONE /調用亮度值到PWM定時值轉換程序 RETK1: ACALL DELAY100 /按鍵防抖動延時 JB P2.0,BACKJ1: /亮度檔值加1 INC LDAN MOV A,LDAN CJNE A,#0,BACK /限定最高檔值為255 DEC LDAN SJMP BACK K2: ACALL DELAY100 JB P2.1,BACKJ2: /亮度檔值減1 MOV A,LDAN CJNE A,#0,J22 SJMP BACKJ22: DEC LDAN SJMP BACKK3: ACALL DELAY100 JB P2.2,BACKJ3: JNB P2.2,J3 /開關電燈 CPL TR0 NOP NOP SETB LAMP SJMP BACKDLYK: MOV R4,#2AH /20ms定時程序DLYK1: MOV R5,#32HDLYK2: DJNZ R5,DLYK2 DJNZ R4,DLYK1 RET DELAY100:MOV R4,#7AH /小延遲程序DLYK101:MOV R5,#20HDLYK102:DJNZ R5,DLYK102 DJNZ R4,DLYK101 RET DONE: MOV A,LDAN /亮度值到PWM定時值轉換程序 CJNE A,#0,DJ0 RETDJ0: MOV B,#2H/亮度值轉化為定時器初始值 MUL AB CPL A MOV R1,A MOV A,B CPL A MOV R2,A MOV T2H,R2 MOV T2D,R1 RET TIME1: MOV TH0,#0FCH /定時中斷0 MOV TL0,#18H PUSH ACC PUSH PSW MOV A,LDAN CLR P1.2 /開燈 CJNE A,#0,TM1 /0檔時立刻關掉電燈 SETB P1.2 SJMP TBACK TM1: CJNE A,#0,TM2 /255檔時亮度調到最大 CLR TR1 /關閉定時器1 SJMP TBACKTM2: MOV TH1,T2H /輸入不同的T2定時值控制脈沖寬度 MOV TL1,T2D SETB TR1 /啟動定時器1TBACK: POP PSW POP ACC RETITIME2: SETB P1.2 /關掉電燈 CLR TR1 /關閉定時器1 RETITRANS: MOV A,LDAN /將LDAN轉化為十進制數 MOV B,#64H DIV AB MOV DISP2,A MOV A,#0AH XCH A,B DIV AB MOV DISP1,A MOV DISP0,B MOV 3CH,#16 RETDISP: MOV DIRLOP,#4 /串行顯示程序(4位數碼管) MOV R0,#3CH /3CH到3FH是顯示緩沖區DL0: MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR /查得相應的七段代碼 MOV SBUF,A /串行發送DL1: JNB TI,DL1 CLR TI DEC R0 DJNZ DIRLOP,DL0 RETTAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H /共陰七段數碼管代碼表 DB 0BEH,0E

溫馨提示

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

評論

0/150

提交評論