MCS51單片機(jī)課程設(shè)計教案_第1頁
MCS51單片機(jī)課程設(shè)計教案_第2頁
MCS51單片機(jī)課程設(shè)計教案_第3頁
MCS51單片機(jī)課程設(shè)計教案_第4頁
MCS51單片機(jī)課程設(shè)計教案_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.mcs-51單片機(jī)課程設(shè)計(交通控制燈的制作)第一講一單片機(jī)的概念所謂單片機(jī)就是將計算機(jī)的cpu、ram、rom、定時器/計數(shù)器和各種i/o口(如并行口、串行口等)集成在一片芯片上而制成的大規(guī)模集成電路。形成芯片級的計算機(jī)。因此單片機(jī)早期的含義稱為單片微型計算機(jī),簡稱為單片機(jī)(single chip microcomputer)。cpu:是計算機(jī)的核心,叫做中央處理單元(center process unit)。所有的數(shù)學(xué)運(yùn)算和邏輯控制都由它完成。ram:隨機(jī)存取存儲器(random access memory),存放運(yùn)算過程中的數(shù)據(jù)。rom:只讀存儲器(read only memory)。

2、定時器/計數(shù)器:計算機(jī)內(nèi)部重要部件。i/o:輸入/輸出口(input/output),包括并行口、串行口等。二單片機(jī)的特點(diǎn)1 小巧靈活,成本低,易于產(chǎn)品化。2 面向控制,能針對性解決從簡單到復(fù)雜的各類控制任務(wù),因而能獲得最佳性能價格比。3 抗干擾能力強(qiáng),能在惡劣的環(huán)境下可靠工作。三單片機(jī)的應(yīng)用1 工業(yè)方面:電機(jī)控制、過程控制、智能傳感器等2 儀器儀表方面:智能儀器、醫(yī)療器械等3 民用方面:電子玩具、家電產(chǎn)品、游戲機(jī)等4 軍事方面:導(dǎo)彈控制、智能武器裝置等5 其它四、 mcs-51單片機(jī)內(nèi)部結(jié)構(gòu)(如圖)內(nèi)部bus內(nèi)中斷振蕩器osc程序存儲器4kb rom數(shù)據(jù)存儲器128b ram216位定時器/

3、計數(shù)器8051cpu可編程并行口可編程串行口外中斷1 1個8位的cpu2 一個片內(nèi)振蕩器及時鐘電路3 4kb rom(不同型號內(nèi)容不同,看書)精品.4 128b 內(nèi)部ram5 可尋址64kb的外部rom和外部ram的控制電路6 兩個16位定時器/計數(shù)器(timer/counter)7 26個特殊功能寄存器(specialfunction register)8 4個8位并行(parallel)i/o口9 一個串行口(series)10 5個中斷源(interrupt)這些我們稱為單片機(jī)的資源(souce),單片機(jī)的應(yīng)用就是怎么充分合理地利用這些資源,來解決實(shí)際中的問題。五、mcs-51單片機(jī)的c

4、pumcs-51的cpu包括兩部分:運(yùn)算部件和控制器。1運(yùn)算部件運(yùn)算部件包括算術(shù)邏輯部件alu、布爾處理器、累加器a、寄存器b、暫存器以及程序狀態(tài)寄存器psw等。該部分的功能是實(shí)現(xiàn)數(shù)據(jù)的算術(shù)邏輯運(yùn)算、位變量處理和數(shù)據(jù)的傳送操作。alu的功能十分強(qiáng),可以對8位變量進(jìn)行邏輯“與”、“或”、“異或”、循環(huán)、求補(bǔ)和清零等基本操作,還可以進(jìn)行加、減、乘、除等基本運(yùn)算。還可對位(bit)變量進(jìn)行布爾處理,如置位、清零以及邏輯“與”、“或”等操作。累加器a是一個8位的累加器(也可以寫為acc),絕大部分運(yùn)算和操作都同a有關(guān)。在程序中用的最多。另外它有一個進(jìn)位標(biāo)志cy,同時又是布爾處理器的累加器。寄存器b是專

5、為執(zhí)行乘法和除法操作而設(shè)置的,一般情況下也可以作為暫存器使用。程序狀態(tài)寄存器psw是一個8位的寄存器,內(nèi)部存放程序運(yùn)行狀態(tài)的信息。2控制器(controler)控制器是單片機(jī)的神經(jīng)中樞,以振蕩器的頻率位基準(zhǔn),產(chǎn)生cpu時序,對指令(command)進(jìn)行譯碼,然后發(fā)出各種控制信號,實(shí)現(xiàn)各種操作。六、mcs-51單片機(jī)最小應(yīng)用系統(tǒng)1、最小硬件系統(tǒng)(system)所謂最小硬件系統(tǒng)是指單片機(jī)能工作所必須具備的硬件條件,它包括四個部分:1)電源芯片接上5v電源,即40腳接5v電源的正,20腳接5v電源的負(fù)。2)時鐘電路18、19腳接晶體振蕩器和電容構(gòu)成時鐘電路。3)程序存儲器選擇eaat89s51片內(nèi)有

