單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字時(shí)鐘_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字時(shí)鐘_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字時(shí)鐘_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字時(shí)鐘_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字時(shí)鐘_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計(jì) 報(bào) 告課程設(shè)計(jì)名稱:數(shù)字時(shí)鐘系:三學(xué)生姓名:班級(jí):電信 1_ 學(xué)號(hào):成績:_ 指導(dǎo)教師:袁 靜開課時(shí)間:2011-2012 學(xué)年 下 學(xué)期2 一設(shè)計(jì)題目數(shù)字時(shí)鐘二主要內(nèi)容利用定時(shí)器設(shè)計(jì)一個(gè)電子鐘, 并定義一個(gè)啟動(dòng)鍵。 當(dāng)按下該鍵時(shí)電子時(shí)鐘從當(dāng)前設(shè)定值開始走時(shí)。按秒刷新,要求在lcd 屏上顯示。三具體要求在課程設(shè)計(jì)時(shí), 1 人一組,設(shè)計(jì)報(bào)告由學(xué)生獨(dú)立完成,不得互相抄襲。教師的主導(dǎo)作用主要在于指明設(shè)計(jì)思路,啟發(fā)學(xué)生獨(dú)立設(shè)計(jì)的思路, 解答疑難問題和按設(shè)計(jì)進(jìn)度進(jìn)行階段審查。 學(xué)生必須發(fā)揮自身學(xué)習(xí)的主動(dòng)性和能動(dòng)性,主動(dòng)思考問題、分析問題和解決問題,而不應(yīng)處處被動(dòng)地依賴指導(dǎo)老師。學(xué)生在設(shè)計(jì)

2、中可以引用所需的參考資料,避免重復(fù)工作, 加快設(shè)計(jì)進(jìn)程, 但必須和題目的要求相符合, 保證設(shè)計(jì)的正確。 學(xué)生學(xué)會(huì)掌握和使用各種已有的技術(shù)資料,不能盲目地、 機(jī)械地抄襲資料, 必須具體分析, 使設(shè)計(jì)質(zhì)量和設(shè)計(jì)能力都獲得提高。 學(xué)生要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細(xì)設(shè)計(jì)進(jìn)程計(jì)劃,按給定的時(shí)間計(jì)劃保質(zhì)保量的完成個(gè)階段的設(shè)計(jì)任務(wù)。設(shè)計(jì)中可邊設(shè)計(jì),邊修改,軟件設(shè)計(jì)與硬件設(shè)計(jì)可交替進(jìn)行,問題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計(jì)的效率,保證按時(shí)完成設(shè)計(jì)工作并交出合格的設(shè)計(jì)報(bào)告。四進(jìn)度安排五成績?cè)u(píng)定考核方法:現(xiàn)場(chǎng)驗(yàn)收(占50%),課程設(shè)計(jì)報(bào)告(占50%)??己藘?nèi)容:學(xué)習(xí)態(tài)度(出勤情況,平時(shí)表現(xiàn)等)、方案合

3、理性、程序編制質(zhì)量、演示效果、設(shè)計(jì)報(bào)告質(zhì)量。成績?cè)u(píng)定:優(yōu),良,中,及格,不及格。特別說明:如發(fā)現(xiàn)抄襲,按照不及格處理。周一周二周三周四周五講課設(shè)內(nèi)容,安排任務(wù)查資料,確定硬件電路方案畫出程序流程圖,寫出程序清單畫出程序流程圖,寫出程序清單寫總結(jié)報(bào)告3 目錄第一章 系統(tǒng)概要1.1 系統(tǒng)背景,4 1.2 系統(tǒng)功能,4 第二章 系統(tǒng)硬件設(shè)計(jì)2.1 系統(tǒng)原理圖,5 2.2 單片機(jī)( mcu )模塊2.2.1 mc9s08aw60 單片機(jī)功能概述,6 2.2.2 內(nèi)部結(jié)構(gòu)簡圖,6 2.3 串行通信模塊2.3.1 max232 引圖,7 2.3.2 串行通信的電路原理,7 2.4 液晶顯示模塊,8 第三章

