版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
.PAGE....單片機(jī)原理及應(yīng)用設(shè)計指導(dǎo)書胡景春編寫2008-102011-10..目錄TOC\o"1-1"\h\z\t"標(biāo)題2,2,標(biāo)題3,3,標(biāo)題4,4"1.課程設(shè)計的要求與基本內(nèi)容11.1目的和要求11.2設(shè)計內(nèi)容12.系統(tǒng)構(gòu)成22.1硬件結(jié)構(gòu)22.2主要功能及技術(shù)要求23.硬件電路原理33.189C52單片機(jī)主控模塊389C52主控電路及其分析389C52內(nèi)部FLASH編程控制電路及其分析4FLASH編程4系統(tǒng)的編程控制電路43.2LCM103液晶顯示模塊53.2.1LCM103顯示器及其控制原理53.2.2LCM103液晶顯示模塊工作原理63.2.3LCM103顯示器電路連接63.2.4LCM103讀寫控制73.3鍵盤處理模塊9鍵盤工作原理93.4.2鍵盤電路分析103.4定時及電器控制10繼電器控制電路10聲、光報警及上電顯示113.6在線編程接口123.7電源輸入及轉(zhuǎn)換電路133.8硬件的安裝與第一步調(diào)試133.8.1硬件安裝133.8.2第一步調(diào)試144.單片機(jī)控制器軟件設(shè)計154.1系統(tǒng)軟件要實現(xiàn)的功能154.2C51語言及其軟件開發(fā)工具154.2.1C51語言介紹154.2.2軟件開發(fā)工具164.2.3C51程序設(shè)計及調(diào)試過程184.3單片機(jī)控制程序設(shè)計提要184.3.1設(shè)計要求和總體設(shè)計184.3..2主程序模塊設(shè)計方案194.3.3子程序模塊設(shè)計方案20液晶顯示模塊20電器控制模塊22鍵盤處理模塊22定時模塊26串行模塊295.微機(jī)控制單片機(jī)編程軟件設(shè)計及調(diào)試355.1系統(tǒng)要實現(xiàn)的對單片機(jī)編程功能355.2C++語言及其軟件開發(fā)工具355.2.1軟件開發(fā)工具C++355.3AT89C52Flash存儲器編程363.3.1編程方法〔略,已在中敘述363.3.2編程時序365.4EPP接口375.5自編程程序設(shè)計方案38功能設(shè)計和界面設(shè)計385.5.2類設(shè)計38附A課程設(shè)計控制器元器件及材料41附B控制器電路原理圖A..1.課程設(shè)計的要求與基本內(nèi)容1.1目的和要求該課程設(shè)計的目的是,通過一個實際應(yīng)用電路模塊的安裝、調(diào)試、及其控制設(shè)計,使學(xué)生在"單片機(jī)原理及應(yīng)用"課程所學(xué)知識和所掌握的技能獲得一次綜合性訓(xùn)練,進(jìn)一步熟悉單片機(jī)應(yīng)用系統(tǒng)結(jié)構(gòu)和軟硬件之間的聯(lián)系,培養(yǎng)學(xué)生軟、硬件綜合設(shè)計、調(diào)試和開發(fā)能力。在課程設(shè)計中,要求學(xué)生完成一個實際應(yīng)用系統(tǒng)的安裝、調(diào)試和產(chǎn)品化設(shè)計,展示完成的產(chǎn)品,并提交課程設(shè)計報告。1.2 設(shè)計內(nèi)容計算機(jī)綜合課程設(shè)計包括以下幾方面內(nèi)容:分析課程設(shè)計的"自編程微電腦定時控制器"硬件電路原理,完成硬件電路焊接、安裝、調(diào)試;查閱有關(guān)的資料,并對資料進(jìn)行整理綜合;學(xué)習(xí)有關(guān)工具軟件的使用,工具軟件包括:單片機(jī)串行編程下載軟件,能實現(xiàn)對STC89C52等單片機(jī)進(jìn)行在線編程控制;5110LCD漢字生成軟件,生成漢字點陣碼;CH340T驅(qū)動程序,USBtoRS232驅(qū)動;KeilC51,單片機(jī)的C語言編程環(huán)境。單片機(jī)控制軟件的設(shè)計:用匯編或C編程,直接實現(xiàn)對控制器的鍵盤、液晶顯示、串行通信、繼電器定時、LED顯示、聲光報警、數(shù)據(jù)存儲器等模塊的控制。學(xué)生按分組完成其中2-3項程序的編程、下載、調(diào)試。接受教師檢查,進(jìn)行設(shè)計展示、進(jìn)行設(shè)計結(jié)果介紹,回答指導(dǎo)教師提問。完成課程設(shè)計報告。設(shè)計報告由學(xué)生獨立完成,包括以下幾方面內(nèi)容:設(shè)計目標(biāo)、內(nèi)容和設(shè)計要求。硬件設(shè)計部分。包括:電路原理分析、電路的安裝與調(diào)試情況、被控電路的設(shè)計與連接、相關(guān)的工藝設(shè)計、以及與設(shè)計圖相關(guān)的文字論述和說明。軟件設(shè)計部分:控制程序的流程圖及源程序,以及對程序功能、特點、實現(xiàn)方法的論述及說明。用戶使用說明:詳細(xì)說明所設(shè)計的系統(tǒng)的功能、使用方法及每一步操作步驟。其它:收獲、體會、意見及建議等。附錄:提交設(shè)計調(diào)試完成的源程序〔帶注釋。課程設(shè)計報告的文本要求是打印稿和相應(yīng)的電子文檔<包括電子設(shè)計文檔>,要求文字通順,文檔符合設(shè)計規(guī)范。2.系統(tǒng)構(gòu)成2.1 硬件結(jié)構(gòu)系統(tǒng)的硬件總體框圖如圖2-1所示。主要包括以下功能模塊:主控模塊:采用89C52單片機(jī)進(jìn)行各項控制;鍵盤處理、顯示及報警模塊:實現(xiàn)人機(jī)交互操作和控制;定時及電器控制:通過繼電器連接外部電器,由單片機(jī)進(jìn)行定時控制;異步串行通信:實現(xiàn)微機(jī)RS-232接口和單片機(jī)的異步串行通信;在線編程接口:通過微機(jī)串行口或USB接口,實現(xiàn)微機(jī)對單片機(jī)的在線編程控制;2.2 主要功能及技術(shù)要求1、能進(jìn)行單片機(jī)仿真實驗控制器設(shè)置了4*3矩陣鍵盤,可以參考按鍵標(biāo)識或自行定義按鍵功能;單片機(jī)控制液晶顯示模塊,有兩種可選的液晶顯示器:48*84點陣液晶顯示5110LCD或10位8段數(shù)碼液晶顯示LCM103;單片機(jī)和微機(jī)RS-232接口串行通信測試和實驗,進(jìn)行"三線"連接異步串行通信;USB接口轉(zhuǎn)RS-232串行接口實驗;8路LED顯示控制;聲、光報警控制擴(kuò)展數(shù)據(jù)存儲器讀、寫控制;串行接口編程控制。實現(xiàn)WINDOWS下對內(nèi)帶Flash的STC51系列單片機(jī)進(jìn)行串行編程下載,包括:擦除、讀出、寫入、校驗、加密等功能。3.能夠進(jìn)行四路家電控制單片機(jī)對4路電器設(shè)備和家電進(jìn)行選擇和定時控制,定時范圍:1秒-60小時。圖2-1硬件總體框圖3.硬件電路原理硬件電路原理圖可參看圖3-1,系統(tǒng)硬件主要由:89C52單片機(jī)主控模塊、鍵盤處理模塊、定時及電器控制模塊、異步串行通信模塊、在線編程接口、液晶顯示模塊等組成。3.1 89C52單片機(jī)主控模塊 89C52主控電路及其分析89C52主控電路如圖3-1。本系統(tǒng)中,89C52有2種使用狀態(tài),一是以89C52控制為核心的正常工作狀態(tài),一是對89C52內(nèi)部FLASU進(jìn)行編程的編程工作狀態(tài),這里對正常工作狀態(tài)進(jìn)行說明,其基本設(shè)計要點是:89C52內(nèi)部有8KB程序存貯器FLASH,EA為程序存儲器選擇信號,EA接地CPU從外部存貯器中取指令,EA接高電平時CPU可以從內(nèi)部或外部取指令。本設(shè)計采用內(nèi)部程序存儲器,所以EA接高電平。FLASH編程時,EA引腳為編程電源輸入端Vpp。引腳PSEN輸出外部程序存貯器的讀選通信號,僅當(dāng)CPU訪問外部程序存貯器時PSEN才有效。由于89C51的內(nèi)部程序存儲器已經(jīng)能夠存放本系統(tǒng)的程序,所以系統(tǒng)不需要擴(kuò)展外部程序存儲器,因此,PSEN引腳接地。P0口為三態(tài)雙向I/O口,可以作為系統(tǒng)擴(kuò)展的地址/數(shù)據(jù)總線口,本系統(tǒng)擴(kuò)展了外部8KB的SRAM存儲器,所以P0口作為地址/數(shù)據(jù)線復(fù)用線使用。P1口為準(zhǔn)雙向口,它的每一位可以分別定義為輸入線或輸出線,本系統(tǒng)工作狀態(tài)下用P1.1-P1.7作為鍵盤矩陣的行、列線。P2口作為高8位地址線使用,本設(shè)計選用了P2.6和P2.7分別控制74LS373鎖存和6264的片選控制。P3口在設(shè)計中選用第二功能作為特殊輸入/輸出線,本控制器選用了外部中斷0、串行輸入、串行輸出、讀/寫控制信號、定時器T0等接口,P3.4則作為鍵盤中斷處理控制線。此外,P0、P1、P3的部分引腳還用于液晶顯示控制。..圖3-1系統(tǒng)電路原理圖圖3-1系統(tǒng)電路原理圖..編程時,8255的PA口接89C52的P0口是作為89C52的編程數(shù)據(jù)信號;8255的PB口接89C52的P1口是作為89C52的地址A0-7;8255的PC0-4接89C52的P2.0-P2.4作為89C52的地址A8-12,PC5用作89C52的編程脈沖ALE/PROG#,PC6-PC7接89C52的P2.6-P2.7,和P3.6-P3.7一起用作編程方式選擇。圖3-2單片機(jī)和5110LCD的連接如3.2液晶顯示模塊圖3-2單片機(jī)和5110LCD的連接如這里主要就是地址48*84點陣液晶顯示模塊5110LCD的使用3.2.1單片機(jī)和5110LCD的連接單片機(jī)和5110LCD的連接如圖3-2所示。P1.0用于模塊選中,RESET信號對模塊復(fù)位,P2.0選擇數(shù)據(jù)/命令輸入,P2.3接輸入引腳,P0.4接SCLK產(chǎn)生時鐘脈沖P0.5接LED用于背光控制顯示控制方法圖3-3顯示漢字字模的生成用共享軟件zimo221.exe生成要顯示的漢字點陣編碼,如圖3-3所示;圖3-3顯示漢字字模的生成圖3-4用垂直尋址方式〔V=1和水平尋址方式〔V=0往圖3-4用垂直尋址方式〔V=1和水平尋址方式〔V=0往RAM寫入數(shù)據(jù)的次序單片機(jī)和5110LCD的連接如3、5110LCD的控制圖3-55110LCD的串行總線協(xié)議 5110LCD的控制是采用串行總線控制,其串行總線協(xié)議如圖3-5,上圖是傳送單字節(jié),下圖是傳送多字節(jié)。5110LCD的控制命令集見表3-1、表3-2圖3-55110LCD的串行總線協(xié)議〔1初始化接電源后,內(nèi)部寄存器和RAM的內(nèi)容不確定。必須應(yīng)用一個RES脈沖。注意,不正確的復(fù)位是危險的,可能會損壞設(shè)備。所有內(nèi)部寄存器在指定的時間內(nèi),通過31腳的外部RES脈沖〔低電平復(fù)位。無論如何,RAM的內(nèi)容仍然不確定。〔2復(fù)位作用復(fù)位后,LCD驅(qū)動器有下列狀態(tài):電源節(jié)省模式<位PD=1>水平尋址<位V=0>常規(guī)指令設(shè)置<位H=0>顯示頁<位E=D=0>地址計數(shù)器X6至X0=0;Y2至Y0=0溫度控制模式<TC1TC0=0>偏置系統(tǒng)<BS2至BS0=0>VLCD等于0,HV發(fā)生器為關(guān)閉狀態(tài)<VOP6至VOP0=0>〔3功能設(shè)置位PD:LCD輸出為VSS<顯示關(guān)閉>;偏置發(fā)生器和VLCD發(fā)生器關(guān)閉;VLCD可以不連接;振蕩器關(guān)閉<可用外部時鐘>;串行總線,命令,等功能;進(jìn)入省電模式之前,RAM需要填充‘0’以保證指定的電流消耗。位V:當(dāng)V=0,選擇水平尋址。當(dāng)V=1,選擇垂直尋址。位H:當(dāng)H=0,可以執(zhí)行‘顯示控制’,‘設(shè)置Y地址’和‘設(shè)置X地址’;當(dāng)H=1,可以執(zhí)行其它命令?!畬憯?shù)據(jù)’和‘功能設(shè)置’可以在兩種狀態(tài)下執(zhí)行?!?顯示控制位D和E:位D和E選擇顯示模式〔見表2。〔5設(shè)置RAM的Y地址。定義顯示RAM的Y尋址向量?!?設(shè)置RAM的X地址。X地址指向列。X的范圍是0至83〔53H?!?溫度控制。VLCD的溫度系數(shù)由位TC1和TC0選擇。3.3 鍵盤處理模塊3.3.1鍵盤工作原理鍵盤分為獨立式鍵盤和矩陣鍵盤,本系統(tǒng)中采用4*3矩陣鍵盤。本系統(tǒng)采用中斷方式加行掃描進(jìn)行按鍵處理,當(dāng)有鍵閉合時,向單片機(jī)/INT0請求中斷,CUP響應(yīng)鍵盤中斷,對鍵盤掃描,以識別哪一個鍵按下,然后執(zhí)信相應(yīng)的處理程序。在鍵盤的鍵被按下和斷開的過程中,會出現(xiàn)一段時間的機(jī)械抖動,抖動時間的長短和開關(guān)的機(jī)械特性有關(guān),一般為5~10ms,為保證CPU對鍵的閉合僅做一次處理,必須去除抖動,通常采取軟件延時等方法,在鍵的穩(wěn)定閉合時讀鍵的狀態(tài)。3.4.2鍵盤電路分析系統(tǒng)所使用的鍵盤接口電路參看圖3-1。為提高CPU的工作效率,CPU對鍵盤采取中斷控制方式。當(dāng)有鍵閉合時,向CPU請求中斷,CPU響應(yīng)鍵盤中斷,執(zhí)行中斷服務(wù)程序,對鍵盤掃描,判別鍵盤上閉合鍵的鍵號,并作出相應(yīng)處理。P1.1-P1.3為列線,P1.4-P1.7為行線。當(dāng)有鍵按下時,按下鍵對應(yīng)的列為低電平。三個按鍵通過一個與門接至89C52的INT0端〔外部中斷0,一旦有鍵按下,就會產(chǎn)生一個中斷至89C52,89C52響應(yīng)中斷,對P1.4-P1.7引腳進(jìn)行行掃描,確定按下的按鍵,再執(zhí)行相應(yīng)處理程序。3.4 定時及電器控制 繼電器控制電路四路電器設(shè)備控制電路主要通過74LS373鎖存信號來保持對設(shè)備的控制。單片機(jī)通過P26口控制74LS373的鎖存控制端,由P0口向其發(fā)送數(shù)據(jù),74LS373輸出口5Q接蜂鳴器8Q-6Q接了LED,1Q~4Q接四路驅(qū)動電路,可選擇連接4個LED或驅(qū)動四個繼電器控制外部電器,繼電器控制電路圖如圖3-6所圖示:圖3-6繼電器控制電路以圖中一路電器控制說明其工作原理。由于主控芯片向外發(fā)送的控制電流太小,不足以驅(qū)動外部繼電器工作,所以用中功率放大器三極管放大成所需的電流。當(dāng)P0.3口向74LS373發(fā)送高電平時,并且P26口送入一個正跳變信號,此時,鎖存器鎖存控制信號,放大器工作,并放大電流,繼電器線包在足夠大電流的驅(qū)動下產(chǎn)生磁場,致使常開觸點吸合,向外部電器提供220V交流電;當(dāng)P0.3口送入低電平時,放大器反向不工作,無電流流過繼電器線包,常開觸點斷開,外部電器不工作。對繼電器得電時間長短的控制,可以通過89C52的內(nèi)部定時器來定時,由軟件控制實現(xiàn)。在調(diào)試程序或做實驗時,可以用連接電纜把Q1-Q4信號接至LED,通過對LED的顯示控制來模擬電器控制過程。 聲、光報警及上電顯示圖3-7聲、光報警聲、光報警電路主要是在控制過程結(jié)束和對出錯處理時,用蜂鳴器的發(fā)聲或閃爍發(fā)光給用戶以警示,以便用戶及時進(jìn)行人工處理。電路通過74LS373鎖存電路向外發(fā)送信號,以控制蜂鳴器的發(fā)聲和LED的顯示,電路如圖3-7,當(dāng)Q8為低電平時,LED發(fā)光;當(dāng)Q2為高電平時,蜂鳴器發(fā)聲,控制Q2高低電平交替變化的頻率,則蜂鳴器發(fā)出不同的聲響。圖3-7聲、光報警圖3-8串行口接線方法圖右為上電顯示電路,LED發(fā)光表示已接通電源。圖3-8串行口接線方法3.5 異步串行通信及單片機(jī)在線編程圖3-9MAX232引腳及邏輯PC機(jī)RS-232被定義為一種在低速率串行通訊中增加通訊距離的單端標(biāo)準(zhǔn)。RS-232采取不平衡傳輸方式,即所謂單端通訊。本設(shè)計在9針RS-232C的基礎(chǔ)再進(jìn)行簡化,只用其中的2、3、5三個管腳進(jìn)行通信,即可滿足通訊的要求,這三個管腳分別是接收線、發(fā)送線和地線。計算機(jī)和外部通訊的接線方法如圖3-8:圖3-9MAX232引腳及邏輯圖3-10串行接口電路在電路板上,信號的傳輸通常是TTL電平,就是以5V表示"1",0V表示"0"。而232信號的傳輸標(biāo)準(zhǔn)是采用負(fù)邏輯電平,即用-3V~-15V表示1,+3V~+15V表示0,這就需要進(jìn)行信號電平的轉(zhuǎn)換,也就是把TTL電平信號轉(zhuǎn)換成232電平信號,或者把RS-232電平信號轉(zhuǎn)換成TTL電平信號。此處采用MAX232芯片<與HIN232芯片兼容>來將TTL信號轉(zhuǎn)換成232信號,MAX232芯片引腳和邏輯符合如圖3-9,具體電路見圖3-10。圖3-10串行接口電路本系統(tǒng)可使用STC或ISP類型的單片機(jī),通過微機(jī)串行接口,實現(xiàn)微機(jī)對單片機(jī)的在線編程控制。編程步驟如下:1、在KeilC環(huán)境下進(jìn)行原程序的設(shè)計,包括:程序編輯、修改、編譯、連接,最后生成16進(jìn)制目標(biāo)文件〔.hex.2、使用共享軟件STC-ISP。EXE程序下載軟件,把生成的.exe程序裝載到系統(tǒng)的單片機(jī)中:〔1斷開控制板的電源;〔2連接好微機(jī)和本系統(tǒng)的串行接口;〔3進(jìn)入STC-ISP界面如圖3-11,裝入要下載的.hex文件,并按其中提示步驟進(jìn)行操作;3、程序下載后,即可以運行調(diào)試。3.6存儲器擴(kuò)展電路系統(tǒng)3.7硬件的安裝與第一步調(diào)試3.7.1硬件安裝按照原理圖和印刷電路板,參考元器件焊接表自行安裝元器件及連接電纜,做到焊接漂亮,沒有虛焊和短路,裝配完成后,用萬用表檢查電源和地是否短路,確認(rèn)無短路后再通電。表3-3元器件焊接表*元件名稱數(shù)量焊接位置的印刷版標(biāo)記標(biāo)準(zhǔn)配備器件STC89C52+DIP401U16264+DIP281U474LS373+DIP202U2,U3MAX232+DIP161U774LS11+DIP141U10LED9LED1-LED8,POWER,注意極性.二極管IN400710D1-D4,D1-D4,D51,D52.注意極性.三極管S80505T1-T5,b極在左,c極在右方。3針單排插針1JP64針單排插針1Stande-by8針雙排插針1CONECT彎腳9針插頭1J2RS232電源插座15VDCUSB座1J1USB<扁形或方形>OSC2OSC1,OSC2電容:10u1C110u1u1C1u0.1u4C4-C70.01u1C33p2C1,C220p2C01,C02編程開關(guān)1P-Key按鈕134*3的矩陣鍵盤,RST9腳電阻排1R10K*8電阻:1K15R41-R48,R50-R55,R8,10K4R1-R3,R74.7K1R18針SIP座15110LCD蜂鳴器1SPEAKER〔正極在上方可選器件5110LCD〔液晶1CH340T1CH340T強(qiáng)電連接器1Control-port繼電器4Relay1-relay4液晶LM1031LCM10350K電位器1WR_1*注意:1、如果選擇了可選的貼片芯片CH340T,則應(yīng)首先焊接該芯片,后焊則不太方便。其它器件的焊接順序沒有太大關(guān)系。2、雙排直插器件只需焊接DIP插座,焊接時圓缺口對圓缺口,方向不要搞反。元器件的焊接可參考表3-33.7.2第一步調(diào)試安裝完成后,必須進(jìn)行第一步調(diào)試,包括以下工作:電源測試:用萬用表測試各芯片插座、繼電器等的電源和地線是否正確〔+5V,GND。測試電源前,不要插芯片,測試電源正確,確定電源無短路,才能插上芯片。焊接點目測檢查,看是否有虛焊,發(fā)現(xiàn)問題,應(yīng)該補(bǔ)焊。4.單片機(jī)控制器軟件設(shè)計4.1系統(tǒng)軟件可實現(xiàn)的功能單片機(jī)機(jī)要完成的主要功能有:鍵盤的功能定義及按鍵處理,系統(tǒng)的12個按鍵可根據(jù)需要進(jìn)行功能定義,原有的鍵盤標(biāo)識是一種常用的鍵盤定義的方案。定時控制。系統(tǒng)可同時控制4路家電,通過按鍵輸入來設(shè)定和查看定時時間,也可通過微機(jī)來設(shè)定和查看定時時間,并且要根據(jù)用戶操作來顯示各種信息。報警的處理。在系統(tǒng)上電復(fù)位時會有3次報警聲,并且指示燈亮滅3下,表示系統(tǒng)工作正常,在家電定時完成時也會有報警聲,并且指示燈熄滅,表示家電定時時間到。和微機(jī)RS-232接口進(jìn)行異步串行通信。點陣液晶顯示控制。存儲器讀寫控制。LED顯示控制。 以上基本功能的組合,實現(xiàn)多種控制功能。此外擴(kuò)充并行接口可以外接擴(kuò)展的電路,進(jìn)行系統(tǒng)功能的擴(kuò)充。4.2C51語言及其軟件開發(fā)工具4.2.1C51語言介紹C51是對C語言的擴(kuò)展,除了可使用ANSIC標(biāo)準(zhǔn)關(guān)鍵字以外,還增加了C51編譯器的擴(kuò)展關(guān)鍵字,主要擴(kuò)展關(guān)鍵字如下:表4-1C51編譯器的擴(kuò)展關(guān)鍵字關(guān)鍵字用途說明bit位標(biāo)量聲明聲明一個位標(biāo)量或一個位類型的函數(shù)sbit位標(biāo)量聲明聲明一個可位尋址變量sfr特殊功能寄存器聲明聲明一個特殊功能寄存器sfr16特殊功能寄存器聲明聲明一個16位的特殊功能寄存器data存儲器類型說明直接尋址的內(nèi)部數(shù)據(jù)存儲器bdata存儲器類型說明可位尋址的內(nèi)部數(shù)據(jù)存儲器idata存儲器類型說明間接尋址的內(nèi)部數(shù)據(jù)存儲器pdata存儲器類型說明分頁尋址的外部數(shù)據(jù)存儲器xdata存儲器類型說明外部數(shù)據(jù)存儲器code存儲器類型說明程序存儲器interrupt中斷函數(shù)說明定義一個中斷函數(shù)reentrant再入函數(shù)說明定義一個再入函數(shù)using寄存器組定義定義芯片的工作寄存器除此之外,C51編譯器還定義了特殊功能寄存器,如下表所示。表4-2AT89C52特殊功能寄存器符號地址注釋符號地址注釋*ACCE0H累加器*P3B0H端口3*BF0H乘法寄存器PCON87H電源控制及波特率選擇*PSWD0H程序狀態(tài)字*SCON98H串行口控制字SP81H堆棧指針SBUF99H串行數(shù)據(jù)緩沖字DPL82H數(shù)據(jù)存儲器指針低8位*TCON88H定時器控制字DPH83H數(shù)據(jù)存儲器指針高8位TMOD89H定時器方式選擇*IEA8H中斷允許控制字TL08AH定時器0低8位*IPD8H中斷優(yōu)先控制字TL18BH定時器1低8位*P080H端口0TH08CH定時器0高8位*P190H端口1TH18DH定時器1高8位*P2A0H端口2注:*表示可位尋址4.2.2軟件開發(fā)工具1.KeilμVision簡介德國keil公司的單片機(jī)C語言編譯器KeilC支持九種基本數(shù)據(jù)類型,變量可存放在bit、data、bdta、idata、xdata、pdata等不同類型的存儲器空間;支持AMD和DALLAS公司的80320等單片機(jī)的雙數(shù)據(jù)指針和PHILIPS公司的807651等單片機(jī)的指令集以及Infieon〔Siemens公司80c517單片機(jī)中的算術(shù)單元和多重數(shù)據(jù)指針,支持?jǐn)?shù)據(jù)覆蓋。KeilC是目前流行的單片機(jī)C語言調(diào)試和開發(fā)軟件,Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境〔μVision將這些部份組合在一起。KeilC51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的Windows界面集成開發(fā)調(diào)試工具。重要的一點是KeilC51生成的目標(biāo)代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時,更能體現(xiàn)高級語言的優(yōu)勢。KeilC編譯器能產(chǎn)生可重入代碼,而且用KeilC語言可以打開和關(guān)閉中斷。KeilC程序結(jié)構(gòu)與一般C語言沒有什么差別。一個C51源程序大體上是一個函數(shù)定義的集合,一個C源程序至少包括一個函數(shù),在這個集合中有且僅有一個名為main<>的函數(shù)〔主函數(shù),也可能包含其它函數(shù),因此函數(shù)是C程序的基本單位。主函數(shù)是程序的入口,一個C語言程序,總是從main<>函數(shù)開始執(zhí)行的,而不管物理位置上這個main<>放在什么地方,主函數(shù)中的所有程序執(zhí)行完畢,則程序執(zhí)行完畢。主程序通過直接書寫語句和調(diào)用其它函數(shù)來實現(xiàn)有關(guān)功能,這些其它函數(shù)可以是由C語言本身提供給我們的,這樣的函數(shù)稱之為庫函數(shù);也可以是用戶自己編寫的,這樣的函數(shù)稱之為用戶自定義函數(shù)。庫函數(shù)是C51在庫文件中已定義的函數(shù),其函數(shù)說明在相關(guān)的頭文件中。對于這類函數(shù)用戶在編程時只要用include預(yù)處理指令將頭文件包含在用戶文件中直接調(diào)用即可,簡單地說,任何使用KeilC語言的人,都可以直接調(diào)用C的庫函數(shù)而不需要為這個函數(shù)寫任何代碼,只需要包含具有該函數(shù)說明的相應(yīng)的頭文件即可。KeilC提供了100多個庫函數(shù)供我們直接使用。圖4.1〔aKeilμVison3窗口在KeilC中,函數(shù)定義由函數(shù)類型、函數(shù)名、參數(shù)表和函數(shù)體四部分組成。例如:voidmDelay<unsignedintDelayTime>。實現(xiàn)單片機(jī)仿真及程序編輯、編譯的軟件有很多,比較常用的有KeilμVision。圖4.1〔aKeilμVison3窗口2. KeilμVision使用KeilμVision編程環(huán)境和VC相似,使用過VC的人都很容易熟悉。forWindows的使用步驟:<1>菜單file_new新建一個<文件名>.c文件,在編輯欄編寫源程序。<2>菜單file_save或工具欄將 C文件存盤。圖4.1〔bKeilμVison3窗口菜單圖4.1〔bKeilμVison3窗口菜單這時該project已是打開狀態(tài),或用openproject打開已存在的project。<4>菜單option_fortarget…設(shè)置工程環(huán)境。<5>如果需要,進(jìn)入project-FileExtension,…。對工程文件路徑進(jìn)行修改。<6>菜單project選Build…,進(jìn)行編譯、鏈接,看是否有語法錯誤,若無則生成HEX文件,若有則修改源文件后重復(fù)以上部分步驟。4.2.3C51程序設(shè)計及調(diào)試過程1.按KeilμVision使用步驟編寫源程序和建立工程;2.在KeilμVision環(huán)境下編譯、連接無錯誤后產(chǎn)生.HEX文件;3.使用通用編程器把程序的二進(jìn)制文件.HEX寫入單片機(jī)中的FLASH。本系統(tǒng)采用STC單片機(jī),可以通過串行口進(jìn)行直接下載編程。4.3單片機(jī)控制程序設(shè)計提要4.3.1設(shè)計要求和總體設(shè)計軟件設(shè)計是根據(jù)硬件提供的功能及對其控制的要求來實現(xiàn),需要考慮程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。程序一般采取模塊化程序結(jié)構(gòu),本次課程設(shè)計可以考慮從以下模塊進(jìn)行設(shè)計:表4-3程序結(jié)構(gòu)說明文件名說明Define.h變量、函數(shù)聲明Main.c主函數(shù)模塊LCD.c液晶顯示初始化和顯示模塊LED.c發(fā)光二極管顯示控制AppCtrl.c電器、聲光報警控制模塊Key.c鍵盤初始化和中斷處理模塊Timer.c定時器0初始化和中斷處理模塊Serial.c串行初始化和發(fā)送接收模塊Memo.cSRAMd讀寫數(shù)據(jù)結(jié)構(gòu)根據(jù)控制對于數(shù)據(jù)的要求來定義。主要包括:全局變量、局部變量、液晶顯示碼表等。開始檢測硬件,指示燈亮滅3下,蜂鳴器響3下程序初始化,顯示"GOOD"檢測中斷,中斷處理4.3..2主程序模塊設(shè)計方案開始檢測硬件,指示燈亮滅3下,蜂鳴器響3下程序初始化,顯示"GOOD"檢測中斷,中斷處理主程序模塊主要是進(jìn)行硬件電路的檢測和程序的初始化。硬件電路檢測包括對LED指示燈、蜂鳴器和液晶顯示器的檢測。程序初始化包括液晶顯示初始化、鍵盤初始化、定時器初始化和串行口初始化,它們都定義在相應(yīng)的文件中。初始化完畢主程序一般處于循環(huán)工作狀態(tài),當(dāng)有圖4-2主程序流程圖中斷發(fā)生,立即轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序。主程序流程圖如圖4-2所示。圖4-2主程序流程圖程序初始化主要包括:〔1定時器T0:計數(shù)方式、計數(shù)初值、中斷允許、設(shè)置相關(guān)全局變量〔包括輸入計數(shù)值、報錯計數(shù)值等;〔2LED顯示器:寫入模塊專用初始化命令并定義內(nèi)部RC振蕩方式,同時顯示"GOOD",表示液晶顯示工作正常。〔3鍵盤初始化:主要是對/INT0進(jìn)行中斷設(shè)置?!?串行口初始化:對異步通信的幀格式、波特率、以及發(fā)生/接收中斷進(jìn)行設(shè)置。以下為主程序模塊的參考程序。voidinit<>{ check<>; //硬件電路檢測 P0=1; //指示燈1滅 EA=1; //打開總中斷 TMOD=0x21; //設(shè)置定時器0和定時器1工作方式 led_init<>; //LED顯示器初始化 key_init<>; //鍵盤初始化 timer_init<>; //定時器0初始化 ser_init<>; //串行初始化}voidmain<void>{ delay<20>; //延時20ms,穩(wěn)定系統(tǒng) init<>; while<1>; //循環(huán)}4.3.3子程序模塊設(shè)計方案子程序作為模塊單獨封裝,以便為主程序或其他模塊調(diào)用。液晶顯示模塊電器控制模塊此模塊比較簡單,主要是通過74LS373控制四路電器、指示燈和蜂鳴器的工作,根據(jù)系統(tǒng)接收到的數(shù)據(jù),如鍵盤按鍵,控制是否給電器定時,需要定時則給74LS373相應(yīng)位送上一個高電平,然后鎖存到輸出口,繼電器吸合,給電器送電。送電的時間由單片機(jī)定時器確定,當(dāng)定時時間到,要停止電器工作時,只需按相同步驟鎖存一個低電平,斷開電器供電,這樣就可以實現(xiàn)電器的定時控制。鍵盤處理模塊鍵盤中斷程序的功能有以下幾個方面:判別鍵盤上有沒有鍵閉合:其方法是行掃描,若判斷有鍵按下,進(jìn)行下一步處理。去除鍵的機(jī)械抖動:其方法為判斷到鍵盤上有鍵閉合,延遲一段時間再判斷鍵盤的狀態(tài),若鍵仍閉合,再判斷按鍵是否釋放,直到釋放后才認(rèn)為鍵盤上確實有一個鍵被按下,進(jìn)行按鍵處理;否則,認(rèn)為是鍵的抖動。按鍵處理:對各個定義的按鍵進(jìn)行相應(yīng)的處理:〔4使CPU對鍵的一次閉合僅作一次處理:采用方法為等待閉合鍵釋放以后再作處理。程序流程如圖4-3所示。圖4-3鍵盤中斷程序圖4-3鍵盤中斷程序定時模塊系統(tǒng)定義數(shù)組大小為12的無符號字符類型用來分別保存4路電器的時、分、秒,初始化定時時間為0,通過鍵盤或串口數(shù)據(jù)確定時間,而時、分、秒的進(jìn)制不一樣,要求用軟件控制。要精確定時,定時器0中斷優(yōu)先級別應(yīng)該高一點,系統(tǒng)將它作為第二優(yōu)先中斷源來考慮。在定時中斷函數(shù)內(nèi)部的指令也會影響到定時時間的準(zhǔn)確度,每次中斷處理函數(shù)的執(zhí)行時間是25ms,所以,中斷函數(shù)中的語句的安排應(yīng)盡可能不影響精確定時。時間計數(shù)用計數(shù)器T0,T0工作方式為1,由TH0作為高8位,TL0作為低8位,構(gòu)成一個16位的計數(shù)器。通過TMOD方式寄存器設(shè)定定時器的工作方式,通過TCON控制寄存器相應(yīng)位來啟動定時器〔參考圖4-3和表4-4。圖4-3定時中斷處理表4-4定時器的方式選擇M1M0功能說明00方式0,為13位的定時器01方式1,為16位的定時器10方式2,為常數(shù)自動重新裝入的8位定時器11方式3,僅適用于T0,分為兩個8位計數(shù)器,T1在方式3時停止計數(shù)當(dāng)T0計數(shù)溢出時,一方面置"1"溢出標(biāo)志TF0,向CPU請求中斷,同時將TH0和TL0內(nèi)容歸0,所以,每進(jìn)入一次中斷都要給TH0和TL0裝入初值。因此,T0工作于方式1定時,定時精度一般,但定時時間較長,T=<12/fosc>*〔216-a。T0工作于方式1,產(chǎn)生25ms定時中斷,根據(jù)公式,計算出計數(shù)初值TH0=0X4C,TL0=0。1s內(nèi)有40次中斷。以下是定時中斷處理模塊流程圖:圖4-5定時中斷處理以下是時間中斷參考程序:voidtimer0<>interrupt1 //一次中斷25msfosc=22.1184MHz{TH0=0x4c; //定時器0初值TL0=0x00;for<i=1;i<5;i++> //掃描4個家電{if<app[i-1]==1> //已啟動定時{if<a==36> //1s時間到{a=0; //每到1s鐘,a清零if<sfm[3*i-1]==0>{ if<sfm[3*i-2]==0> { if<sfm[3*i-3]==0> //定時時間到{ app[i-1]=0; sfm[3*i-3]=0; sfm[3*i-2]=0; sfm[3*i-1]=0; OnAppCtrl<i,0>; }else //小時減1,分和秒置為59{ sfm[3*i-3]--; sfm[3*i-2]=59; sfm[3*i-1]=59; } } else //分減1,小時不變,秒置為59{ sfm[3*i-2]--; sfm[3*i-1]=59;}}else sfm[3*i-1]--; //秒減1,其它不變}else a++; //累加,直到36}}}串行模塊系統(tǒng)要求能夠通過微機(jī)發(fā)送命令給家電定時,下位機(jī)也能夠發(fā)送所有家電的剩余時間給微機(jī)。下位機(jī)和上位機(jī)通信用的是串口通信,通信用方式1,每幀傳送8位數(shù)據(jù),利用第九位數(shù)據(jù)來判定是否停止一幀的傳送。異步通信是按字符傳送的,字符的前面有一個起始位〔0,后面有一個停止位〔1,這是一種起止式的通信方式,字符之間沒有固定的間隔長度。典型的異步通信數(shù)據(jù)格式如圖4-6所示。圖4-6典型的異步通信格式MCS-51的串口是一個全雙工的異步通信接口,可以同時發(fā)送和接收數(shù)據(jù)。串行口的內(nèi)部有數(shù)據(jù)接收緩沖器和數(shù)據(jù)發(fā)送緩沖器。數(shù)據(jù)接收緩沖器只能讀出不能寫入,數(shù)據(jù)發(fā)送緩沖器只能寫入不能讀出,這兩個數(shù)據(jù)緩沖器都用符號SBUF表示,地址都是99H。CPU對特殊功能寄存器SBUF執(zhí)行寫操作,就是將數(shù)據(jù)寫入發(fā)送緩沖器;對SBUF讀操作,就是讀出接收緩沖器的內(nèi)容。特殊功能寄存器SCON存放串行口的控制和狀態(tài)信息,如圖4-7所示。串行口用定時器T1作為波特率發(fā)生器〔發(fā)送接收時鐘,特殊功能寄存器PCON的最高位SMOD為串口波特率的倍率控制位。串行口控制寄存器SCON如圖所示,它具有位尋址功能。它包括串行口的工作方式選擇位SM0、SM1,多機(jī)通信標(biāo)志SM2,接收允許位REN,發(fā)送接收的第九位數(shù)據(jù)TB8,RB8,以及發(fā)送和接收中斷標(biāo)志TI,RI。圖4-7SCON的格式SM0、SM1串行口的方式選擇位功能如表4-5所示。表4-5串行口的方式選擇SM0SM1方式功能說明000擴(kuò)展移位寄存器方式〔用于I/O擴(kuò)展,移位速率為fosc/120118位UART,波特率可變〔T1溢出率/n1029位UART,波特率為fosc/64或fosc/321139位UART,波特率可變〔T1溢出率/nSM2 方式2和方式3的多機(jī)通信控制位。對于方式2或方式3,如SM2置1,則接收到的第九位數(shù)據(jù)〔RB8為0時不激活RI。對于方式1,如SM2=1,則只有接收到有效的停止位時才會激活RI。對于方式0,SM2應(yīng)該為0。REN 允許串行接收位。由軟件置位以允許接收。由軟件清0來禁止接收。TB8 對于方式2和方式3,是發(fā)送的第九位數(shù)據(jù)。需要時由軟件來置位或復(fù)位。RB8 對于方式2和方式3,是接收到的第九位數(shù)據(jù)。對于方式1,如SM2=0,RB8是接收到的停止位。對于方式0,不使用RB8。TI 發(fā)送中斷標(biāo)志。由硬件在方式0串行發(fā)送第8位結(jié)束時置位,或在其它方式串行發(fā)送停止位的開始時置位。必須由軟件清0。RI 接收中斷標(biāo)志。由硬件在方式0接收到第8位結(jié)束時置位,或在其它方式接收到停止位的中間時置位,必須由軟件清0。串行口定義為方式1時,它是一個8位的異步串行通信接口,TXD為數(shù)據(jù)發(fā)送端,RXD為數(shù)據(jù)接收端。方式1的波特率下式確定。方式1波特率=振蕩器頻率/[3212〔256-〔TH1]在方式1中,一幀信息為10位:1位起始位,8位數(shù)據(jù)位〔先低后高,1位停止位。只要有CPU數(shù)據(jù)寫入SBUF,就會觸發(fā)一個發(fā)送中斷TI,同理,只要外部有數(shù)據(jù)寫入SBUF,就會產(chǎn)生一個接收中斷RI。發(fā)送或接收數(shù)據(jù)既可采用中斷方式又可采用查詢方式,由于系統(tǒng)在確定進(jìn)入接收狀態(tài)后,需接到或發(fā)送正確數(shù)據(jù)才算是完成傳送,所以系統(tǒng)采用查詢方式實現(xiàn)串口通信。完成課程設(shè)計的串行通信功能,可以選擇完成以下設(shè)計之一:通過串口傳送命令和數(shù)據(jù),實現(xiàn)對電器控制此種設(shè)計需要編寫單片機(jī)通信控制程序和微機(jī)通信控制程序,以下給出單片機(jī)程序。系統(tǒng)定義了數(shù)組大小為7的緩沖區(qū),說明如下:ucharbuffer[7]={ 0, //電器號 0,0, //秒 0,0, //分 0,0 //時}; //格式定義如:3460501<"301-05-46">系統(tǒng)的串行發(fā)送流程圖如圖4-8所示。串行發(fā)送程序參考代碼如下:voidsend<> //發(fā)送所有家電的剩余時間給微機(jī){uchari;index=0;TI=0; //每次調(diào)用該函數(shù)都要清零for<i=1;i<5;i++> //4個家電{putsfmToBuf<i>; //把家電i剩余時間填入緩沖區(qū)while<<index<7>> //緩沖區(qū)大小{SBUF=buffe
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資公司員工培訓(xùn)制度
- 培訓(xùn)機(jī)構(gòu)病假制度規(guī)定
- 教育培訓(xùn)行業(yè)懲罰制度
- 美術(shù)培訓(xùn)班收費規(guī)章制度
- 培訓(xùn)機(jī)構(gòu)學(xué)員培訓(xùn)制度
- 完善師德教育培訓(xùn)制度
- 培訓(xùn)請假制度通知
- 醫(yī)院醫(yī)護(hù)崗前培訓(xùn)制度
- 咨詢項目培訓(xùn)制度
- 中醫(yī)三基培訓(xùn)制度
- 委托作品協(xié)議書
- 食品加工廠乳制品設(shè)備安裝方案
- 2025至2030中國芳綸纖維行業(yè)發(fā)展分析及市場發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 尾牙宴活動策劃方案(3篇)
- 魯教版(2024)五四制英語七年級上冊全冊綜合復(fù)習(xí)默寫 (含答案)
- 生蠔課件教學(xué)課件
- 組塔架線安全培訓(xùn)
- 化療神經(jīng)毒性反應(yīng)護(hù)理
- 2025年度運營數(shù)據(jù)支及決策對工作總結(jié)
- 2025年《外科學(xué)基礎(chǔ)》知識考試題庫及答案解析
- 2025年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
評論
0/150
提交評論