6、eeprom,ea接“正”。4)復(fù)位電路8.2krstvcc+5v+5v+5v40 31 89c511 9 181920ea10f6mhz20p為保證單片機(jī)正常工作,必須有復(fù)位電路,電路復(fù)位后程序從頭開始運(yùn)行。要使電路復(fù)位,只要在復(fù)位引腳上加兩個機(jī)器周期以上的高電平。精品.2、mcs-51復(fù)位狀態(tài)1)復(fù)位后pc值為0000h,程序(program)從頭運(yùn)行(run)。2)sp為07h3)p0p3口為ffh4)其余的sfr被置為03、i/o口線 p0口:8位雙向i/o口。在訪問外部存儲器時,p0口可用于分時傳送低8位地址總線和8位數(shù)據(jù)總線。能驅(qū)動8個lsttl門。 p1口:8位準(zhǔn)雙向i/o口(“

7、準(zhǔn)雙向”是指該口內(nèi)部有固定的上拉電阻)。能驅(qū)動4個lsttl門。 p2口:8位準(zhǔn)雙向i/o口。在訪問外部存儲器時,p2口可用于高8位地址總線。能驅(qū)動4個lsttl門。 p3口:8位準(zhǔn)雙向i/o口。能驅(qū)動4個lsttl門。p3口還有第二功能。i/o口應(yīng)用要求: (at89s51)i/o口 作輸入使用 作輸出使用 帶負(fù)載能力 p0 先向?qū)?yīng)鎖存器寫入“1” 上拉電阻 8ttlp1 同上 / 4ttlp2 同上 / 4ttlp3 同上 / 4ttl七、單片機(jī)應(yīng)用的一般步驟:1硬件電路設(shè)計:單片機(jī)的最小應(yīng)用系統(tǒng): 包括電源、時鐘電路、復(fù)位電路、程序存儲器選擇四個方面。制作顯示電路。 狀態(tài)指示燈和led

8、/lcd顯示電路。制作鍵盤電路。 行列式鍵盤或獨(dú)立式按鍵接口電路。根據(jù)系統(tǒng)的實(shí)際情況選擇自己的鍵盤電路。2軟件設(shè)計:精品.新建文件-保存(文件名和擴(kuò)展名有何要求?)文件名長度小于等于8個字符,擴(kuò)展名為asm文件要保存在自己的文件夾中程序的一般結(jié)構(gòu) org 0000h ljmp setup;起始程序 ;中斷入口地址 org 0030hsetup: ;初始化部分main: ;主程序 ljmp main ;子程序和中斷服務(wù)程序 end ;匯編程序結(jié)束先編好程序的一般結(jié)構(gòu),具體程序添加在一般結(jié)構(gòu)的相應(yīng)位置,要始終保持程序結(jié)構(gòu)的完整性。 標(biāo)點(diǎn)符號要在英文格式下輸入。 編譯-編譯過程中自動檢查語法錯誤,出

9、現(xiàn)信息窗口提示錯誤類型,并指出所在行。修改錯誤直到編譯通過。仿真-觀察cpu窗口、data窗口 -復(fù)位后執(zhí)行單步f8或跟蹤f7比較單步f8和跟蹤f7的區(qū)別3下載:用編程器將目標(biāo)文件*.hex下載到單片機(jī)芯片中。 (器件選擇、目標(biāo)文件裝入、擦除、寫入)4通電調(diào)試:將單片機(jī)放到硬件電路上通電調(diào)試第二講一、特殊功能寄存器sfrsfr也屬于內(nèi)部存儲器,由于它是專用的,人們通常講的內(nèi)部ram只指前面的128個,而不包括sfr。共計21個,它們離散的分布在80hffh內(nèi)。參看p34-35頁的表。對特殊功能寄存器應(yīng)注意以下幾個問題:1 那些是可以位尋址的,字節(jié)地址(address)的末位為0或8。2 可位尋

10、址的sfr的幾種操作方式。3 不可位尋址的sfr的操作方式。4 80hffh中其余單元,不要使用。5 程序狀態(tài)寄存器psw位編號psw.7psw.6psw5psw.4psw.3psw.2psw.1psw.0位地址d7hd6hd5hd4hd3hd2hd1hd0h精品.位定義名cyacf0rs1rs0ovprs1、rs0=000區(qū)(00h07h)rs1、rs0=011區(qū)(08h0fh)rs1、rs0=102區(qū)(10h17h)rs1、rs0=113區(qū)(18h1fh)cy 與的區(qū)別ov:cy為無符號數(shù)運(yùn)算時的進(jìn)位或借位標(biāo)志,ov為有符號數(shù)運(yùn)算時的溢出標(biāo)志。二、ram內(nèi)部ram:(00h7fh)內(nèi)部數(shù)據(jù)

11、存儲器的空間編址是00h7fh,共128個,它又分為三部分:工作寄存器區(qū),位尋址區(qū)和數(shù)據(jù)緩沖區(qū)。堆棧、數(shù)據(jù)緩沖區(qū)(30h7fh)位尋址區(qū)(202fh)工作寄存器3區(qū)(18h1fh)工作寄存器2區(qū)(10h17h)工作寄存器1區(qū)(08h1fh)工作寄存器0區(qū)(00h07h)1 工作寄存器區(qū)00h1fh共32個單元,分為4組,每次只有一組處于工作狀態(tài),通過改變狀態(tài)寄存器psw中rs1,rs0的設(shè)置來改變當(dāng)前使用的工作寄存器。指令系統(tǒng)中有專用于工作寄存器的操作,讀寫速度比一般內(nèi)ram要快,另外還具有間接尋址功能,使用很方便。精品.2 位尋址區(qū)20h2fh共16個單元為位尋址區(qū),每個單元也就是一個字節(jié)8

12、位,共計128位,每位對應(yīng)一個地址,地址的范圍為00h7fh。位尋址區(qū)的主要用途是存放各種標(biāo)志位信息和位數(shù)據(jù)。3 數(shù)據(jù)緩沖區(qū)(buffer)內(nèi)ram中30h7fh為數(shù)據(jù)緩沖區(qū),用于存放各種數(shù)據(jù)和中間結(jié)果。中斷源(at89c51)中斷源 5個 中斷源名稱 入口地址外部中斷0 int0 0003h定時器0 t0 000bh外部中斷1 int1 0013h定時器1 t1 001bh串行口 0023h三、外部中斷應(yīng)用步驟: 1)硬件上:在對應(yīng)的中斷引腳上加有效請求信號外中斷0 (12引腳p3.2)/外中斷1 (13引腳p3.3)2)在程序開頭送入口地址 org 0003h ljmp inexop 3)