4、 系統(tǒng)軟件設(shè)計(jì)3.1 mcu方(c)程序3.1.1 主程序( mian.c ),10 3.1.2 中斷子程( isr.c ),11 3.1.3lcd 子程序( lcd.c),11 3.1.4 定時(shí)器( timer.c ),13 3.1.5 串行通信子程 (sci.c) ,16 第四章 系統(tǒng)測(cè)試,18 第五章 總結(jié)展望5.1 總結(jié),22 5.2 展望,23 參考文獻(xiàn),23 4 第一章系統(tǒng)概要1.1 系統(tǒng)背景這些年,人們對(duì)數(shù)字時(shí)鐘的要求也越來越高,傳統(tǒng)的時(shí)鐘已不能夠滿足人們的需求。多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有了電子鬧鐘,數(shù)字鬧鐘等等。 單片機(jī)在多功能數(shù)字鐘中的應(yīng)用已是非常

5、普遍的,人們對(duì)數(shù)字鐘的功能及工作順序都非常的熟悉。但是卻很少知道它內(nèi)部結(jié)構(gòu)以及工作原理。由單片機(jī)作為數(shù)字鐘的核心控制器,可以通過它的時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí)實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來。 通過鍵盤可以進(jìn)行定時(shí),校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。隨著科學(xué)技術(shù)的發(fā)展電子技術(shù)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,單片機(jī)開始迅速發(fā)展,由于家用電器逐漸普及, 市場(chǎng)對(duì)于智能時(shí)鐘控制系統(tǒng)的需求也越來越大。數(shù)字時(shí)鐘,就是以數(shù)字顯示取代模擬表盤的鐘表,在顯示上它用數(shù)字反應(yīng)此時(shí)的時(shí)間,相比模擬鐘能給人一種一目了然的感覺,不僅如此它還能同時(shí)顯示時(shí),分,秒。而且能對(duì)時(shí),分,秒準(zhǔn)確校時(shí), 這是普

6、通鐘所不及的。 由于單片機(jī)集成度高, 功能強(qiáng),可靠性高,體積小,功耗低,使用方面,價(jià)格低廉等一系列優(yōu)點(diǎn),目前已經(jīng)滲入到人們工作和生活的方方面面,幾乎“無處不在,無所不為”。單片機(jī)的應(yīng)用領(lǐng)域已從面向工業(yè)控制, 通訊,交通,智能儀表等迅速發(fā)展到家用消費(fèi)產(chǎn)品,辦公自動(dòng)化,汽車電子, pc機(jī)外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。單片機(jī)系統(tǒng)座位一種典型的嵌入式系統(tǒng),其系統(tǒng)設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)編程設(shè)計(jì)兩個(gè)方面,其調(diào)試過程一般分為軟件調(diào)試,硬件調(diào)試,系統(tǒng)調(diào)試。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í)候,

7、這個(gè)計(jì)數(shù)系統(tǒng)就一秒一秒的計(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í)間。lcd 顯示器要求每顯示一次就刷新一次,或者刷新頻率更高些。5 第二章系統(tǒng)硬件設(shè)計(jì)2.1 系統(tǒng)原理圖表 2.1 定時(shí)器顯示控制系統(tǒng)的硬件構(gòu)件劃分構(gòu)件中文名稱構(gòu)件英文名稱構(gòu)件功能類型aw60最小系統(tǒng)aw60-minsys aw60 mcu 的最小系統(tǒng), 包含 bdm電路。核心構(gòu)件電源power 將+24v電壓轉(zhuǎn)換為 +3.3v 電壓。中間構(gòu)

