單片機(jī)_數(shù)字鐘課程設(shè)計(jì)_第1頁
單片機(jī)_數(shù)字鐘課程設(shè)計(jì)_第2頁
單片機(jī)_數(shù)字鐘課程設(shè)計(jì)_第3頁
單片機(jī)_數(shù)字鐘課程設(shè)計(jì)_第4頁
單片機(jī)_數(shù)字鐘課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(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ì)名稱: 系 : 學(xué)生姓名: 班 級(jí): 學(xué) 號(hào): 成 績: 指導(dǎo)教師: 開課時(shí)間: 學(xué)年 學(xué)期一設(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ì)中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計(jì)

2、進(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)告。周一周二周三周四周五講課設(shè)內(nèi)容,安排任務(wù)查資料,確定硬件電路方案畫出程序流程圖,寫出程序清單畫出程序流程圖,寫出程序清單寫總結(jié)報(bào)告四進(jìn)度安排五成績?cè)u(píng)定考核方法:現(xiàn)場驗(yàn)收(占50%),課程設(shè)計(jì)報(bào)

3、告(占50%)。考核內(nèi)容:學(xué)習(xí)態(tài)度(出勤情況,平時(shí)表現(xiàn)等)、方案合理性、程序編制質(zhì)量、演示效果、設(shè)計(jì)報(bào)告質(zhì)量。成績?cè)u(píng)定:優(yōu),良,中,及格,不及格。特別說明:如發(fā)現(xiàn)抄襲,按照不及格處理。目錄第一章 系統(tǒng)概要1.1 系統(tǒng)背景 11.2 系統(tǒng)功能 1第二章 系統(tǒng)硬件設(shè)計(jì)2.1 系統(tǒng)原理圖 22.2 單片機(jī)(MCU)模塊 MC9S08AW60單片機(jī)功能概述 2 內(nèi)部結(jié)構(gòu)簡圖 32.3 串行通信模塊 MAX232引圖 3 串行通信的電路原理 42.4 液晶顯示模塊 5第三章 系統(tǒng)軟件設(shè)計(jì)3.1 MCU方(C)程序串行通信子程序 7 LCD子程序 11第四章 系統(tǒng)測試 14第五章 總結(jié)展望5.1 總結(jié) 1

4、65.2 展望 16參考文獻(xiàn) 16第一章 系統(tǒng)概要1.1 系統(tǒng)背景單片機(jī)技術(shù)自發(fā)展以來已走過了近20年的發(fā)展路程 。單片機(jī)技術(shù)的發(fā)展以微處理器(MPU)技術(shù)及超大規(guī)模集成電路技術(shù)的發(fā)展為先導(dǎo),以廣泛的應(yīng)用領(lǐng)域拉動(dòng),表現(xiàn)出較微處理器更具個(gè)性的發(fā)展趨勢(shì)。小到遙控電子玩具,大到航空航天技術(shù)等電子行業(yè)都有單片機(jī)應(yīng)用的影子。1946年第一臺(tái)電子計(jì)算機(jī)誕生至今,依靠微電子技術(shù)和半導(dǎo)體技術(shù)的進(jìn)步,從電子管晶體管集成電路大規(guī)模集成電路,使得計(jì)算機(jī)體積更小,功能更強(qiáng)。特別是近20年時(shí)間里,計(jì)算機(jī)技術(shù)獲得飛速的發(fā)展,計(jì)算機(jī)在工農(nóng)業(yè),科研,教育,國防和航空航天領(lǐng)域獲得了廣泛的應(yīng)用,計(jì)算機(jī)技術(shù)已經(jīng)是一個(gè)國家現(xiàn)代科技水