13、外部中斷初始化 it0 信號觸發(fā)方式/setb it0 ex0 中斷允許/setb ex0 ea 總中斷允許/setb ea4)對應(yīng)中斷服務(wù)程序 保護(hù)現(xiàn)場 push (壓入堆棧) 恢復(fù)現(xiàn)場 pop (彈出堆棧)(堆棧:先進(jìn)后出,后進(jìn)先出)四、定時器中斷的應(yīng)用步驟:1.在程序開頭送入口地址2.定時器初始化2.1選擇定時器工作方式:mov tmod,#11h2.2送定時初值 th0(th1) /mov th0,#;定時初值高八位tl0(tl1)/ mov tl0,#;定時初值低八位2.3、啟動定時器 (tr0 tr1) setb tr0 精品.2.4、定時器中斷允許(eto et1) setb e

14、t0 setb et12.5、開總中斷ea setb ea3.定時器服務(wù)程序 保護(hù)現(xiàn)場 重裝初值 恢復(fù)現(xiàn)場 五、 mcs-51單片機(jī)的設(shè)計思路和步驟一個單片機(jī)的控制系統(tǒng)在運(yùn)行時,一般情況下都需要和使用它的人之間交換信息。單片機(jī)運(yùn)行的狀況要有指示或顯示,便于人掌握運(yùn)行情況,同時人也要給單片機(jī)系統(tǒng)輸入適當(dāng)?shù)膮?shù),控制或改變其運(yùn)行。單片機(jī)應(yīng)用系統(tǒng)一般都包含顯示和鍵盤電路(除特別簡單的應(yīng)用),在設(shè)計制作時應(yīng)首先做好顯示電路,便于后面的工作展開,如鍵盤電路是否正確可以通過顯示電路表現(xiàn)出來。硬件制作和軟件互相配合,程序編制也應(yīng)跟硬件制作同步,即某部分電路制作好以后編寫相應(yīng)的程序?qū)ζ洳僮?,看是否達(dá)到設(shè)想的要

15、求。單片機(jī)應(yīng)用系統(tǒng)的一般設(shè)計步驟如下:1 制作最小應(yīng)用系統(tǒng),也即單片機(jī)能工作的最基本的必要條件。包括電源、時鐘電路、復(fù)位電路、程序存儲器選擇四各方面。2 制作顯示電路。狀態(tài)指示燈和led/lcd顯示電路,根據(jù)系統(tǒng)工作的性能要求確定顯示電路的形式,分配資源并要考慮后面制作對資源的要求,綜合考慮。編寫相應(yīng)的控制或顯示程序。3 制作鍵盤電路。行列式鍵盤或個獨(dú)立式按鍵接口電路。根據(jù)系統(tǒng)的實(shí)際情況選擇自己的鍵盤電路,如果是系統(tǒng)要求的按鍵比較多,或要求直接能輸入數(shù)字、字符,一般選用行列式鍵盤,其它情況下一般用獨(dú)立式按鍵,并且可以采用復(fù)合功能的方法減少鍵的數(shù)量。同樣硬件的制作也要和軟件同步,特別要和顯示程序

16、結(jié)合起來。4 其它功能電路設(shè)計制作。包括輸出的驅(qū)動電路、數(shù)字量輸入的緩沖整形電路、a/d、d/a轉(zhuǎn)換電路、模擬量的變換電路等。需要根據(jù)它們之間內(nèi)在關(guān)系確定制作的前后順序,同步地編寫控制程序。合理使用定時器,定時器也可以看作是硬件的資源,由于數(shù)量有限,需合理配置滿足系統(tǒng)要求。六、 mcs-51單片機(jī)應(yīng)用程序的一般結(jié)構(gòu)org 0000hljmp setup ;起始程序 ;中斷服務(wù)程序入口地址精品.org 0030hsetup: ;初始化部分 main: ;主程序 ljmp main ;子程序和中斷服務(wù)程序end匯編語言的程序結(jié)構(gòu)在軟件設(shè)計過程中非常重要,程序結(jié)構(gòu)的錯誤將導(dǎo)致系統(tǒng)不能運(yùn)行,因此在編寫

17、程序過程中應(yīng)始終保持程序結(jié)構(gòu)的完整性。程序的開頭一般都是一句跳轉(zhuǎn)語句,要跳過中斷服務(wù)入口地址。初始化部分一般包括系統(tǒng)運(yùn)行的起始參數(shù)和運(yùn)行狀態(tài)標(biāo)志的設(shè)置,內(nèi)部中斷源的設(shè)置等。初始化程序還應(yīng)考慮堆棧的設(shè)置,一般應(yīng)將堆棧設(shè)置在數(shù)據(jù)緩沖區(qū),跳過工作寄存器區(qū)和位尋址區(qū)。主程序一般是顯示程序和鍵盤程序(鍵盤用程序控制掃描方式時)。主程序是循環(huán)程序。程序內(nèi)容上的錯誤是容易檢查,通過運(yùn)行的狀態(tài)和結(jié)果可以判斷出問題所在,而結(jié)構(gòu)的錯誤往往較難判斷,最好在編寫過程中注意。七、 位信息的使用在實(shí)際的單片機(jī)應(yīng)用程序的設(shè)計中,程序比我們實(shí)驗上設(shè)計的程序要復(fù)雜得多,不是課堂上講的順序程序和循環(huán)程序,更多的是分支程序,分支程

18、序的設(shè)計要根據(jù)某一狀態(tài)確定程序執(zhí)行的分支。在程序設(shè)計中大多數(shù)要編程者人為分配位地址,來存放這些狀態(tài)信息。位信息的使用需要注意以下幾個方面:1 位信息只能用來存放兩個相反的狀態(tài),對于多狀態(tài)的情況需要用多個位信息的組合表示。如:表示燈的亮滅,開關(guān)的閉合都可以用一個位信息來表示,而要表示紅燈、綠燈和黃燈量的狀態(tài),一個位信息顯然無法存放,我們可以用兩個位信息的組合來表示,bit1=1時,bit2任意值表示紅燈亮、綠燈滅、黃燈滅的狀態(tài);bit1=0時,bit2=0表示紅燈滅、綠燈亮、黃燈滅的狀態(tài);bit1=0時,bit2=1表示紅燈滅、綠燈滅、黃燈亮的狀態(tài);2 位信息在使用前都必須初始化,在初始化程序中