8、件液晶顯示lcd 采用串行輸入模式顯示數(shù)據(jù)。終端構(gòu)件上圖中 aw60 是主要模塊,所有的信號(hào)都是經(jīng)過aw60 模塊進(jìn)行處理,各個(gè)功能模塊在 aw60 模塊的連接下才能夠協(xié)調(diào)運(yùn)行起來。圖中,左邊一塊是各異晶振和兩個(gè)電容連接,用來產(chǎn)生標(biāo)準(zhǔn)的時(shí)鐘脈沖,在aw60 上面連接的是 lcd 液晶顯示器, 用來動(dòng)態(tài)顯示當(dāng)前所計(jì)數(shù)的秒數(shù),右邊一個(gè)模塊是接地使用, 最下面的是一個(gè)開關(guān)模塊, 用來在程序加載后由此開關(guān)控制何時(shí)開始計(jì)數(shù),何時(shí)暫停計(jì)數(shù),以及一些復(fù)位等操作。6 2.2 單片機(jī)( mcu )模塊2.2.1 mc9s08aw60單片機(jī)性能概述s80是單芯片 8 位微控制器解決法案。 mc9s08aw60/a

9、w60/aw48/aw32/aw16是低成本高性能的 8 位餓、微處理器單元( mcu )s08家族中的成員。家族中有的mcu 使用增強(qiáng)型 s08s核,且使用不同的模塊,存儲(chǔ)空間,存儲(chǔ)器類型與封裝類型。aw60 系列主要常規(guī)模塊和特點(diǎn):(1)最高達(dá) 40mhz的 cpu工作頻率和 20mhz 的內(nèi)部總線工作頻率;時(shí)鐘源選項(xiàng)包括晶振,諧振器,外部時(shí)鐘或,內(nèi)部產(chǎn)生的時(shí)鐘。(2)相比 hc08cpu 指令集, s08cpu 增加了 bgnd 指令。(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)含

10、2kb的片內(nèi) ram ;內(nèi)含 60kb的片內(nèi)在線可編程的 flash 存儲(chǔ)器,帶有塊保護(hù)和安全選項(xiàng)。(5)可選的計(jì)算機(jī)正常操作( cop )復(fù)位;低電壓檢測(cè)與復(fù)位或中斷;非法操作碼檢測(cè)與復(fù)位;非法地址檢測(cè)與復(fù)位。(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)

11、制功能。aw 子系列 mcu 的 4 種封裝形式只是引腳數(shù)量和形式有所區(qū)別,其他方面是一致的。2.2.2 內(nèi)部結(jié)構(gòu)簡圖1. 內(nèi)部結(jié)構(gòu)簡圖圖 2-1 aw60 mcu 內(nèi)部結(jié)構(gòu)框圖存儲(chǔ)器2kb ram 64kb flash pll gpio jtag spi iic scii 6 通道定時(shí)器 /pwm 2 通道定時(shí)器 /pwm sci2 a/d kbi dbg bdm hcs08 內(nèi)核cpu rt1 cop irq lvd bdc 7 圖 2-1 給出了 sw60 內(nèi)部結(jié)構(gòu)框圖,它對(duì)于我們理解和應(yīng)用aw60 mcu 有重要作用,在學(xué)習(xí)了基本方法后, 應(yīng)再反過來熟悉這個(gè)內(nèi)部結(jié)構(gòu)圖,以便好好地理解a

12、w60 mcu 的基本原理。從內(nèi)部結(jié)構(gòu)框圖可以看出, aw60 主要有以下部件:s08 cpu,存儲(chǔ)器,定時(shí)器接口模塊,定時(shí)器模塊,看門狗模塊,通用i/o 模塊,串行通信模塊(sci) ,串行外設(shè)接口模塊 (spi) ,i2c(iic) 模塊,a/d 轉(zhuǎn)換模塊,鍵盤中斷模塊,時(shí)鐘發(fā)生器模塊,復(fù)位與中斷模塊等。2.3 串行通信模塊2.3.1 max232 引腳圖在 mcu 中,若用 rs-232總線進(jìn)行串行通信,則需外界電路實(shí)現(xiàn)電平轉(zhuǎn)換,在發(fā)送端需要用驅(qū)動(dòng)電平將ttl 電平轉(zhuǎn)換成 rs-232電平;在接收端, 需要用接收電路將 rs-232電平轉(zhuǎn)換為 ttl 電平。電平轉(zhuǎn)換器不僅可以由晶振管分立

