基于ARM9單片機(jī)多功能數(shù)字電壓表的設(shè)計(jì)_第1頁
基于ARM9單片機(jī)多功能數(shù)字電壓表的設(shè)計(jì)_第2頁
基于ARM9單片機(jī)多功能數(shù)字電壓表的設(shè)計(jì)_第3頁
基于ARM9單片機(jī)多功能數(shù)字電壓表的設(shè)計(jì)_第4頁
基于ARM9單片機(jī)多功能數(shù)字電壓表的設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué)號(hào) 2012051448 數(shù)字電壓表的設(shè)計(jì)( 2012 級(jí)本科)課程名稱: 嵌入式Linux應(yīng)用開發(fā) 學(xué) 院: 信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): 2012級(jí)(4)班 作者姓名: 張 倩 完成日期: 2015 年 6 月 25 日 摘 要數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎(chǔ),在日常維修、教學(xué)和科研中,電壓表是不可缺少的。本文以ARM9-S3C2440單片機(jī)為基礎(chǔ)設(shè)計(jì)出一種結(jié)構(gòu)簡(jiǎn)單、工作可靠、靈活性好的多功能數(shù)字電壓表。本文設(shè)計(jì)的數(shù)字電壓表主要包括兩部分:硬件電路的分析及軟件程序的設(shè)計(jì)。基于單片機(jī)的數(shù)字電壓表的硬件系統(tǒng)、軟件系統(tǒng)的設(shè)計(jì)原理及具體實(shí)現(xiàn)方案作以詳細(xì)介紹。其中,在軟

2、件部分,大致介紹了軟件設(shè)計(jì)所使用的編程語言和編程思路,及運(yùn)行期間出現(xiàn)的問題及解決方案。在硬件部分,詳細(xì)分析了設(shè)計(jì)原理、使用方法和功能,同時(shí),對(duì)各部分接口電路作大致介紹。該設(shè)計(jì)主要由四個(gè)模塊組成:A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊,顯示模塊及各驅(qū)動(dòng)控制模塊組成。設(shè)計(jì)過程中對(duì)單路的選擇進(jìn)行了擴(kuò)展研究,提出了通過按鍵控制實(shí)現(xiàn)多路選擇的新思路,使其具有更大的發(fā)展空間,可用性更大,更能滿足實(shí)際生活的需要。本設(shè)計(jì)總體實(shí)現(xiàn)基于ARM9-S3C2440平臺(tái)實(shí)現(xiàn)AD轉(zhuǎn)換,并設(shè)計(jì)顯示屏背景,在TFT LCD屏上顯示電壓值及AD轉(zhuǎn)換的高測(cè)量精度的數(shù)字值,同時(shí)超出一定電壓值時(shí)具有報(bào)警功能,并且能實(shí)現(xiàn)多路測(cè)量,可通過按鍵選擇

3、某路通道等多功能的數(shù)字電壓表。 關(guān)鍵詞:數(shù)字電壓表,A/D轉(zhuǎn)換,LCD屏,多路,鍵盤控制 目錄第1章 需求分析3§1.1 設(shè)計(jì)目的3§1.2 系統(tǒng)設(shè)計(jì)3§1.3 設(shè)計(jì)的功能要求4§1.4 應(yīng)用軟件簡(jiǎn)介5第2章 硬件電路設(shè)計(jì)分析6§2.1 單片機(jī)模塊6§2.2 ADC數(shù)模轉(zhuǎn)換6第3章 軟件設(shè)計(jì)8§3.1 軟件設(shè)計(jì)總流程圖8§3.2 A/D轉(zhuǎn)換模塊9§3.3 顯示模塊11§3.4 鍵盤輸入模塊15§3.5 報(bào)警模塊16§3.6 LED燈閃亮模塊16§3.7 字符取模模塊