5、平的重要標(biāo)志。單片機(jī)誕生于20世紀(jì)70年代,所謂單片機(jī)是利用大規(guī)模集成電路技術(shù)把中央處理單元(Center Processing Unit,也即常稱的CPU)和數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM)及其他I/O通信口集成在一塊芯片上,構(gòu)成一個(gè)最小的計(jì)算機(jī)系統(tǒng),而現(xiàn)代的單片機(jī)則加上了中斷單元,定時(shí)單元及A/D轉(zhuǎn)換等更復(fù)雜、更完善的電路,使得單片機(jī)的功能越來越強(qiáng)大,應(yīng)用廣泛。20世紀(jì)70年代,微電子技術(shù)正處于發(fā)展階段,集成電路屬于中規(guī)模發(fā)展時(shí)期,各種新材料新工藝尚未成熟,單片機(jī)仍處在初級(jí)的發(fā)展階段,元件集成規(guī)模還比較小,功能比較簡單,一般均把CPU、RAM有的還包括了一些簡單的I/O口集成到芯

6、片上,像Fairchild公司就屬于這一類型,它還需配上外圍的其他處理電路方才構(gòu)成完整的計(jì)算系統(tǒng)。九十年代以后,單片機(jī)獲得了飛速的發(fā)展,世界各大半導(dǎo)體公司相繼開發(fā)了功能更為強(qiáng)大的單片機(jī)。美國Microchip公司發(fā)布了一種完全不兼容MCS-51的新一代PIC系列單片機(jī),引起了業(yè)界的廣泛關(guān)注,特別它的產(chǎn)品只有33條精簡指令集吸引了不少用戶,使人們從INTEL的111條復(fù)雜指令集中走出來。PIC單片機(jī)獲得了快速的發(fā)展,在業(yè)界中占有一席之地。21世紀(jì)新一代的嵌入式處理器已經(jīng)開始內(nèi)嵌網(wǎng)絡(luò)接口,除了支持TCPIP協(xié)議,還有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一

7、種或者幾種,同時(shí)也需要提供相應(yīng)的通信組網(wǎng)協(xié)議軟件和物理層驅(qū)動(dòng)軟件。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)就一秒一秒的計(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 顯示器要求每顯示一次就刷新一次,或者刷新頻率更高些。第二章 系統(tǒng)硬件設(shè)計(jì)2.1 系統(tǒng)原理圖上圖中AW60是主要模塊,所有的

8、信號(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ù)位等操作。2.2 單片機(jī)(MCU)模塊2.2.1 MC9S08AW60單片機(jī)性能概述S80是單芯片8位微控制器解決法案。MC9S08AW60/AW60/AW48/AW32/AW16是低成本高性能的8位餓、微處理器單元(MCU)S08家族中的成員。家族中有的MCU使

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

10、作碼檢測與復(fù)位;非法地址檢測與復(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)制功能。AW子系列MCU的4種封裝形式只是引腳數(shù)量和形式有所區(qū)別,其他方面是一致的。2.2.2 內(nèi)部結(jié)構(gòu)簡圖1. 內(nèi)部結(jié)構(gòu)簡圖存儲(chǔ)器2KB RAM64KB FlashPLLGPIOJTAGSPIIIC SCII6通道定時(shí)器/PW

11、M2通道定時(shí)器/PWM SCI2A/D KBI DBGBDM HCS08內(nèi)核CPURT1 COP IRQ LVDBDC 圖2-1 AW60 MCU內(nèi)部結(jié)構(gòu)框圖圖2-1給出了SW60內(nèi)部結(jié)構(gòu)框圖,它對(duì)于我們理解和應(yīng)用AW60 MCU有重要作用,在學(xué)習(xí)了基本方法后,應(yīng)再反過來熟悉這個(gè)內(nèi)部結(jié)構(gòu)圖,以便好好地理解AW60 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ù)位與中斷模塊等。

12、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)換器不僅可以由晶振管分立元件構(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)V;(5)C2+,C2-(4,5腳):一般接1uF的電解電容