19、確定其初始的狀態(tài)值以及所表示的狀態(tài)。一般在初始化時都設(shè)為0(可以根據(jù)編程者的習(xí)慣任意設(shè)定),在需要改變時用指令切換。3 位信息的修改一般都是“雙次”的,“雙次”的意思是某一位信息被改變了,在程序的其它地方一定有使其恢復(fù)的操作。只有極個別情況下不是這樣,如系統(tǒng)出現(xiàn)某一種特殊狀態(tài),不允許繼續(xù)運(yùn)行程序,繼續(xù)運(yùn)行可能造成控制系統(tǒng)設(shè)備或人員的損傷。這時系統(tǒng)待外部檢查沒有問題了,從上電開始重新運(yùn)行。精品.4 位信息的使用在很多情況下是和定時器配合使用,編寫多延時程序;或者和鍵盤程序配合使用,實(shí)現(xiàn)按鍵的復(fù)合功能。八、 多延時程序設(shè)計在單片機(jī)的實(shí)踐應(yīng)用中,經(jīng)常遇到多個同時(三個以上)與延時有關(guān)的程序設(shè)計,我們

20、把這樣的程序稱為多延時任務(wù)程序。多延時任務(wù)程序從任務(wù)間的關(guān)系上分為兩類:一是各延時時任務(wù)間無時間關(guān)聯(lián),稱為簡單多延時任務(wù)程序。二是延時任務(wù)程序間有時間關(guān)聯(lián),延時任務(wù)的執(zhí)行同時啟動其它一個或多個延時任務(wù)操作,或者延時任務(wù)執(zhí)行的同時啟動自己的取消操作延時,這類多任務(wù)程序稱為復(fù)合多延時任務(wù)程序。由于單片機(jī)內(nèi)部的定時器數(shù)量總是有限的,如mcs51系列單片機(jī),內(nèi)部只有23個定時器。這時就需要用位信息和定時器配合設(shè)計多延時程序。方法步驟如下:1 首先,為每個時間任務(wù)分配一個計時標(biāo)志(用位尋址區(qū)的位存放,1計時,0不計時)、計時單元(一般用內(nèi)部ram)和執(zhí)行標(biāo)志(1有效,0撤消)。2 找出所有時間任務(wù)的公倍

21、時間值,這個時間值要小于單片機(jī)系統(tǒng)的定時器能產(chǎn)生的最大定時值,定時值時間越長越好,可以減少定時器中斷的次數(shù)。3 分配一個定時器反復(fù)產(chǎn)生確定的公倍時間。4 在需要執(zhí)行某一時間任務(wù)時,置位該任務(wù)的計時標(biāo)志并清除其計時單元。該操作可能在系統(tǒng)初始化時執(zhí)行,也可在主程序中,或者是某一延時任務(wù)動作時執(zhí)行,示具體的任務(wù)間關(guān)系而定。在定時器的服務(wù)程序中,判斷這些任務(wù)的計時標(biāo)志是否為1,為0不計時,去判斷下一任務(wù)的標(biāo)志。如果為1,相應(yīng)計時單元加1,并和設(shè)定的值比較,達(dá)到設(shè)定值時,置該任務(wù)的執(zhí)行標(biāo)志為1,同時清除其計時標(biāo)志。5 主程序或其它程序檢查到某一任務(wù)執(zhí)行標(biāo)志時執(zhí)行相應(yīng)的操作。例:用一個定時器輸出多路矩形波

22、在p1.0和p1.1引腳輸出圖3所示的多路矩形波(輸出更多路信號,方法類似)。將要輸出的信號分解成若干個延時任務(wù)。p1.0輸出信號可以分成兩個延時任務(wù),task1延時2ms使p1.0輸出低電平,task2延時3ms使p1.0輸出高電平,且task1和task2相互交替啟動對方延時。同樣可以把p1.1輸出分解成延時任務(wù)task3和task4。顯然這4個延時任務(wù)的最大公倍延時時間為1ms。 p1.0p1.12ms3ms3ms4ms 單片機(jī)輸出多路矩形波精品.延時任務(wù)task1task2task3task4計時標(biāo)志00h01h02h03h計時單元70h71h72h73h計時標(biāo)志位和計時單元由于4個延

