8051照明燈智能控制器_第1頁
8051照明燈智能控制器_第2頁
8051照明燈智能控制器_第3頁
8051照明燈智能控制器_第4頁
8051照明燈智能控制器_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-5"\h\z摘要 IAbstract II\o"CurrentDocument"1緒論 1\o"CurrentDocument"課題研究的背景 1\o"CurrentDocument"開發的意義 1\o"CurrentDocument"課題研究的方案 12芯片選用說明 1\o"CurrentDocument"AT89S52 1\o"CurrentDocument"相關芯片及其引腳分析 1\o"CurrentDocument"引腳功能說明 2\o"CurrentDocument"AT89C2051 4\o"CurrentDocument"相關芯片及其引腳分析 4\o"CurrentDocument"LCD1602 5\o"CurrentDocument"相關芯片及其引腳分析 5SMC1602A參考連接: 7\o"CurrentDocument"3.系統硬/軟件設計 8夜用照明系統的設計 8\o"CurrentDocument"標準時鐘顯示部分設計: 10\o"CurrentDocument"光敏接收電路 12\o"CurrentDocument"接鍵可調部分 12系統照明和報警部分 13系統復位與晶振電路 13\o"CurrentDocument"軟件設計部分 13程序源程序:見附頁1 144調試 14\o"CurrentDocument"硬件調試 14\o"CurrentDocument"軟件的調試 14\o"CurrentDocument"5.總結與展望 16\o"CurrentDocument"5.1工作總結 16\o"CurrentDocument"5.2展望 16\o"CurrentDocument"參考文獻: 17致謝 18\o"CurrentDocument"附頁1:程序清單 19單片機照明燈智能控制器電子信息科學科學與技術專業2002級馬培指導教師鄧于摘要該夜用照明燈系統采用AT89S52單片機為核心,利用單片機的端口分別控制LCD1602標準時鐘系統、可控硅和電鈴,達到智能操控照明系統。我們常見的路燈、過道燈、草坪燈、廣告箱燈、霓虹燈和廁所等公共場所用的一些照明燈往往徹夜通明,這不僅浪費能源,在某種程度上也造成了光污染。在今天電力能源供應比較緊張的情況下,在沒有人員活動的深夜讓這些燈關掉一些,不僅可以節約能源,也能夠節約一些開支。本文主要介紹系統的開發背景,意義,并重點介紹了硬件設計和軟件設計的過程。在硬件方面,從元件,模塊,系統逐級闡述,特別是系統的核心部分AT89C52,并用PROTEL99SE軟件對原理圖和電路板的制作。軟件方面,用現階段比較流行的單片機C語言編程,利用定時器中斷控制標準時鐘。最后是軟硬件的調試,其中介紹了單片機仿真軟件KEILC51的使用。關鍵詞AT89S52可控硅AT89c2051LCD1602光敏電阻keilc51PROTEL99SEAbstractThisnightflaresystemisansystembasedontheAT89S52monolithicintegratedcircuit,itmakesuseoftheportofmonolithicintegratedtocontroltheLCD1602standardclocksystem,thesilicon-controlledrectifierandtheelectricbellseparatelyandthenthelightingsystemwascontrolledbyintelligence.Somecommonstreetswhichareinpublicplaces,suchas:theaislewaylight,thelawnlamp,theadvertisementboxlamp,theneonlightandtherestroomandsoonthepublicplaceusessomeflaresoftenallnightarebrightlylit,thisisnotonlywastingofenergy,butalsomaketheraypollutioninsomekindofprocedure.Nowaday,theelectricpowerenergyisinshortsupply,soifweturnoffsomewhenthereisnopeople,itisnotexpenses.Inthisarticle,itintroducesthesystematicdevelopmentbackground,thesignificanceandespeciallytheprocessofthehardwaredesignandthesoftwaredesign.Inthehardwareaspect,thisarticleelaboratesthepart,themodule,thesystemonebyone,especiallythecoreofthesystemAT89C52,andusesthePROTEL99SE.Softwaretotheschematicdiagramandtheelectriccircuitboardmanufacture.InthesoftwareaspectwiththepresentstagequitepopularmonolithicintegratedcircuitClanguageprogramming,usesthetimerinterruptcontrolstandardclock.Finallyitwasthesoftwareandhardwaredebugging,inwhichintroducedtheinstatonsofthestationsofmonolithicintegratedcircuitsimulationsoftwareKEILC51use.KeywordAT89S52silicon-controlledrectifierAT89c2051LCD1602photoresistancekeilc51PROTEL99SE1緒論課題研究的背景隨著現代科技的飛速發展,單片機已經在各個領域得到越來越廣泛的應用。單片機由于體積小,功耗低兩個基本特征,在通訊,家電,工業控制,儀器儀表,汽車等產品中都可以看到單片機的身影。單片機技術也隨著集成電路技術的進步在近幾年飛速的發展,這種發展可以分為兩方面[1]:一方面在硬件上單片機內部集成了越來越多的功能部件,女如A/D,D/A,PWM,WATCHDOGLCD驅動,串行口,大容量FLASH存儲器等;另一方面在開發手段上從匯編語言向高級C語言過度,計算機仿真調試,IAP,ISP技術的應用使單片機開發周期大大的縮短,為各類產品更新,軟件的升級提供了可靠的技術保障。在設計單片機應用系統時,由于歷史的原因,目前在國內仍然以8051系列單片機為主。作為電子專業的學生,非常有必要通過實際產品的設計和制作,了解現代IT產品的開發全流程。全面提高機,電,光,算知識的綜合應用能力,掌握從系統級,電路級,到芯片級各個層次的設計和實現手段。基于上述原因,選擇此設計課題,在此設計過程中,我們將會用到多門學科的理論知識,將對以前所學的知識做一個全面的復習和鞏固,更重要的是培養了發現問題,分析問題,解決問題的能力,還有動手能力,也是一次很好的實踐,對以后的學習和工作也會有所幫助。開發的意義科技的進步帶動了產品的智能化,單片機的應用更是加快了發展的步伐,它的應用范圍日益廣泛,已遠遠超出了計算機科學的領域。小到玩具、信用卡,大到航天器、機器人,從實現數據采集過程控制、模糊控制等智能系統到人類的日常生活,到處都離不開單片機,此設計正是單片機的一個典型應用。而此設計可以通過實現智能照明控制,通過對路面的檢測,由單片機來控制其反應情況使其變得智能化,使人的手解放出來,此系統還可以應用到道路檢測,安全巡邏中,能滿足社會的o課題研究的方案本選題是用單片機介紹一種使用AT89C2051單片機聯合AT89S52制作的夜用照明燈智能控制器,采用兩開兩關的工作模式,即在天黑后自動開燈,過4小時后關燈;在天亮前1小時開燈,天亮后自動關燈。天黑后開燈的持續時間和天亮前提前開燈的時間可通過程序進行調整。由于本系統采用單片機對環境照度進行測試判斷并進行計算,因此電路能隨著季節的變化自動調節每天的開關燈的時間,從而達到自動節約電能的目的。2芯片選用說明[15]AT89S52相關芯片及其引腳分析AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧曲位CPU和在系統可編