4、17結(jié)論19參考文獻(xiàn)20第1章 需求分析§1.1 設(shè)計(jì)目的通過制作簡(jiǎn)易的數(shù)字電壓表,加深對(duì)所學(xué)專業(yè)知識(shí)的認(rèn)識(shí),提高分析,解決工程實(shí)際問題的能力,提高對(duì)單片機(jī)的應(yīng)用能力,提高收集文獻(xiàn),資料的能力,從而達(dá)到綜合運(yùn)用所學(xué)的專業(yè)知識(shí)進(jìn)行電子產(chǎn)品設(shè)計(jì),制作與調(diào)試的能力。這個(gè)課題的目的和意義在于使自己掌握對(duì)數(shù)字電壓表的理解,自己動(dòng)手設(shè)計(jì)數(shù)字電壓表,它可以廣泛的應(yīng)用于電壓測(cè)量, DVM廣泛應(yīng)用于測(cè)量領(lǐng)域每期測(cè)量的準(zhǔn)確度和可信度取決于它的主要性能和技術(shù)指標(biāo)。所示我們要學(xué)習(xí)和掌握如何設(shè)計(jì)DVM就顯得十分重要。§1.2 系統(tǒng)設(shè)計(jì)本文設(shè)計(jì)的數(shù)字電壓表主要包括兩部分:硬件電路的分析及軟件程序的編程

5、。基于單片機(jī)的數(shù)字電壓表的硬件系統(tǒng)、軟件系統(tǒng)的設(shè)計(jì)原理及具體實(shí)現(xiàn)方案作以詳細(xì)介紹。1 在硬件電路部分,大致介紹了數(shù)字電壓表的設(shè)計(jì)原理、使用方法和功能。同時(shí),對(duì)各部分接口電路作大致介紹。該設(shè)計(jì)主要由四個(gè)模塊組成:A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊,顯示模塊,鍵盤控制模塊組成。2 在軟件部分,較為詳細(xì)的討論了本設(shè)計(jì)軟件所使用的編程語言和編程思路,及運(yùn)行期間出現(xiàn)的問題及解決方案,擴(kuò)展部分在現(xiàn)有功能的電壓表基礎(chǔ)上,發(fā)現(xiàn)新的更好的思路。軟件的程序可采用C語言或匯編,這里主要采用C語言,詳細(xì)的設(shè)計(jì)思路在后面介紹。3 總體上,設(shè)計(jì)過程中對(duì)單路的選擇進(jìn)行了擴(kuò)展研究,提出了通過按鍵控制實(shí)現(xiàn)多路選擇的新思路,使其具有更

6、大的發(fā)展空間,可用性更大,更能滿足實(shí)際生活的需要。4 詳細(xì)如下圖2-1系統(tǒng)框圖所示。 圖2-1 系統(tǒng)框圖§1.3 設(shè)計(jì)的功能要求本課題采用模-數(shù)(A/D)轉(zhuǎn)換的方法實(shí)現(xiàn)電壓數(shù)字化測(cè)量,設(shè)計(jì)的功能要求滿足下述五點(diǎn):1. 以ARM9-S3C2440單片機(jī)為核心器件,組成一個(gè)多功能的直流數(shù)字電壓表,在該平臺(tái)上實(shí)現(xiàn)了AD轉(zhuǎn)換。2. 設(shè)計(jì)顯示屏背景,在TFT LCD屏上顯示電壓值及AD轉(zhuǎn)換的數(shù)字值,至少能過顯示兩位小數(shù)。3. 超出一定電壓值時(shí)具有報(bào)警功能,如:LED燈點(diǎn)亮,蜂鳴器循環(huán)報(bào)警,屏幕上方出現(xiàn)紅色警報(bào)圖標(biāo)(正常情況下是綠色)等,以便及時(shí)提醒用戶。4. 實(shí)現(xiàn)多路模擬量輸入,能過測(cè)量0-5

7、V之間的直流電壓值。5. 用戶可通過按鍵選擇某路測(cè)量等多功能的數(shù)字電壓表。§1.4 應(yīng)用軟件簡(jiǎn)介本課題中運(yùn)用到多種軟件,常用的有keil軟件,J-LINK調(diào)試器軟件,RGB顏色查詢軟件,字符取模軟件,及圖像取模軟件等多款軟件,要求熟練Keil,取模軟件的使用。1.4.1 Keil軟件的使用Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(Vision)將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等