23、時任務(wù)的操作都是簡單的操作,可以直接放在定時器的服務(wù)程序中執(zhí)行,只需為每個任務(wù)分配一個計時標(biāo)志和一個計時單元,如表1所示。在初始化程序中將定時器t0設(shè)置為方式1定時模式,定時1ms,所有計時單元清為0,位地址00h、02h置為1,位地址01h、03h置為0,p1.0置為1,p1.1置為0,波形的輸出在t0的中斷服務(wù)程序中完成。第三講一、課題:設(shè)計一個交通控制燈二、設(shè)計目的 1、掌握mcs-51單片機(jī)應(yīng)用的一般步驟 2、掌握單片機(jī)內(nèi)部資源的使用方法 3、了解位信息的使用、多延時程序設(shè)計 4、設(shè)計制作一個交通控制燈三1基本要求(1)用紅、綠燈(led二極管)指示某一方向通行狀態(tài),并有時間提示(le

24、d數(shù)碼管)。(2)紅、綠燈時間參數(shù)可設(shè)置。(3)控制燈切換原則:紅燈倒計時結(jié)束切換為綠燈,綠燈倒計時結(jié)束切換為紅燈,某一時刻只能有一個方向為綠燈。狀態(tài)指示燈切換和數(shù)碼管上時間同步切換。(4)提供具體的修改參數(shù)方法,便于用戶操作。(5)為簡化設(shè)計,不考慮轉(zhuǎn)向、行人通道。2高級要求(1)用紅、綠、黃燈指示通行狀態(tài)。(2)紅、綠燈時間參數(shù)可設(shè)置,在斷電情況下不丟失。(3)控制燈切換原則:同一時刻一個方向的紅燈顯示時間比另外一個方向綠燈顯示多3秒鐘,綠燈結(jié)束黃燈閃爍2秒,然后變紅燈,紅燈結(jié)束后變綠燈。(4)修改參數(shù)期間各個方向都黃燈閃亮,指示車輛減速慢行。(5)提供具體的修改參數(shù)方法,便于用戶操作。(

25、6)為簡化設(shè)計,不考慮轉(zhuǎn)向、行人通道。二、系統(tǒng)控制方案分析精品.1控制方案(以高級要求為例,基本要求參照高級要求適當(dāng)刪減)通過分析控制系統(tǒng)的功能要求,系統(tǒng)中需要以下功能電路:單片機(jī)最小系統(tǒng)(核心)、顯示電路(led指示燈和數(shù)碼管)、鍵盤接口和存儲器電路。系統(tǒng)如右圖所示。2單片機(jī)資源分配1)顯示電路。本例中用普通的led數(shù)碼管作為時間顯示器件,led二極管作為作為交通控制的指示燈(實(shí)際交通燈中都是高亮度的二極管點(diǎn)陣構(gòu)成,和本例的區(qū)別僅是驅(qū)動電路,控制的過程是一致的)。共需要8個數(shù)碼管,12個二極管(紅、綠、黃各4個),由于相對方向碼管顯示的時間和二極管的狀態(tài)是一致的,可以用同一個驅(qū)動電路控制,所

26、以只需要設(shè)計4個數(shù)碼管和6個二極管的控制電路。6個led二極管用p1口的六位控制,4個led數(shù)碼管的段用p0控制,位用p2口的4位控制。(用共陽型的數(shù)碼管)2)鍵盤電路。系統(tǒng)操作的內(nèi)容不多,僅修改紅綠燈參數(shù),鍵的數(shù)量要求不多,可以采用34個鍵的獨(dú)立式鍵盤接口電路,采用中斷控制掃描方式,鍵輸入口線用p2的其它幾位。按鍵功能和數(shù)碼管的顯示配合起來使用,在正常指揮交通時數(shù)碼管上顯示紅、綠剩余時間,在修改參數(shù)時分別用來顯示某一方向的紅綠燈參數(shù)(只要設(shè)置一個方向的參數(shù)即可,兩個方向參數(shù)之間有內(nèi)在聯(lián)系,知道一個方向的參數(shù)可以計算出另一方向的參數(shù),參數(shù)間相互關(guān)系學(xué)生可以根據(jù)要求中的紅綠燈變化規(guī)律推導(dǎo))鍵的功

27、能定義如下:第一個鍵:從指揮交通狀態(tài)進(jìn)入?yún)?shù)修改狀態(tài),并調(diào)出系統(tǒng)原來的參數(shù),前面2個數(shù)碼管顯示南北方向紅燈時間,后兩個顯示南北方向綠燈時間,以備修改,修改時有一個數(shù)碼管閃爍,表示該位顯示的數(shù)可以修改。第二個鍵:(在指揮交通狀態(tài)該鍵不起作用,后面兩個鍵也是這樣)加1鍵,使閃爍的數(shù)碼管加1,并在09之間變化。第三個鍵:移位鍵,使4個數(shù)碼管閃爍狀態(tài)依次循環(huán)切換,和第二個鍵配合可以修改四個數(shù)碼管上的數(shù)據(jù),達(dá)到修改參數(shù)的目的。第四個鍵:運(yùn)行鍵,保存設(shè)置的參數(shù),并按照修改的參數(shù)進(jìn)入指揮交通狀態(tài)。3)電源。上述電路可以和單片機(jī)共用5v電源即可。4)一個定時器用于產(chǎn)生秒的倒計時,另一個用于在修改參數(shù)狀態(tài)控制數(shù)

28、碼管的閃爍。(鼓勵學(xué)生自主提出設(shè)計方案或不同的解題思路,鼓勵創(chuàng)新)精品.單片機(jī)課程設(shè)計的報告要求:一、要有封面、正文兩部分,裝訂成冊二、正文內(nèi)容1課題2實(shí)訓(xùn)目的3實(shí)訓(xùn)任務(wù)(設(shè)計要求)4硬件設(shè)計方案: (1)交通控制燈原理框圖和原理圖 (2)交通控制燈各單元電路進(jìn)行原理闡述5軟件設(shè)計: (1)交通燈的設(shè)計調(diào)試過程(分步進(jìn)行,遇到問題和解決方法) (2)交通燈功能程序框圖和總的交通燈源程序6收獲體會精品.第四講 顯示電路1顯示電路設(shè)計單片機(jī)應(yīng)用系統(tǒng)的顯示電路一般有三種形式的顯示電路:led指示燈、led數(shù)碼管、lcd(液晶)。(1)led指示燈一般被用來表示系統(tǒng)運(yùn)行的狀態(tài),數(shù)量不多可以單片機(jī)的i/

29、o直接控制。led指示燈發(fā)光的條件是兩端加正向電壓1.8v左右,流過電流大于4毫安,小于10毫安,單片機(jī)系統(tǒng)的工作電壓一般都是5v,不能直接用來驅(qū)動,要在led回路中串接限流電阻,如下圖所示:360+5v單片機(jī)口驅(qū)動可以用高電平或者低電平,電路分別如下(以at89c51為例):+5vat89c51360圖b 低電平驅(qū)動at89c51360+5v圖a 高電平驅(qū)動高電平驅(qū)動由于單片機(jī)i/o輸出拉電流較小,不足以驅(qū)動led,需要接一個上拉電阻。一般情況采用低電平驅(qū)動,如圖b所示。led指示燈的程序控制很簡單,用內(nèi)部ram操作指令對口操作。(略)如果系統(tǒng)需要的狀態(tài)指示燈非常多,就不能直接用i/o驅(qū)動了