13、元件構(gòu)成,也可以直接使用集成電路。目前使用max232 芯片比較多,該芯片使用單一+5v 電源供電實(shí)現(xiàn)電平轉(zhuǎn)換,上圖的引腳說明:(1)vcc(16腳) :正電源端,一般為 +5v;(2)gnd(15 腳) :接地;(3)vs+(2j 腳): vs+=2vcc-1.5v=8.5v;(4)vs-(6 腳):vs-=-2vcc-1.5v=-11.5v;(5)c2+,c2-(4,5 腳):一般接 1uf的電解電容;(6)c1+,c2-(1,3 腳):一般接 1uf的電解電容。2.3.2 串行通信的電路原理圖 2-2 max232引腳1、焊接到 pcb 板上的 msx232 芯片檢測(cè)方法正常情況下, (

14、1)t1in=5v ,則 t1out=-9v ;t1in=0v;則 t1out=9v 。 (2)將 r1in 與 t1out 相連,令 t1in=5v ,則 r1out=5v;令 t1in=0v,則t1out=0v。具有串行通信接口的mcu,一般具有發(fā)送引腳 (txd)與接受引腳( rxd) ,不同公司或不同系列的mcu,使用的引腳縮寫名可能不一致,但含義相同。串行通信接口的外圍硬件電路,主要目的是:將mcu 的發(fā)送引腳 txd 與接收端引腳 rxd 的 ttl 電平,通過 rs-232電平轉(zhuǎn)換器芯片轉(zhuǎn)換成rs-232電平,上圖就是基本串行通信的電平轉(zhuǎn)換電路。2、 max232 芯片進(jìn)行電平轉(zhuǎn)

15、換的基本原理發(fā)送過程: mcu 的 txd(ttl 電平)經(jīng)過 max232 的 11 腳( t1in)送到max232 內(nèi)部,在內(nèi)部 ttl 電平被“提升”為 232 電平,通過 14腳( t1out)發(fā)送出去。接收過程:外部 232電平經(jīng)過 max232 的 13 腳(r1in)送入到 max232的內(nèi)部,在內(nèi)部的電平被 “降低”為 ttl 電平,經(jīng)過 12 腳(r1out)送到 mcu的 rxd,進(jìn)入 mcu 內(nèi)部。進(jìn)行 mcu 的串行通信接口編程時(shí),只針對(duì)mcu 的發(fā)送與接收引腳,與max232 無關(guān), max232 只是起到電平轉(zhuǎn)換作用。輸入輸出引腳分兩組, 基本含義如表 1 所示。

16、在實(shí)際使用時(shí), 若只需要一路串行通信接口,可以使用其中任何一組8 2.4 液晶顯示模塊1. 點(diǎn)陣字符型 lcd基本特點(diǎn):lcd作為電子信息產(chǎn)品的主要顯示器件,相對(duì)于其他類型的顯示器件來說有其自身的特點(diǎn),主要包括:(1)低電壓,低功耗;(2)平板型結(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)一的,只要

17、設(shè)計(jì)出一種型號(hào)的接口電路,在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示器模塊。點(diǎn)陣字符型液晶顯示器模塊的控制器大多數(shù)為日立公司生產(chǎn)的hd44780 及其兼容的控制電路,如: sed1278(seiko epson),ks0066(samsung),nju6408(ner japanradio) 等。表 1 max232芯片輸入輸出引腳分類與基本接法組別ttl 電平引腳方向典型接口232電平引腳方向典型接口1 11 12 輸入輸出接mcu 的txd 接mcu 的rxd 13 14 輸入輸出連接到接口,與其它設(shè)備通過232相接2 10 9 輸入輸出接mcu 的txd 接mcu 的rxd 8 7