8、操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來說是十分必要的,如果使用C語言編程,那么Keil幾乎就是的不二之選(目前在國內(nèi)只能買到該軟件、而買的仿真機(jī)也很可能只支持該軟件),即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍.C51工具包的整體結(jié)構(gòu),其中Vision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由L

9、IB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。第2章 硬件電路設(shè)計(jì)分析 §2.1 單片機(jī)模塊2.1.1 S3C2440單片機(jī)原理圖 S3C2440A是三星公司的16/32位精簡(jiǎn)指令集(RISC)微處理器。三星公司的S3C2440A為手持設(shè)備和普通應(yīng)用提供了低功耗和高性能的小型芯片微控制器的解決方案。S3C2440A基于ARM920T核心,0.13µ

10、m的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)器單元。低功耗,簡(jiǎn)單,精致,且全靜態(tài)設(shè)計(jì)特別適合于對(duì)成本和功率敏感型的應(yīng)用。它采用了新的總線架構(gòu)如先進(jìn)微控制總線構(gòu)架(AMBA)。 1. S3C2440單片機(jī)實(shí)物圖 圖3-1 S3C2440單片機(jī) 包括:串口線,JLINK,大排線,轉(zhuǎn)接小板,小排線,USB轉(zhuǎn)串口線,電源,開發(fā)板,JLINK連接線,網(wǎng)線等組成。§2.2 ADC數(shù)模轉(zhuǎn)換2.2.1 S3C2440ADC的主要特性 A/D轉(zhuǎn)換,又稱為模數(shù)轉(zhuǎn)換,是將模擬信號(hào)轉(zhuǎn)換為計(jì)算機(jī)能夠處理的數(shù)字信號(hào)。S3C2440集成了8通道10位CMOS A/D轉(zhuǎn)換器。S3C2440的CMOS模擬數(shù)字轉(zhuǎn)換器ADC可

11、以對(duì)8通道模擬輸入信號(hào)進(jìn)行循環(huán)檢測(cè),S3C2440的ADC和觸摸屏公用一個(gè)ADC轉(zhuǎn)換器。2.2.2 ADC轉(zhuǎn)換原理ADC是一種將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)的方法,一般要經(jīng)過采樣、保持、量化、編碼4個(gè)步驟。在實(shí)際電路中,有些過程是合并進(jìn)行的,如采樣和保持,量化和編碼在轉(zhuǎn)換過程中時(shí)同時(shí)實(shí)現(xiàn)的。由奈奎特采樣定理可知,當(dāng)采樣頻率大于模擬信號(hào)中最高頻率的2倍時(shí),采樣值才能不失真地反映原來模擬信號(hào)。第3章 軟件設(shè)計(jì)§3.1 軟件設(shè)計(jì)總流程圖 1. 總體程序流程圖,如圖4-1所示 圖4-1軟件設(shè)計(jì)總流程圖 §3.2 A/D轉(zhuǎn)換模塊3.2.1 A/D轉(zhuǎn)換流程圖A/D轉(zhuǎn)換子程序用來控制對(duì)輸入的模

12、塊電壓信號(hào)的采集測(cè)量,并將對(duì)應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元。首先系統(tǒng)初始化,啟動(dòng)A/D轉(zhuǎn)換,采集A/D轉(zhuǎn)換值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束,顯示到屏幕上,若屏幕中沒有顯示出數(shù)值,則返回重新調(diào)用顯示函數(shù),否則用戶讀出示數(shù)。其轉(zhuǎn)換流程圖如圖4-2所示。 圖4-2 A/D轉(zhuǎn)換流程3.2.2 A/D接口設(shè)計(jì) ReadAdc()函數(shù)的功能是讀取指定的ADC模擬通道,得到十位十進(jìn)制的ADC轉(zhuǎn)換的結(jié)果。分為以下幾步:1. 設(shè)置分頻系數(shù);2. 預(yù)分頻使能,設(shè)置分頻值preScaler = 1;3. 啟動(dòng)ADC轉(zhuǎn)換;等待ADC啟動(dòng)完成,開始轉(zhuǎn)換ADCCON0自動(dòng)變成0;4. 等待ADC轉(zhuǎn)換結(jié)果;5. 返回10位二進(jìn)制AD