30、,需要將led指示燈設(shè)計成led數(shù)碼管形式來控制,后面介紹。led流水燈電路原理390+5v8.2krstvcc+5v+5v+5v40 31 89s511 8 9 181920ea10f6mhz20p圖 15流水燈電路原理圖如圖所示。用p1口的8位分別驅(qū)動一個發(fā)光二極管,從圖上可見,某位口上輸出0(低電平)對應(yīng)的發(fā)光二極管就亮,反之某位口上輸出1(高電平)對應(yīng)的發(fā)光二極管就熄滅。我們可以根據(jù)自己的思路設(shè)計燈亮滅次序從而形成不同的樣式的流水燈。其余電路就是我們常講的最小系統(tǒng),實(shí)驗箱已設(shè)計連接好。精品.示例程序如下:(小燈依次亮滅程序。學(xué)生應(yīng)編寫自己的程序。) org 0000h ;匯編程序開頭

31、ljmp setup ;跳過中斷入口地址區(qū) org 0030hsetup: clr p1.0 ;點(diǎn)亮第一個小燈 lcall delay ;調(diào)用延時子程序 setb p1.0 ;熄滅第一個小燈(下同) clr p1.1 lcall delay setb p1.1 clr p1.7 lcall delay setb p1.7 ljmp setup ;所有燈依次亮滅后回到第一個燈delay: mov r7,#80h ;延時子程序del: mov r6,#0ffhdel1: dj nz r6,del1 djnz r7,del ret end ;匯編程序結(jié)束這是一個簡單的順序程序,下面設(shè)計的是循環(huán)程序。

32、 org 0000h ;匯編程序開頭 ljmp setup ;跳過中斷入口地址區(qū) org 0030hsetup: mov a,#0feh ;a中賦初值(第一個燈亮,其余不亮信息)aa: mov p1,a ;a中信息送給p1口,驅(qū)動對應(yīng)的燈亮 lcall delay ;調(diào)用延時子程序 rl a ;a中信息循環(huán)轉(zhuǎn)移一次,改變了信息 ljmp aa ;將a中改變后的信息再從p1口輸出delay: mov r7,#80h ;延時子程序del: mov r6,#0ffhdel1: dj nz r6,del1 djnz r7,del精品. ret end ;匯編程序結(jié)束(2)led數(shù)碼管在單片機(jī)應(yīng)用系統(tǒng)中

33、經(jīng)常采用,其結(jié)構(gòu)如下圖所示:引腳共陽型共陰型a、b、c、d、e、f、g、h 8個引腳為數(shù)碼管的段引腳,其余兩個引腳內(nèi)部是相通的,為數(shù)碼管的位引腳,led數(shù)碼管內(nèi)部是由8個led二極管,根據(jù)內(nèi)部結(jié)構(gòu)的不同分為共陽型和共陰型。從數(shù)碼管的結(jié)構(gòu)上看需要在其位和段加上適當(dāng)?shù)男盘?,使二極管兩端有正向電壓,流過的電流達(dá)到4毫安以上。數(shù)碼管的顯示電路分為靜態(tài)顯示電路和動態(tài)顯示電路,靜態(tài)顯示電路控制的方式與led發(fā)光類似,用一個8位的i/o口作為段控制信號,將公共端接地或電源即可,在實(shí)際應(yīng)用中比較少,略去不講。常用的是動態(tài)顯示方式,如下圖所示:精品.將所有數(shù)碼管相同的段連接在一起用一個8位的i/o口去控制,每個

34、數(shù)碼管的公共端用一位的i/o口控制開關(guān)使其接地或電源,如下圖為共陽型數(shù)碼管的動態(tài)顯示電路。9012p0.7p0.0p2.7p2.410kadp p0最小系統(tǒng) p2+5v+5v3601.5k數(shù)碼管1234comp0口作為數(shù)碼管段控制口,p2.4p2.7為位控制口,控制三極管導(dǎo)通使公共端接到電源,控制三極管截止關(guān)斷。數(shù)碼管動態(tài)掃描電路的工作原理是:循環(huán)顯示,動態(tài)掃描,視覺暫留。利用人眼的視覺暫留特性,在某一時刻只控制一個數(shù)碼管顯示,保留很短時間,再控制另一數(shù)碼管顯示,依次顯示,到最后一個再返回到第一個,如此反復(fù)進(jìn)行,當(dāng)掃描的速度達(dá)到一定值時,人眼就感覺不到數(shù)碼管熄滅,看到所有數(shù)碼管都穩(wěn)定顯示。一個

35、有實(shí)際意義的數(shù)碼管動態(tài)掃描程序,匯編語言編寫需要用到查表指令,設(shè)計查表程序。數(shù)碼管動態(tài)顯示電路檢查硬件檢查主要檢查位和段的控制電路,取下單片機(jī)芯片,上電,將兩根連接線與地線相連,其中一根接到p2口的某個位控制引腳,另一根依次碰觸p0口的某一位,如果硬件正確,則對應(yīng)數(shù)碼管的段亮,否則檢查對應(yīng)的段或位。三、查表程序設(shè)計數(shù)碼管的動態(tài)掃描程序是單片機(jī)應(yīng)用中最重要的程序之一,是進(jìn)一步應(yīng)用的基礎(chǔ)和前提。數(shù)碼管的動態(tài)掃描程序都是用查表程序設(shè)計的,包括lcd(液晶)也是用查表程序設(shè)計的。首先要命名一個標(biāo)號,用db偽指令定義表格,編寫系統(tǒng)所要顯示的所有數(shù)字和字符的字段碼,并按順序存放(如下面程序09的編碼)。表