程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節Flash,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至OHz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。]VccJPO.O/ADO]PO.1/AD1JPO.2/AD2]PO.3/AD3JPO.4/AD4]PO.5/AD5]PO.6/AD6]PO.7/ADT]VccJPO.O/ADO]PO.1/AD1JPO.2/AD2]PO.3/AD3JPO.4/AD4]PO.5/AD5]PO.6/AD6]PO.7/ADT]EA/VurJALE/PROC]PSENJP2.7/AD15]P2.E/AD14]P2.5/AD13]P2.4/AD12]P2.3/AD11JP2.2/AD10]P2.1/AD3JP2.0/AD8(T2)P1.0匸(T2EK)P1.1匸P1.2I:P1.3LPl.4CP1.5EP1.6I:P1.7rKESETI:EXD/P3.0I:TKD/P3.1LIBT0/P3.2I:IBT1/P3.3ET0/P3.4I:T1/P3.5匸M/P3.6I:ED/P3.7匸KTAL2LKTAL1I:PDIPVeeL圖151系列單片機40引腳圖VCC:電源GND:地POD:PO口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0具有內部上拉電阻。在flash編程時,P0口也用來接收指令字節;在程序校驗時,輸出指令字節。程序校驗時,需要外部上拉電阻。P1口:P1口是一個具有內部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅動4個TTL邏輯電平。對P1端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數器2的外部計數輸入(P1.0/T2)和時器/計數器2的觸發輸入(P1.1/T2EX)具體如下表所示。在flash編程和校驗時,P1口接收低8位地址字節。表1P1口的第二功能引腳號P1.0引腳號P1.0P1.1P1.5P1.6P1.7T2(定時器/計數器T2的外部計數輸入),時鐘輸出T2EX(定時器/計數器T2的捕捉/重載觸發信號和方向控制)MOSI(在系統編程用)MISO(在系統編程用)SCK(在系統編程用)P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動4個TTL邏輯電平。對P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用