13、;(6)C1+,C2-(1,3腳):一般接1uF的電解電容。 2.3.2 串行通信的電路原理 圖2-2 MAX232引腳1、焊接到PCB板上的MSX232芯片檢測方法正常情況下,(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

14、電平,通過RS-232電平轉(zhuǎn)換器芯片轉(zhuǎn)換成RS-232電平,上圖就是基本串行通信的電平轉(zhuǎn)換電路。2、 MAX232芯片進(jìn)行電平轉(zhuǎn)換的基本原理發(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)

15、換作用。表1 MAX232芯片輸入輸出引腳分類與基本接法組別TTL電平引腳方向典型接口232電平引腳方向典型接口11112輸入輸出接MCU的TxD接MCU的RxD1314輸入輸出連接到接口,與其它設(shè)備通過232相接2109輸入輸出接MCU的TxD接MCU的RxD87輸入輸出連接到接口,與其它設(shè)備通過232相接輸入輸出引腳分兩組,基本含義如表1所示。在實(shí)際使用時(shí),若只需要一路串行通信接口,可以使用其中任何一組。2.4 液晶顯示模塊點(diǎn)陣字符型LCD基本特點(diǎn):LCD作為電子信息產(chǎn)品的主要顯示器件,相對(duì)于其他類型的顯示器件來說有其自身的特點(diǎn),主要包括:(1)低電壓,低功耗;(1)平板型結(jié)構(gòu);(3)使用

16、壽命長;(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 EPSON),KS0066(SAMSUNG),NJU6408(NER

17、JAPANRADIO)等。字符型液晶顯示器模塊的特點(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)行LCD的顯示編程。(3)內(nèi)部具有字符發(fā)生器ROM,可顯示192種字符。(4)具有64字節(jié)的字符發(fā)生器RAM,可以定義8個(gè)5*8點(diǎn)陣字符或4個(gè)5*11的點(diǎn)陣字符。(5)具有64字節(jié)的數(shù)據(jù)顯示RAM,供顯示器編程使用。(6)標(biāo)準(zhǔn)接口特性,與MC

18、9S08系列的MCU容易接口。(7)模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。(8)單+5V電源供電(寬溫型需要加-7V驅(qū)動(dòng)電源)。(9)低功耗,高可靠性。LCD(YM1602C)16151413121110090807060504030201Core2LCD_D7LCD_D6LCD_D5LCD_D4LCD_D3LCD_D2LCD_D1LCD_D0LCD_ELCD_RWLCD_RSVccGNDPTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTF6PTC6PTC4AW60MCU控制液晶顯示接口接線圖第三章 系統(tǒng)軟件設(shè)計(jì)3.1 MCU方(C)程序串行通信子程序/-*/說 明: SCI構(gòu)件函數(shù)

19、源文件/-*/頭文件#include "SCI.h" /該頭文件包含SCI相關(guān)寄存器及標(biāo)志位宏定義/-*/函數(shù)名: SCIInit /功 能: 初始化SCIx模塊。x代表1,2 /參 數(shù): uint8 SCINo: 第SCINo個(gè)SCI模塊。其中SCINo取值為1,2 / 如果SCINo大于2,則認(rèn)為是2 / uint8 sysclk: 系統(tǒng)總線時(shí)鐘,以MHz為單位 / uint16 baud: 波特率,如 4800,9600,19200,38400 / 一般來說,速度慢一點(diǎn),通信會(huì)更穩(wěn)定 /返 回: 無 /說 明: SCINo=1表示使用SCI1模塊,依此類推。 /-*v

20、oid SCIInit(uint8 SCINo, uint8 sysclk, uint16 baud) uint16 ubgs; 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 & 0xFF00) >> 8); SCI_BDL(SCI

21、No) = (uint8)(ubgs & 0x00FF); /無校驗(yàn),正常模式(開始信號(hào) + 8位數(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(S

22、CINo) = 0b00001100; /SCI控制寄存器2 / | / |+-SBK -發(fā)送中止字符 / |+-RWU -接收器喚醒控制 / |+-RE -接收器使能 / |+-TE -發(fā)送器使能 / |+-ILIE -閑置線路中斷使能 / |+-RIE -接收器中斷使能 / |+-TCIE -發(fā)送完成中斷使能 / +-TIE -發(fā)送中斷使能 /-*/函數(shù)名: SCISend1 /功 能: 串行發(fā)送1個(gè)字節(jié) /參 數(shù): uint8 SCINo: 第SCINo個(gè)SCI模塊,其中SCINo取值為1,2 / uint8 ch: 要發(fā)送的字節(jié) /返 回: 無 /說 明: SCINo=1表示使用SCI

23、1模塊,依此類推 /-*void SCISend1(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ù) /返 回: 無 /說 明: SC

24、INo=1表示使用SCI1模塊,依此類推 / 調(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 < n; i+) SCISend1(SCINo,chi);/-*/函數(shù)名: SCIRe1 /功 能: 從串口接收1個(gè)字節(jié)的數(shù)據(jù) /參 數(shù): uint8 SCINo: 第SCINo個(gè)SCI模塊,其中SCINo取值為1,2 /返 回: 接收到的數(shù)(若接收失敗,返回0xff) /

25、uint8 *p: 接收成功標(biāo)志的指針(0表示成功,1表示不成功) /說 明: 參數(shù)*p帶回接收標(biāo)志,*p = 0,收到數(shù)據(jù);*p = 1,未收到數(shù)據(jù) */說 明: SCINo=1表示使用SCI1模塊,依此類推 /-*uint8 SCIRe1(uint8 SCINo, uint8 *p) uint16 k; uint8 i; if(SCINo > 2) SCINo = 2; /若傳進(jìn)的通道號(hào)大于2,則按照2來接收 for (k = 0; k < 0xfbbb; k+)/有時(shí)間限制 if(SCI_S1(SCINo) & 0b00100000) != 0)/判斷接收緩沖區(qū)是否滿

26、 i = SCI_D(SCINo); *p = 0x00; break; if (k >= 0xfbbb) /接受失敗 i = 0xff; *p = 0x01; return i;/-*/函數(shù)名: SCIReN /功 能: 從串口接收N個(gè)字節(jié)的數(shù)據(jù) /參 數(shù): uint8 SCINo: 第SCINo個(gè)SCI模塊,其中SCINo取值為1,2 / uint16 n: 要接收的字節(jié)數(shù) / uint8 ch: 存放接收數(shù)據(jù)的數(shù)組 /返 回: 接收標(biāo)志= 0 接收成功,= 1 接收失敗 /說 明: SCINo=1表示使用SCI1模塊,依此類推 / 調(diào)用了SCIRe1函數(shù) /-*uint8 SCIR

27、eN(uint8 SCINo, uint16 n, uint8 ch) uint16 m; uint8 fp; /接收標(biāo)志 m = 0; if(SCINo > 2) SCINo = 2; /若傳進(jìn)的通道號(hào)大于2,則按照2來接收 while (m < n) chm = SCIRe1(SCINo, &fp); if (fp = 1) return 1; /接收失敗 m+; return 0; /接收成功 /-*/函數(shù)名: SCISendString /功 能: 串口傳輸字符串 /參 數(shù): uint8 SCINo: 第SCINo個(gè)SCI模塊,其中SCINo取值為1,2 / cha

28、r *p: 要傳輸?shù)淖址闹羔?/返 回: 無 /說 明: 字符串以'0'結(jié)束 / 調(diào)用了SCISend1 函數(shù) /-*void SCISendString(uint8 SCINo,char *p) uint32 k; if(SCINo > 2) SCINo = 2; /若傳進(jìn)的通道號(hào)大于2,則按照2來接收 if(p = 0) return; for(k = 0; pk != '0' +k) SCISend1(SCINo,pk); LCD子程序/-*/ 文件名: LCD.c / 說 明: LCD驅(qū)動(dòng) /-*#include "LCD.h&quo