18、 輸入輸出連接到接口,與其它設(shè)備通過232相接9 2. 字符型液晶顯示器模塊的特點(diǎn)如下:(1)液晶顯示屏是以若干5*8 或 5*11 點(diǎn)陣塊等組成的顯示字符群。 每個(gè)點(diǎn)陣塊塊為一個(gè)字符位,字符間距和行間距都是一個(gè)點(diǎn)的寬度。(2)主控制電路為 hd44780 (hitachi)及 其他公司的兼容電路。從程序員的角度來看 lcd顯示接口與編程是面向hd44780 的,只要了解 hd44780的編程結(jié)構(gòu)即可進(jìn)行l(wèi)cd的顯示編程。(3)內(nèi)部具有字符發(fā)生器rom ,可顯示 192 種字符。(4)具有 64字節(jié)的字符發(fā)生器ram ,可以定義 8 個(gè) 5*8 點(diǎn)陣字符或 4個(gè) 5*11的點(diǎn)陣字符。(5)具有

19、 64 字節(jié)的數(shù)據(jù)顯示 ram ,供顯示器編程使用。(6)標(biāo)準(zhǔn)接口特性,與mc9s08 系列的 mcu 容易接口。(7)模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。(8)單+5v電源供電(寬溫型需要加-7v 驅(qū)動(dòng)電源)。(9)低功耗,高可靠性。10 第三章系統(tǒng)軟件設(shè)計(jì)3.1 mcu方(c)程序3.1.1 主程序 (main.c) /-* / 工 程 名: timer / 硬件連接 : mcu的串口與 pc方的串口相連/ 程序描述 : / (1)打開程序目錄中的 timer1.exe, 用串口發(fā)生給 mcu 表示時(shí)間的 3 字節(jié)數(shù)據(jù)/ (2)利用定時(shí)器溢出中斷修改時(shí)間, 并發(fā)送新時(shí)間/ 目的: 學(xué)習(xí)定時(shí)器基本

20、功能/ 說明: 無/-蘇 州 大 學(xué) 飛 思 卡 爾 嵌 入 式 系 統(tǒng) 實(shí) 驗(yàn) 室2010 年-* / 總頭文件#include includes.h / 在此添加全局變量定義uint8 time3; /記錄時(shí)間的數(shù)組void main(void) uint8 i=0; uint8 lcdbuff = yangqun ;/32個(gè)空格,顯示屏初始字符 uint8 remember; /記錄當(dāng)前秒數(shù)的變量 /1 關(guān)總中斷 disableinterrupt(); /禁止總中斷 /2 芯片初始化 mcuinit(); /3 模塊初始化 tpminit(1); /(1)定時(shí)器 1 初始化 sciini

21、t(1,system_clock,9600); /(2)串行口初始化 /4 內(nèi)存初始化 time0 = 0; /(1) 時(shí)分秒 緩存初始化 (00:00:00) time1 = 0; time2 = 0; remember = time2; /(2) 臨時(shí)變量 remember初始化 lcdshow(lcdbuff); /顯示初始字符11 /5 開放中斷 enablescireint(); /(1)開放串口接受中斷 enabletimerint(1); /(2)開放定時(shí)器 1 溢出中斷 enableinterrupt(); /(3)開放總中斷 /6 主循環(huán) while (1) if (time

22、2 != remember) scisendn(1, 3, time); lcdbuff0=time0/10+0; lcdbuff1=time0%10+0; lcdbuff2=time1/10+0; lcdbuff3=time1%10+0; lcdbuff4=time2/10+0; lcdbuff5=time2%10+0; lcdshow(lcdbuff) ; remember=time2; 3.1.2 中斷子程序 (isr.c) /-* / 文件名 : isr.c / 說明: 中斷處理函數(shù)文件/-* / 頭文件#include includes.h / 此處為用戶新定義中斷處理函數(shù)的存放處/