13、轉(zhuǎn)換結(jié)果。具體源程序: unsigned short ReadAdc(int ch)/*設(shè)置分頻系數(shù)*/ preScaler = 50000000/2500000 -1; /*第一步:預(yù)分頻使能,設(shè)置分頻值preScaler=19,選擇讀取通道 ch*/ rADCCON = (1<<14)|(preScaler<<6)|(ch<<3);/setup channel/*第二步:?jiǎn)?dòng)ADC轉(zhuǎn)換*/ rADCCON|=0x1; /*等待ADC啟動(dòng)完成,開始轉(zhuǎn)換ADCCON0自動(dòng)變?yōu)?*/ while(rADCCON & 0x1);/*第三步:等待ADC轉(zhuǎn)換

14、結(jié)束*/ while(!(rADCCON & 0x8000);/*第四步:返回10位二進(jìn)制AD轉(zhuǎn)換結(jié)果*/ return ( (int)rADCDAT0 & 0x3ff );/0011 1111 1111 §3.3 顯示模塊3.3.1 顯示模塊流程圖通過LCD控制器可產(chǎn)生LCD驅(qū)動(dòng)器所需要的控制信號(hào)來控制TFT屏。先對(duì)系統(tǒng) rGPCUP,rGPCCON,rGPDUP寄存器進(jìn)行初始化,啟動(dòng)rGPDCON 既LCD像素?cái)?shù)據(jù)輸出端口,再啟動(dòng)幀緩沖地址寄存器RLCDSADDR1RLCDSADDR3,設(shè)置LCD電源管腳開電源使能即可。詳細(xì)流程圖如下4-3所示: 圖4-3 顯示模