第2頁共27頁時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數據存儲器(例如執行MOVX@DPTR)時,P2口送出高八位地址。在這種應用中,P2口使用很強的內部上拉發送1。在使用8位地址(如MOVX@RI)訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在flash編程和校驗時,P2口也接收高8位地址字節和一些控制信號。P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,p2輸出緩沖器能驅動4個TTL邏輯電平。對P3端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表(2)所示。在flash編程和校驗時,P3口也接收一些控制信號。表2P3口第二功能引腳號 第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(外部中斷0)P3.3INT0(外部中斷0)P3.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)P3.6WR(外部數據存儲器寫選通)P3.7RD(外部數據存儲器寫選通)RST:復位輸入。晶振工作時,RST腳持續2個機器周期高電平將使單片機復位。看門狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態下,復位高電平有效。ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執行MOVX或MOVC指令時有效。否貝I」,ALE將被微弱拉高。這個ALE使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執行模式下無效。PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當AT89S52從外部程序存儲器執行外部代碼時,PSEN在每個機器周期被激活兩次,而在訪問外部數據存儲器時,PSEN將不被激活。EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執行內部程序指令,EA應該接VCC。在flash編程期間,EA也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和內部時鐘發生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端特殊功能寄存器:特殊功能寄存器(SFR)的地址空間映象所示。并不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將得到一個隨機數據;寫入的數據將會無效。用戶不應該給這些未定義的地址寫入數據“1”。由于這些寄存器在將來可能被賦予新的功能,復位后,這些位都為“0”。定時器2寄存器:寄存器T2C0N和T2M0D包含定時器2的控制位和狀態位(如表2和表3所示),寄存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載寄存器。中斷寄存器:各中斷允許位在IE寄存器中,六個中斷源的兩個優先級也可在IE中設置。T2CON:定時器/計數器2控制寄存器T2CON地址為0C8H復位值:00000000B位可尋址:表3中斷寄存器TF2EXF2RLCLKTCLKEXEN2TR2C/T2CP/RL276543210AT89C2051[18]2.2.1相關芯片及其引腳分析先介紹本系統中的核心器件AT89C2051。它是一帶有2K字節閃速可編程可擦除只讀存儲器的低壓、高性能8位CMOS微型計算機。它采用ATMEL的高密非易失存儲技術制造并和工業標準MCS-51指令集和引腳結構兼容。ATMELAT89C2051是一強勁的微型計算機,它對許多嵌入式控制應用提供一高度靈活和成本低的解決辦法。AT89C2051提供以下標準功能:2K字節閃速存儲器,128字節RAM,15根I/O引線,兩個16位定時器/計數器,六個中斷源,一個全雙工串行口,一精密模擬比較器以及片內振蕩器和時鐘電路。此外,AT89C2051是用可降到0頻率的靜態邏輯操作設計的并支持兩種可選的軟件節電工作方式。空閑方式停止CPU工作但允許RAM,定時器/計數器,串行口和中斷系統繼續工作。掉電方式保存RAM內容但振蕩器停止工作并禁止所有其它部件的工作直到下一個硬件復位。AT89C2051共有20條引腳,詳見下圖2:RSTPl.7Pl.6P3.0(RXD)Pl.5P3.1(TXD)Pl.4P3.2(INT0)Pl.3P3.3(INT1)Pl.2P3.4(T0)(AINl)Pl.lP3.5(T1)(AINO)Pl.OP3.7XTAL2VCC>XTAL1GND1114520Io219181716141312圖2AT89C2051引腳圖各引腳功能如下:RST(Pinl):復位輸入°RST—旦變成高電平所有的I/O引腳就復位到“1。當振蕩器正在運行時,持續給出RST引腳兩個機器周期的高電平便可完成復位。OSC2(Pin4):作為振蕩器反相放大器的輸出。OSC1(Pin5):作為振蕩器反相放大器的輸入和內部時鐘發生器的輸入。第4頁共27頁

GND(PinlO):地。VCC(Pin20):電源電壓。Pl口(Pin12?Pin19):Pl口是一8位雙向I/O口。口引腳Pl.2?Pl.7提供內部上拉電阻。P1.0和Pl.l還分別作為片內精密模擬比較器的同相輸入(AIN0)和反相輸入(AINl)。P3口:是帶有內部上拉電阻的雙向I/O口。它還用于實現AT89C205l的其它特殊功能。P3.0為串行輸入端口P3.l為串行輸出端口P3.2為外中斷0P3.3為外中斷lP3.4為定時器0外部輸入P3.5為定時器l外部輸入LCD1602[l9]相關芯片及其引腳分析?主要技術參數:OOcbco9—9小03"Z丁-80.0 -75.OOcbco9—9小03"Z丁-80.0 -75.0 -73.7 54OOOOO169.&5.&無背光 底部LED背光■~~13.(H- 9.0n—?控制器接口說明(IID44780及兼容芯片):匚顯示容量:16X2個字符芯片工作電壓:工作電流:模塊最佳工作電壓:字符尺寸:4.5?5.5V20mA(5.0V)5.0V2.X4.35(WXH)mm?接口信號說明:編號符號引腳說明編號符號引腳說明1VSS電壓地9D2DataI/O2VDD電源正極10D3DataI/O3VL液晶顯示偏壓信號11D4DataI/O4RS數據/命令選擇端(H/L)12D5DataI/O5R/W讀/寫選擇端(H/L)13D6DataI/O6E使能信號14D7DataI/O7DODataI/O15BLA背光源正極8D1DataI/O16BLK背光源負極?外形尺寸:L—1,5—輸出:D0~D7=狀態字 輸出:無L—1,5—輸出:D0~D7=狀態字 輸出:無1.5-讀狀態:輸入:RS=L,RW=H,E=H讀數據:輸入:RS=L,RW=H,E=H輸出:D0~D7=數據寫指令?輸入:RS=L,RW=L,讀數據:輸入:RS=L,RW=H,E=H輸出:D0~D7=數據寫數據:輸入:RS=L,RW=H,DO?D7=數據,寫數據:輸入:RS=L,RW=H,DO?D7=數據,E=高脈沖2狀態說明字 STA7STA6STA5STA4STA3STA2STA1STAOD7D6D5 D4D3 D2D1DO輸出:無STA0-6當前數據地址指針的數值STA7讀寫操作使能 1:禁止0:允許都必注:對控制器每次進行讀寫操作之前須進行寫控制,確保STA7為0RAM地址映射圖控制器內部帶有808位(80字節)的RAM緩沖區,對應關系如右圖所示:3指令說明LCD16字X2行000102030405060708090A0B0C0D4142434445464748494A4B4C4D4E初始化設置:顯示模式設置指令碼0 0 0 0 1DCB0 0 0 0 0 1指令碼0 0 0 0 1DCB0 0 0 0 0 1NS功能D=1開顯示D=0關顯示C=1顯示光標C=0不顯示光標B=1光標閃爍B=0光標不顯示N=1當讀或寫一個字符后地址指針加

一,且光標加一N=0當讀或寫一個字符后地址指針減

一,且光標減一S=1當寫一個字符,整屏顯示左移(N=1)

或右移(N=0),以得到光標不移動而屏幕

移動的效果。S=0當寫一個字符,整屏顯示不移動指令碼功能00111000設置16X2顯示,5X7點陣,8位數據接口顯示開/關及光標設置數據控制:控制器內部設有一個數據地址指針,用戶可通過它們來訪問內部的全部80字節RAM數據指針設置指令碼功能80H+地址碼(0-27H,40H-67H)設置數據地址指針其他設置指令碼功能01H顯示清屏:1數據指針清零2所有顯示清零02H顯示回車:1數據指針清零

延時15ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)(以后每次寫指令、讀/寫數據操作之前均需檢測忙信號)寫指令38H:顯示模式設置寫指令08H:顯示關閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設置寫指令06H:顯示開及光標設置2.3SMC1602A參考連接:18051系列總路線方式P1.0P1.7RH0歐姆,1/2咐coO00控制器接口時F1P1.0P1.7RH0歐姆,1/2咐coO00控制器接口時F1讀操作時序P2.7P2.1P2.0 1 74LS00rt+5V0V10K,ovJ―—8051系列模擬口線方式V0O9WSP3.5P3.1P3.0V0O9WS3時序參數時序參數符號最小值極限值典型值最大值單位測試條件E信號周期tc400--nsE脈沖寬度Tpw150--ns引腳EE上升/下降沿時間Tr,tf--25ns地址建立時間Tsp130--ns引腳E、地址保持時間Thdl10--nsRS、R/w數據建立時間(讀操作)Td--100ns數據保持時間(讀操作)Thd220--ns引腳D0~D7數據建立時間(寫操作)Tsp240--ns數據保持時間(寫操作)Thd210--ns3.系統硬/軟件設計夜用照明系統的設計方案論證和比較