23、-* / 函數(shù)名 : isrt1out / 功能: 定時(shí)器 1溢出中斷處理函數(shù) , 以秒為最小單位計(jì)時(shí) , 并清定時(shí)器 1溢出標(biāo)志位 * / 參數(shù): 無/ 返回: 無/ 說明: 調(diào)用 secadd1函數(shù)/-* 12 interrupt void isrt1out(void) uint8 temp; disableinterrupt(); /禁止總中斷 secadd1(time); /1s到, 遞增時(shí), 分, 秒緩沖區(qū)的值 /清定時(shí)器 1 溢出標(biāo)志位 temp = aw60_tpm_cstr(1); / 讀 取定時(shí) 器 1 狀態(tài) 和控 制寄 存 器tpm1sc aw60_tpm_cstr(1)

24、&= (aw60_tpm_cstr_tof); / 向定時(shí)器溢出標(biāo)志位tof寫 0 enableinterrupt(); /開放總中斷 /-* / 函數(shù)名 : isrscire / 功能: sci接收中斷處理函數(shù) , 接收 3 個(gè)字節(jié)數(shù)據(jù)作為基準(zhǔn)時(shí)分秒的值, 放入/ time0-2 / 參數(shù): 無/ 返回: 無/ 說明: 調(diào)用了 sciren函數(shù)/-* interrupt void isrscire(void) uint8 temp; disableinterrupt(); /禁止總中斷 temp=sciren(1, 3, time); /接收 3 個(gè)字節(jié) , 放入 time 數(shù)組 e

25、nableinterrupt(); /開放總中斷 / 未定義的中斷處理函數(shù) , 本函數(shù)不能刪除interrupt void isrdummy(void) / 中斷處理子程序類型定義typedef void( *isr_func_t)(void); / 中斷矢量表,如果需要定義其它中斷函數(shù),請(qǐng)修改下表中的相應(yīng)項(xiàng)目const isr_func_t isr_vectors 0 xffcc = 13 isrdummy, / 0 xffcc /rti (periodic interrupt) vector isrdummy, / 0 xffce /iic vector isrdummy, / 0 xff

26、d0 /analog to digital conversion vector isrdummy, / 0 xffd2 /keyboard vector isrdummy, / 0 xffd4 /sci2 transmit vector isrdummy, / 0 xffd6 /sci2 receive vector isrdummy, / 0 xffd8 /sci2 error vector isrdummy, / 0 xffda /sci1 transmit vector isrscire, / 0 xffdc /sci1 receive vector isrdummy, / 0 xffd

27、e /sci1 error vector isrdummy, / 0 xffe0 /spi vector isrdummy, / 0 xffe2 /tpm2 overflow vector isrdummy, / 0 xffe4 /tpm2 channel 1 vector isrdummy, / 0 xffe6 /tpm2 channel 0 vector isrt1out, / 0 xffe8 /tpm1 overflow vector isrdummy, / 0 xffea /tpm1 channel 5 vector isrdummy, / 0 xffec /tpm1 channel

28、4 vector isrdummy, / 0 xffee /tpm1 channel 3 vector isrdummy, / 0 xfff0 /tpm1 channel 2 vector isrdummy, / 0 xfff2 /tpm1 channel 1 vector isrdummy, / 0 xfff4 /tpm1 channel 0 vector isrdummy, / 0 xfff6 /icg vector isrdummy, / 0 xfff8 /low voltage detect vector isrdummy, / 0 xfffa /irq pin vector isrd

29、ummy / 0 xfffc /swi vector / reset defined in project.prm ; 3.1.3 lcd 子程序 (lcd.c) /-* / 文件名 : lcd.c / 說明: lcd 驅(qū)動(dòng)/-* #include lcd.h /該頭文件包含寄存器及相關(guān)位定義/-* / 函數(shù)名 : lcdinit / 功能: 初始化 lcd(hd44780),設(shè)置顯示方式 , 輸入方式 , 并清屏/ 參數(shù): 無/ 返回: 無14 / 說明: 調(diào)用了 lcdcommand 函數(shù)/-* void lcdinit(void) uint16 i; /定義數(shù)據(jù)口 (pta0-7) 為輸