15、塊流程圖3.3.2 顯示模塊接口設(shè)計(jì)該部分主要完成數(shù)據(jù)的顯示功能。在硬件設(shè)計(jì)中,顯示電路直接與單片機(jī)的數(shù)據(jù)I/O口進(jìn)行連接。該模塊主要包括端口初始化和數(shù)據(jù)顯示兩部分,下面是對(duì)LCD正常運(yùn)行時(shí)所需程序的編寫。void LCD_Init(void) /*GPCUP-上拉功能禁用寄存器,共16位,每位對(duì)應(yīng)一個(gè)引腳 0-啟用,1-禁用設(shè)置C端口所有引腳均用作上拉功能*/rGPCUP = 0x00000000;/*GPCCON-C端口引腳功能配置寄存器,共32位,每?jī)晌慌渲?完 成 完成一個(gè)引腳的配置00-輸入01-輸出10-不同引腳的定義不同11-保留0xaaaa02a9-0b1010 1010 10

16、10 1010 0000 0010 1010 1001對(duì)應(yīng)以上關(guān)系可得到具體每個(gè)引腳的配置*/ rGPCCON = 0xaaaa02a9; /*GPDUP-上拉功能禁用寄存器,共16位,每位對(duì)應(yīng)一個(gè)引腳0-啟用,1-禁用設(shè)置D端口所有引腳均用作上拉功能*/ rGPDUP = 0x00000000;/*GPDCON-C端口引腳功能配置寄存器,共32位,每?jī)晌慌渲猛瓿?完成一個(gè)引腳的配置,Initialize VD15:800-輸入01-輸出10-VD8VD2311-保留0xaaaa02a9-0b1010 1010 1010 1010 1010 1010 1010 1010對(duì)應(yīng)以上關(guān)系可得到具體每

17、個(gè)引腳的配置*/ rGPDCON=0xaaaaaaaa;/* LCDCON1 - LCD控制寄存器1CLKVAL_TFT<<8 - 設(shè)置時(shí)鐘信號(hào)MVAL_USED<<7 - 設(shè)置計(jì)時(shí)頻率PNRMODE_TFT<<5 - 選擇顯示模式 (BPPMODE_TFT<<1 - 選擇bpp模式*/ rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE_ TFT<<5)|(BPPMODE_TFT<<1)|0; /*LCDCON2 - LCD控制寄存器2 VBPD (1

18、1) - 垂直同步信號(hào)的后肩 LINEVAL (LCD_HEIGHT-1) - 橫向顯示尺寸 VFPD (3) - 垂直同步信號(hào)的前肩 VSPW (0) - 垂直同步信號(hào)的脈寬(X35屏只能是該值)*/ rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);/*LCDCON3 - LCD控制寄存器3 HBPD (68) - 水平同步信號(hào)的后肩 HOZVAL (LCD_WIDTH-1) - 縱向顯示尺寸 HFPD (1) - 水平同步信號(hào)的前肩*/ rLCDCON3=(HBPD<<19)|(HOZVA

19、L<<8)|(HFPD);/*LCDCON4 - LCD控制寄存器4 HSPW (0) - 水平同步信號(hào)的脈寬*/ rLCDCON4=(HSPW); /*LCDCON5 - LCDCON控制寄存器5 1<<11 - 選擇bpp輸出視頻格式為 5:6:5 0<<7 - 選擇視頻數(shù)據(jù)脈沖的極性為1(反轉(zhuǎn)) INVVCLK 1 /像素值在VCLK下降沿有效 INVVLINE 1 /翻轉(zhuǎn)HSYNC信號(hào) INVVFRAME 1 /翻轉(zhuǎn)VSYNC信號(hào) INVVDEN 1 /翻轉(zhuǎn)VDEN信號(hào)極性 PWREN 1 /使能PWREN信號(hào) BSWP 0 /顏色數(shù)據(jù)字節(jié)不交換 H

20、WSWP 1 /顏色數(shù)據(jù)半字不交換(24BPP時(shí)不用交換)*/ rLCDCON5=(1<<11)|(INVVCLK<<10)|(INVVLINE<<9)|(rLCDCON 5=(1<<11)|(INVVCLK<<10)|(INVVLINE<<9)|(INVVFRAME<<8) |(0<<7)(INVVDEN<<6)|(PWREN<<3)|(BSWP<<1)|(HWSWP); /*如果是24BPP時(shí)M5D( (U32)LCD_BUFFER+(LCD_WIDTH*LC

21、D_HEIGH T*4) >>1 );因?yàn)?4BPP一個(gè)字占4字節(jié)*/ rLCDSADDR1=(U32)LCD_BUFFER>>22)<<21)| M5D(U32)LCD_BUFFER>>1); /*如果是24BPP時(shí)是LCD_WIDTH*4/2 因?yàn)?4BPP一個(gè)字占4字節(jié)*/ rLCDSADDR2=M5D( (U32)LCD_BUFFER+(LCD_WIDTH*LCD_ rHEIGHT*2)>>1 ); rLCDSADDR3=LCD_WIDTH*2/2; /*MASK LCD Sub Interrupt LCD里應(yīng)用一般用不到中斷

22、,關(guān)掉*/ rLCDINTMSK|=(3); / Disable LPC3480 rTCONSEL = 0; / Pull-up disable rGPGUP=rGPGUP&(1<<4)|(1<<4); /*GPG4=LCD_PWREN (設(shè)GPG4為L(zhǎng)CD電源管腳)*/ rGPGCON=rGPGCON&(3<<8)|(3<<8); rGPGDAT = rGPGDAT | (1<<4) ; /10000 rLCDCON5=rLCDCON5&(1<<3)|(1<<3); / PWREN(開

23、電源使能) /*INVPWREN(電源使能信 號(hào)不反轉(zhuǎn))*/ rLCDCON5=rLCDCON5&(1<<5)|(0<<5); rLCDCON1|=1; /開啟LCD顯示這句不能少§3.4 鍵盤輸入模塊3.4.1 鍵盤輸入流程圖 鍵盤輸入電路主要是用來輸入數(shù)據(jù),從而實(shí)現(xiàn)人機(jī)交互。該系統(tǒng)的鍵盤設(shè)計(jì)是采用S3C2440芯片自帶的key管腳。圖4-4 鍵盤輸入流程圖3.4.2 鍵盤輸入接口該模塊主要包括對(duì)寄存器初始化部分;該部分主要完成端口的初始化和通道的初始化。void key_init() /鍵盤輸入接口初始化 /* 0xffffff00;使F端口的前4

24、個(gè)引腳用作輸入, 以 以便按鍵輸入*/ rGPFCON &= 0xff; int get_rout() /獲取檢測(cè)電壓的通道 if( (rGPFDAT &(1<<0) = 0 ) /按下key1時(shí)F端口0引腳置0 return 0; /返回0通道if( (rGPFDAT&(1<<1) = 0 ) /按下key2時(shí)F端口1引腳置0 return 1; /返回1通道return -1; /返回-1error§3.5 報(bào)警模塊報(bào)警處埋模塊相當(dāng)簡(jiǎn)單,這里只是簡(jiǎn)單的在一個(gè)I/O口上送出數(shù)據(jù)來驅(qū)動(dòng)蜂鳴器,該模塊包括初始化端口和數(shù)據(jù)產(chǎn)生兩個(gè)部分,下面

25、就各個(gè)部分給出具體的程序代碼到。初始化部分:該部分將輸出端口設(shè)置為輸出方向。程序代碼如下:void beep_init()/啟動(dòng)蜂鳴器 /*0100 將B端口第二個(gè)引腳用作輸出,以控制蜂 鳴器*/rGPBCON |= 0X4; rGPBDAT |= (1<<1);/關(guān)掉蜂鳴器 數(shù)據(jù)產(chǎn)生部分:該部分主要是在輸出端口產(chǎn)生數(shù)據(jù),設(shè)置低電平蜂鳴器將報(bào)警,高電平蜂鳴器蜂關(guān)閉。下面給出代碼,#define BEFP_ON( ) (rGPBDAT &= (1<<1) /啟動(dòng)蜂鳴器#define BEEP_OFF( ) (rGPBDAT |= (1<<1) /關(guān)閉蜂

26、鳴器在上面的程序中,通過宏函數(shù)實(shí)現(xiàn)的。§3.6 LED燈閃亮模塊LED燈的閃亮處埋模塊同報(bào)警模塊同理也相當(dāng)簡(jiǎn)單,同樣只是簡(jiǎn)單的在一個(gè)I/O口上送出數(shù)據(jù)來驅(qū)動(dòng)LED燈,該模塊包括初始化端口和數(shù)據(jù)產(chǎn)生兩個(gè)部分,下面就各個(gè)部分給出具體的程序代碼。初始化部分:該部分將輸出端口設(shè)置為輸出方向。程序代碼如下:void led_init()rGPFCON &= 0xffff;/GPFCON所有位置0rGPFCON |= 0x5500; /0101 0101 0000 0000 ,F(xiàn)端口4到7引腳用作輸出 rGPFDAT = 0xFF;/引腳電平置1,關(guān)掉led燈 數(shù)據(jù)產(chǎn)生部分:該部分主要是

27、在輸出端口產(chǎn)生數(shù)據(jù),設(shè)置低電平LED燈閃亮,高電平LED燈關(guān)閉。下面給出代碼, rGPFDAT &= 0xf0; /打開所有的LED燈 rGPFDAT |= 0xf0; /關(guān)閉所有的LED燈§3.7 字符取模模塊Draw_Text35x24(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch)該函數(shù)為字符取模函數(shù),函數(shù)參數(shù)的意義不同,其中x表示的是橫坐標(biāo)數(shù)值,y表示的是縱坐標(biāo)數(shù)值,color表示的是文字的顏色,backColor為背景顏色,常見的有全紅0xf800,全綠0x07c0,全藍(lán)0x001f,黑色0x0

28、,白色0xffff:等,ch表示字模數(shù)組。函數(shù)實(shí)現(xiàn)代碼如下:void Draw_Text35x24(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch) unsigned short int i,j; /定義變量 unsigned char mask,buffer; for(i=0;i<35;i+) mask=0x80; /掩碼 buffer=chi*3; /提取一行的第一個(gè)字節(jié) for(j=0;j<8;j+) if(buffer&mask) PutPixel(x+j,y+i,color); /為畫筆上色 else PutPix

溫馨提示

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