單片機(jī)課程設(shè)計.doc
《單片機(jī)課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)課程設(shè)計.doc(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 單片機(jī)電子時鐘 摘要:在日常生活中,電子時鐘與我們密切相關(guān),在很多地方都會用到電子時鐘。除了專用的時鐘、計時顯示牌外,許多應(yīng)用系統(tǒng)常常也帶有實時時鐘顯示,如各種智能化儀器儀表、工業(yè)過程控制系統(tǒng)以及家用電器等。實現(xiàn)電子時鐘的方法有多種,通過前面我們對單片機(jī)基本理論及相關(guān)知識的學(xué)習(xí),在這里,要求用單片機(jī)為主控制芯片設(shè)計一簡單的單片機(jī)電子時鐘。近年來隨著計算機(jī)在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工
2、產(chǎn)品以及家用電器等各個領(lǐng)域,單片機(jī)往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。 關(guān)鍵詞:電子時鐘;單片機(jī);計時 SCM Electronic Clock Abstract:In our daily life, the electronic clock is closely related to the electronic clock which will be used in many places. In addition to a dedicated clock, timing licenses, there are ma
3、ny applications which often with real-time clock display, such as a variety of intelligent instrumentation, industrial process control systems and home appliances. There are many ways to realize the Electronic clock, through the front of learning our SCM basic theory and related knowledge, here, th
4、e microcontroller-based control chip design a simple single-chip electronic clock. With the development of computer penetration in the social field and LSI in recent years, the using of microcontroller applications is constantly go deeper, because it has the features of a small size, low power consu
5、mption, cheap, reliable, easy to use. Therefore it is particularly suitable for the control of the system, more and more widely used in automatic control, Intelligent instruments, data acquisition, and military products and home appliances, SCM often used as a core component in the structure, accord
6、ing to the specific hardware and software for application-specific object characteristics combined to make perfect. Keywords: electronic clock; microcontroller; timing 目錄 第一章 引言 1 1.1課程設(shè)計的目的 1 1.2課程設(shè)計內(nèi)容 1 第二章 總體方案設(shè)計 2 2.1 總體思想--方案論證 2 2.2方案的選擇 2 第三章 硬件系統(tǒng)設(shè)計 4 3.1總電路設(shè)計 4
7、3.2器件的介紹 4 3.3單元模塊設(shè)計 6 第四章 軟件系統(tǒng)設(shè)計 9 4.1軟件程序思想 9 4.2主程序及流程圖 9 4.3子程序及流程圖 12 第五章 系統(tǒng)仿真 16 5.1 KEIL 51介紹 16 5.2 PROTEUS介紹 20 5.3仿真過程及仿真結(jié)果 28 第六章 結(jié)束語 29 致謝 30 參考文獻(xiàn) 31 II 第一章 引言 1.1課程設(shè)計的目的 本次設(shè)計中以單片機(jī)的發(fā)展過程和發(fā)展方向為背景,介紹了單片機(jī)的輸入輸出的工作原理和操作方法,中斷的工作原理和操作方法,74L
8、S164譯碼器的工作原理和與LED連接的方法。通過它可以進(jìn)一步學(xué)習(xí)與掌握單片機(jī)原理與使用方法。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。下面是單片機(jī)的主要發(fā)展趨勢。單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機(jī)模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機(jī)械式時鐘相比具有更高
9、的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時間。忘記了要做的事情,當(dāng)事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。 數(shù)字鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴(kuò)展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時
10、間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實的意義。 1.2課程設(shè)計內(nèi)容 本次做的數(shù)字鐘是以單片機(jī)(AT89C51)為核心,結(jié)合相關(guān)的元器件(共陰極LED數(shù)碼顯示器、數(shù)碼管驅(qū)動器74LS164等),再配以相應(yīng)的軟件,是它具有星期,時,分,秒顯示的功能,并且時,分,秒還可以調(diào)整。此次設(shè)計電子數(shù)字鐘是為了了解電子數(shù)字鐘的原理,從而學(xué)會制作電子數(shù)字鐘。而且通過電子數(shù)字鐘的制作進(jìn)一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實用方法。 第二
11、章 總體方案設(shè)計 2.1 總體思想--方案論證 1.計時方案 單片機(jī)電子時鐘計時有兩種方法:第一種是通過單片機(jī)內(nèi)部的定時器/計數(shù)器,采用軟件編程來實現(xiàn)時鐘計時,這種實現(xiàn)的時鐘一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不高的場合;第二種是采用專用的硬件時鐘芯片計時,這種實現(xiàn)的時鐘一般稱為硬時鐘。專用的時鐘芯片功能比較強(qiáng)大,除了自動實現(xiàn)基本計時外,一般還具有日歷和閏年補(bǔ)償?shù)裙δ?,計時準(zhǔn)確,軟件編程簡單,但硬件成本相對較高,通常用在對時鐘精度要求較高的場合。 2.顯示方案 對于電子時鐘而言,顯示是另一個重要的環(huán)節(jié)。顯示通常采用兩種方式
12、:LED數(shù)碼管顯示和LCD液晶顯示。其中LED數(shù)碼管顯示亮度高,顯示內(nèi)容清晢,根據(jù)具體的連接方式可分為靜態(tài)顯示和動態(tài)顯示,在多個數(shù)碼管時一般采用動態(tài)顯示,動態(tài)顯示時須要占用CPU的大量時間來執(zhí)行動態(tài)顯示程序,顯示效果往往和顯示程序的執(zhí)行相關(guān)。LCD液晶顯示一般能顯示的信息多,顯示效果好,而且液晶顯示器一般都帶控制器,顯示過程由自帶的控制器控制,不須要CPU參與,但液晶顯示器造價相對較高。 為了便于比較與學(xué)習(xí),這里給出兩種設(shè)計方案,一種是軟件計時LED數(shù)碼管顯示的單片機(jī)電子時鐘,另一種是硬件定時LCD液晶顯示的單片機(jī)電子時鐘。軟件計時LED數(shù)碼管顯示的單片機(jī)電子時鐘總體設(shè)計框圖如圖2-1所示。
13、硬件定時LCD液晶顯示的單片機(jī)電子時鐘總體設(shè)計框圖如圖2-2所示。 51單片機(jī) 時鐘電路 復(fù)位電路 LED 按鍵 51單片機(jī) 時鐘電路 復(fù)位電路 LCD 按鍵 時鐘芯片 圖2-1 軟件計時LED顯示時鐘總體框圖 圖2-2硬件定時LCD顯示時鐘總體框圖 2.2方案的選擇 對于電子時鐘而言,顯示是另一個重要的環(huán)節(jié)。顯示通常采用兩種方式:LED數(shù)碼管顯示和LCD液晶顯示。其中LED數(shù)碼管顯示亮度高,顯示內(nèi)容清晢,根據(jù)具體的連接方式可分為靜態(tài)顯示和動態(tài)顯示,在多個數(shù)碼管時一般采用動態(tài)顯示,動態(tài)顯示時須要占用CPU的大量時間來執(zhí)行動態(tài)顯示程序
14、,顯示效果往往和顯示程序的執(zhí)行相關(guān)。LCD液晶顯示一般能顯示的信息多,顯示效果好,而且液晶顯示器一般都帶控制器,顯示過程由自帶的控制器控制,不須要CPU參與,但液晶顯示器造價相對較高。 掌握單片機(jī)最小系統(tǒng)的電路原理圖;硬件的焊接、連接;獨立編輯、編譯軟件;上電以后自動進(jìn)入計時狀態(tài),起始于00:00:00。設(shè)計鍵盤調(diào)整時間,完成時間設(shè)計。定時時間為1/20秒,采用定時器實現(xiàn)。采用LED數(shù)碼管顯示,時、分,秒采用數(shù)字顯示。采用24小時制,具有方便的時間調(diào)校功能。
15、 第三章 硬件系統(tǒng)設(shè)計 3.1總電路設(shè)計 軟件計時LED數(shù)碼管顯示的時鐘的具體硬件電路如圖3-1所示,其中單片機(jī)采用應(yīng)用廣泛的AT89C51,系統(tǒng)時鐘采用12MHz的晶振,8個數(shù)碼管顯示,小時與分鐘、分鐘與秒鐘之間用短橫線間隔,采用共陽極七段式數(shù)碼管,由于并口上沒有連接其它的硬件電路,所以P0口直接作段選碼輸出端,P2口作位選碼輸出端。采用簡化按鍵方式,只設(shè)定3個開關(guān)K0、K1和K2,通過P1口低3位相連。其中K0鍵為調(diào)時模式選擇鍵,K1為加1鍵,K2為減1健。 圖3-1 軟件計時LED顯示時鐘硬件電路圖 3.2器件的介紹 定時計數(shù)器:定時/計數(shù)技術(shù)在計算機(jī)系統(tǒng)
16、中具有極其重要的作用。計算機(jī)系統(tǒng)都需要為CPU和外部設(shè)備提供定時控制或?qū)ν獠渴录M(jìn)行計數(shù)。例如,分時系統(tǒng)的程序切換,向外部設(shè)備輸出周期性定時控制信號,對外部事件個數(shù)統(tǒng)計等。另外,在檢測、控制和智能儀器等設(shè)備中也經(jīng)常會涉及到定時。因此,計算機(jī)系統(tǒng)必須有定時和計數(shù)技術(shù)。 定時/計數(shù)的本質(zhì)是計數(shù),對周期性信號計數(shù)就實現(xiàn)定時。通常,實現(xiàn)定時的方法有三種:軟件定時、硬件定時、可編程定時。軟件定時是利用CPU執(zhí)行指令需要若干指令周期的原理,運(yùn)用軟件編程,然后循環(huán)執(zhí)行一段程序而產(chǎn)生延時,再配合簡單輸出接口可以向外送出定時控制信號。這種方法的優(yōu)點是不需要增加硬件或硬件很簡單,只需要編制相應(yīng)的延時程序以備調(diào)用
17、。缺點是執(zhí)行延時程序占用了CPU時間,所以定時的時間不宜太長,且在某些惰況下不宜使用。硬件定時是通過硬件電路(多偕振蕩器件或單穩(wěn)器件)實現(xiàn)定時,故定時參數(shù)的調(diào)整不靈活,使用不方便,其成本較低??删幊潭〞r結(jié)合了軟件定時使用靈活和硬件定時獨立的特點,它以大規(guī)模集成電路為基礎(chǔ),通過編程即可改變定時時間或工作方式,又不占用CPU的執(zhí)行時間。在計算機(jī)系統(tǒng)中通常用到的是可編程定時,51單片機(jī)內(nèi)部就集成了可編程的定時/計數(shù)器,它是51單片機(jī)中使用非常頻繁的重要功能模塊。 LED顯示器:LED數(shù)碼管顯示器是由發(fā)光二極管按一定的結(jié)構(gòu)組合起來的顯示器件。在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是7段或8段式LED數(shù)碼管顯示
18、器,8段式比7段式多一個小數(shù)點。這里以8段式來介紹,單個8段式LED數(shù)碼管顯示器的外觀與引腳如圖3-2所示,其中a,b,c,d,e,f,g和小數(shù)點dp為8段發(fā)光二極管,位置如圖中所示,組成一個“”形狀。 (a) 引腳圖 (b) 共陰極 (c) 共陽極 圖3-2 8段式LED數(shù)碼管引腳與結(jié)構(gòu) 8段發(fā)光二極管的連接有兩種結(jié)構(gòu):共陰極和共陽極。如圖3-2所示。其中,圖(b)為共陰極結(jié)構(gòu),8段發(fā)光二極管的陰極端連接在一起,陽極端分開控制,使用時公共端接地,要使哪根發(fā)光二極管亮,則對應(yīng)的陽極端接高電平;圖(b)為共陽極結(jié)構(gòu),8段發(fā)光二極
19、管的陽極端連接在一起,陰極端分開控制,使用時公共端接電源,要使哪根發(fā)光二極管亮,則對應(yīng)的陰極端接地。 LED數(shù)碼管顯示器顯示時,公共端首先要保證有效,即共陰極結(jié)構(gòu)公共端接低電平,共陽極結(jié)構(gòu)公共端接高電平,這個過程我們稱為選通數(shù)碼管。再在另外一端送要顯示數(shù)字的編碼,這個編碼稱為字段碼,8位數(shù)碼管字段碼為8位,從高位到低位的順序依次為dp、g、f、e、d、c、b、a。如:共陰極數(shù)碼管數(shù)字“0”的字段碼為00111111B(3FH),共陽極數(shù)碼管數(shù)字“1”的字段碼為11111001B(F9H),不同數(shù)字或字符其字段碼不一樣,對于同一個數(shù)字或字符,共陰極結(jié)構(gòu)和共陽極結(jié)構(gòu)的字段碼也不一樣,共陰極和共陽
20、極的字段碼互為反碼。 MCS-51:MCS-51系列單片機(jī)是美國Intel公司在1980年推出的高性能8位單片機(jī),它包含51和52 兩個子系列。 對于51子系列,主要有8031、8051、8751 三種機(jī)型,它們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)程序存儲器有所不同,8031芯片不帶ROM,8051芯片帶4KB的ROM,8751芯片帶4KB的EPROM。51子系列單片機(jī)的主要特點如下。 l 8位CPU。 l 片內(nèi)帶振蕩器,頻率范圍1.2 MHz~12MHz。 l 片內(nèi)帶128B的數(shù)據(jù)存儲器。 l 片內(nèi)帶4KB的程序存儲器。 l 程序存儲器的尋址空間為64KB。 l 片外數(shù)據(jù)存儲
21、器的尋址空間為64KB。 l 128個用戶位尋址空間。 l 21個字節(jié)特殊功能寄存器。 l 4個8位的并行I/O接口:P0、P1、P2、P3。 l 兩個16位定時/計數(shù)器。 l 兩個優(yōu)先級別的5個中斷源。 l 1個全雙工的串行I/O接口,可多機(jī)通信。 l 111條指令,含乘法指令和除法指令。 l 片內(nèi)采用單總線結(jié)構(gòu)。 l 有較強(qiáng)的位處理能力。 l 采用單一+5V電源。 對于52子系列,有8032、8052、8752 三種機(jī)型。52子系列與51子系列相比大部分相同,不同之處在于:片內(nèi)數(shù)據(jù)存儲器增至256B;8032芯片不帶ROM,8052芯片帶8KB的ROM,8752芯片帶
22、8KB的EPROM;有3個16位定時器/計數(shù)器;6個中斷源。本書以51子系列的8051為例來介紹MCS-51單片機(jī)的基本原理。 雖然MCS-51系列單片機(jī)的芯片有多種類型,但它們的基本組成相同。MCS-51單片機(jī)的基本結(jié)構(gòu)如圖3-3所示。 圖3-3 MCS-51的基本結(jié)構(gòu) 3.3單元模塊設(shè)計 51系列單片機(jī)是美國Intel公司在1980年推出的高性能8位單片機(jī),它包含51和52 兩個子系列。 51單片機(jī)集成了中央處理器(CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR),它們通過內(nèi)部總線緊密的聯(lián)系在一起。 51單片
23、機(jī)有40個引腳,在本次設(shè)計當(dāng)中有很多口都沒有使用,我們下面介紹的就是對本次設(shè)計最為重要的4個8位的并行I/O接口。 表3-1 P3口的第二功能 P3口 第二功能 P3.0 RXD 串行口輸入端 P3.1 TXD 串行口輸出端 P3.2 INT0 外部中斷0請求輸入端,低電平有效 P3.3 INT1 外部中斷1請求輸入端,低電平有效 P3.4 T0 定時/計數(shù)器0外部計數(shù)脈沖輸入端 P3.5 T1 定時/計數(shù)器0外部計數(shù)脈沖輸入端 P3.6 WR 外部數(shù)據(jù)存儲器寫信號,低電平有效 P3.7 RD 外
24、部數(shù)據(jù)存儲器讀信號,低電平有效 51系列單片機(jī)有4個8位的并行I/O接口:P0、P1、P2和P3口。它們是特殊功能寄存器中的4個。這4個口,既可以作輸入,也可以作輸出,既可按8位處理,也可按位方式使用。輸出時具有鎖存能力,輸入時具有緩沖功能。每個口的具體功能有所不同。P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復(fù)用口,也可作為通用的I/O接口。它包括一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅(qū)動電路和輸出控制電路組成。P1口只作通用I/O接口使用。P1口具有驅(qū)動4個LSTTL負(fù)載的能力。P2口有兩種用途:通用I/O接口和高8位地址線。P3口除了作為通用I/O口使用外,它的每一根線還具有第二種功能,
25、見表3-1。 當(dāng)P3口作為通用I/O接口時,第二功能輸出線為高電平。當(dāng)P3口作為第二功能時,鎖存器的輸出端必須為高電平,P3口的狀態(tài)取決于第二功能輸出線的狀態(tài)。單片機(jī)復(fù)位時,鎖存器的輸出端為高電平。 復(fù)位與復(fù)位電路 復(fù)位是單片機(jī)的初始化操作,以便使CPU和系統(tǒng)中其他部件都處于一個確定的狀態(tài),并從這個狀態(tài)開始工作。 當(dāng)單片機(jī)系統(tǒng)在運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖存時,也可按復(fù)位鍵重新啟動。 單片機(jī)復(fù)位后,PC內(nèi)容初始化為0000H,那么單片機(jī)就從0000H單元開始執(zhí)行程序。片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)RAM的內(nèi)容。 RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效
26、,其有效時間應(yīng)持續(xù)2個機(jī)器周期以上。 按下復(fù)位按鈕時,電源對外接電容器充電,使RST為高電平,復(fù)位按鈕松開后,電容通過內(nèi)部下拉電阻放電,逐漸使RST端恢復(fù)低電平。 時鐘信號有外部引入方式和內(nèi)部振蕩器方式兩種方式。下面就來對兩種方式進(jìn)行簡單地介紹: 內(nèi)部振蕩方式 51單片機(jī)內(nèi)部有一個高增益的反相放大器,其輸入端為引腳XTAL1,輸出端為引腳XTAL2,用于外接石英晶體振蕩器或陶瓷諧振器和微調(diào)電容,構(gòu)成穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部的時鐘電路。 外部引入方式常用于多片單片機(jī)組成的系統(tǒng)中,以便各單元之間的時鐘信號同步運(yùn)行。 LED數(shù)碼管是由發(fā)光二極管構(gòu)成的,亦稱半導(dǎo)體數(shù)碼管
27、。將條狀發(fā)光二極管按照共陰極(負(fù)極)或共陽極(正極)的方法連接,組成“8”字,再把發(fā)光二極管另一電極作筆段電極,就構(gòu)成了LED數(shù)碼管。若按規(guī)定使某些筆段上的發(fā)光二極管發(fā)光,就能顯示從0~9的…系列數(shù)字。同熒光數(shù)碼管(VFD)、輝光數(shù)碼管(NRT)相比,它具有:體積小、功耗低、耐震動、壽命長、亮度高、單色性好、發(fā)光響應(yīng)的時間短,能與TTL、CMOS電路兼容等的數(shù)顯器件。+、-分別表示公共陽極和公共陰極。 a~g是7個筆段電極,DP為小數(shù)點。另有一種字高為7.6mm的超小型LED數(shù)碼管,管腳從左右兩排引出,小數(shù)點則是獨立的。
28、本系統(tǒng)利用6位LED數(shù)碼管顯示時間,共陰極結(jié)構(gòu)。LED數(shù)碼管由7段發(fā)光二極管組成,當(dāng)要顯示某個數(shù)字時只要將數(shù)字所對應(yīng)的引腳送入低電平。 本設(shè)計中主要有三個控制按鍵,按鍵功能為: (1)P3.2為調(diào)時間模式,長按P3.2進(jìn)入調(diào)分狀態(tài):分單元閃爍,按P3.2加1,按P3.3減1.再長按P3.2進(jìn)入時調(diào)整狀態(tài),時單元閃爍,加減調(diào)整同調(diào)分.按長按退出調(diào)整狀態(tài)。 (2)按下P3.4進(jìn)入秒表狀態(tài):再按P3.4秒表又啟動,按P3.4暫停,再按P3.4秒表清零,按P3.4退出秒表回到時鐘狀態(tài)。 第四章
29、 軟件系統(tǒng)設(shè)計 4.1軟件程序思想 軟件系統(tǒng)程序由主程序和子程序組成,主程序包含初始化參數(shù)設(shè)置、按鍵處理、數(shù)碼管顯示模塊等,在設(shè)計時各個模塊都采用子程序結(jié)構(gòu)設(shè)計,在主程序中調(diào)用。時鐘由定時/計數(shù)器0產(chǎn)生,采用中斷方式工作,因此還要編寫定時/計數(shù)器0中斷服務(wù)子程序,在定時/計數(shù)器0中斷服務(wù)程序中形成時鐘關(guān)系。 1.主程序 主程序先對顯示單元和定時器/計數(shù)器初始化,然后重復(fù)調(diào)用數(shù)碼管顯示模塊和按鍵處理模塊,當(dāng)有鍵按下時,則轉(zhuǎn)入相應(yīng)的功能程序。 2.?dāng)?shù)碼管顯示模塊 本系統(tǒng)共用8個數(shù)碼管,從左到右依次顯示時十位、時個位、橫線、分十位、分個位、橫線、秒十位和秒個位。數(shù)碼管顯示的信息用8
30、個內(nèi)存單元存放,這8個內(nèi)存單元稱為顯示緩沖區(qū),其中秒個位和秒十位、分個位和分十位、時個位和時十位分別由秒數(shù)據(jù)、分?jǐn)?shù)據(jù)和小時數(shù)據(jù)分拆得到。在本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一張顯示信息的字段碼表,顯示時,先在P2口送出位選碼,選中顯示的數(shù)碼管,然后從顯示緩沖區(qū)中取出當(dāng)前顯示的信息,查表在字段碼表中查出所顯示的信息的字段碼,從P0口輸出,就能在相應(yīng)的數(shù)碼管上顯示顯示緩沖區(qū)的內(nèi)容。 3.定時器/計數(shù)器T0中斷服務(wù)程序 計時選擇定時器/計數(shù)器T0。具體處理如下:定時器/計數(shù)器T0選擇方式1,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計數(shù)器對5
31、0ms計數(shù),計20次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清0;分單元加到60則對時單元加1,同時分單元清0;時單元加到24則對時單元清0,標(biāo)志一天時間計滿,這樣就形成了時鐘關(guān)系。在對各單元計數(shù)的同時,把它們的值放到存儲單元的指定位置。 4.按鍵處理模塊 按鍵處理設(shè)置為:如沒有按鍵,則時鐘正常走時。當(dāng)按K0鍵一次,時鐘暫停走動進(jìn)入調(diào)小時狀態(tài),再按K0鍵一次,進(jìn)入調(diào)分狀態(tài),再按K0鍵一次,回到正常走時;對于K1和K2按鍵,如果是正常走時,按K1和K2不起作用,如果進(jìn)入調(diào)時或調(diào)分狀態(tài),按K1可對時或分進(jìn)行加1操作,小時加到24則回到0,分加到60則回到0;按K2可對時或分進(jìn)行
32、減1操作,小時減到負(fù)則回到23,分減到負(fù)則回到59。 4.2主程序及流程圖 使用AT89C51單片機(jī),12MHz晶振,P0輸出字段碼,P2口輸出位選碼 用共陽LED數(shù)碼管,P1.0為調(diào)時模式按鍵,P1.1為加1鍵,P1.2為減1鍵 片內(nèi)RAM的70H到77H單元為LED數(shù)碼管的顯示緩沖區(qū) 78H,79H,7AH分別為秒、分、小時計數(shù)單元 7BH為50ms計數(shù)器,7CH為調(diào)時模式計數(shù)器 圖4-1 主程序流程圖 ORG 0000H LJMP START ORG 000BH ;定時器/計數(shù)器T0中斷程序入口 LJ
33、MP INTT0 主程序 START: MOV R0,#70H MOV R7,#0CH INIT: MOV @R0,#00H INC R0 DJNZ R7,INIT MOV 72H,#10 MOV 75H,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0 START1: LCALL SCAN LCALL KEYSCAN
34、 SJMP START1 ;延時1MS子程序 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;延時20MS子程序 DL20MS: ACALL SCAN ACALL SCAN ACALL SCAN RET ;數(shù)碼管顯示程序 SCAN: MOV A,78H ;將小時、分鐘和秒拆分成十位和個位 MOV B,#0AH ;存入顯示緩沖區(qū)的相應(yīng)
35、位置 DIV AB MOV 71H,A MOV 70H,B MOV A,79H MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B MOV A,7AH MOV B,#0AH DIV AB MOV 77H,A MOV 76H,B MOV R1,#70H ;循環(huán)掃描顯示 MOV R5,#0FEH MOV R3,#08H SCAN1: MOV A,R5 MOV
36、 P2,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV A,R5 LCALL DL1MS INC R1 MOV A,R5 RL A MOV R5,A DJNZ R3,SCAN1 MOV P2,#0FFH MOV P0,#0FFH RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH 4
37、.3子程序及流程圖 圖4-2 定時器/計數(shù)器T0中斷服務(wù)程序流程圖 定時器/計數(shù)器T0中斷服務(wù)程序 INTT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BH CJNE A,#14H,OUTT0 MOV 7BH,#00 INC 78H MOV A,78H CJNE A,#3CH
38、,OUTT0 MOV 78H,#00 INC 79H MOV A,79H CJNE A,#3CH,OUTT0 MOV 79H,#00 INC 7AH MOV A,7AH CJNE A,#18H,OUTT0 MOV 7AH,#00 OUTT0: SETB ET0 POP PSW POP ACC RETI 圖4-3 按鍵處理模塊流程圖 按鍵處理程序 KEYSCAN: CLR EA JNB P1.0,KEYSCAN0
39、 JNB P1.1,KEYSCAN1 JNB P1.2,KEYSCAN2 KEYOUT: SETB EA RET KEYSCAN0: LCALL DL20MS JB P1.0,KEYOUT WAIT0: JNB P1.0,WAIT0 INC 7CH MOV A,7CH CLR ET0 CLR TR0 CJNE A,#03H,KEYOUT MOV 7CH,#00 SETB ET0 SETB TR0 SJMP KEYOUT
40、 KEYSCAN1:LCALL DL20MS JB P1.1,KEYOUT WAIT1: JNB P1.1,WAIT1 MOV A,7CH CJNE A,#02H,KSCAN11 INC 79H MOV A,79H CJNE A,#3CH,KEYOUT MOV 79H,#00 SJMP KEYOUT KSCAN11: INC 7AH MOV A,7AH CJNE A,#18H,KEYOUT MOV 7AH,#00 SJMP KEYOUT
41、 KEYSCAN2:LCALL DL20MS JB P1.2,KEYOUT WAIT2: JNB P1.2,WAIT2 MOV A,7CH CJNE A,#02H,KSCAN21 DEC 79H MOV A,79H CJNE A,#0FFH,KEYOUT MOV 79H,#3BH SJMP KEYOUT KSCAN21: DEC 7AH MOV A,7AH CJNE A,#0FFH,KEYOUT MOV 7AH,#17H SJMP
42、 KEYOUT END 第五章 系統(tǒng)仿真 5.1 KEIL 51介紹 1、Keil的使用 通過用Project菜單下的New Project命令建立項目文件,過程如下。 (1) 選擇Project菜單下的New Project命令,彈出如圖5-1所示的Create new Project對話框。 圖5-1 Create New Project對話框 (2) 在Create New Project對話框中選擇新建項目文件的位置,輸入新建項目文件的名稱,例如,項目文件名為IO,單擊【保存】按鈕將彈出如圖5-2所示的Select
43、 Device for Target Target 1對話框,用戶可以根據(jù)使用情況選擇單片機(jī)型號。Keil Vision IDE幾乎支持所有的51核心的單片機(jī),并以列表的形式給出。選中芯片后,在右邊的描述框中將同時顯示選中的芯片的相關(guān)信息以供用戶參考。 圖5-2 Select Device for Target Target 1對話框 (3) 選擇Atmel公司的AT89C52。單擊【確定】按鈕,這時彈出如圖5-3所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project確認(rèn)框,C語言開發(fā)選
44、擇【是】,匯編語言開發(fā)選擇【否】。單擊后,項目文件就創(chuàng)建好了。項目文件創(chuàng)建后,這時只有一個框架,緊接著需向項目文件中添加程序文件內(nèi)容。 圖5-3 確認(rèn)框 當(dāng)項目文件建立好后,就可以給項目文件加入程序文件了,Keil Vision 支持C語言程序,也支持匯編語言程序。這些程序文件可以是已經(jīng)建立好了的程序文件,也可以是新建的程序文件,如果是建立好了的程序文件,則直接用后面的方法添加;如果是新建立的程序文件,最好是先將程序文件用.asm或.C存盤后再添加,這樣程序文件中的關(guān)鍵字才能夠被認(rèn)識。 程序文件的添加過程如下。 (1) 在項目管理器窗口中,展開Target1項,可以看到Sourc
45、e Group1子項。 (2) 右擊Source Group1,在出現(xiàn)如圖5-4所示的菜單中選擇Add Files to Group Source Group1命令。 圖5-4 選擇Add Files to Group Source Group1’命令 (3) 彈出如圖5-5所示的Add Files to Group SourceGroup1對話框。在對話框中選擇需要添加的程序文件,單擊Add按鈕,把所選文件添加到項目文件中,注意文件類型默認(rèn)為C,如果是匯編程序則應(yīng)選擇文件類型為*.a*。一次可連續(xù)添加多個文件,添加的文件在項目管理器的Source Group1下面可以看見。當(dāng)不再
46、添加時,單擊Close按鈕,結(jié)束添加程序文件。如果文件添加得不對,則先選中對應(yīng)的文件,用右鍵菜單中的Remove File命令把它移出去。 (4) 如果是已有的程序文件,則添加結(jié)束后,就可以做下一步的編譯、連接工作;如果是新文件,則應(yīng)先用File菜單下的New命令建立程序文件,輸入文件內(nèi)容,存盤(注意匯編程序擴(kuò)展名為.ASM,C語言程序擴(kuò)展名為.C),然后再添加到項目中。 圖5-5 Add Files to Group SourceGroup1對話框 當(dāng)把程序文件添加到項目文件中,并且程序文件已經(jīng)建立好存盤后,就可以進(jìn)行編譯、連接,形成目標(biāo)文件。編譯、連接用Project菜單下的B
47、uilt Target命令(或快捷鍵F7),如圖5-6所示。 編譯、連接時,如果程序有錯,則編譯不成功,并在下面的信息窗口給出相應(yīng)的出錯提示信息,以便用戶進(jìn)行修改,修改后再編譯、連接,這個過程可能會重復(fù)多次。如果沒有錯誤,則編譯、連接成功,并且在信息窗口給出提示信息。 圖5-6 編譯、連接后的顯示圖 2、調(diào)試 當(dāng)項目編譯、連接成功后,就可以運(yùn)行它來觀察結(jié)果,運(yùn)行調(diào)試過程如下。 (1) 先用Debug菜單下的Start/Stop Debug Session命令(快捷鍵Ctrl+F5)啟動調(diào)試過程,結(jié)果如圖5-7所示。 圖5-7 啟動調(diào)試過程結(jié)果圖 (2) 用Debug菜單
48、下的Go連續(xù)運(yùn)行。 (3) 用Debug菜單下的Step單步運(yùn)行。子函數(shù)中也要一步一步地運(yùn)行。 (4) 用Debug菜單下的Step Over單步運(yùn)行。子函數(shù)體一步直接完成。 (5) 用Debug菜單下的Stop running命令停止運(yùn)行。 (6) 用View菜單調(diào)出各種輸出窗口觀察結(jié)果,用Peripherals菜單觀察51單片機(jī)內(nèi)部資源。圖5-8為調(diào)出Peripherals菜單下的P2口調(diào)試的結(jié)果。 (7) 運(yùn)行調(diào)試完畢,先用Stop running命令停止運(yùn)行,再用Debug菜單下的Start/Stop Debug Session命令結(jié)束運(yùn)行調(diào)試過程。 圖5-8 Ser
49、ial Windows #1窗口 5.2 PROTEUS介紹 在80C51單片機(jī)系統(tǒng)的P2口連接8個發(fā)光二極管指示燈,編程實現(xiàn)流水燈的控制,從低位到高位輪流點亮指示燈,一直重復(fù)。在KEIL 51中編程序,形成HEX文件,在PROTEUS中設(shè)計硬件,下載程序,運(yùn)行看結(jié)果。Proteus ISIS處理過程一般如下: (1) PROTEUS ISIS軟件打開后,系統(tǒng)默認(rèn)新建一個名為UNTITLED(沒有存盤的文件)的原理圖文件,如圖5-9所示。用戶要存盤,則可用File菜單下的Save或Save as命令,這里設(shè)文件保存到D:\IO文件夾下面(最好與KEIL 51編寫的程序放在同一文件夾,
50、這樣使用方便),文件基本名為io,擴(kuò)展名默認(rèn)。 圖5-9 PROTEUS ISIS窗口圖 (2) 在主要模型下選擇component mode選擇元件工具,然后再選擇圖5-9的按鈕P,打開元件選擇對話框,如圖5-10所示。 圖5-10 元件選擇窗口 (3) 在元件選擇對話框的keywords窗口中輸入元件關(guān)鍵字搜索元件,找到元件后,雙擊元件則可選中元件,添加元件device元件列表欄。本實例中,需要的元件依次為:單片機(jī)80c51、電阻RES、電容CAP、按鍵BUTTON、晶振CRYSTAL、發(fā)光二極管LED-RED。添加后如圖5-11所示,選擇了的元件列于device元件
51、列表欄。 圖5-11 添加元件到device元件列表欄 放置元件過程如下: (1) 選擇component mode工具,這時devices元件列表將出現(xiàn)元件列表單,如圖5-11所示。 (2) 用鼠標(biāo)左鍵單擊devices元件列表中的元件名稱選中元件,這時在預(yù)覽窗口將出現(xiàn)該元件的形狀,移動鼠標(biāo)到編輯窗口,單擊左鍵,在鼠標(biāo)指針處會出現(xiàn)元件形狀,再移動鼠標(biāo),把元件移動到合適的位置,單擊左鍵,元件就被放在相應(yīng)的位置上。通過相同的方法把所有元件放置到編輯窗口相應(yīng)位置,電源和地是在配件的終端接口中。本實例放置情況如圖5-12所示。 圖5-12 放置元件圖 元件放置后,如果元件位置不合適或不對
52、,可通過移動、旋轉(zhuǎn)、刪除、屬性修改等操作對元件編輯。 對元件編輯時首先要選中元件,元件的選擇分以下幾種:①鼠標(biāo)左鍵單擊選擇;②對于活動元件,如開關(guān)BUTTON等,通過用鼠標(biāo)左鍵拖動選擇;③對于一組元件的選擇,可以通過鼠標(biāo)左鍵拖動選擇框內(nèi)的所有元件,也可按住Ctrl鍵再用鼠標(biāo)左鍵依次單擊要選擇的元件。 選中元件后,如果要移動元件,則用鼠標(biāo)左鍵拖動所選元件即可;如要刪除元件,按鍵盤的Delete刪除鍵,或者在選中的元件上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Delete Object選項;如果要旋轉(zhuǎn),則在右鍵菜單中選擇相應(yīng)的旋轉(zhuǎn)選項。如果修改屬性,則在右鍵菜單下選擇Edit Properties選項
53、,不同的元件,元件的屬性不同,出現(xiàn)的元件屬性對話框也不一樣。 通過導(dǎo)線把電路圖中放置的元件連接起來,形成電路圖。在PROTEUS中元件引腳間的連接一般有兩種方式:導(dǎo)線方式和總線方式。導(dǎo)線連接簡單,但電路復(fù)雜時連接不方便,總線方式連接較復(fù)雜,但連接的電路美觀,特別是適合連線較多的時候。 1. 導(dǎo)線連接方式 導(dǎo)線連接方式過程如下: 1) 把鼠標(biāo)指針移動到第一個元件的連接點,鼠標(biāo)指針前會出現(xiàn)“”形狀,單擊左鍵,這時會從連接點引出一條導(dǎo)線。 2) 移動鼠標(biāo)指針到第二個元件的連接點,在第二個元件的連接點時,鼠標(biāo)指針前也會出現(xiàn) “”形狀,單擊左鍵,則在兩個元件連接上導(dǎo)線,這時導(dǎo)線的走線方式
54、是系統(tǒng)自動的而且是走直線,如果用戶要控制走線路徑,只須在相應(yīng)的拐點處單擊左鍵,如圖5-13所示。 (a) 導(dǎo)線起點 (b) 導(dǎo)線終點 (c) 手動走線 圖5-13導(dǎo)線連接 用戶也可用工具(Tools)菜單下面的自動走線命令(Wire Auto Router)取消自動走線,這時連接形成的就是直接從起點到終點的導(dǎo)線。另外,如果沒有到第二個元件的連接點就雙擊左鍵,則從第一個元件的連接點引出一段導(dǎo)線。 3) 導(dǎo)線加標(biāo)簽 對于導(dǎo)線的連接,也可通過加標(biāo)簽的方法,給導(dǎo)線加標(biāo)簽用主要模型中的放置線標(biāo)簽工具。處
55、理過程如下:單擊放置線標(biāo)簽按鈕,移動鼠標(biāo)到需要加標(biāo)簽的導(dǎo)線上,這時鼠標(biāo)指針前會出現(xiàn)“”形狀,單擊左鍵,彈出編輯線標(biāo)簽窗口,如圖5-14所示。在String窗口中輸入線標(biāo)簽名。 圖5-14 編輯線標(biāo)簽窗口 在一個電路圖中,標(biāo)簽名相同的導(dǎo)線在邏輯上是連接在一起的。 2. 總線方式 總線用于元件中間段的連接,便于減少電路導(dǎo)線的連接,而元件引腳端的連接必須用一般的導(dǎo)線。因此,使用總線時主要涉及繪制總線和導(dǎo)線與總線的連接。 1) 繪制總線 繪制總線通過用主要模型中的繪制總線(Buses Mode)工具。選中該工具后,移動鼠標(biāo)到編輯窗口,在需要繪制總線的開始位置單擊左鍵,移動鼠標(biāo),的結(jié)束
56、位置再單擊左鍵,便可繪制出一條總線。 2) 導(dǎo)線與總線的連接 導(dǎo)線與總線的連接一般是從導(dǎo)線向總線方向連線,連接時一般有直線和斜線兩種,如圖5-15所示,斜線連接時一般要取消自動走線。 (a) 直線連接 (b) 斜線連接 圖5-15 導(dǎo)線與總線的連接 總線繪制好后,也可用放置線標(biāo)簽工具給總線加標(biāo)簽,給總線加標(biāo)簽時,可同時給總線中的一組信號線加標(biāo)簽,處理過程與導(dǎo)線一樣,只是標(biāo)簽用成A[0..7]的形式,這時就給總線中的8根信號線加了標(biāo)簽,8根信號線的標(biāo)簽名分別為A0
57、,A1…到A7。連接在總線上的導(dǎo)線,標(biāo)簽名相同,則它們在邏輯關(guān)系上是連接在一起的,如圖5-16所示。 圖5-16 總線上信號線的連接 在這個實例中,線路比較簡單,我們用導(dǎo)線方式連接,連接圖如圖5-17所示。 圖5-17 實例導(dǎo)線連接圖 當(dāng)硬件線路連接,元件屬性調(diào)整好后,就可以給單片機(jī)加載程序,加載的程序只能是HEX文件,可以在Keil 51軟件中來設(shè)計,形成HEX文件。處理時軟件程序文件最好與硬件電路文件保存在一個文件夾下面,在實例中,我們都保存在e:\IO文件夾下面。軟件源程序如下。 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV A,#
58、01H LOOP:MOV P2,A LCALL DELAY RL A SJMP LOOP SJMP $ DELAY:MOV R2,#10H DELAY1:MOV R3,#0FFH DJNZ R3,$ DJNZ R2,DELAY1 RET END 假定在Keil 51中我們已經(jīng)編譯形成了名為IO.hex的十六進(jìn)制文件,則加載過程如下:在PROTEUS電路圖中,左鍵單擊單片機(jī)80C51芯片,選中,再次左鍵單擊(或左鍵單擊選擇Edit Properties命令),打開單片機(jī)80C51的屬性對話
59、框,在屬性對話框中的program file框中選擇加載到80C51芯片中的程序。這里是同一個文件夾下面的IO.hex文件。如圖5-18所示。 圖5-18 加載程序到單片機(jī) 程序加載以后,就可以通過仿真工具中的運(yùn)行按鈕在51單片機(jī)中運(yùn)行程序,運(yùn)行后可以在PROTEUS ISIS中看到運(yùn)行的結(jié)果。本實例結(jié)果如圖5-19所示。如果要看51單片機(jī)的特殊功能寄存器、存儲器中的內(nèi)容,則可用暫停按鈕使程序暫停下來,然后通過Debug(調(diào)試)菜單下面的相應(yīng)命令打開特殊功能寄存器窗口或存儲器窗口查看。 圖5-19 仿真結(jié)果圖 最后說明一下,在仿真調(diào)試時,如果因為程序有錯,仿真不能得到相應(yīng)的結(jié)果,則要在Keil uVision IDE中修改程序,程序修改后再對程序進(jìn)行重新編譯連接形成HEX文件,但在PROTEUS中不用再重新加載,因為前面以經(jīng)加載了,直接運(yùn)行即可,非常方便。因而現(xiàn)在使用Keil uVision IDE和PROTEUS仿真單片機(jī)應(yīng)用系統(tǒng)非常廣泛。 5.3仿真過程及仿真結(jié)果 按照線路圖連接好線路后,下載程序,點擊運(yùn)行按鈕,結(jié)果如 圖5-20仿真結(jié)果
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案