29、t; /該頭文件包含寄存器及相關(guān)位定義/-*/函數(shù)名: LCDinit /功 能: 初始化LCD(HD44780),設(shè)置顯示方式,輸入方式,并清屏 /參 數(shù): 無 /返 回: 無 /說 明: 調(diào)用了LCDcommand函數(shù) /-*void LCDinit(void) uint16 i; /定義數(shù)據(jù)口(PTA0-7)為輸出 LCDdataD = 0b11111111; / | / |+-PTA0 / |+-PTA1 / |+-PTA2 / |+-PTA3 / |+-PTA4 / |+-PTA5 / |+-PTA6 / +-PTA7 /定義控制口(PTC4,PTC6)為輸出 LCDctrlD1 |

30、=(1<<LcdRS); LCDctrlD1 |=(1<<LcdRW); LCDctrl1 &=(1<<LcdRS); /RS、R/W=00,寫指令 LCDctrl1 &=(1<<LcdRW); /定義控制口(PTF6)為輸出 LCDctrlD2 |=(1<<LcdE); LCDctrl2 |=(1<<LcdE); /E=1 /1 功能設(shè)置 LCDcommand(0b00111000); /5*7點(diǎn)陣模式, 2行顯示,8位數(shù)據(jù)總線 / | / |+-設(shè)置點(diǎn)陣模式,0-5*7點(diǎn)陣,1-5*10點(diǎn)陣 / |+-

