![嵌入式課程設(shè)計(jì)報(bào)告解答_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/b44796c5-d007-4bd0-84c8-17240d260d9c/b44796c5-d007-4bd0-84c8-17240d260d9c1.gif)
![嵌入式課程設(shè)計(jì)報(bào)告解答_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/b44796c5-d007-4bd0-84c8-17240d260d9c/b44796c5-d007-4bd0-84c8-17240d260d9c2.gif)
![嵌入式課程設(shè)計(jì)報(bào)告解答_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/b44796c5-d007-4bd0-84c8-17240d260d9c/b44796c5-d007-4bd0-84c8-17240d260d9c3.gif)
![嵌入式課程設(shè)計(jì)報(bào)告解答_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/b44796c5-d007-4bd0-84c8-17240d260d9c/b44796c5-d007-4bd0-84c8-17240d260d9c4.gif)
![嵌入式課程設(shè)計(jì)報(bào)告解答_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/b44796c5-d007-4bd0-84c8-17240d260d9c/b44796c5-d007-4bd0-84c8-17240d260d9c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字課程設(shè)計(jì)報(bào)課程呈設(shè)計(jì)名稱:數(shù)字時(shí)鐘系別:系姓名:班級(jí):學(xué)號(hào):成績:指導(dǎo)教師:開課時(shí)間:2015-2016 學(xué)年學(xué)期引言1.1 系統(tǒng)背景1.2 系統(tǒng)功能系統(tǒng)總體方案1.22.1MKL25Z128VLK微控制器介紹.2.2.2 系統(tǒng)硬件框圖.2.三系統(tǒng)硬件設(shè)計(jì)33.1定時(shí)器(TPM模塊.3.3.3.3.1.1 計(jì)時(shí)器/ 定時(shí)器的工作原理3.1.2 TPM 模塊功能概述3.2串行通信(UART模塊4.4.321串行通信RS-232總線標(biāo)準(zhǔn)3.33.43.2.2MAX232芯片進(jìn)行電平轉(zhuǎn)換基本原理液晶顯示模塊單片機(jī)(MCU模塊3.4.1 MC9S08AW6(單片機(jī)性能概述四軟件設(shè)置4.1 主函數(shù)(
2、 main.c )4.2 中斷子程序( isr.c4.5.7.7.8.8.1.0.4.3LCD 子程序(Icd.c).1.2.4.4 定時(shí)器( timer.c ).1.5.4.5 定時(shí)器/ 脈寬調(diào)制子程序( tpm.c)1.64.7 運(yùn)行結(jié)果.2.8.五總結(jié).2.8.參考文獻(xiàn).2.9.引言1.1 系統(tǒng)背景電子鐘在工業(yè)控制和日常生活中是很重要的,它不僅可以用于計(jì)時(shí)、提醒又可用于對(duì)機(jī) 器的控制,在自動(dòng)化的過程中必然有電子鐘的參與,因此電子鐘的應(yīng)用會(huì)越來越廣泛。而且 向著精確、低功耗、多功能發(fā)展?;趩纹瑱C(jī)設(shè)計(jì)的數(shù)字鐘精確度較高, 因?yàn)樵诔绦虻膱?zhí) 行過程中, 任何指令都不影響定時(shí)器的正常計(jì)數(shù),即便程
3、序很長也不會(huì)影響中斷的時(shí)間。 從而,使數(shù)字鐘的精度僅僅取決于單片機(jī)的產(chǎn)生機(jī)器周期電路和定時(shí)器硬件電路的精確度。另外,程序較為簡潔,具有可靠性和較好的可讀性。如果我們想將它應(yīng)用于實(shí)時(shí)控制之中, 只要對(duì)上述程序和硬件電路稍加修改, 便可以得到實(shí)時(shí)控制的實(shí)用系統(tǒng),從而應(yīng)用到實(shí)際工 作與生產(chǎn)中去。數(shù)字時(shí)鐘系統(tǒng)可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來完成。若用數(shù)字電路完成,所 設(shè)計(jì)的電路相當(dāng)復(fù)雜, 大概需要十幾片數(shù)字集成塊, 其功能也主要依賴于數(shù)字電路的各功能 模塊的組合來實(shí)現(xiàn),焊接的過程比較復(fù)雜,成本也非常高。若用單片機(jī)來設(shè)計(jì)制作完成,由 于其功能的實(shí)現(xiàn)主要通過軟件編程來完成, 那么就降低了硬件電路的復(fù)
4、雜性,而且其成本也 有所降低數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí),分,秒,數(shù)字顯示的計(jì)時(shí)裝置,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù) 字化給人們生產(chǎn)生活帶來了極大的方便, 而且大大地?cái)U(kuò)展了鐘表的報(bào)時(shí)功能。數(shù)字鐘已成為 人們?nèi)粘I钪械谋匦杵?,廣泛應(yīng)用于家庭、車站、碼頭、劇院、辦公室等場所,給人們的 生活、學(xué)習(xí)、工作帶來極大的方便 4 。不僅如此,在現(xiàn)代化的進(jìn)程中,也離不開電子鐘的相 關(guān)功能和原理,比如機(jī)械手的控制、家務(wù)的自動(dòng)化、定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程 序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣 的
5、自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。而且是控制的核心部分。1.2 系統(tǒng)功能本次課程設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)一個(gè)時(shí)鐘計(jì)數(shù)器,也就是要做一個(gè)秒表,能夠計(jì)數(shù),并且按照我們平時(shí)的時(shí)間計(jì)數(shù)格式顯示, 當(dāng)我們按下某個(gè)計(jì)數(shù)按鍵時(shí)候,這個(gè)計(jì)數(shù)系統(tǒng)就一秒LCD 顯示器一秒的計(jì)數(shù),當(dāng)計(jì)數(shù)到 59 秒就進(jìn)位,顯示分鐘的部分加 1,當(dāng)計(jì)數(shù)分鐘的數(shù)字顯示到 59, 同樣要進(jìn)位,這時(shí)候時(shí)鐘部分加 1,如此循環(huán)下去。當(dāng)我們?cè)俅伟聪麓税存I時(shí)候,計(jì)數(shù)器暫停計(jì)數(shù),此時(shí)顯示器也就暫停在那個(gè)時(shí)候不再計(jì)數(shù)了,并且顯示當(dāng)前計(jì)數(shù)時(shí)間。要求每顯示一次就刷新一次,或者刷新頻率更高些。二.系統(tǒng)總體方案2.1MKL25Z128VLK微控制
6、器介紹飛思卡爾在2010年飛思卡爾技術(shù)論壇(FTF2010美國站推出了 Kinetis系列微控制器。面向領(lǐng)域不同,Kinetis系列基于ARM Cortex-M內(nèi)核陸續(xù)推出了 Kinetis K 系列、L系列、M系列、W系列。目標(biāo)應(yīng)用領(lǐng)域是智能電表、傳感器控制網(wǎng)絡(luò)、工業(yè)控制、數(shù)據(jù)采集等。本課程設(shè)計(jì)使用 MKL25Z128VLK微控制器,它是Kinetis L系列,其CPI核是Cortex-M0+處理器,Ki netis L 系列命名格式為:Q KL# A FFF R T PP CC (N)M KL25 Z 128 V LK 4MCU 勺硬件最小系統(tǒng)是指可以使內(nèi)部程序運(yùn)行所必須的最低規(guī)模的外圍電
7、路,也可以包括寫入器接口電路。一般情況下, MCU勺硬件最小系統(tǒng)由電源、晶振及復(fù)位等電路組成。隨著Flash存儲(chǔ)器制造技術(shù)的發(fā)展,硬件最小系統(tǒng)把寫入器的接口電路也包含在其中。2.2系統(tǒng)硬件框圖KL系列MC是以AMBA、線規(guī)范為架構(gòu)SOC般來說,AMB架構(gòu)包含高性能系統(tǒng)總線 和低速、低功耗的外設(shè)總線。系統(tǒng)總線AHB是負(fù)責(zé)連接AR附核、DMA控制器、片內(nèi)存儲(chǔ)器 或其他需要高帶寬的模塊。外設(shè)總線APB則是用來連接系統(tǒng)的外圍慢速模塊,其協(xié)議規(guī)則相 對(duì)系統(tǒng)總線AHB來說較為簡單,它與系統(tǒng)總線 AHB之間則通過總線橋(Bus bridge )相連, 期望能減少系統(tǒng)總線的負(fù)載.三系統(tǒng)硬件設(shè)計(jì)3.1定時(shí)器(T
8、PM模塊 3.1.1 計(jì)時(shí)器 / 定時(shí)器的工作原理實(shí)現(xiàn)計(jì)數(shù)與定時(shí)的基本方法有三種:完全硬件方式、完全軟件方式、可編程計(jì)數(shù)器 / 定 時(shí)器。完全硬件方式使用數(shù)字邏輯電路實(shí)現(xiàn),即完全用硬件電路實(shí)現(xiàn)計(jì)數(shù) / 定時(shí)功能,缺點(diǎn): 通用性差、 靈活性差。 完全軟件方式通過編程, 利用計(jì)算機(jī)執(zhí)行指令的時(shí)間實(shí)現(xiàn)定時(shí), 優(yōu)點(diǎn): 節(jié)省硬件;缺點(diǎn):降低了 CPU勺使用效率、不容易提供多作業(yè)環(huán)境,可作為實(shí)現(xiàn)粗略延時(shí)的 方法??删幊逃?jì)數(shù)器 / 定時(shí)器的優(yōu)點(diǎn): 其計(jì)數(shù) / 定時(shí)功能可由程序靈活地設(shè)置, 設(shè)定之后與 CPU并行地工作,不占用CPU勺工作時(shí)間。3.1.2 TPM 模塊功能概述TPM定時(shí)器/脈寬調(diào)制模塊)共有三
9、個(gè)模塊 TPM0/TPM1/TPM2TPM0t 6個(gè)通道,TPM1和TPM2只有2個(gè)通道。TPM支持輸入捕捉、輸出比較,并且能夠產(chǎn)生PWMI號(hào)來控制電機(jī)。TPM的基本定時(shí)器部分是一個(gè)遞增的計(jì)數(shù)器, 通過設(shè)定模塊的溢出值, 當(dāng)計(jì)數(shù)器遞增到該數(shù)值時(shí), 產(chǎn)生TPM中斷,可以通過選擇時(shí)鐘源和溢出值設(shè)定該計(jì)數(shù)器的頻率。1 外部引腳TPM模塊具有基本定時(shí)、輸入捕捉、輸出比較、脈寬調(diào)制( PWM功能。2基本結(jié)構(gòu) 1 )計(jì)數(shù)時(shí)鐘源與分頻TPM的時(shí)鐘由 SIM_SOPT2TPMSF和SIM_SOPT2PLLFLLSE來進(jìn)行選擇。選擇的時(shí)鐘源的分頻因子由狀態(tài)和控制 (TPMx_SC 的) PS2:0 位決定。2)
10、計(jì)數(shù)器TPM具有一個(gè)16位計(jì)數(shù)器,有兩種操作模式:上升計(jì)數(shù)和可逆計(jì)數(shù)。上升計(jì)數(shù):當(dāng)(CPWMS = 0時(shí)寸,上升計(jì)數(shù)被選中。0值被加載到TPM計(jì)數(shù)器中,并且計(jì)數(shù)器增 量直到達(dá)到MOD中的值,此刻計(jì)數(shù)器被重載為0??赡嬗?jì)數(shù):當(dāng)(CPWMS = 1時(shí)寸,可逆計(jì)數(shù)被選中。當(dāng)配置為可逆計(jì)數(shù)時(shí),MOD必須大于等于2。0值被加載到TPM計(jì)數(shù)器,并且計(jì)數(shù)器增量直到達(dá)到 MODS,此時(shí)計(jì)數(shù)器減量直到它返回0值并且可逆計(jì)數(shù)重啟。將MCU勺串口與PC機(jī)相連,TPM每達(dá)到1s進(jìn)行一次計(jì)時(shí),并通過串口將計(jì)時(shí)信息發(fā)送給 PC機(jī)。通過串口調(diào)試工具,可以看到時(shí)間計(jì)數(shù)值在遞增。TPM莫塊具有中斷使能、初始化、關(guān)閉操作以及TP
11、M中斷處理函數(shù)。按照構(gòu)件的思想,可將它們封裝成獨(dú)立的功能函數(shù)。3.2串行通信(UART模塊實(shí)現(xiàn)異步串行通信功能的模塊在一部分MCI中被稱為通用異步收發(fā)器(Un iversalAsynchronous Receiver/Transmitters,UART,在另一些 MCI中被稱為串行通信接口(SerialCommuni cati on In terface ,SCI)。3.2.1串行通信RS-232總線標(biāo)準(zhǔn)在MCI中,若用RS-232總線進(jìn)行串行通信,則需外界電路實(shí)現(xiàn)電平轉(zhuǎn)換,在發(fā)送端需要用驅(qū)動(dòng)電平將TTL電平轉(zhuǎn)換成RS-232電平;在接收端,需要用接收電路將 RS-232電平轉(zhuǎn)換為TTL電平。
12、電平轉(zhuǎn)換器不僅可以由晶振管分立元件構(gòu)成,也可以直接使用集成電路。目前使用MAX232芯片比較多,該芯片使用單一 +5V電源供電實(shí)現(xiàn)電平轉(zhuǎn)換,下圖芯片 MAX232的引腳說明:(1)VCC( 16腳):正電源端,一般為+5V;(2)GND( 15腳):接地;(3)Vs+(2 腳):vs+=2vcc-1.5v=8.5v ;(4)Vs-(6 腳):vs-=-2vcc-1.5v=-11.5vT 2怕21531441351261171O8gGNDT1OUTRUNR1OUTTUNT2INR2OUTC1十 S+ ci-C2+ C2-Vs-T2OUT R2IN (5)(6)C2+,C2-(4,5腳):一般接1
13、uF的電解電容;C1+,C2-(1,3腳):一般接1uF的電解電容。3.2.1 MAX2323.2.2MAX232芯片進(jìn)行電平轉(zhuǎn)換基本原理MAX232芯片進(jìn)行電平轉(zhuǎn)換的基本原理發(fā)送過程:MC啲TxD (TTL電平)經(jīng)過MAX23的 11腳(T1IN)送到MAX23內(nèi)部,在內(nèi)部TTL電平被“提升”為232電平,通過14腳(T1OUT發(fā)送出去。接收過程:外部 232電平經(jīng)過MAX232的 13腳(R1IN)送入到MAX232勺內(nèi)部, 在內(nèi)部的電平被“降低”為 TTL電平,經(jīng)過12腳(R1OU)送到MCUl勺R(shí)xD進(jìn)入MCI內(nèi)部。進(jìn)行MCU勺串行通信接口編程時(shí),只針對(duì) MCU勺發(fā)送與接收引腳,與 M
14、AX232無關(guān),MAX232 只是起到電平轉(zhuǎn)換作用。輸入輸出引腳分兩組,基本含義如表2.2所示。在實(shí)際使用時(shí),若只需要一路串行通信接口,可以使用其中任何一組。表2 MAX232芯片輸入輸出引腳分類與基本接法組別TTL電平引腳方向典型接口232電平引腳方向111輸入接 MC® TxD13連接到接口,與其12輸出接 MC的 RxD14它設(shè)備通過232相接210輸入接MCU勺TxD8連接到接口,與其9輸出接MCU勺R(shí)xD7它設(shè)備通過232相接3.3液晶顯示模塊1.點(diǎn)陣字符型LCD基本特點(diǎn):LCD作為電子信息產(chǎn)品的主要顯示器件,相對(duì)于其他類型的顯示器件來說有其自身的特點(diǎn), 主要包括:(1)低
15、電壓,低功耗;(1)平板型結(jié)構(gòu);(3)使用壽命長;(4)被動(dòng)顯示;(5)顯示信息量大且易于彩色化;(6)無電磁輻射。點(diǎn)陣字符型LCD是專門用于顯示數(shù)字,字母,圖形符號(hào)及少量自定義符號(hào)的液晶顯示器。這類顯示器把LCD控制器,點(diǎn)陣驅(qū)動(dòng)器,字符存儲(chǔ)器,顯示體及少量的阻容元件等集成一個(gè)液晶顯示模板。鑒于字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,其電特性及接口特性是 統(tǒng)一的,只要設(shè)計(jì)出一種型號(hào)的接口電路, 在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示器模塊。點(diǎn)陣字符型液晶顯示器模塊的控制器大多數(shù)為日立公司生產(chǎn)的HD44780及其兼容的控制電路,如: SED1278(SEIKO EP SON),KS0
16、066(SAMSUNG),NJU6408(NER JAP ANRADIO)等。2.字符型液晶顯示器模塊的特點(diǎn)如下:(1)液晶顯示屏是以若干5*8或5*11點(diǎn)陣塊等組成的顯示字符群。每個(gè)點(diǎn)陣塊塊為一個(gè)字符位,字符間距和行間距都是一個(gè)點(diǎn)的寬度。(2)主控制電路為HD44780( HITACH)及其他公司的兼容電路。從程序員的角度來看 LCD顯示接口與編程是面向HD44780的,只要了解HD44780的編程結(jié)構(gòu)即可進(jìn)行LCD的顯示編程。內(nèi)部具有字符發(fā)生器ROM可顯示192種字符。具有64字節(jié)的字符發(fā)生器RAM可以定義8個(gè)5*8點(diǎn)陣字符或4個(gè)5*11的點(diǎn)陣字符。具有64字節(jié)的數(shù)據(jù)顯示RAM供顯示器編程
17、使用。標(biāo)準(zhǔn)接口特性,與MC9S0系列的MCI容易接口。(7) 模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。(8) 單+5V電源供電(寬溫型需要加-7V驅(qū)動(dòng)電源)。(9) 低功耗,高可靠性。LCD(YM160'2C)161514131 rCore2AW601110090807060504030201LCD.D7LCD.”D6LCD.”D5LCD.-D4LCD.3LCD,D3LCD.-DILCD.JDOLCD.JLCD.阿LCD,IRS二二三三7 _bs4 4圖3.3 MCU控制液晶顯示接口接線圖表3 HD44780的引腳信號(hào)官幅嵌電平方向引胎義刪1V詰電就2Vdd電溉+閃3VO刪動(dòng)電徹卜說4RSHL輸
18、入寄存継擇:卜數(shù)據(jù)寄存器卜指令寄存器5RnvH'L獻(xiàn)貼操作選擇:卜讀操作眄誹6EHl HL輸入使能詐:R巴心E下瞧沿有效E習(xí)有效7110DB(WDB5三態(tài)S位械總鐮低4位,韻MCU進(jìn)行4位能吐此4位不用11M4DB4-DB7三態(tài)S位數(shù)據(jù)總貓高垃,若與皿U進(jìn)行価艇汕只用屮位1516EI-E2獻(xiàn)上下兩行使能信豈只用于4特姝醍3.4單片機(jī)(MCU模塊 341 MC9S08AW6(單片機(jī)性能概述S80是單芯片8位微控制器解決法案。MC9S08AW60/AW60/AW48/AW32/AW16成本高性能的8位微處理器單元(MCU S08家族中的成員。家族中有的 MCU使用增強(qiáng)型S08S核,且使用不
19、同的模塊,存儲(chǔ)空間,存儲(chǔ)器類型與封裝類型。AW6(系列主要常規(guī)模塊和特點(diǎn):(1)最高達(dá)40MHZ勺CPUX作頻率和20MHZ勺內(nèi)部總線工作頻率;時(shí)鐘源選項(xiàng)包括晶振,諧振器,外部時(shí)鐘或,內(nèi)部產(chǎn)生的時(shí)鐘。(2)相比HC08CP指令集,S08CPU曾加了 BGN指令。(3)單線后臺(tái)調(diào)試模式接口:增強(qiáng)的斷點(diǎn)能力,允許單一的斷點(diǎn)設(shè)置在線調(diào)試(在片內(nèi)調(diào)試模塊增加了多于兩個(gè)的斷點(diǎn))。(4)內(nèi)含32個(gè)中斷/復(fù)位源;內(nèi)含2KB的片內(nèi)RAM內(nèi)含60KB的片內(nèi)在線可編程的Flash存儲(chǔ)器,帶有 塊保護(hù)和安全選項(xiàng)。(5)可選的計(jì)算機(jī)正常操作(COP復(fù)位;低電壓檢測與復(fù)位或中斷;非法操作碼檢測與復(fù)位;非法地址檢測與復(fù)位
20、。(6) ADC多達(dá)16個(gè)通道,10個(gè)A/D轉(zhuǎn)換器與動(dòng)動(dòng)比較功能;兩個(gè)串行通信接口SCI模塊與可選的13位中斷;一個(gè)串行外設(shè)接口 SPI模塊;集成電路互聯(lián)總線IIC模塊運(yùn)行高達(dá)100kbps的最高總線負(fù)載;8引腳鍵盤中斷KBI模塊。(7) Timers : 1個(gè)2通道和一個(gè)6通道16位定時(shí)器/脈沖寬度調(diào)制器模塊。既有輸入捕獲,輸出比較,脈寬調(diào)制功能。AW子系列MCU勺4種封裝形式只是引腳數(shù)量和形式有所區(qū) 別,其他方面是一致的。四軟件設(shè)置4.1 主函數(shù)( main.c )/ 說明見工程文件夾下的 Doc 文件夾內(nèi) Readme.txt 文件/#include "includes.h&q
21、uot; /包含總頭文件11int main(void)uint_8 LCDBuffer20;/uint_8 * g_DispalyInit;/1. 聲明主函數(shù)使用的局部變量uint_32 remember;/2. 關(guān)總中斷enter_critical(); /進(jìn)入臨界區(qū) , 關(guān)中斷/3. 初始化底層模塊light_init(LIGHT_PORT, LIGHT_PIN_BLUE, LIGHT_OFF); /藍(lán)燈初始化uart_init (UART_1,BUSCLK, 9600); /串口 1 初始化 , 總線時(shí)鐘 24000Khz, 波特率 9600tpm_init(TPM0,TPM_CLKS
22、RC_PLL,1000000);/1sLCDInit();/LCD初始化/4. 變量賦初值g_time0=00;/(1) "時(shí)分秒 " 緩存初始化 (00:00:00)g_time1=00;g_time2=00;/g_time3=11;/ g_time4=51;g_time3=' 'g_time4='Z'g_time5='h'g_time6='a'g_time7='o'g_time8=' 'g_time9='Y'g_time10='u'g_time
23、11='e'g_time12=' 'g_time13=' 'g_time14=' 'H./g_DispalyInit = (uint_8 *)" sunremember = g_time2; /(2) 臨時(shí)變量 remember 初始化啟動(dòng)串口 1 接收中斷/5. 開中斷uart_enable_re_int(UART_1); /tpm_enable_int(TPM0);/啟動(dòng)模塊中斷init_critical(); /開總中斷/ LCDShow(g_DispalyInit);/ 進(jìn)入主循環(huán)/ 主循環(huán)開始判斷秒鐘是否發(fā)生變
24、化for(;)if (g_time2 != remember) /LCDBuffer0=g_time0/10+'0'LCDBuffer1=g_time0%10+'0'LCDBuffer2=':'LCDBuffer3=g_time1/10+'0'LCDBuffer4=g_time1%10+'0'LCDBuffer5=':'LCDBuffer6=g_time2/10+'0'LCDBuffer7=g_time2%10+'0'LCDBuffer8=g_time3;LCDBuf
25、fer9=g_time4;LCDBuffer10=g_time5;LCDBuffer11=g_time6;LCDBuffer12=g_time7;LCDBuffer13=g_time8;LCDBuffer14=g_time9;LCDBuffer15=g_time10;LCDBuffer16='A'LCDBuffer17='_'LCDBuffer18='A'uart_sendN(UART_1,11,g_time);remember=g_time2;LCDShow(LCDBuffer); / end_while/ 主循環(huán)結(jié)束return 0;4.2
26、中斷子程序( isr.c )#include "includes.h"/中斷函數(shù)服務(wù)例程/串口 0 接收中斷服務(wù)例程void isr_uart0_re(void)uint_8 ch;uint_8 flag = 1;enter_critical();ch = uart_re1(UART_0, &flag);if (0 = flag)uart_send1(UART_0, ch);exit_critical();/串口 1 接收中斷服務(wù)例程void isr_uart1_re(void)static uint_8 index=0; / 收到的個(gè)數(shù)uint_8 flag =
27、1;enter_critical();if(index>11)index=0;/ 三個(gè)字節(jié)一收 , 時(shí)分秒g_timeindex=uart_re1(UART_1,&flag);if(0=flag) index+;exit_critical();/串口 2 接收中斷服務(wù)例程void isr_uart2_re(void)uint_8 ch;uint_8 flag = 1;enter_critical();ch = uart_re1(UART_2, &flag);if (0 = flag)uart_send1(UART_2, ch);exit_critical();/tpm 定
28、時(shí)中斷void tpm0_isr(void)static uint_32 TPMCounter = 0;/定時(shí)器溢出中斷標(biāo)志if(TPM_SC_REG(TPM0_BASE_PTR) & TPM_SC_TOF_MASK) = TPM_SC_TOF_MASK)TPMCounter+;BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR);/ 清標(biāo)志位if(TPMCounter > 100)/TPM 每中斷 100 次(即 1s)閃爍一次。TPMCounter = 0;SecAdd1(g_time);4.3LCD 子程序(Icd.c)/文件名稱:
29、 Icd.c/功能概要: Icd 構(gòu)件頭文件/12/版權(quán)所有 : 蘇州大學(xué)飛思卡爾嵌入式中心 ()/版本更新 : 2013-03-17V1.2/#incIude "Icd.h"/Icd 控制位和數(shù)據(jù)位端口及引腳號(hào)struct GPIO LCD11=LCD_RS_PORT,LCD_RS, LCD_RW_PORT,LCD_RW, LCD_E_PORT,LCD_E, LCD_D0_PORT,LCD_D0, LCD_D1_PORT,LCD_D1, LCD_D2_PORT,LCD_D2, LCD_D3_PORT,LCD_D3, LCD_D4_PORT,LCD_D4, LCD_D5_P
30、ORT,LCD_D5, LCD_D6_PORT,LCD_D6, LCD_D7_PORT,LCD_D7,;/內(nèi)部函數(shù)原型說明extern void LCDCommand(uint_8 cmd);/函數(shù)名稱:LCDInit/函數(shù)返回:/參數(shù)說明:/功能概要:LCD 初始化。29/ void LCDInit()uint_32 i = 0;/定義數(shù)據(jù)口和控制口為輸出for(i = 0;i < 11;i+)gpio_init(LCDi.gpio_port, LCDi.gpio_pin, 1,0);/設(shè)置指令 ,RS,R/W = 00, 寫指令代碼gpio_set (LCD0.gpio_port,
31、LCD0.gpio_pin, 0);gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0);/功能設(shè)置 -/設(shè)置指令LCDCommand(0x38);/5*7 點(diǎn)陣模式 ,2行顯示 ,8位數(shù)據(jù)總線LCDCommand(0x08);/關(guān)顯示 ,關(guān)光標(biāo)顯示 ,不閃爍LCDCommand(0x01);/清屏for (i=0; i<40000; i+)asm("NOP"); / 延時(shí)LCDCommand(0x06);LCDCommand(0x14);/光標(biāo)右移一個(gè)字符位 ,AC 自動(dòng)加 1LCDCommand(0x0C);/開顯示 ,關(guān)光標(biāo)顯示
32、 ,不閃爍/ /函數(shù)名稱: LCDShow /函數(shù)返回:無 /參數(shù)說明:需要顯示的數(shù)據(jù) /功能概要:液晶顯示 data 中的數(shù)據(jù)。/ void LCDShow(uint_8 data16)uint_8 i;/LCD 初始化LCDInit();/顯示第 1 行 16 個(gè)字符gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 0);gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0);/后 7 位為 DD RAM 地址 (0x00)LCDCommand(0x80);/寫 16 個(gè)數(shù)據(jù)到 DD RAMgpio_set (LCD0.gpi
33、o_port, LCD0.gpio_pin, 1);gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0);/將要顯示在第 1 行上的 16個(gè)數(shù)據(jù)逐個(gè)寫入 DD RAM 中for (i = 0;i < 16;i+)LCDCommand(datai);/顯示第 2 行 16 個(gè)字符gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 0);gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0);/后 7 位為 DD RAM 地址 (0x40)LCDCommand(0xC0);gpio_set (LC
34、D0.gpio_port, LCD0.gpio_pin, 1);gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0);/將要顯示在第 2 行上的 16個(gè)數(shù)據(jù)逐個(gè)寫入 DD RAM 中for (i = 16;i < 19;i+)LCDCommand(datai);/函數(shù)名稱:LCDCommand/函數(shù)返回:/參數(shù)說明:cmd:待執(zhí)行的命令/功能概要:執(zhí)行給定的 cmd 命令 ,且延時(shí)。/void LCDCommand(uint_8 cmd)uint_8 i;uint_16 j;uint_8 temp;/等待延遲防止重復(fù)調(diào)用此函數(shù)而LCD 卡死for (j=
35、0; j<1600; j+);asm("NOP");/數(shù)據(jù)送到 LCD 的數(shù)據(jù)線上for(i = 3;i < 11;i+)gpio_set (LCDi.gpio_port, LCDi.gpio_pin, 0);for(i = 3;i < 11;i+)temp = 0x01 & (cmd>>(i-3);gpio_set (LCDi.gpio_port, LCDi.gpio_pin, temp);/給出 E 信號(hào)的下降沿 (先高后低 ),使數(shù)據(jù)寫入 LCD gpio_set (LCD2.gpio_port, LCD2.gpio_pin, 1
36、);for (j=0;j<25;j+) asm("NOP");gpio_set (LCD2.gpio_port, LCD2.gpio_pin, 0);4.4 定時(shí)器( timer.c )/文件名稱: timer.c/功能概要:時(shí)間處理軟件源文件/版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心()/更新記錄: 2013-04-27 V1.0/#include "timer.h"/函數(shù)名稱:SecAdd1/函數(shù)返回:/參數(shù)說明:*p: 為指向一個(gè)時(shí)分秒數(shù)組 p3/功能概要:秒單元 +1,并處理時(shí)分單元( 00:00:00-23:59:59)/void SecAd
37、d1(uint_8 *p)*(p+2)+=1;/秒+1if(*(p+2)>=60)/秒溢出*(p+2)=0;/清秒*(p+1)+=1;/分+1if(*(p+1)>=60)/分溢出*(p+1)=0;/清分*p+=1;/時(shí)+1if(*p>=24)/時(shí)溢出*p=0;/清時(shí)4.5 定時(shí)器 / 脈寬調(diào)制子程序( tpm.c )/文件名稱: tpm.c/功能概要: tpm 底層驅(qū)動(dòng)構(gòu)件源文件/版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心()/更新記錄: 2013-5-5 V2.0/#include "tpm.h"/定時(shí)器模塊 0,1,2 地址映射const TPM_MemMa
38、pPtr TPM_ARR=TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR;/函數(shù)名稱:tpm_init/功能概要:初始化 tpm 模塊 ./參數(shù)說明:tpmModule: 模塊號(hào):0、1、2/clk_src_sel: 時(shí)鐘源選擇 :1:PLL/FLL (推薦)、 2:晶振/int_us: 中斷微秒數(shù) ,中斷時(shí)間間隔/函數(shù)返回:/void tpm_init (uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us)uint_32 int_ticks;if(tpmModule>2) tpmModule=2;/防
39、止越界值/開啟 SIM 時(shí)鐘門BSET(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6); / 使能 TPM 時(shí)鐘/根據(jù)傳入?yún)?shù)(時(shí)鐘源、中斷時(shí)間間隔),使能時(shí)鐘、確定有關(guān)寄存器值if (1=clk_src_sel)/選擇 PLL/FLL 為 TPM 模塊的時(shí)鐘源/MCGPLL/2 或者 MCGFLL 作為時(shí)鐘源BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2); / 使能 PLL 為時(shí)鐘源int_ticks=6*int_us;/6*int_us=(48000/8)*int_us/1000else/晶振作為時(shí)鐘源BSET(OSC
40、_CR_ERCLKEN_SHIFT,OSC0_CR);/開啟晶振輸出時(shí)鐘int_ticks=int_us;/1*int_us=(8000/8)*int_us/1000SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);/使能時(shí)鐘選擇TPM_ARRtpmModule->CNT=0x00;/計(jì)數(shù)器清 0TPM_ARRtpmModule->MOD=int_ticks;/給模數(shù)寄存器賦值/TOF 寫 1 清 0,TOIE 中斷使能, CMOD 選擇每次時(shí)鐘加 1,PS=0x011 選擇 8 分頻 ;TPM_ARRtpmModule->SC=TPM_S
41、C_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);/函數(shù)名稱:tpm_enable_int/功能概要:使能 tpm 模塊中斷。/參數(shù)說明:tpmModule: 模塊號(hào):0、1、2/函數(shù)返回:/void tpm_enable_int(uint_8 tpmModule)enable_irq(tpm0_irq_no + tpmModule);/函數(shù)名稱:tpm_disable_int/功能概要:禁止 tpm 模塊初始化。/參數(shù)說明:tpmModule: 模塊號(hào):0、1、2/函數(shù)返回:/void tpm_disable_int(uint_8
42、 tpmModule)disable_irq(tpm0_irq_no + tpmModule);/函數(shù)名稱:tpm_stop/功能概要:禁止 tpm 模塊。/參數(shù)說明:tpmModule: 模塊號(hào):0、1、2/函數(shù)返回:/void tpm_stop(uint_8 tpmModule)TPM_ARRtpmModule->SC&=TPM_SC_CMOD(3);4.6 串口通信子程序( uart.c )/文件名稱:uart.c/功能概要:uart 底層驅(qū)動(dòng)構(gòu)件源文件/版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心()/更新記錄: 2012-11-12 V1.0/#include "ua
43、rt.h"/串口 1、 2 號(hào)地址映射const UART_MemMapPtr UART_ARR = UART1_BASE_PTR, UART2_BASE_PTR;/打開 MCGIRCLK 時(shí)鐘static void MCGIRCLK_OutEnable(void);/函數(shù)名稱:uart_init/功能概要:初始化 uart 模塊/參數(shù)說明:uartNo: 串口號(hào): UART_0 、 UART_1 、UART_2/sel_clk: 選擇串口 0 時(shí)鐘源 :MCGIRCLK(4000Khz)/MCGPLL(48000Khz)/BUSCLK(24000khz)/baud:波特率:300、
44、600、1200、2400、4800、 9600、 19200、 115200./函數(shù)返回:/說明: 當(dāng)參數(shù)為 UART_0 時(shí), sel_clk 只能選擇 MCGIRCLK 或 MCGPLL ,若選擇內(nèi)部時(shí)鐘MCGIRCLK,/波特率需小于 19200; 當(dāng)參數(shù)為 UART_1 或是 UART_2 時(shí), sel_clk 只能選擇 BUSCLK/void uart_init (uint_8 uartNo,uint_32 sel_clk,uint_32 baud_rate)/局部變量聲明 register uint_16 sbr;uint_8 temp;uint_32 clk_Khz;UARTL
45、P_MemMapPtr uartch1=UART0_BASE_PTR;/ 聲明 uartch1 為 UARTLP_MemMapPtr 結(jié)構(gòu)體類型指針UART_MemMapPtr uartch2;/聲明 uartch2 為 UART_MemMapPtr 結(jié)構(gòu)體類型指針uartch2 = UART_ARRuartNo-1; / 獲得 UART1 、 2 模塊相應(yīng)口基地址/根據(jù)帶入?yún)?shù) uartNo ,給局部變量 uartch1 賦值if(uartNo=0)switch(sel_clk) case MCGIRCLK:/啟用并選擇 UART0 時(shí)鐘源 MCGIRCLKMCGIRCLK_OutEnabl
46、e();/啟用內(nèi)部快速時(shí)鐘/UART0 選擇 MCGIRCLK=4000KhzSIM_SOPT2 |= SIM_SOPT2_UART0SRC(0x3);時(shí)鐘源break;case MCGPLL:SIM_SOPT2 |= SIM_SOPT2_UART0SRC(1);/UART0 選擇MCGFLLCLK_khz=48000Khz 時(shí)鐘源SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK;break;default:break;/引腳復(fù)用為串口功能并啟用串口模塊時(shí)鐘PORTA_PCR14 = PORT_PCR_MUX(0x3);/ 使能 UART0_TXDPORTA_PCR1
47、5 = PORT_PCR_MUX(0x3);/ 使能 UART0_RXDSIM_SCGC4 |= SIM_SCGC4_UART0_MASK;/啟動(dòng)串口 0 時(shí)鐘/ 暫時(shí)關(guān)閉串口 0 發(fā)送與接收功能uartch1->C2 &= (UART_C2_TE_MASK | UART_C2_RE_MASK);/根據(jù)時(shí)鐘源選擇時(shí)鐘頻率if(MCGIRCLK = sel_clk)clk_Khz = MCGFLL_CLK_KHZ;else if (MCGPLL = sel_clk)clk_Khz = MCGPLL_CLK_KHZ;/配置串口工作模式 :8 位無校驗(yàn)?zāi)J絪br = (uint_16)
48、(clk_Khz*1000)/(baud_rate * 16);elsetemp = UART_BDH_REG(uartch1) & (UART_BDH_SBR(0x1F);UART_BDH_REG(uartch1) = temp | UART_BDH_SBR(sbr & 0x1F00) >> 8);UART_BDL_REG(uartch1) = (uint_8)(sbr & UART_BDL_SBR_MASK);/初始化控制寄存器、清標(biāo)志位UART0_C4 = 0x0F;UART0_C1 = 0x00;UART0_C3 = 0x00;UART0_MA1 =
49、 0x00;UART0_MA2 = 0x00;UART0_S1 |= 0x1F;UART0_S2 |= 0xC0;/啟動(dòng)發(fā)送接收 uartch1->C2 |= (UART_C2_TE_MASK | UART_C2_RE_MASK);switch (uartNo)case UART_1:PORTE_PCR0 = PORT_PCR_MUX(0x3);/使能UART1_TXDPORTE_PCR1 = PORT_PCR_MUX(0x3);/使能UART1_RXDSIM_SCGC4 |= SIM_SCGC4_UART1_MASK; / 啟動(dòng)串口 1 時(shí)鐘break;case UART_2:PORT
50、E_PCR22 = PORT_PCR_MUX(0x4); / 使能 UART2_TXDPORTE_PCR23 = PORT_PCR_MUX(0x4); / 使能 UART2_RXDSIM_SCGC4 |= SIM_SCGC4_UART2_MASK;/ 啟動(dòng)串口 2 時(shí)鐘break;default:break; /傳參錯(cuò)誤,返回/暫時(shí)關(guān)閉串口 1、2 發(fā)送與接收功能uartch2->C2 &= (UART_C2_TE_MASK | UART_C2_RE_MASK);/配置波特率 ,KL25 串口 1、2 時(shí)鐘頻率只能使用 Bus clock = 24M 總線時(shí)鐘/配置串口工作模式
51、,8 位無校驗(yàn)?zāi)J絬artch2->C1 = 0;sbr = (uint_16)(BUS_CLK_KHZ*1000)/(baud_rate * 16);temp = UART_BDH_REG(uartch2) & (UART_BDH_SBR(0x1F);UART_BDH_REG(uartch2) = temp | UART_BDH_SBR(sbr & 0x1F00) >> 8);UART_BDL_REG(uartch2) = (uint_8)(sbr & UART_BDL_SBR_MASK);/初始化控制寄存器、清標(biāo)志位 uartch2->C1 = 0x00;uartch2->C3 = 0x00;uartch2->S1 = 0x1F;uartch2->S2 = 0x00;/啟動(dòng)發(fā)送接收 uartch2->C2 |= (UART_C2_TE_MASK | UART_C2_RE_MASK);/函數(shù)名稱:uart_send1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)二年級(jí)數(shù)學(xué)上冊(cè)口算題
- 2024-2025年高中化學(xué)課時(shí)分層作業(yè)5元素的電負(fù)性及其變化規(guī)律含解析魯科版選修3
- 西門子油煙機(jī)指導(dǎo)書
- 2025年年度尊重生命總結(jié)報(bào)告
- 二次消防改造工程合同范本
- 海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《建筑構(gòu)造Ⅰ》2023-2024學(xué)年第二學(xué)期期末試卷
- 福州科技職業(yè)技術(shù)學(xué)院《德語口譯》2023-2024學(xué)年第二學(xué)期期末試卷
- 常州信息職業(yè)技術(shù)學(xué)院《中學(xué)語文課程與教學(xué)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿遷學(xué)院《編譯原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 烏蘭察布職業(yè)學(xué)院《建筑物理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年度碳陶剎車盤分析報(bào)告
- 2025年1月 浙江首考英語試卷
- 十首最美的唐詩
- 2024年中考二輪專題復(fù)習(xí)道德與法治主觀題答題技巧(小論文)之演講稿
- 質(zhì)檢工作計(jì)劃書2025質(zhì)檢部工作計(jì)劃范文
- 《纏論的實(shí)戰(zhàn)技法》課件
- 新版標(biāo)準(zhǔn)化機(jī)電專業(yè)管理體系解讀課件
- 承包魚塘維修施工合同范例
- 耶魯綜合抽動(dòng)嚴(yán)重程度量表正式版
- 水利水電工程建設(shè)常見事故類型及典型事故分析(標(biāo)準(zhǔn)版)
- 政府采購項(xiàng)目采購需求調(diào)查指引文本
評(píng)論
0/150
提交評(píng)論