36、格在程序結(jié)構(gòu)中的位置一般放在查表程序的后面,在子程序區(qū),注意不能放在某個子程序的內(nèi)部,需放在兩個子程序之間。查表指令有兩條:精品.movc a, a+dptrmovc a, a+pc指令的具體功能請查閱課本。一般情況下用前一條指令,只有在系統(tǒng)有外部擴(kuò)展并行數(shù)據(jù)存儲器或擴(kuò)展外部并行口使用movx指令來操作時,才使用第二條指令,使用該指令時表格位置與查表指令間的距離有限制,不能超過256個字節(jié)。以第一條指令說明查表程序設(shè)計的步驟。分為三步:第一步:將表格的首地址送給數(shù)據(jù)指針dptr;第二步:將要查找的項(顯示內(nèi)容的字段碼)與表格首地址的間隔數(shù)送給累加器a;第三步:執(zhí)行指令movc a, a+dpt

37、r;則累加器中就是要顯示內(nèi)容的字段碼,將其送段控制口即可。編寫顯示程序時一般都為每個數(shù)碼管設(shè)置一個數(shù)據(jù)緩沖區(qū),顯示緩沖區(qū)存放的是顯示內(nèi)容的字段碼在表格中的位置。參考程序如下: org 0000h ;匯編程序開頭 ljmp setup ;跳過中斷入口地址區(qū) org 0030hsetup: mov 70h,#0 ;顯示緩沖區(qū)賦初值 mov 71h,#1 ; mov 72h,#2 ; mov 73h,#3 ; main: lcall dis ;調(diào)用顯示子程序 ljmp maindis: ;顯示子程序mov dptr,#tab ;表格首地址送給數(shù)據(jù)指針dptr mov a,70h ;第一個顯示的數(shù)送a

38、 movc a,a+dptr ;查表得顯示內(nèi)容的字段碼 mov p0,a ;字段碼從p0口輸出 clr p2.4 ;開通第一個數(shù)碼管的位,顯示相應(yīng)信息 lcall del ;調(diào)用延時子程序 setb p2.4 ;關(guān)閉第一個數(shù)碼管的位,以下依次類推 ; mov a,73h ;第略個顯示的數(shù)送a movc a,a+dptr ;查表得顯示內(nèi)容的字段碼 mov p0,a ;字段碼從p0口輸出精品. clr p2.7 ;開通第略個數(shù)碼管的位,顯示相應(yīng)信息 lcall del ;調(diào)用延時子程序 setb p2.7 ;關(guān)閉第略個數(shù)碼管的位 ret ;顯示子程序結(jié)束tab: db 0c0h,0f9h,0a4h

39、,0b0h,99h,92h,82h,0f8h,80h,90h ;共陽型數(shù)碼管09字段碼del: mov r7,#80h ;延時子程序 djnz r7,$ ;$在轉(zhuǎn)移指令中表示轉(zhuǎn)移到該指令本身 ret end ;匯編程序結(jié)束前面曾提到有許多l(xiāng)ed狀態(tài)指示時可以設(shè)計成數(shù)碼管的電路形式,實(shí)際上就是把led狀態(tài)指示燈人為設(shè)計成數(shù)碼管的形式,用數(shù)碼管的動態(tài)顯示方式來控制數(shù)碼管的筆畫,如上圖虛線框內(nèi),只要將二極管不相連的管腳分別連到數(shù)碼管的段上,在用一個位控制公共端,和前面的電路構(gòu)成有5個數(shù)碼管的動態(tài)顯示電路,編寫程序(最后數(shù)碼管不需查表,直接輸出控制即可)。(3)lcd顯示電路要求高的場合可以采用lcd

40、液晶顯示器,lcd液晶顯示器有數(shù)碼型和字符型,顯示器一般自帶驅(qū)動模塊,使用者按照驅(qū)動接口要求用單片機(jī)的i/o口去控制。批量大的產(chǎn)品可以定做。第五講 鍵盤接口電路鍵盤是單片機(jī)應(yīng)用系統(tǒng)最基礎(chǔ)的電路之一,用于人和單片機(jī)系統(tǒng)的對話,通過鍵的操作控制系統(tǒng)的執(zhí)行或獲取系統(tǒng)的運(yùn)行狀態(tài)等,一般是和顯示電路一起構(gòu)成完整的人機(jī)交互系統(tǒng)。單片機(jī)常用的鍵盤接口電路有兩類:行列式鍵盤和獨(dú)立式按鍵。由于按鍵的操作都是通過機(jī)械的觸點(diǎn)實(shí)現(xiàn),存在著抖動現(xiàn)象,影響按鍵操作,因此鍵盤電路都需要有消抖動的措施,消抖動方法有:硬件消抖動和軟件消抖動。硬件主要采用濾波電路、單穩(wěn)態(tài)電路、雙穩(wěn)態(tài)電路等。軟件主要采用軟件延時。鍵盤程序設(shè)計一般

41、有三種控制掃描方法:第一,程序控制掃描。就是將鍵盤程序作為主程序的一部分,在程序運(yùn)行時循環(huán)檢測。程序結(jié)構(gòu)思路簡單易理解,存在著兩個缺陷,一是不能及時響應(yīng)鍵的操作,因為只有在程序執(zhí)行到鍵盤程序時按鍵才會被響應(yīng)。在沒有按鍵操作時也執(zhí)行鍵盤掃描程序,浪費(fèi)cpu時間。但這種響應(yīng)的及時性和浪費(fèi)時間也是相對的。對一般的應(yīng)用沒有多大影響。第二,定時控制掃描。用定時器控制掃描的周期,每隔一段時間檢測一次鍵盤,同樣存在著響應(yīng)的及時性和浪費(fèi)cpu時間,并且占用了一個定時器,一般很少采用。第三,中斷控制掃描。在硬件上將所有的按鍵操作都轉(zhuǎn)換成外部中斷的請求信號,然后在中斷服務(wù)程序中執(zhí)行鍵盤程序??朔似渌麅煞N方法的缺