31、設(shè)置顯示行數(shù),1-2行顯示,0-1行顯示 / +-設(shè)置數(shù)據(jù)接口位數(shù),1-8位數(shù)據(jù)總線,0-4位數(shù)據(jù)總線 /2 顯示開關(guān)控制 LCDcommand(0b00001000); / 不閃爍, 關(guān)光標(biāo)顯示,關(guān)顯示 / | / |+-閃爍控制,0-不閃爍,1-閃爍 / |+-光標(biāo)控制,0-關(guān)光標(biāo),1-開光標(biāo) / +-顯示控制,0-關(guān)顯示,1-開顯示 /3 清屏 /3.1清DD RAM內(nèi)容,光標(biāo)回原位,清AC LCDcommand(0b00000001); for(i = 0; i< 4000; i+) asm("NOP"); /4 輸入方式設(shè)置 LCDcommand(0b000

32、00110); / 顯示不移動(dòng),光標(biāo)左移(A = 1), 數(shù)據(jù)讀寫操作后,AC自動(dòng)增1 / | / |+-0-顯示不移動(dòng),1-顯示移動(dòng) / +-0-AC自動(dòng)減1,1-AC自動(dòng)增1 /5 光標(biāo)或畫面移位設(shè)置 LCDcommand(0b00010100);/光標(biāo)右移一個(gè)字符位,AC自動(dòng)加1 /6 顯示開關(guān)控制 LCDcommand(0b00001100); /不閃爍, 關(guān)光標(biāo)顯示,開顯示 / | / |+-閃爍控制,1-閃爍,0-不閃爍 / |+-光標(biāo)控制,1-開光標(biāo),0-關(guān)光標(biāo) / +-顯示控制,1-開顯示,0-關(guān)顯示/-*/函數(shù)名: LCDcommand /功 能: 執(zhí)行給定的LCD命令,并延

33、時(shí) /參 數(shù): cmd:待執(zhí)行的命令 /返 回: 無 /說 明: 無 /-*void LCDcommand(uint8 cmd) uint16 i; /1 等待 > 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 |=(1<<LcdE); asm("NOP"); asm("NOP"); asm("NOP"); LCDctrl2 &=(1<<LcdE); /Lcd結(jié)束接收數(shù)據(jù) /4 等待 > 40us for(i = 0; i < 1000; i+) asm(

溫馨提示

  • 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)論