單片機課程設(shè)計.doc
《單片機課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機課程設(shè)計.doc(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
單片機電子時鐘 摘要:在日常生活中,電子時鐘與我們密切相關(guān),在很多地方都會用到電子時鐘。除了專用的時鐘、計時顯示牌外,許多應(yīng)用系統(tǒng)常常也帶有實時時鐘顯示,如各種智能化儀器儀表、工業(yè)過程控制系統(tǒng)以及家用電器等。實現(xiàn)電子時鐘的方法有多種,通過前面我們對單片機基本理論及相關(guān)知識的學習,在這里,要求用單片機為主控制芯片設(shè)計一簡單的單片機電子時鐘。近年來隨著計算機在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應(yīng)用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領(lǐng)域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。 關(guān)鍵詞:電子時鐘;單片機;計時 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 many 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, the 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 consumption, 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, according 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 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 參考文獻 31 第一章 引言 1.1課程設(shè)計的目的 本次設(shè)計中以單片機的發(fā)展過程和發(fā)展方向為背景,介紹了單片機的輸入輸出的工作原理和操作方法,中斷的工作原理和操作方法,74LS164譯碼器的工作原理和與LED連接的方法。通過它可以進一步學習與掌握單片機原理與使用方法。目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。下面是單片機的主要發(fā)展趨勢。單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。 數(shù)字鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非常現(xiàn)實的意義。 1.2課程設(shè)計內(nèi)容 本次做的數(shù)字鐘是以單片機(AT89C51)為核心,結(jié)合相關(guān)的元器件(共陰極LED數(shù)碼顯示器、數(shù)碼管驅(qū)動器74LS164等),再配以相應(yīng)的軟件,是它具有星期,時,分,秒顯示的功能,并且時,分,秒還可以調(diào)整。此次設(shè)計電子數(shù)字鐘是為了了解電子數(shù)字鐘的原理,從而學會制作電子數(shù)字鐘。而且通過電子數(shù)字鐘的制作進一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實用方法。 第二章 總體方案設(shè)計 2.1 總體思想--方案論證 1.計時方案 單片機電子時鐘計時有兩種方法:第一種是通過單片機內(nèi)部的定時器/計數(shù)器,采用軟件編程來實現(xiàn)時鐘計時,這種實現(xiàn)的時鐘一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不高的場合;第二種是采用專用的硬件時鐘芯片計時,這種實現(xiàn)的時鐘一般稱為硬時鐘。專用的時鐘芯片功能比較強大,除了自動實現(xiàn)基本計時外,一般還具有日歷和閏年補償?shù)裙δ埽嫊r準確,軟件編程簡單,但硬件成本相對較高,通常用在對時鐘精度要求較高的場合。 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)顯示程序,顯示效果往往和顯示程序的執(zhí)行相關(guān)。LCD液晶顯示一般能顯示的信息多,顯示效果好,而且液晶顯示器一般都帶控制器,顯示過程由自帶的控制器控制,不須要CPU參與,但液晶顯示器造價相對較高。 為了便于比較與學習,這里給出兩種設(shè)計方案,一種是軟件計時LED數(shù)碼管顯示的單片機電子時鐘,另一種是硬件定時LCD液晶顯示的單片機電子時鐘。軟件計時LED數(shù)碼管顯示的單片機電子時鐘總體設(shè)計框圖如圖2-1所示。硬件定時LCD液晶顯示的單片機電子時鐘總體設(shè)計框圖如圖2-2所示。 51單片機 時鐘電路 復(fù)位電路 LED 按鍵 51單片機 時鐘電路 復(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)顯示程序,顯示效果往往和顯示程序的執(zhí)行相關(guān)。LCD液晶顯示一般能顯示的信息多,顯示效果好,而且液晶顯示器一般都帶控制器,顯示過程由自帶的控制器控制,不須要CPU參與,但液晶顯示器造價相對較高。 掌握單片機最小系統(tǒng)的電路原理圖;硬件的焊接、連接;獨立編輯、編譯軟件;上電以后自動進入計時狀態(tài),起始于00:00:00。設(shè)計鍵盤調(diào)整時間,完成時間設(shè)計。定時時間為1/20秒,采用定時器實現(xiàn)。采用LED數(shù)碼管顯示,時、分,秒采用數(shù)字顯示。采用24小時制,具有方便的時間調(diào)校功能。 第三章 硬件系統(tǒng)設(shè)計 3.1總電路設(shè)計 軟件計時LED數(shù)碼管顯示的時鐘的具體硬件電路如圖3-1所示,其中單片機采用應(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ù)在計算機系統(tǒng)中具有極其重要的作用。計算機系統(tǒng)都需要為CPU和外部設(shè)備提供定時控制或?qū)ν獠渴录M行計數(shù)。例如,分時系統(tǒng)的程序切換,向外部設(shè)備輸出周期性定時控制信號,對外部事件個數(shù)統(tǒng)計等。另外,在檢測、控制和智能儀器等設(shè)備中也經(jīng)常會涉及到定時。因此,計算機系統(tǒng)必須有定時和計數(shù)技術(shù)。 定時/計數(shù)的本質(zhì)是計數(shù),對周期性信號計數(shù)就實現(xiàn)定時。通常,實現(xiàn)定時的方法有三種:軟件定時、硬件定時、可編程定時。軟件定時是利用CPU執(zhí)行指令需要若干指令周期的原理,運用軟件編程,然后循環(huán)執(zhí)行一段程序而產(chǎn)生延時,再配合簡單輸出接口可以向外送出定時控制信號。這種方法的優(yōu)點是不需要增加硬件或硬件很簡單,只需要編制相應(yīng)的延時程序以備調(diào)用。缺點是執(zhí)行延時程序占用了CPU時間,所以定時的時間不宜太長,且在某些惰況下不宜使用。硬件定時是通過硬件電路(多偕振蕩器件或單穩(wěn)器件)實現(xiàn)定時,故定時參數(shù)的調(diào)整不靈活,使用不方便,其成本較低??删幊潭〞r結(jié)合了軟件定時使用靈活和硬件定時獨立的特點,它以大規(guī)模集成電路為基礎(chǔ),通過編程即可改變定時時間或工作方式,又不占用CPU的執(zhí)行時間。在計算機系統(tǒng)中通常用到的是可編程定時,51單片機內(nèi)部就集成了可編程的定時/計數(shù)器,它是51單片機中使用非常頻繁的重要功能模塊。 LED顯示器:LED數(shù)碼管顯示器是由發(fā)光二極管按一定的結(jié)構(gòu)組合起來的顯示器件。在單片機應(yīng)用系統(tǒng)中通常使用的是7段或8段式LED數(shù)碼管顯示器,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ā)光二極管的陽極端連接在一起,陰極端分開控制,使用時公共端接電源,要使哪根發(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)的字段碼也不一樣,共陰極和共陽極的字段碼互為反碼。 MCS-51:MCS-51系列單片機是美國Intel公司在1980年推出的高性能8位單片機,它包含51和52 兩個子系列。 對于51子系列,主要有8031、8051、8751 三種機型,它們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)程序存儲器有所不同,8031芯片不帶ROM,8051芯片帶4KB的ROM,8751芯片帶4KB的EPROM。51子系列單片機的主要特點如下。 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ù)存儲器的尋址空間為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接口,可多機通信。 l 111條指令,含乘法指令和除法指令。 l 片內(nèi)采用單總線結(jié)構(gòu)。 l 有較強的位處理能力。 l 采用單一+5V電源。 對于52子系列,有8032、8052、8752 三種機型。52子系列與51子系列相比大部分相同,不同之處在于:片內(nèi)數(shù)據(jù)存儲器增至256B;8032芯片不帶ROM,8052芯片帶8KB的ROM,8752芯片帶8KB的EPROM;有3個16位定時器/計數(shù)器;6個中斷源。本書以51子系列的8051為例來介紹MCS-51單片機的基本原理。 雖然MCS-51系列單片機的芯片有多種類型,但它們的基本組成相同。MCS-51單片機的基本結(jié)構(gòu)如圖3-3所示。 圖3-3 MCS-51的基本結(jié)構(gòu) 3.3單元模塊設(shè)計 51系列單片機是美國Intel公司在1980年推出的高性能8位單片機,它包含51和52 兩個子系列。 51單片機集成了中央處理器(CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR),它們通過內(nèi)部總線緊密的聯(lián)系在一起。 51單片機有40個引腳,在本次設(shè)計當中有很多口都沒有使用,我們下面介紹的就是對本次設(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 外部數(shù)據(jù)存儲器讀信號,低電平有效 51系列單片機有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負載的能力。P2口有兩種用途:通用I/O接口和高8位地址線。P3口除了作為通用I/O口使用外,它的每一根線還具有第二種功能,見表3-1。 當P3口作為通用I/O接口時,第二功能輸出線為高電平。當P3口作為第二功能時,鎖存器的輸出端必須為高電平,P3口的狀態(tài)取決于第二功能輸出線的狀態(tài)。單片機復(fù)位時,鎖存器的輸出端為高電平。 復(fù)位與復(fù)位電路 復(fù)位是單片機的初始化操作,以便使CPU和系統(tǒng)中其他部件都處于一個確定的狀態(tài),并從這個狀態(tài)開始工作。 當單片機系統(tǒng)在運行出錯或操作錯誤使系統(tǒng)處于死鎖存時,也可按復(fù)位鍵重新啟動。 單片機復(fù)位后,PC內(nèi)容初始化為0000H,那么單片機就從0000H單元開始執(zhí)行程序。片內(nèi)RAM為隨機值,運行中的復(fù)位操作不改變片內(nèi)RAM的內(nèi)容。 RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)2個機器周期以上。 按下復(fù)位按鈕時,電源對外接電容器充電,使RST為高電平,復(fù)位按鈕松開后,電容通過內(nèi)部下拉電阻放電,逐漸使RST端恢復(fù)低電平。 時鐘信號有外部引入方式和內(nèi)部振蕩器方式兩種方式。下面就來對兩種方式進行簡單地介紹: 內(nèi)部振蕩方式 51單片機內(nèi)部有一個高增益的反相放大器,其輸入端為引腳XTAL1,輸出端為引腳XTAL2,用于外接石英晶體振蕩器或陶瓷諧振器和微調(diào)電容,構(gòu)成穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部的時鐘電路。 外部引入方式常用于多片單片機組成的系統(tǒng)中,以便各單元之間的時鐘信號同步運行。 LED數(shù)碼管是由發(fā)光二極管構(gòu)成的,亦稱半導(dǎo)體數(shù)碼管。將條狀發(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ù)點則是獨立的。 本系統(tǒng)利用6位LED數(shù)碼管顯示時間,共陰極結(jié)構(gòu)。LED數(shù)碼管由7段發(fā)光二極管組成,當要顯示某個數(shù)字時只要將數(shù)字所對應(yīng)的引腳送入低電平。 本設(shè)計中主要有三個控制按鍵,按鍵功能為: (1)P3.2為調(diào)時間模式,長按P3.2進入調(diào)分狀態(tài):分單元閃爍,按P3.2加1,按P3.3減1.再長按P3.2進入時調(diào)整狀態(tài),時單元閃爍,加減調(diào)整同調(diào)分.按長按退出調(diào)整狀態(tài)。 (2)按下P3.4進入秒表狀態(tài):再按P3.4秒表又啟動,按P3.4暫停,再按P3.4秒表清零,按P3.4退出秒表回到時鐘狀態(tài)。 第四章 軟件系統(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ù)碼管顯示模塊和按鍵處理模塊,當有鍵按下時,則轉(zhuǎn)入相應(yīng)的功能程序。 2.數(shù)碼管顯示模塊 本系統(tǒng)共用8個數(shù)碼管,從左到右依次顯示時十位、時個位、橫線、分十位、分個位、橫線、秒十位和秒個位。數(shù)碼管顯示的信息用8個內(nèi)存單元存放,這8個內(nèi)存單元稱為顯示緩沖區(qū),其中秒個位和秒十位、分個位和分十位、時個位和時十位分別由秒數(shù)據(jù)、分數(shù)據(jù)和小時數(shù)據(jù)分拆得到。在本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一張顯示信息的字段碼表,顯示時,先在P2口送出位選碼,選中顯示的數(shù)碼管,然后從顯示緩沖區(qū)中取出當前顯示的信息,查表在字段碼表中查出所顯示的信息的字段碼,從P0口輸出,就能在相應(yīng)的數(shù)碼管上顯示顯示緩沖區(qū)的內(nèi)容。 3.定時器/計數(shù)器T0中斷服務(wù)程序 計時選擇定時器/計數(shù)器T0。具體處理如下:定時器/計數(shù)器T0選擇方式1,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計數(shù)器對50ms計數(shù),計20次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清0;分單元加到60則對時單元加1,同時分單元清0;時單元加到24則對時單元清0,標志一天時間計滿,這樣就形成了時鐘關(guān)系。在對各單元計數(shù)的同時,把它們的值放到存儲單元的指定位置。 4.按鍵處理模塊 按鍵處理設(shè)置為:如沒有按鍵,則時鐘正常走時。當按K0鍵一次,時鐘暫停走動進入調(diào)小時狀態(tài),再按K0鍵一次,進入調(diào)分狀態(tài),再按K0鍵一次,回到正常走時;對于K1和K2按鍵,如果是正常走時,按K1和K2不起作用,如果進入調(diào)時或調(diào)分狀態(tài),按K1可對時或分進行加1操作,小時加到24則回到0,分加到60則回到0;按K2可對時或分進行減1操作,小時減到負則回到23,分減到負則回到59。 4.2主程序及流程圖 使用AT89C51單片機,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中斷程序入口 LJMP 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 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)位置 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 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.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,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 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 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 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 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 Device for Target Target 1對話框,用戶可以根據(jù)使用情況選擇單片機型號。Keil Vision IDE幾乎支持所有的51核心的單片機,并以列表的形式給出。選中芯片后,在右邊的描述框中將同時顯示選中的芯片的相關(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確認框,C語言開發(fā)選擇【是】,匯編語言開發(fā)選擇【否】。單擊后,項目文件就創(chuàng)建好了。項目文件創(chuàng)建后,這時只有一個框架,緊接著需向項目文件中添加程序文件內(nèi)容。 圖5-3 確認框 當項目文件建立好后,就可以給項目文件加入程序文件了,Keil Vision 支持C語言程序,也支持匯編語言程序。這些程序文件可以是已經(jīng)建立好了的程序文件,也可以是新建的程序文件,如果是建立好了的程序文件,則直接用后面的方法添加;如果是新建立的程序文件,最好是先將程序文件用.asm或.C存盤后再添加,這樣程序文件中的關(guān)鍵字才能夠被認識。 程序文件的添加過程如下。 (1) 在項目管理器窗口中,展開Target1項,可以看到Source 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按鈕,把所選文件添加到項目文件中,注意文件類型默認為C,如果是匯編程序則應(yīng)選擇文件類型為*.a*。一次可連續(xù)添加多個文件,添加的文件在項目管理器的Source Group1下面可以看見。當不再添加時,單擊Close按鈕,結(jié)束添加程序文件。如果文件添加得不對,則先選中對應(yīng)的文件,用右鍵菜單中的Remove File命令把它移出去。 (4) 如果是已有的程序文件,則添加結(jié)束后,就可以做下一步的編譯、連接工作;如果是新文件,則應(yīng)先用File菜單下的New命令建立程序文件,輸入文件內(nèi)容,存盤(注意匯編程序擴展名為.ASM,C語言程序擴展名為.C),然后再添加到項目中。 圖5-5 Add Files to Group SourceGroup1對話框 當把程序文件添加到項目文件中,并且程序文件已經(jīng)建立好存盤后,就可以進行編譯、連接,形成目標文件。編譯、連接用Project菜單下的Built Target命令(或快捷鍵F7),如圖5-6所示。 編譯、連接時,如果程序有錯,則編譯不成功,并在下面的信息窗口給出相應(yīng)的出錯提示信息,以便用戶進行修改,修改后再編譯、連接,這個過程可能會重復(fù)多次。如果沒有錯誤,則編譯、連接成功,并且在信息窗口給出提示信息。 圖5-6 編譯、連接后的顯示圖 2、調(diào)試 當項目編譯、連接成功后,就可以運行它來觀察結(jié)果,運行調(diào)試過程如下。 (1) 先用Debug菜單下的Start/Stop Debug Session命令(快捷鍵Ctrl+F5)啟動調(diào)試過程,結(jié)果如圖5-7所示。 圖5-7 啟動調(diào)試過程結(jié)果圖 (2) 用Debug菜單下的Go連續(xù)運行。 (3) 用Debug菜單下的Step單步運行。子函數(shù)中也要一步一步地運行。 (4) 用Debug菜單下的Step Over單步運行。子函數(shù)體一步直接完成。 (5) 用Debug菜單下的Stop running命令停止運行。 (6) 用View菜單調(diào)出各種輸出窗口觀察結(jié)果,用Peripherals菜單觀察51單片機內(nèi)部資源。圖5-8為調(diào)出Peripherals菜單下的P2口調(diào)試的結(jié)果。 (7) 運行調(diào)試完畢,先用Stop running命令停止運行,再用Debug菜單下的Start/Stop Debug Session命令結(jié)束運行調(diào)試過程。 圖5-8 Serial Windows #1窗口 5.2 PROTEUS介紹 在80C51單片機系統(tǒng)的P2口連接8個發(fā)光二極管指示燈,編程實現(xiàn)流水燈的控制,從低位到高位輪流點亮指示燈,一直重復(fù)。在KEIL 51中編程序,形成HEX文件,在PROTEUS中設(shè)計硬件,下載程序,運行看結(jié)果。Proteus ISIS處理過程一般如下: (1) PROTEUS ISIS軟件打開后,系統(tǒng)默認新建一個名為UNTITLED(沒有存盤的文件)的原理圖文件,如圖5-9所示。用戶要存盤,則可用File菜單下的Save或Save as命令,這里設(shè)文件保存到D:\IO文件夾下面(最好與KEIL 51編寫的程序放在同一文件夾,這樣使用方便),文件基本名為io,擴展名默認。 圖5-9 PROTEUS ISIS窗口圖 (2) 在主要模型下選擇component mode選擇元件工具,然后再選擇圖5-9的按鈕P,打開元件選擇對話框,如圖5-10所示。 圖5-10 元件選擇窗口 (3) 在元件選擇對話框的keywords窗口中輸入元件關(guān)鍵字搜索元件,找到元件后,雙擊元件則可選中元件,添加元件device元件列表欄。本實例中,需要的元件依次為:單片機80c51、電阻RES、電容CAP、按鍵BUTTON、晶振CRYSTAL、發(fā)光二極管LED-RED。添加后如圖5-11所示,選擇了的元件列于device元件列表欄。 圖5-11 添加元件到device元件列表欄 放置元件過程如下: (1) 選擇component mode工具,這時devices元件列表將出現(xiàn)元件列表單,如圖5-11所示。 (2) 用鼠標左鍵單擊devices元件列表中的元件名稱選中元件,這時在預(yù)覽窗口將出現(xiàn)該元件的形狀,移動鼠標到編輯窗口,單擊左鍵,在鼠標指針處會出現(xiàn)元件形狀,再移動鼠標,把元件移動到合適的位置,單擊左鍵,元件就被放在相應(yīng)的位置上。通過相同的方法把所有元件放置到編輯窗口相應(yīng)位置,電源和地是在配件的終端接口中。本實例放置情況如圖5-12所示。 圖5-12 放置元件圖 元件放置后,如果元件位置不合適或不對,可通過移動、旋轉(zhuǎn)、刪除、屬性修改等操作對元件編輯。 對元件編輯時首先要選中元件,元件的選擇分以下幾種:①鼠標左鍵單擊選擇;②對于活動元件,如開關(guān)BUTTON等,通過用鼠標左鍵拖動選擇;③對于一組元件的選擇,可以通過鼠標左鍵拖動選擇框內(nèi)的所有元件,也可按住Ctrl鍵再用鼠標左鍵依次單擊要選擇的元件。 選中元件后,如果要移動元件,則用鼠標左鍵拖動所選元件即可;如要刪除元件,按鍵盤的Delete刪除鍵,或者在選中的元件上單擊鼠標右鍵,在彈出的菜單中選擇Delete Object選項;如果要旋轉(zhuǎn),則在右鍵菜單中選擇相應(yīng)的旋轉(zhuǎn)選項。如果修改屬性,則在右鍵菜單下選擇Edit Properties選項,不同的元件,元件的屬性不同,出現(xiàn)的元件屬性對話框也不一樣。 通過導(dǎo)線把電路圖中放置的元件連接起來,形成電路圖。在PROTEUS中元件引腳間的連接一般有兩種方式:導(dǎo)線方式和總線方式。導(dǎo)線連接簡單,但電路復(fù)雜時連接不方便,總線方式連接較復(fù)雜,但連接的電路美觀,特別是適合連線較多的時候。 1. 導(dǎo)線連接方式 導(dǎo)線連接方式過程如下: 1) 把鼠標指針移動到第一個元件的連接點,鼠標指針前會出現(xiàn)“”形狀,單擊左鍵,這時會從連接點引出一條導(dǎo)線。 2) 移動鼠標指針到第二個元件的連接點,在第二個元件的連接點時,鼠標指針前也會出現(xiàn) “”形狀,單擊左鍵,則在兩個元件連接上導(dǎo)線,這時導(dǎo)線的走線方式是系統(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)線加標簽 對于導(dǎo)線的連接,也可通過加標簽的方法,給導(dǎo)線加標簽用主要模型中的放置線標簽工具。處理過程如下:單擊放置線標簽按鈕,移動鼠標到需要加標簽的導(dǎo)線上,這時鼠標指針前會出現(xiàn)“”形狀,單擊左鍵,彈出編輯線標簽窗口,如圖5-14所示。在String窗口中輸入線標簽名。 圖5-14 編輯線標簽窗口 在一個電路圖中,標簽名相同的導(dǎo)線在邏輯上是連接在一起的。 2. 總線方式 總線用于元件中間段的連接,便于減少電路導(dǎo)線的連接,而元件引腳端的連接必須用一般的導(dǎo)線。因此,使用總線時主要涉及繪制總線和導(dǎo)線與總線的連接。 1) 繪制總線 繪制總線通過用主要模型中的繪制總線(Buses Mode)工具。選中該工具后,移動鼠標到編輯窗口,在需要繪制總線的開始位置單擊左鍵,移動鼠標,的結(jié)束位置再單擊左鍵,便可繪制出一條總線。 2) 導(dǎo)線與總線的連接 導(dǎo)線與總線的連接一般是從導(dǎo)線向總線方向連線,連接時一般有直線和斜線兩種,如圖5-15所示,斜線連接時一般要取消自動走線。 (a) 直線連接 (b) 斜線連接 圖5-15 導(dǎo)線與總線的連接 總線繪制好后,也可用放置線標簽工具給總線加標簽,給總線加標簽時,可同時給總線中的一組信號線加標簽,處理過程與導(dǎo)線一樣,只是標簽用成A[0..7]的形式,這時就給總線中的8根信號線加了標簽,8根信號線的標簽名分別為A0,A1…到A7。連接在總線上的導(dǎo)線,標簽名相同,則它們在邏輯關(guān)系上是連接在一起的,如圖5-16所示。 圖5-16 總線上信號線的連接 在這個實例中,線路比較簡單,我們用導(dǎo)線方式連接,連接圖如圖5-17所示。 圖5-17 實例導(dǎo)線連接圖 當硬件線路連接,元件屬性調(diào)整好后,就可以給單片機加載程序,加載的程序只能是HEX文件,可以在Keil 51軟件中來設(shè)計,形成HEX文件。處理時軟件程序文件最好與硬件電路文件保存在一個文件夾下面,在實例中,我們都保存在e:\IO文件夾下面。軟件源程序如下。 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV A,#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的十六進制文件,則加載過程如下:在PROTEUS電路圖中,左鍵單擊單片機80C51芯片,選中,再次左鍵單擊(或左鍵單擊選擇Edit Properties命令),打開單片機80C51的屬性對話框,在屬性對話框中的program file框中選擇加載到80C51芯片中的程序。這里是同一個文件夾下面的IO.hex文件。如圖5-18所示。 圖5-18 加載程序到單片機 程序加載以后,就可以通過仿真工具中的運行按鈕在51單片機中運行程序,運行后可以在PROTEUS ISIS中看到運行的結(jié)果。本實例結(jié)果如圖5-19所示。如果要看51單片機的特殊功能寄存器、存儲器中的內(nèi)容,則可用暫停按鈕使程序暫停下來,然后通過Debug(調(diào)試)菜單下面的相應(yīng)命令打開特殊功能寄存器窗口或存儲器窗口查看。 圖5-19 仿真結(jié)果圖 最后說明一下,在仿真調(diào)試時,如果因為程序有錯,仿真不能得到相應(yīng)的結(jié)果,則要在Keil uVision IDE中修改程序,程序修改后再對程序進行重新編譯連接形成HEX文件,但在PROTEUS中不用再重新加載,因為前面以經(jīng)加載了,直接運行即可,非常方便。因而現(xiàn)在使用Keil uVision IDE和PROTEUS仿真單片機應(yīng)用系統(tǒng)非常廣泛。 5.3仿真過程及仿真結(jié)果 按照線路圖連接好線路后,下載程序,點擊運行按鈕,結(jié)果如 圖5-20仿真結(jié)果- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機 課程設(shè)計
鏈接地址:http://appdesigncorp.com/p-6673356.html