1采用NE555時基電路來進行定時,以便控制開關的時間,其他各系統單元分別用相應獨立的電路來完成,其方框圖如圖3所示:圖32采用CPLD芯片來完成,其處圍電路簡單,具體方框圖如圖4所示:圖4綜合以上三種設計方案,第一種精度較低,而且各部分全部采用模擬器件來組成部分,制作復雜;第二種采用CPLD元件來組成,要求對硬件描述語言(VHDL)要求較高,且控制時間準確,電路工作穩定;第三種方案采用單片機(AT89C/S52或者AT89C2051)制作調試方便、控制時間準備,電路工作穩定,而且非常簡單(硬件部分)、使用范圍廣。為此本設計將選用第三種方案。3采用AT89S52和AT89C2051微處理芯片,來控制智能照明系統,具體方框圖如圖5所示:本系統采用光敏電阻來感應(天亮/滅),利用AT89C2051在內部構造了一個模擬信號比較器其輸入端連到P和P口,P和P口的第二個功能分別為比較器的同相輸入端和反相輸入端,比1.01.11.01.1

圖5結果存入P口對應的寄存器,P在AT89C2051外部無引腳。由于AT89C2051的引腳不夠,所3.6以多加一塊AT89C/S52來擴展系統標準時鐘電路,AT89C2051的P腳與AT89S52的P腳相連接,3.7R為光敏電阻,其電阻值隨著光線的增強而減少,當照度較小時P口的電位小于P口的電位,61.11.0P3.6口輸出高電平,只有在AT89C2051的ROM中寫入相應的程序就可以控制P口的電平,從而控制圖6AT89C/S52的口的電平,從而達到控制外圍電路(照明與電鈴電路),可變電阻的度的控制閾值。由于本系統處理任務不復雜,所以在標準時鐘電路采用模擬口線方式。如圖9所示:電源采用7805穩壓集成芯片來提供穩定單片機夜用照明系統的電源,從而能夠穩定的工作。由于本電路比較復雜,采用傳統萬能板焊接時(要求焊接技術比較高),而且非常麻煩(飛線多),導致焊點大(不美觀)所以采取自己做PCB,采用Protel99SE軟件來畫單片機夜用照明系統的原理圖(.sch)和印制板(.pcb),最終效果圖如圖8:標準時鐘顯示部分設計:在小規模點陣液晶模塊上使用液晶顯示驅動控制器組成液晶顯示驅動控制系統是非常有益的。這使得液晶顯示模塊的硬件電路簡單化,從而降低模塊的成本。但是這也同時提高了對軟件功能的AT89C205131AO2Al34A2A3AT89C205131AO2Al34A2A3567SA4A5A5A7VCCF'l_l2Pl_23F'l_3斗X2ISETSF'3_7it「P3_6PlUg(ADO)PO.OF1.1(T2EX)(ADl)PO.lPl.2(AD2)P0.2Pl.3(AD3)P0.3Pl.4(AD4)P0.4P1.5(M0SI)(AD5)P0.5P1.6(MIS0)(AD6)P0.6P1.7(SCK)(AD7)P0.7P3.3(INT1)(A8)P2.0P3.2(INT0)(A9)P2.1(A10)P2.2P3.5(T1)(AU)P2.3P3.4(T0)(A12)P2.4(A13)P2.5EAATP(A14)P2.6(A15)P2.7>XTAL1XTAL2VCCGNDRST〔RXD〕P3.0(TXD)P3.1P3.7(KD)ALE^PROGP3.6(WR)PSEN0CC1D1Q2D2Q3D3Q4D4Q5D5Q6D6Q7D7Q8D8QRSTPl.7Pl.6P3.0(RXD)Pl.5P3.1(TXD)Pl.4P3.2(INT0)F'1.3P3.3(INT1)Pl.2P3.4(T0)(AINl)Pl.lP3.5(T1)(AINO)Pl.OP3.7STAL2VCC>XTAL1GNDEIGVCCBGGKDLCEI1602圖7照明燈智能控制器原理圖要求, 圖要求, 圖就是這類液晶顯示驅動控制器套件。之所以稱它們為套件是因為HD61206和HD61202必須配套使用,通常有12864和19264兩種規格。硬件電路部分:U4三74HC5731ALE\A02\A13\A24\A35\A46\A57_\A68\A79OCVCCVCC209■IVCC2D3D74HC573U4三74HC5731ALE\A02\A13\A24\A35\A46\A57_\A68\A79OCVCCVCC209■IVCC2D3D74HC5734D5D1Q2Q3Q4Q5Q6Q7Q8Q19風1816區1514久13債12^7圖9標準時鐘顯示電路|1GNDVCCVORSRWDB0DB1DB2DB3DB4DB5DB6DB7BGVCCBGGND本液晶顯示模塊(LCD1602)棊用模擬口線方式,該連接方式簡單。微^理器AT89C/S52的P0口通過數據鎖存器(74HC573)分別與液晶顯示模塊(LCD1602)的數據端(DB)相連接,數據命令選擇端(RS)、讀寫選擇端(R/W)、使能信號端(E)分別與微處理器AT89C/S52的P口、P口、P口相連2.3 2.4 2.5接。光敏接收電路該部分電路是通過at89C2051里面的模擬信號比較器,R為光敏電阻,其電阻值隨著光線的增強而減少,當照度較小時P.1口的電位小于P.0口的電位,〈6口輸出高電平。變可變電阻RP的阻值可調整照度的控制閾值,如圖7所示。由于微處理器AT89C2051的P口與AT89C/S52的P口3.7相連接,所以只要在AT89C2051的ROM中寫入相就的程序,就可以控制到AT89C/S52,從而可以采取一系統的動作(照明和電鈴電路)。U1SREE3X25IRST/VPPVCC(RXD)P3.0 Pl.7(TXD)P3.1 Pl.6XTAL:XTALT892051.51.4U1SREE3X25IRST/VPPVCC(RXD)P3.0 Pl.7(TXD)P3.1 Pl.6XTAL:XTALT892051.51.4(INT0)P3.2 Pl.3(INT1)P3.3 Pl.2(T0)P3.4P1.1(AIN1)(T1)P3.5P1.0(AIN0)GND P3.7VCC20919~18~17~16-15~14-12~11P37VCCORP10Kr)R6'T22IAT8920514.7KTlign圖10光敏接收電路接鍵可調部分由于本系統設置功能部分要求比較簡單(標準系統調時和),所以采用獨立式按鈕調節,端口用第12頁共27頁