42、陷,但要占用一個外部中斷資源。在具體應(yīng)用中采用那種控制方式可以根據(jù)系統(tǒng)對鍵盤的綜合要求確定。精品.獨(dú)立式按鍵接口電路在按鍵需要不多的系統(tǒng)一般設(shè)計獨(dú)立式按鍵接口電路作為系統(tǒng)的鍵盤電路。電路結(jié)構(gòu)簡單,如下圖所示:s1s40.1p3.2最小系統(tǒng)+5v+5v10k15k沒有鍵按下時,4個端口都被上拉到高電平,有鍵按下時,對應(yīng)的端口被拉為低電平,這樣鍵的動作被轉(zhuǎn)換成電平的變化,通過檢測4個輸入端口電平的變化就可確定哪個鍵按下。本電路還通過二極管與門電路將按鍵轉(zhuǎn)變成中斷請求信號,加到p3.2外部中斷0,用電容濾波消抖動。程序設(shè)計按編寫外中斷應(yīng)用程序的步驟:初始化、入口地址、服務(wù)程序。按鍵個數(shù)根據(jù)實(shí)際情況配

43、置,也可以將每個按鍵功能復(fù)用,減少鍵的數(shù)量,但程序結(jié)構(gòu)也相對復(fù)雜??梢跃C合考慮。程序結(jié)構(gòu)如下:org 0000hljmp setuporg 0003h ;外部中斷0入口地址ljmp inex0p ;轉(zhuǎn)中斷0服務(wù)程序org 0030hsetup:setb it0 ;設(shè)置中斷0為邊沿觸發(fā)方式setb ex0 ;開中斷0允許位setb ea ;開總的允許位main: ;主程序精品.lcall dis ;調(diào)用數(shù)碼管顯示子程序ljmp maindis: ;數(shù)碼管顯示子程序retdelay: ;數(shù)碼管顯示子程序的延時子程序retinex0p:;中斷0的服務(wù)程序setb p2.0jnb p2.0,key1

44、;第一個鍵按下轉(zhuǎn)執(zhí)行其功能setb p2.1jnb p2.1,key2 ;第二個鍵按下轉(zhuǎn)執(zhí)行其功能setb p2.2jnb p2.2,key3 ;第三個鍵按下轉(zhuǎn)執(zhí)行其功能setb p2.3jnb p2.3,key4 ;第四個鍵按下轉(zhuǎn)執(zhí)行其功能retikey1: ;第一個鍵功能程序retikey2: ;第二個鍵功能程序retikey3: ;第三個鍵功能程序retikey4: ;第四個鍵功能程序retiend四、鍵盤電路檢查接通電源,用萬用表測量p2.0p2.3引腳電平,沒有鍵按下時,4個端口都是高電平,當(dāng)某一鍵按下時,對應(yīng)端口電平由高到低變化,說明該按鍵連接正確,否則不正確,檢查電路,修改后再試

45、。另外每次按鍵檢測p2.0p2.3的同時,檢測p3.2引腳電平,也應(yīng)有相同的變化,說明與門電路也正確,就可以編寫程序來實(shí)現(xiàn)設(shè)想的功能。2)鍵盤電路。系統(tǒng)操作的內(nèi)容不多,僅修改紅綠燈參數(shù),鍵的數(shù)量要求不多,可以采用34個鍵的獨(dú)立式鍵盤接口電路,采用中斷控制掃描方式,鍵輸入口線用p2的其它幾位。按鍵功能和數(shù)碼管的顯示配合起來使用,在正常指揮交通時數(shù)碼管上顯示紅、綠、黃燈剩余時間,在修改參數(shù)時分別用來顯示某一方向的紅綠燈參數(shù)(只要設(shè)置一個方向的參數(shù)即可,兩個方向參數(shù)之間有內(nèi)在聯(lián)系,知道一個方向的參數(shù)可以計算出另一方向的參數(shù),參數(shù)間相互關(guān)系學(xué)生可以根據(jù)要求中的紅綠燈變化規(guī)律推導(dǎo))精品.鍵的功能定義如下

46、:第一個鍵:從指揮交通狀態(tài)進(jìn)入?yún)?shù)修改狀態(tài),并調(diào)出系統(tǒng)原來的參數(shù),前面2個數(shù)碼管顯示南北方向紅燈時間,后兩個顯示南北方向綠燈時間,以備修改,修改時有一個數(shù)碼管閃爍,表示該位顯示的數(shù)可以修改。第二個鍵:(在指揮交通狀態(tài)該鍵不起作用,后面兩個鍵也是這樣)加1鍵,使閃爍的數(shù)碼管加1,并在09之間變化。第三個鍵:移位鍵,使4個數(shù)碼管閃爍狀態(tài)依次循環(huán)切換,和第二個鍵配合可以修改四個數(shù)碼管上的數(shù)據(jù),達(dá)到修改參數(shù)的目的。第四個鍵:運(yùn)行鍵,保存設(shè)置的參數(shù),并按照修改的參數(shù)進(jìn)入指揮交通狀態(tài)。第六講 定時器應(yīng)用定時器應(yīng)用一般分為三部分,提供定時器的中斷入口地址(如果用定時器中斷)、定時器的初始化、定時器的中斷服務(wù)程序,本次實(shí)驗用其產(chǎn)生秒計時??梢杂脙蓚€定時器中的一個。(假設(shè)用t0)1定時器的中斷入口地址t0:000bh t1:001bh2定時器的初始化定時器初始化包括:定時器工作方式選擇、賦定時初值、啟動定時器、開通相應(yīng)的中斷等。定時器的工作方式通過定時器方式寄存器tcom來設(shè)置,其字節(jié)地址為89h,不可位尋址。低4位用于t0,高4位用于t1。d7d6d5d4d3d2d1d0gatec/tm1m0gatec/tm1m0(1)m1m0工作方式選擇m1m0 工作方式 功能

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論