30、出 lcddatad = 0b11111111; / | / |+-pta0 / |+-pta1 / |+-pta2 / |+-pta3 / |+-pta4 / |+-pta5 / |+-pta6 / +-pta7 /定義控制口 (ptc4,ptc6)為輸出 lcdctrld1 |=(1lcdrs); lcdctrld1 |=(1lcdrw); lcdctrl1 &=(1lcdrs); /rs、r/w=00,寫指令 lcdctrl1 &=(1lcdrw); /定義控制口 (ptf6)為輸出 lcdctrld2 |=(1lcde); lcdctrl2 |=(1 1.6ms 15

31、for(i = 0; i 40us for(i = 0; i 1000; i+) asm(nop); /2 數(shù)據(jù)送到 lcd的數(shù)據(jù)線上 lcddata = cmd; /3 給出 e 信號(hào)的下降沿 , 使數(shù)據(jù)寫入 lcd lcdctrl2 |=(1lcde); asm(nop); asm(nop); asm(nop); lcdctrl2 &=(1 40us for(i = 0; i 1000; i+) asm(nop); 16 /-* / 函數(shù)名 : lcdshow / 功能: 在 lcd(hd44780) 顯示屏上顯示 32 個(gè)數(shù)據(jù)/ 參數(shù): str 待顯示數(shù)據(jù)的首地址/ 返回: 無/

32、 說明: 調(diào)用 lcdinit 、lcdcommand 函數(shù)/-* void lcdshow(uint8 str) uint8 i; /1 lcd初始化 lcdinit(); /2 顯示第 1行 16 個(gè)字符 /2.1 設(shè)置顯示首地址 lcdctrl1 &=(1lcdrs); /rs、r/w=00,寫指令 lcdctrl1 &=(1lcdrw); lcdcommand(0b10000000); /后 7 位為 ddram 地址 0 x00 /2.2 寫 16 個(gè)數(shù)據(jù)到 ddram lcdctrl1 |=1lcdrs; /rs 、r/w=10,寫數(shù)據(jù)到 ddram 中 lcdct

33、rl1 |=(1lcdrw); for (i = 0;i 16;i+)/將要顯示在第 1 行上的 16 個(gè)數(shù)據(jù)逐個(gè)寫入 dd ram中 lcdcommand(stri); /3 顯示第 2 行 16 個(gè)字符/3.1 設(shè)置顯示首地址lcdctrl1 &=(1lcdrs); /rs、r/w=00,寫指令lcdctrl1 &=(1lcdrw); lcdcommand(0b11000000); /后 7 位為 ddram 地址 0 x40 /3.2 再寫 16個(gè)數(shù)據(jù)到 ddram lcdctrl1 |=1lcdrs; /rs 、r/w=10,寫數(shù)據(jù)到 ddram 中 lcdctrl1

34、&=(1lcdrw); for (i = 16;i 2) tpmno=2; else if(tpmno= 60) /秒溢出 *(p+2) = 0; /清秒 *(p+1) += 1; /分加 1 if (*(p+1) = 60) /分溢出 *(p+1) = 0; /清時(shí) *p += 1; /時(shí)加 1 if (*p = 24) /時(shí)溢出 *p = 0; /清時(shí) 3.1.5 串行通信子程序/-* / 文件名 : sci.c / 說明: sci 構(gòu)件函數(shù)源文件/-* / 頭文件#include sci.h /該頭文件包含 sci相關(guān)寄存器及標(biāo)志位宏定義/-* / 函數(shù)名 : sciinit /

35、 功能: 初始化 scix 模塊。 x 代表 1,2 / 參數(shù): uint8 scino: 第 scino個(gè) sci模塊。其中 scino取值為 1,2 / 如果 scino大于 2,則認(rèn)為是 2 19 / uint8 sysclk: 系統(tǒng)總線時(shí)鐘,以mhz 為單位/ uint16 baud: 波特率,如 4800,9600,19200,38400 / 一般來說,速度慢一點(diǎn),通信會(huì)更穩(wěn)定/ 返回: 無/ 說明: scino=1 表示使用 sci1 模塊,依此類推。/-* void sciinit(uint8 scino, uint8 sysclk, uint16 baud) uint16 ub

36、gs; ubgs=0; if(scino 2) scino = 2; /若傳進(jìn)的通道號(hào)大于2,則按照 2 來接收 /1.計(jì) 算 波 特 率 并 設(shè) 置 :ubgs = fsys/(波 特 率 *16)(其 中fsys=sysclk*1000000) ubgs = sysclk*(10000/(baud/100)/16; /理解參考上一行, 此處便于 cpu運(yùn)算 sci_bdh(scino) = (uint8)(ubgs & 0 xff00) 8); sci_bdl(scino) = (uint8)(ubgs & 0 x00ff); /無校驗(yàn) , 正常模式 ( 開始信號(hào) + 8

37、位數(shù)據(jù) ( 先發(fā)最低位 ) + 停止信號(hào) ) sci_c1(scino) = 0b00000000; /sci控制寄存器 1 / | / |+-pt -奇偶校驗(yàn)類型,在pe=1時(shí)游泳 / |+-pe -奇偶校驗(yàn)使能, / |+-ilt -閑置線路類型選擇 / |+-wakei-接受長期喚醒方式選擇 / |+-m -9位或 8 位數(shù)據(jù)選擇 / |+-rsrc -接收器源選擇 / |+-sciswai 等待模式中 sci停止 / +-loops-循環(huán)模式選擇 /允許發(fā)送 , 允許接收 , 中斷方式收發(fā) sci_c2(scino) = 0b00001100; /sci控制寄存器 2 / | / |+

38、-sbk -發(fā)送中止字符 / |+-rwu -接收器喚醒控制 / |+-re -接收器使能 / |+-te -發(fā)送器使能 / |+-ilie -閑置線路中斷使能 / |+-rie -接收器中斷使能 / |+-tcie -發(fā)送完成中斷使能 / +-tie -發(fā)送中斷使能 20 /-* / 函數(shù)名 : scisend1 / 功能: 串行發(fā)送 1 個(gè)字節(jié)/ 參數(shù): uint8 scino: 第 scino個(gè) sci 模塊,其中 scino取值為 1,2 / uint8 ch: 要發(fā)送的字節(jié)/ 返回: 無/ 說明: scino=1 表示使用 sci1 模塊,依此類推/-* void scisend1(

39、uint8 scino, uint8 ch) if(scino 2) scino = 2; /若傳進(jìn)的通道號(hào)大于2,則按照 2 來接收 while(!(sci_s1(scino) & 0b1000000);/判斷發(fā)送緩沖區(qū)是否為空 sci_d(scino) = ch; /-* / 函數(shù)名 : scisendn / 功能: 串行發(fā)送 n個(gè)字節(jié)/ 參數(shù): uint8 scino: 第 scino個(gè) sci 模塊,其中 scino取值為 1,2 / uint16 n: 發(fā)送的字節(jié)數(shù)/ uint8 ch: 待發(fā)送的數(shù)據(jù)/ 返回: 無/ 說明: scino=1 表示使用 sci1 模塊,依此類推

40、/ 調(diào)用了 scisend1函數(shù)/-* void scisendn(uint8 scino, uint16 n, uint8 ch) uint16 i; if(scino 2) scino = 2; /若傳進(jìn)的通道號(hào)大于2,則按照 2 來接收 for (i = 0; i 2) scino = 2; /若傳進(jìn)的通道號(hào)大于2,則按照 2 來接收 for (k = 0; k = 0 xfbbb) /接受失敗 i = 0 xff; *p = 0 x01; return i; /-* / 函數(shù)名 : sciren / 功能: 從串口接收 n個(gè)字節(jié)的數(shù)據(jù)/ 參數(shù): uint8 scino: 第 scino個(gè) sci 模塊,其中 scino取值為 1,2 / uint16

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論