照明部分由q、氣、S'R『K、ds組成,當口輸出高電平時,三極管Qi截止,雙向可控硅ds因沒有觸發電流處于阻斷狀態’電燈LAMP關閉;當豊口輸出低電平時’三極管Qi導通飽和,向雙向可控硅D提供觸發電流使其進入導通狀態,電燈LAMP點亮。P口的輸出狀態由程s 3.6序控制。報警部分由Q、U、R組成,當P口輸出高電平時Q截止,U有微電流或者無電流通過,29203.529BELL不工作。P口的輸出狀態由程序控制。該電路為AT89C2051和AT89C/S52提供時鐘基準與復位,如圖13所示:3.7軟件設計部分硬件調試首先是焊接的順序問題。當初板子做好以后,焊接的順序很重要,應該是應該按功能劃分的器件進行焊接,順序是功能部件的焊接--調試--另一功能部件的焊接,這樣容易找到問題的所在。如果在調試按功能劃分的器件上出現問題,可以按以下步驟進行:1)檢查原理圖連接是否正確2)檢查原理圖與PCB圖是否一致3) 檢查PCB板上的封裝引腳是否與實際采購的器件引腳一致4) 用萬用表檢查是否有虛焊,引腳短路現象5)檢測各器件的電路輸出端口的輸出是否與理論值相等或者接近。(在測光敏電阻電壓的時候,其引腳1,7的輸出很小,原來是電位器的調節引起的)。多觀察,多思考。在調試過程中,對于出現的任何現象都不要放過,問題的解決就是從一些小的現象入手的。有可能的情況下,最好做兩塊板子以上,因為焊好的板子不便于查看其導線的走向,這樣才好有個比較,硬件上很小的問題有很多時候是很難發現的。4.2軟件的調試[11]源程序編好以后,驗證其正確性,MCS-51單片機可以通過常用的仿真軟件KeilC51來調試,它可以對匯編或者C語言編的程序進行調試。建立工程文件1) 點擊菜單project,選擇newproject:2) 然后選擇要保存的路徑,輸入工程文件的名字,比如保存到論文目錄里,工程文件的名字為hjycar.uv2.3) 這時會彈出一個對話框,要求你選擇單片機的型號,你可以根據你使用的單片機來選擇,keil

c51幾乎支持所有的51核的單片機,這里選AT89S52。始開First?Hour=4?天亮?亮-1?天亮?5VP36=0?P3_7=0(At89s52)存取時間(天黑)P3.6=0燈亮T1始開First?Hour=4?天亮?亮-1?天亮?5VP36=0?P3_7=0(At89s52)存取時間(天黑)P3.6=0燈亮T1開始計時存取時間(天亮)P3_7=0(At89c2051)12VP3.6=0燈亮P3.6=1燈滅BELL打鈴BELL打鈴BELL打鈴P3.6=1燈滅圖14單片機照明燈智能控制器流程圖4) 這時要新建一個源程序文件,建立一個匯編或c文件,輸入編寫好的程序。5) 保存。選擇要保存的路徑,在文件名里輸入文件名,注意一定要輸入擴展名,如果是c程序文件,擴展名為.c,如果是匯編文件,擴展名為.a51,這里有匯編語言,文件名為:hjycar.asm。調試程序1) 點擊Target1前面的+號,展開里面的內容sourceGroup1:2) 用右鍵點擊SoureceGroup1(注意用鼠標的右鍵,而不是左鍵),將彈出一個菜單,選擇AddFilestoGuoup'SourceGroup1'.3) 選擇剛才的文件hjycar.asm.這時在sourcegroup1里就有hjycar.asm文件4) 單擊“Project”菜單,再在下拉菜單中單擊“BuiltTarget”選項(或者使用快捷鍵F7),編譯成功后,再單擊“Project”菜單,在下拉菜單中單擊“Start/StopDebugSession”(或者使用快捷鍵Ctrl+F5),5) 單擊“Debug”菜單,在下拉菜單中單擊“Go”選項,(或者使用快捷鍵F5),然后再單擊

“DeBug”菜單,在下拉菜單中單擊“StopRunning”選項(或者使用快捷鍵Esc);再單擊“View”菜單,再在下拉菜單中單擊“SerialWindows#1”選項,就可以看到程序運行后的結果.程序的加載單擊“Project”菜單,再在下拉菜單中單擊“”在下圖中,單擊“Output”中單擊“CreateHEX

File”選項,使程序編譯后產生HEX代碼,供下載器軟件使用。把程序下載到AT89C52單片機中。5.總結與展望5.1工作總結經過三個多月的努力,我基本上完成了基于AT89C2051和AT89C/S52微處理器控制的單片機夜用照明顯示系統。所完成的工作主要包括以下幾個方面:準備階段的工作準備階段的工作主要包括:查閱國內外相關文獻,了解微控制器的發展過程及發展趨勢,了解LCD顯示屏的工作原理、主要作用。對顯示系統的硬件設計本文采用單片機與液晶顯示模塊(LCD1602)模擬口線方式。該模擬口線方式簡單,比較容易控制液晶顯示模塊(LCD1602)。系統軟件設計軟件主要包含時鐘判斷和顯示程序,調用不同指令來完成相應的功能。本單片機夜用照明系統采用單片機C語言來編寫,在其編寫過程當中比較方便的調用單片機內部的資源,從而比較容易控制與單片機相聯系的外圍電路。5.2展望盡管本系統能夠完成我們所要求的任務來控制照明系統,并且體現出了物優價廉的優越性,但由于本人水平和開發時間有限,離一個完全實用的,能夠完全符合市場需求的單片機夜用照明顯示系統還有一定的差距。因此,在以后的研制過程中,還需要在系統抗干擾方面、增強顯示效果、提高其靈敏度及功能上做大量工作,以滿足更高使用要求。參考文獻:[1] 劉文濤單片機語言C51典型應用設計[M]人民郵電出版社2005,1(1):5-8[2] 求是科技單片機典型模塊設計實例導航[M]人民郵電出版社1995,1(4):32-34[3] 趙亮侯國銳單片機C語言編程與實例[M]人民郵電出版社1995,1(6):37-38[4] 稻葉保[日]振蕩電路的設計與應用[M]科學出版社1997,19(3):71-72[5] 豬飼國夫本多中二[日]數字系統設計[M]科學出版社1998,1(2):122-124[6] 鈴木雅臣[日]晶體管電路設計(上)(下)[M]科學出版社2003,1(6):92-93[7] 岡村迪夫[日]OP放大電路設計[M]科學出版社2003,1(6):92-93[8] 楊幫文應用電路百例叢書新型集成器件實用電路[M]電子工業出版社,2004,1(34):13-14[9] 求是科技李現通串口通信技術與工程實踐[M]人民郵電出版社2001,3(2):56-58[10] 楊金巖8051單片機數據傳輸接口擴展技術與應用實例[M]人民郵電出版社1996,1(2):1-5[11] keilc51的使用[M]人民郵電出版社1998,1(2):122-124[12] 電子制作工作室電子制作[J]電子制作雜志社2005,2(3):23-24[13] 吉雷.Protel99—從入門到精通[M]西安電子科技大學出版社.2000.10[14] 張友德.單片微型機原理、應用和實驗[M]復旦大學出版社.1996.10[15] ATMEL公司AT89S52的技術手冊[J].2002.3[16] 深圳市中源單片機發展有限公司[J]AT89C52Datasheets.1994.7[17] /Soft_Show.asp?SoftID=252005.8[18] /pages/2004/06/08/D142698.html2006.5[19] /Soft_Show.asp?SoftID=142006.5致謝在畢業設計期間,我得到了許多熱心的教師、同學的幫助,在此表示深深的謝意。首先,我衷心地感謝我的導師鄧于實驗師。他耐心的教誨和嚴謹的態度使我受益匪淺,正是他在各方面的精心指導才使我最終完成了課題。同時,我也要感謝馬培、梁成山同學。在整個畢業設計期間,正是我們積極的討論及他們的全力協助,才使我的課題以較快的速度完成。最后,我不能不對在百忙之中抽出寶貴時間來參加參加論文評閱的各位教師表示由衷的謝意,他的的指導不但能修正論文中的錯誤,而且也使我得以真知。由于本人學識有限,文中必有不妥之處,敬請各位教師批評指正。張露2006年5月于重慶永川附頁1:程序清單//**********1602-LEDorClock*********#include"at89x52.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongucharbdataflag;sbitstart=flag"O;//設置時間標志位sbitstartl二flag"l;sbitstart2二flag"2;sbitstart3二flag"3;sbitstart4二flag"4;sbitstart5二flag"5;sbitstart6二flag飛;sbitstart7二flag"7;bitcasp;sbitrs=P2"3;sbitrw=P2"4;sbite二P2"5;ucharcodeucharcodeuchar'};codetablel[]={'M','C','U','','C','l','o','c',,1 , , , ,C, , , , , ,丄, , , , ,]'k','','S','y','s','t','e','m'};丄1 1c「1table2[]={'','','','','',':','','',':','','','.','','','',''};':','','','.','','','',''};table3[]={'0','l','2','3','4','5','6','7','8','9','S','e','t','','','ucharsecond_l,second,minte,hour;ucharcount,buffer[7],countl;uchartempsecond,tempminte,temphour;uchartempdaysecond,tempdayminte,tempdayhour;voiddisplay(void);voidscankey(void);voiddelaysecond(void);voiddelayfirst(void);voidwrite(void);voidenable(void);voidsys_init2(void);voidtemptime(void);voidchecktime(void);voidcheckdaytime(void);

voidtempdaytime(void);voidcallmusic(void);voidcheckled(ucharcheckled,ucharcheckled1,ucharjnz);/// /^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^jsucharT1count;ucharT1minte;ucharbdataTofirst1;sbitTofirst=Tofirst「0;sbitfirstday二Tofirstl1;//**********main*************voidmain(void){uchari;P0=0x01;enable();P0=0x38;enable();P0=0x0c;enable();P0=0x80;enable();for(i=0;i<16;i++){P0=table1[i];write();}P0=0xc0;enable();for(i=0;i<16;i++){P0=table2[i];write();}TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;sys_init2();ET1=1;ET0=1;TR0=1;EA=1;start2=0;start=0;start1=0;hour=12;minte=59;while(1){if(Tofirst==0){//定義字符變量i//////定義字符變量i//////////從液晶顯示地址(0x80),開始逐步寫入16個字符//調用寫數據子程序//液晶顯示地址(0xc0)//從液晶顯示地址(0xc0),開始逐步寫入16個字符//調用寫數據子程序//初始化定時器0/1的狀態寄存器//賦初值給定時器0TH0//賦初值給定時器0TL0//賦初值給定時器1TH1//賦初值給定時器1TL1//調用啟動定時器2子程序//允許定時器1中斷//允許定時器0中斷,啟動定時器0,允許CPU中斷//位尋址區start2,start,start1為0//時緩沖區賦初值為12,分緩沖區賦初值為59{P3_6=0;temptime();TR1=1;}}次if(P3_7==1){P3_6=1;tempdaytime();}}}//******write*************voidwrite(void){rs=1;rw=0;e=0;delayfirst();e=1;}//*******enable*********voidenable(void){rs=0;rw=0;e=0;delayfirst();e=1;}//燈亮//記錄天黑后的時間,用于4個小時之后燈滅(P3_6=l)//if(P3_7==0){Pl_7=0;TRl=l;Tofisrt=l;}只執行一//燈滅//液晶寫數據子程序//rs=1;//rw=0;//e=0;//調用延時子程序//e=1;//液晶使能子程序//rs=0;//rw=0;//e=0;//調用延時子程序//e=1//*********timer**************voidtimer0()interrupt1using0{TH0=(65536-50000)/256;//賦初值定時器0給TH0//定義字符型變量//定義字符型變量iTL0=(65536-50000)%256;if((P1&0x0f)!=0x0f){delaysecond();if((P1&0x0f)!=0x0f){scankey();}}count++;if(count==2){count=0;second_l++;if(second_l==10){second_l=0;second++;if(second==60){second=0;minte++;if(minte==60){minte=0;hour++;if(hour==24){second=0;minte=0;hour=0;}}}}}}//*X**X**X**X**X**X**X**X**X**X**X**X**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*////***********display**************//*X**X**X**X**X**X**X**X**X**X**X**X**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i*//voiddisplay(void){uchari;//賦初值定時器0給TL0//判斷P1.0-P1.4是否有鍵按下//調用鍵盤延時子程序,用于消除干擾//判斷P1.0-P1.4是否有鍵按下//調用鍵盤掃描子程序scankey()//計數單元count自加加//如果計數單元count為2//計數單元count清零//second」緩沖區自加加//如果second_l0緩沖區為10//second_l秒緩沖區賦值為0//second緩沖區自加加//如果second緩沖區的內容為24///second緩沖區賦值為0//minte緩沖區自加加//如果minte緩沖區內容為60//minte緩沖區賦值為0//hour緩沖區自加加//如果hour緩沖區的內容為24//把second緩沖區的內容賦值為0//把minte緩沖區的內容賦值為0//把hour緩沖區的內容賦值為0////取出秒緩沖區(second)的高位,放入數組緩沖區//取出秒緩沖區(second)的高位,放入數組緩沖區//取出分緩沖區(minte)的高位,放入數組緩沖區//取出分緩沖區(minte)的高位,放入數組緩沖區//取出時緩沖區(hour)的高位,放入數組緩沖區//取出時緩沖區(hour)的高位,放入數組緩沖區//取出0.6秒,放入數組緩沖區buffer[6]//判斷是否為設置標志位,start==0為假//從液晶地址(OxcO)開始寫數據//P0口輸出table3[]數組里面的數據//調用寫數據子程序//判斷是否為設置標志位,start==l為真//從液晶地址(OxcO)開始寫數據//P0口輸出table3[]數組里面的數據//調用寫數據子程序buffer[0]=second/10;buffer[0]buffer[1]=second%10;buffer[1]buffer[2]=minte/10;buffer[2]buffer[3]=minte%10;buffer[3]buffer[4]=hour/10;buffer[4]buffer[5]=hour%10;buffer[5]buffer[6]=second_l;if(start==0){P0=0xc0;enable();for(i=13;i<16;i++){P0=table3[i];write();}}if(start==1){P0=0xc0;enable();for(i=10;i<13;i++){P0=table3[i];write();}}P0=0xc3;enable();for(i=4;i<6;i++){P0=table3[buffer[i]];write();}P0=0xc6;enable();for(i=2;i<4;i++){P0=table3[buffer[i]];write();}P0=0xc9;enable();//從液晶地址(0xc6)開始寫數?//P0口輸出table3[]數組里面的數據//調用寫數據子程序//從液晶地址(0xc6)開始寫數據//P0口輸出table3[]數組里面的數據//調用寫數據子程序//從液晶地址(0xc9)開始寫數據for(i=0;i<2;i++){P0=table3[buffer[i]];write();}P0=0xcc;enable();_nop_();_nop_();P0=table3[buffer[6]];write();}voidtimer1()interrupt3using1{TH1=(65536-50000)/256;TL1=(65536-50000)%256;checktime();checkdaytime();//PO口輸出table3[]數組里面的數據//調用寫數據子程序//從液晶地址(Oxcc)開始寫數據//調用_nop_();函數//調用_nop_();函數//PO口輸出table3[]數組里面的數據//調用寫數據子程序//重新賦值給定時器1的TH1//重新賦值給定時器1的TL1//調用顯示子程序////調用顯示子程序//把此時秒(second)緩沖區的值賦給tempsecond//把此時分(minte)緩沖區的值賦給tempminte//把此時時(hour)緩沖區的值賦給tempdayhour//把此時時(temphour)緩沖區的值加4}//*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**1*//voidsys_init2(void)T//初始化定時器21T2CON=OxO4;//*加載定時器2的控制寄存器T2MOD=OxOO//*加載定時器2的模式寄存器*/TH2=OxFC;//*加載定時器2的高位字節*/RCAP2H=OxFC;//*加載定時器2的重裝寄存器的高位字節*/TL2=Ox18;//*加載定時器2的低位字節*/RCAP2L=Ox18;//*加載定時2器2的重裝寄存器的低位字節*/ET2=1;//*使能定時2中斷*/TR2=1;//*啟動定時器2*/}//*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*//voidtimer2(void)interrupt5using1{display();}voidtemptime(void){tempsecond=second;tempminte=minte;temphour=hour;temphour=temphour+4;}voidtempdaytime(void){tempdaysecond=second;tempdayminte=minte;voidtempdaytime(void){tempdaysecond=second;tempdayminte=minte;tempdayhour=hour;tempd

溫馨提示

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

最新文檔

評論

0/150

提交評論