基于arm的功能模塊開發(fā)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  1 緒論</b></p><p><b>  1.1 技術(shù)背景</b></p><p>  從8位單片機(jī)到目前的32位ARM微處理器,微型計(jì)算機(jī)技術(shù)的開發(fā)應(yīng)用日臻成熟。RISC 32位ARM核的微處理器,具有高速、低耗、多功能等獨(dú)特亮點(diǎn)。尤其是微型操作系統(tǒng)的嵌入,實(shí)現(xiàn)了ARM嵌入式系統(tǒng)高實(shí)時(shí)性、高可靠性、多任務(wù)管

2、理等優(yōu)異特性,成為真正意義上的嵌入式系統(tǒng)。目前,嵌入式系統(tǒng)的應(yīng)用已遍及網(wǎng)絡(luò)、通訊、信息家電、工業(yè)控制、航空、航天等高端應(yīng)用領(lǐng)域,基于ARM技術(shù)的微處理器應(yīng)用占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術(shù)正在逐步滲入到人們生活的各個(gè)方面,越來越多的開發(fā)人員開始了基于ARM平臺(tái)的開發(fā)。</p><p><b>  1.2 選題意義</b></p><p>

3、<b>  ADC的作用</b></p><p>  采集是認(rèn)知的開始、測(cè)量的前提、分析的基礎(chǔ),絕大多數(shù)的電子設(shè)備、儀器都是以數(shù)據(jù)采集技術(shù)為基礎(chǔ)。隨著電子技術(shù)和數(shù)字技術(shù)的飛速發(fā)展,信號(hào)的傳輸速度和CPU的處理速度越來越快,因此對(duì)數(shù)據(jù)采集和處理的要求也越來越高。</p><p>  模數(shù)轉(zhuǎn)換器是用來把模擬輸入信號(hào)(通常是電壓)轉(zhuǎn)換成等效數(shù)字量的裝置。其形式從單片集成電路

4、到高性能的組件都有,模數(shù)轉(zhuǎn)換器關(guān)鍵的特性是絕對(duì)和相對(duì)精度、線性度、單調(diào)性、分辨率、轉(zhuǎn)換速度、穩(wěn)定性以及價(jià)格,還有一些可供選用的其他技術(shù)性能,諸如輸入范圍、數(shù)字輸出編碼以及實(shí)際尺寸等。</p><p>  模擬數(shù)據(jù)以數(shù)字形式收集后可便于存貯、傳送、處理和顯示,因此,模數(shù)轉(zhuǎn)換在音、視頻信號(hào)處理、電子測(cè)量和工業(yè)控制等領(lǐng)域得到了廣泛的應(yīng)用。</p><p>  基于ARM的ADC模塊開發(fā)意義<

5、;/p><p>  數(shù)據(jù)采集系統(tǒng)用于電子測(cè)量和工業(yè)控制系統(tǒng)。采集到的信號(hào)通過A/D轉(zhuǎn)換(即數(shù)據(jù)采集),送入微處理器主控單元。高速系統(tǒng)對(duì)ADC模塊的要求很高,低端MCU及ADC模塊難以滿足高性能的應(yīng)用要求,因而,大多數(shù)開發(fā)人員將目光瞄向了ARM芯片的模數(shù)轉(zhuǎn)換器,因?yàn)槠渚哂懈咚?、多路、價(jià)廉等明顯優(yōu)勢(shì)。</p><p>  我選擇基于ARM的ADC模塊開發(fā)題目,希望通過對(duì)于ADC模塊的開發(fā),能為日后

6、的運(yùn)用打下良好的基礎(chǔ)。</p><p><b>  開發(fā)設(shè)計(jì)方案</b></p><p>  本課題設(shè)計(jì)是根據(jù)我校老師自主研制的ARM實(shí)驗(yàn)板進(jìn)行設(shè)計(jì)開發(fā)的。用IAR軟件對(duì)各個(gè)模塊進(jìn)行程序編寫并進(jìn)行調(diào)試,當(dāng)程序調(diào)試無誤后,將程序下載到ARM實(shí)驗(yàn)板上,用電壓源提供一個(gè)電壓,送到ARM實(shí)驗(yàn)板中,經(jīng)過模數(shù)轉(zhuǎn)換器,將輸入的模擬信號(hào)(電壓)轉(zhuǎn)換成數(shù)字信號(hào),再通過LCD顯示出所采集

7、到的數(shù)字信號(hào)。</p><p>  圖1-1 整機(jī)工作框圖</p><p>  如上圖所示,由信號(hào)源輸出,提供3V電壓,通過電位器送到LPC2148的ADC模塊中,經(jīng)過模數(shù)轉(zhuǎn)換,將得到的數(shù)字信號(hào)儲(chǔ)存到寄存器中,并送到LCD,顯示出對(duì)應(yīng)的數(shù)據(jù)。</p><p><b>  2 功能模塊說明</b></p><p>  

8、2.1 ARM主控芯片(LPC2148)</p><p>  2.1.1 工作特性</p><p>  LPC2148 是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的32/16 位ARM7 TDMI-S CPU的微控制器,并帶有32kB 和512kB 嵌入的高速Flash 存儲(chǔ)器。128 位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu),使32 位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用1

9、6 位Thumb 模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。</p><p><b>  其特性為:</b></p><p>  (1) 16/32 位ARM7TDMI-S 微控制器,超小LQFP64 封裝。</p><p>  (2) 8kB~40kB 的片內(nèi)靜態(tài)RAM 和32kB~512kB 的片內(nèi)Flash 程序存儲(chǔ)器。128

10、 位寬度接口/加速器可實(shí)現(xiàn)高達(dá)60 MHz 工作頻率。</p><p>  (3) 通過片內(nèi) boot 裝載程序?qū)崿F(xiàn)在系統(tǒng)編程/在應(yīng)用編程(ISP/IAP)。單個(gè)Flash 扇區(qū)或整片擦除時(shí)間為400ms。256 字節(jié)編程時(shí)間為1ms。</p><p>  (4) Embedded ICE RT 和嵌入式跟蹤接口提供實(shí)時(shí)調(diào)試(通過片內(nèi)Real Monitor 軟件)和高速跟蹤指令執(zhí)行。

11、</p><p>  (5) USB 2.0 全速設(shè)備控制器具有2kB 的端點(diǎn)RAM。此外,LPC2146/8 提供8kB 的片內(nèi)RAM,可被USB 的DMA 控制器訪問。</p><p>  (6) 2 個(gè)10 位ADC 轉(zhuǎn)換器,提供總共6/14 路模擬輸入,每個(gè)通道的轉(zhuǎn)換時(shí)間低至2.44us。</p><p>  (7) 1 個(gè)10 位的D/A 轉(zhuǎn)換器提供

12、可變的模擬輸出。</p><p>  (8) 2 個(gè)32 位定時(shí)器/外部事件計(jì)數(shù)器(帶4 路捕獲和4 路比較通道)、PWM 單元(6路輸出)和看門狗。</p><p>  (9) 低功耗實(shí)時(shí)時(shí)鐘(RTC)具有獨(dú)立的電源和特定的32kHz 時(shí)鐘輸入。</p><p>  (10) 多個(gè)串行接口,包括2 個(gè)UART(16C550)、2 個(gè)高速I2C 總線(400

13、kbit/s)、SPI 和具有緩沖作用和數(shù)據(jù)長度可變功能的SSP。</p><p>  (11) 向量中斷控制器(VIC)??膳渲脙?yōu)先級(jí)和向量地址。</p><p>  (12) 多達(dá) 45 個(gè)可承受5V 電壓的通用I/O 口(LQFP64 封裝)。</p><p>  (13) 多達(dá) 9 個(gè)邊沿或電平觸發(fā)的外部中斷管腳。</p><p&g

14、t;  (14) 通過一個(gè)可編程的片內(nèi) PLL(100us 的設(shè)置時(shí)間)可實(shí)現(xiàn)最大為60MHz 的 CPU 操作頻率。</p><p>  (15) 片內(nèi)集成振蕩器可操作頻率為 1~30 MHz 的外部晶體或頻率高達(dá)50MHz 的外部振蕩器。</p><p>  (16) 低功耗模式:空閑和掉電。</p><p>  (17) 可通過個(gè)別使能/禁止外圍功能和

15、外圍時(shí)鐘分頻來優(yōu)化額外功耗。</p><p>  (18) 通過外部中斷,USB,掉電檢測(cè)(BOD)或?qū)崟r(shí)時(shí)鐘(RTC)將處理器從掉電模式中喚醒。</p><p>  (19) 單電源,具有上電復(fù)位(POR)和掉電檢測(cè)(BOD)電路:</p><p> ?。瑿PU 操作電壓范圍:3.0V~3.6 V (3.3 V± 10﹪)。</p>&

16、lt;p><b>  結(jié)構(gòu)圖</b></p><p>  圖2-1 LPC2148結(jié)構(gòu)方框圖</p><p>  由上圖可見,其結(jié)構(gòu)包含一個(gè)支持仿真的ARM7TDMI-S CPU,與片內(nèi)存儲(chǔ)器控制器接口的ARM7局部總線,與中斷控制器接口的AMBA高性能總線(AHB)和連接片內(nèi)外設(shè)功能的VLSI外設(shè)總線(VPB,ARM AMBA總線的兼容超集)。</p&

17、gt;<p>  AHB外設(shè)分配了2MB的地址范圍,它位于4GB ARM存儲(chǔ)器空間的最頂端。每個(gè)AHB外設(shè)也分配了16KB的地址空間。并且其外設(shè)功能都連接到VPB總線,外設(shè)包括外部中斷、I2C串行接口、捕獲/比較定時(shí)器0/1、SPI串行接口、ADC、UART、通用I/O、PWM、看門狗定時(shí)器、實(shí)時(shí)時(shí)鐘、系統(tǒng)控制。AHB到VPB的橋?qū)PB總線與AHB總線相連。VPB外設(shè)也分配了2MB的地址范圍,從3.5GB地址點(diǎn)開始。每個(gè)

18、VPB外設(shè)在VPB地址空間內(nèi)斗分配了16KB地址空間。</p><p><b>  2.1.3 應(yīng)用</b></p><p>  ARM芯片開發(fā)應(yīng)用的重要環(huán)節(jié)之一是底層開發(fā),即用匯編語言和C語言混合編程的啟動(dòng)代碼。系統(tǒng)配置及部分啟動(dòng)代碼程序:</p><p> ?。?) 系統(tǒng)配置頭文件</p><p><b>

19、;  config.h</b></p><p>  #ifndef __CONFIG_H</p><p>  #define __CONFIG_H</p><p>  #ifndef TRUE</p><p>  #define TRUE 1</p><p><b>  #endif<

20、;/b></p><p>  #ifndef FALSE</p><p>  #define FALSE 0</p><p><b>  #endif</b></p><p>  typedef unsigned char uint8; /* 無符號(hào)8位整型變量 */</p><

21、;p>  typedef signed char int8; /* 有符號(hào)8位整型變量 */</p><p>  typedef unsigned short uint16; /* 無符號(hào)16位整型變量 */</p><p>  typedef signed short int16; /* 有符號(hào)16位整型變量 */</p><

22、p>  typedef unsigned int uint32; /* 無符號(hào)32位整型變量 */</p><p>  typedef signed int int32; /* 有符號(hào)32位整型變量 */</p><p>  typedef float fp32; /* 單精度浮點(diǎn)數(shù)(32位長度) */</p>&l

23、t;p>  typedef double fp64; /* 雙精度浮點(diǎn)數(shù)(64位長度) */</p><p>  #include "nxp/iolpc2148.h"</p><p>  #include "stdio.h"</p><p>  #include "intrinsics

24、.h" // ARM核特征頭函數(shù)</p><p>  /*****************************************************************************</p><p>  系統(tǒng)時(shí)鐘配置:Fosc、Fcclk、Fcco、Fpclk/</p><p>  ******************

25、***********************************************************/</p><p>  #define Fosc 12000000 // 時(shí)鐘頻率:12MHz(晶振頻率范圍:10MHz~25MHz)。</p><p>  #define Fcclk (Fosc*5) // 系統(tǒng)時(shí)鐘:60MHz(系統(tǒng)頻率范圍:F

26、cclk=(1~32)*Fosc,且<=60MHZ)。</p><p>  #define Fcco (Fcclk*4) // 流控振蕩頻率:240MHz(允許頻率范圍:Fcco=156MHz~320MHz,且必須為Fcclk的2、4、8、16倍)。</p><p>  #define Fpclk (Fcclk/4)*2 // 外設(shè)時(shí)鐘頻率:30MHz(Fpclk必

27、須為 (Fcclk/4)的 1、2、4 倍,且不能高于Fcclk)。</p><p>  #define KOM_H IO1SET_bit.P1_24=1;</p><p>  #define KOM_L IO1CLR_bit.P1_24=1;</p><p>  void ZLG7289_cmd_dat(char cmd, char dat);</p

28、><p>  void ZLG7289_Init();</p><p><b>  #endif</b></p><p> ?。?)用匯編語言編寫的部分啟動(dòng)代碼</p><p>  功能:分配個(gè)工作模式的棧區(qū)</p><p>  MODE_MSK DEFINE 0x1F ; Bi

29、t mask for mode bits in CPSR</p><p>  USR_MODE DEFINE 0x10 ; User mode</p><p>  FIQ_MODE DEFINE 0x11 ; Fast Interrupt Request mode</p><p>  IRQ_MODE DEFINE 0x1

30、2 ; Interrupt Request mode</p><p>  SVC_MODE DEFINE 0x13 ; Supervisor mode</p><p>  ABT_MODE DEFINE 0x17 ; Abort mode</p><p>  UND_MODE DEFINE 0x1B

31、 ; Undefined Instruction mode</p><p>  SYS_MODE DEFINE 0x1F ; System mode</p><p>  mrs r0,cpsr ; Original PSR value</p><p>  bic

32、 r0,r0,#MODE_MSK ; Clear the mode bits</p><p>  orr r0,r0,#SVC_MODE ; Set Supervisor mode bits</p><p>  msr cpsr_c,r0

33、 ; Change the mode</p><p>  ldr sp,=SFE(SVC_STACK) ; End of SVC_STACK</p><p>  bic r0,r0,#MODE_MSK ; Clear the mode bits</p><p>  orr

34、 r0,r0,#ABT_MODE ; Set Abort mode bits</p><p>  msr cpsr_c,r0 ; Change the mode</p><p>  ldr sp,=SFE(ABT_STACK) ; End of

35、ABT_STACK</p><p>  bic r0,r0,#MODE_MSK ; Clear the mode bits</p><p>  orr r0,r0,#UND_MODE ; Set Undefined mode bits</p><p>  msr

36、cpsr_c,r0 ; Change the mode</p><p>  ldr sp,=SFE(UND_STACK) ; End of UND_STACK</p><p>  bic r0,r0,#MODE_MSK ; Clear the mod

37、e bits</p><p>  orr r0,r0,#FIQ_MODE ; Set FIR mode bits</p><p>  msr cpsr_c,r0 ; Change the mode</p><p>  ldr sp,=SFE(FIQ_S

38、TACK) ; End of FIR_STACK</p><p>  bic r0,r0,#MODE_MSK ; Clear the mode bits</p><p>  orr r0,r0,#IRQ_MODE ; Set IRQ mode bits</

39、p><p>  msr cpsr_c,r0 ; Change the mode</p><p>  ldr sp,=SFE(IRQ_STACK) ; End of IRQ_STACK</p><p>  bic r0,r0,#MODE_MSK

40、 ; Clear the mode bits</p><p>  orr r0,r0,#SYS_MODE ; Set System mode bits</p><p>  msr cpsr_c,r0 ; Change the mode</p><

41、p>  ldr sp,=SFE(CSTACK) ; End of CSTACK</p><p><b>  ADC模塊</b></p><p><b>  2.2.1 概述</b></p><p>  在科研、生產(chǎn)中,要經(jīng)常進(jìn)行模擬量的測(cè)量和控制。為了對(duì)溫度、壓力、流

42、量、速度、位移等物理量進(jìn)行測(cè)量和控制,需要通過各種傳感器把上述物理量轉(zhuǎn)換成模擬量的電信號(hào),即模擬電信號(hào);將模擬電信號(hào)經(jīng)過處理并轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別的數(shù)字量,送進(jìn)計(jì)算機(jī),這就是A/D變換過程或稱為數(shù)據(jù)采集。目前大部分傳感器輸出的仍是電壓或電流等模擬信號(hào),所以往往需要將這些模擬信號(hào)轉(zhuǎn)換成易于處理和存儲(chǔ)的數(shù)字信號(hào)。</p><p>  A/D轉(zhuǎn)換可分為4個(gè)階段:即采樣、保持、量化和編碼。</p><p

43、>  ARM控制整個(gè)系統(tǒng)的運(yùn)行,A/D模數(shù)轉(zhuǎn)換器將測(cè)試得到的模擬量轉(zhuǎn)換為數(shù)字量,由ARM接收,接到開始信號(hào)后,ARM首先將一個(gè)數(shù)字信號(hào)發(fā)給A/D/模數(shù)轉(zhuǎn)換器,由A/D和放大器將采集到的模擬量(模擬音頻、電壓、指紋等)轉(zhuǎn)換成對(duì)應(yīng)數(shù)字量,經(jīng)A/D采樣控制保持后讀寫到SDRAM。對(duì)應(yīng)的數(shù)字量傳回ARM,并由ARM計(jì)算、轉(zhuǎn)換等。</p><p>  LPC2148中的A/D 轉(zhuǎn)換器的基本時(shí)鐘由VPB 時(shí)鐘提供。每個(gè)

44、轉(zhuǎn)換器包含一個(gè)可編程分頻器,可將時(shí)鐘調(diào)整至逐步逼近轉(zhuǎn)換所需的4.5MHz(最大)。完全滿足精度要求的轉(zhuǎn)換需要11 個(gè)這樣的時(shí)鐘。</p><p>  2.2.2 技術(shù)特性 </p><p>  (1) 有兩個(gè)10 位逐次逼近式模數(shù)轉(zhuǎn)換器;</p><p>  (2) 6 或8 個(gè)管腳復(fù)用為輸入腳(ADC0 和ADC1);</p><p>&

45、lt;b>  (3) 掉電模式;</b></p><p>  (4) 測(cè)量范圍:0V~VREF (通常為3V; 不超過VDDA 電壓電平);</p><p>  (5) 10 位轉(zhuǎn)換時(shí)間≥2.44us;</p><p>  (6) 一個(gè)或多個(gè)輸入的突發(fā)轉(zhuǎn)換模式;</p><p>  (7) 可選擇由輸入跳變或定時(shí)器匹配信號(hào)觸

46、發(fā)轉(zhuǎn)換;</p><p>  (8) 轉(zhuǎn)換器的全局起始命令。</p><p>  2.2.3 功能框圖</p><p>  由下圖可見A/D模塊的內(nèi)部結(jié)構(gòu)。</p><p>  圖2-2 A/D轉(zhuǎn)換器內(nèi)部結(jié)構(gòu)</p><p>  2.2.4 相關(guān)寄存器</p><p>  ADC模塊的工作模式

47、設(shè)置和轉(zhuǎn)換結(jié)果控制由兩個(gè)32位寄存器完成。對(duì)于這兩個(gè)寄存器的描述如下表。</p><p>  表2-1 主要寄存器</p><p>  其中對(duì)于ADCR寄存器描述見表2-2。在描述一欄詳細(xì)介紹了各個(gè)控制位的作用。</p><p>  表2-2 A/D控制寄存器</p><p>  ADC轉(zhuǎn)換時(shí)鐘分頻值計(jì)算如下:</p>&l

48、t;p>  CLKDIV=FPCLK/FADCLK-1</p><p>  其中:FPCLK為所要設(shè)置的ADC時(shí)鐘,其值不能大于4.5MHz。</p><p>  關(guān)于ADDR寄存器的介紹如表2-3。</p><p>  表2-3 A/D數(shù)據(jù)寄存器</p><p>  讀取A/D結(jié)果時(shí),要首先等待轉(zhuǎn)換結(jié)束,然后再讀取結(jié)果。由于10位二

49、進(jìn)制數(shù)位于ADDR[15:6],因此還需要轉(zhuǎn)換。</p><p>  讀取A/D轉(zhuǎn)換結(jié)果程序如下,</p><p>  Uint32 ADC_Data;</p><p>  While((ADDR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束</p><p>  ADC_Data = ADDR;</p&g

50、t;<p>  ADC_Data = (ADC_Data>>6)&0x3ff; //處理轉(zhuǎn)換值</p><p><b>  應(yīng)用(模塊初始化)</b></p><p>  ADC模塊正常工作的條件是正確配置其工作環(huán)境,即初始化ADC,初始化程序如下:</p><p>  /* 進(jìn)行ADC模塊設(shè)置,其

51、中x<<n表示第n位設(shè)置為x(若x超過一位,則向高位順延) */</p><p>  ADCR = (1 << 0) // SEL = 1 ,選擇通道0</p><p>  ((Fpclk / 1000000 - 1) << 8) // CLKDIV = Fpclk / 1000000 - 1 ,即轉(zhuǎn)換時(shí)鐘為1MHz&l

52、t;/p><p>  (0 << 16) // BURST = 0 ,軟件控制轉(zhuǎn)換操作</p><p>  (0 << 17) // CLKS = 0 ,使用11clock轉(zhuǎn)換</p><p>  (1 << 21) // PDN = 1 , 正常工作模式(

53、非掉電轉(zhuǎn)換模式)</p><p>  (0 << 22) // TEST1:0 = 00 ,正常工作模式(非測(cè)試模式)</p><p>  (1 << 24) // START = 1 ,直接啟動(dòng)ADC轉(zhuǎn)換</p><p>  (0 << 27);// EDGE = 0

54、(CAP/MAT引腳下降沿觸發(fā)ADC轉(zhuǎn)換)</p><p>  DelayNS(10);</p><p>  ADC_Data = ADDR;// 讀取ADC結(jié)果,并清除DONE標(biāo)志位</p><p>  2.3 液晶顯示模塊</p><p>  我所采用的目標(biāo)板采用北京青云科技公司的LCM12864漢字/圖形點(diǎn)陣顯示模

55、塊,該模塊的驅(qū)動(dòng)芯片采用ST7920控制器系列,液晶顯示模塊的特性取決于驅(qū)動(dòng)器芯片特性。</p><p>  2.3.1 ST7920的主要特性</p><p>  ST7920 同時(shí)作為控制器和驅(qū)動(dòng)器其特性如下:</p><p><b>  (1) 硬件特性</b></p><p>  ★ 8 位/4 位并行接口及串行

56、接口可選(并行接口適配 M6800 時(shí)序)。</p><p>  ★ 自動(dòng)電源啟動(dòng)復(fù)位功能。</p><p>  ★ 內(nèi)部自建振蕩源。</p><p>  ★ 有效顯示范圍:32個(gè)漢字(4行×8列)</p><p>  ★ 自帶8192個(gè)16×16 點(diǎn)陣的中文字庫(2M位CGROM)。</p><p&g

57、t;  ★ 自帶126個(gè)16×8點(diǎn)陣的半寬西文字庫(16K位HCGROM)。</p><p><b>  (2)軟件特性</b></p><p>  ★ 文字與圖形混合顯示功能</p><p><b>  ★ 畫面清除功能</b></p><p><b>  ★ 光標(biāo)歸位功能&l

58、t;/b></p><p><b>  ★ 顯示開/關(guān)功能</b></p><p>  ★ 光標(biāo)顯示/隱藏功能</p><p>  ★ 顯示字體閃爍功能</p><p>  ★ 光標(biāo)移位功能功能</p><p><b>  ★ 顯示移位功能</b></p>

59、<p>  ★ 垂直畫面旋轉(zhuǎn)功能</p><p><b>  ★ 反白顯示功能</b></p><p><b>  ★ 休眠模式</b></p><p>  液晶屏共分為四行,控制器會(huì)根據(jù)寫入的數(shù)據(jù)值范圍來自動(dòng)選擇字符顯示在液晶屏上。各行端口地址如下: </p><p>  第一行:80

60、H – 87 H;</p><p>  第二行:90H – 97 H;</p><p>  第三行: 88H – 8F H;</p><p>  第四行: 98H – 9F H;</p><p>  2.3.2 LCM12864功能框圖</p><p>  圖2-3 液晶原理圖</p><p&g

61、t;  MCU接口及工作時(shí)序</p><p>  LCM19264與MCU接口</p><p>  表2-4 接口描述</p><p>  為節(jié)省MCU資源,所以用串口方式,時(shí)序關(guān)系如下圖:</p><p>  圖2-4 串口時(shí)序圖</p><p>  2.3.4 基本工作指令</p><p&

62、gt;  液晶模塊的基本指令為:</p><p>  1)清除顯示(CLEAR)</p><p>  格式 0 0 0 0 0 0 0 1</p><p>  將DDRAM 填滿“20H”(空格)代碼,并且設(shè)定DDRAM 的地址計(jì)數(shù)器(AC)為</p><p>  00H;更新設(shè)置進(jìn)入設(shè)定點(diǎn)將I/D 設(shè)為1,游標(biāo)右移AC 加1。</p&

63、gt;<p>  2)地址歸0(HOME)</p><p>  格式 0 0 0 0 0 0 1 X</p><p>  設(shè)定DDRAM 的地址寄存器為00H,并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指</p><p>  令并不改變DDRAM 的內(nèi)容。</p><p>  3)進(jìn)入設(shè)定點(diǎn)(ENTRY MODE SET) 初始值:06H

64、</p><p>  格式 0 0 0 0 0 1 I/D S</p><p>  指定在顯示數(shù)據(jù)的讀取與寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位。</p><p>  I/D=1,游標(biāo)右移,DDRAM 地址計(jì)數(shù)器(AC)加1;</p><p>  I/D=0,游標(biāo)左移,DDRAM 地址計(jì)數(shù)器(AC)減1。</p><p

65、>  S:顯示畫面整體位移:S = 1, I/D=1,畫面整體右移;S = 1, I/D=0,畫面整體左移</p><p>  4)顯示開關(guān)設(shè)置(DISPLAY STATUS)初始值:08H。</p><p>  格式 0 0 0 0 1 D C B</p><p>  控制整體顯示開關(guān),游標(biāo)開關(guān),游標(biāo)位置顯示反白開關(guān)。</p><p>

66、;  D=1,整體顯示開;D=0,整體顯示關(guān),但是不改變DDRAM 內(nèi)容;</p><p>  C=1,游標(biāo)顯示開;C=0,游標(biāo)顯示關(guān);</p><p>  B=1,游標(biāo)位置顯示反白開,將游標(biāo)所在地址上的內(nèi)容反白顯示;B=0,正常顯</p><p><b>  示。</b></p><p>  5)游標(biāo)或顯示移位控制(C

67、URSOR AND DISPLAY SHIFT CONTORL)</p><p>  初始值:0001 XXXX B (X=0,1) </p><p>  格式 0 0 0 1 S/C R/L X X</p><p>  這條指令不改變DDRAM 的內(nèi)容</p><p>  S/C=0 R/L=0 游標(biāo)向左移動(dòng), AC=AC-1;

68、</p><p>  S/C=0 R/L=1 游標(biāo)向右移動(dòng), AC=AC+1;</p><p>  S/C=1 R/L=0 顯示向左移動(dòng),游標(biāo)跟著移動(dòng) AC=AC;</p><p>  S/C=1 R/L=1 顯示向右移動(dòng),游標(biāo)跟著移動(dòng) AC=AC。</p><p>  6)功能設(shè)定(FUNCTION SET) 初始值:0011

69、X0XX B (X=0,1)</p><p>  格式 0 0 1 DL X 0/RE X X</p><p>  DL:8/4 位接口控制位;</p><p>  DL=1,8 位MPU 接口;DL=1,4 位MPU 接口;</p><p>  RE:指令集選擇控制位;</p><p>  RE=1,擴(kuò)充指令集;RE

70、=0,基本指令集;</p><p>  同一指令的動(dòng)作不能同時(shí)改變DL和RE,需先改變DL再改變RE才能確保設(shè)置正確。</p><p>  7)設(shè)定CGRAM 地址</p><p>  格式 0 1 A5 A4 A3 A2 A1 A0</p><p>  設(shè)定CGRAM 地址到地址計(jì)數(shù)器(AC),AC 范圍為00H~3FH 需確認(rèn)擴(kuò)充指令中S

71、R=0。(卷動(dòng)位置或RAM 地址選擇)</p><p>  8)設(shè)定DDRAM 地址</p><p>  格式 1 0 A5 A4 A3 A2 A1 A0</p><p>  設(shè)定DDRAM 地址到地址計(jì)數(shù)器(AC)</p><p>  第一行AC 范圍 80H~8FH</p><p>  第二行AC 范圍 90H~9

72、FH</p><p>  說明:ST7920 控制器的128×64 點(diǎn)陣液晶其實(shí)原理上等同256×32 點(diǎn)陣,第三行對(duì)應(yīng)的DDRAM 地址緊接第一行;第四行對(duì)應(yīng)的DDRAM 地址緊接第二行。用戶在使用行反白功能時(shí),如果第一行反白,第三行必然反白。第二行反白,第四行必然反白。這是正常現(xiàn)象。</p><p>  9)讀取忙標(biāo)志和地址(RS=0,R/W=1)</p>

73、;<p>  格式 BF A6 A5 A4 A3 A2 A1 A0</p><p>  讀取忙標(biāo)志以確定內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值。</p><p>  10)寫顯示數(shù)據(jù)到 RAM(RS=1,R/W=0)</p><p>  格式 D7 D6 D5 D4 D3 D2 D1 D0</p><p>  當(dāng)顯

74、示數(shù)據(jù)寫入后會(huì)使AC 改變,每個(gè)RAM(CGRAM,DDRAM,IRAM)地址都可以連續(xù)寫入2 個(gè)字節(jié)的顯示數(shù)據(jù),當(dāng)寫入第二個(gè)字節(jié)時(shí),地址計(jì)數(shù)器(AC)的值自動(dòng)加一。</p><p>  11) 讀取顯示 RAM 數(shù)據(jù)(RS=1,R/W=1)</p><p>  格式 D7 D6 D5 D4 D3 D2 D1 D0</p><p>  讀取后會(huì)使AC 改變,設(shè)定RA

75、M(CGRAM,DDRAM,IRAM)地址后,先要Dummy read 一次后才能讀取到正確的顯示數(shù)據(jù),第二次讀取不需要Dummy read,除非重新設(shè)置了RAM 地址。</p><p>  液晶顯示器件是ADC數(shù)據(jù)采集系統(tǒng)中的一個(gè)重要環(huán)節(jié),正確設(shè)置其工作狀態(tài),即初始化設(shè)置,是保證系統(tǒng)工作的前提。因此根據(jù)以上的指令集,本設(shè)計(jì)的液晶初始化流程圖如圖2-5所示:</p><p>  圖2-5

76、 液晶初始化流程圖</p><p><b>  3、開發(fā)工具</b></p><p><b>  3.1 JTAG</b></p><p>  JTAG是一種技術(shù)先進(jìn)高效的基于邊緣掃描技術(shù)的硬件仿真/調(diào)試/編程器。實(shí)物圖如下:</p><p>  圖3-1 JTAG實(shí)物圖</p>&

77、lt;p>  3.1.1 性能介紹</p><p>  JTAG(Joint Test Action Group ,聯(lián)合測(cè)試行動(dòng)小組)是一種國際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試。JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了專門的測(cè)試電路TAP(Test Access Port,測(cè)試訪問口),通過專用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。目前大多數(shù)比較復(fù)雜的器件都支持JTAG

78、協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為測(cè)試模式選擇、測(cè)試時(shí)鐘、測(cè)試數(shù)據(jù)輸入和測(cè)試數(shù)據(jù)輸出。</p><p>  JTAG測(cè)試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試。JTAG接口還常用于實(shí)現(xiàn)ISP(In-System Programmable 在線系統(tǒng)編程) 功能,如對(duì)Flash器件進(jìn)行編程等。通過JTA

79、G接口,可以對(duì)芯片部的所有部件進(jìn)行訪問,因而是開發(fā)調(diào)試嵌入式系統(tǒng)的一種簡潔高效的用段。</p><p>  JTAG的主要功能有兩種,或者說JTAG主要有兩大類:一類用于測(cè)試芯片的電氣特性,檢測(cè)芯片是否有問題;另一類用于Debug,對(duì)各類芯片以及其外圍設(shè)備進(jìn)行調(diào)試。一個(gè)含有JTAG Debug接口模塊的CPU,只要時(shí)鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器、掛在CPU總線上的設(shè)備以及內(nèi)置模塊的寄存器。

80、簡單地說,JTAG的工作原理可以歸結(jié)為:在器件內(nèi)部定義一個(gè)TAP,通過專用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試和調(diào)試。</p><p><b>  結(jié)構(gòu)框圖</b></p><p>  圖3-2 JTAG的內(nèi)部結(jié)構(gòu)方框圖</p><p>  JTAG內(nèi)部結(jié)構(gòu)如上圖所示。</p><p>  在硬件結(jié)構(gòu)上,JTAG接口包

81、括2部分:JTAG端口和控制器。與JTAG接口兼容的器件可以是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC或者是其他符合IEEE 1149.1規(guī)范的芯片。IEEE 1149.1標(biāo)準(zhǔn)中規(guī)定對(duì)應(yīng)于數(shù)字集成電路芯片的每個(gè)引腳都設(shè)有一個(gè)移位寄存單元,稱為邊界掃描單元BSC(Boundary Scan cell)它將JTAG電路與內(nèi)核邏輯電路聯(lián)系起來,同進(jìn)隔離內(nèi)核邏輯電路和芯片引腳,由集成電路的所有邊界掃描單元構(gòu)成邊

82、界掃描寄存器BSR(Boundary-Scan Register)。邊界掃描寄存器僅在進(jìn)行JTAG測(cè)試時(shí)有效,在集成電路正常工作時(shí)無效,不影響集成電路的功能。各引腳功能如下。</p><p>  (1)TCK:時(shí)鐘信號(hào),為TAP的操作提供了一個(gè)獨(dú)立的、基本的時(shí)鐘信號(hào)。</p><p> ?。?)TMS:模式選擇信號(hào),用于控制TAP狀態(tài)機(jī)的轉(zhuǎn)換。</p><p>  

83、(3)TDI:數(shù)據(jù)輸入信號(hào)。</p><p> ?。?)TDO:數(shù)據(jù)輸出信號(hào)。</p><p> ?。?)TRST:復(fù)位信號(hào),可以用來對(duì)TAP Controller進(jìn)行復(fù)位(初始化)。這個(gè)信號(hào)接口在IEEE 1149.1標(biāo)準(zhǔn)里并不是強(qiáng)制要求的,因?yàn)橥ㄟ^TMS也可以對(duì)TAP Controller進(jìn)行復(fù)位。</p><p> ?。?)STCK:時(shí)鐘返回信號(hào),在IEEE

84、1149.1標(biāo)準(zhǔn)里非強(qiáng)制要求。</p><p>  (7)DBGRQ:目標(biāo)板上工作狀態(tài)的控制信號(hào)。在IEEE 1149.1標(biāo)準(zhǔn)里沒有要求,只是在個(gè)別目標(biāo)板(例如STR710)中會(huì)有。</p><p>  簡單地說,PC機(jī)對(duì)目標(biāo)板的調(diào)試就是通過TAP接口完成對(duì)相關(guān)數(shù)據(jù)寄存器(DR)和指令寄存器(IR)的訪問。</p><p><b>  IAR 開發(fā)環(huán)境&l

85、t;/b></p><p><b>  功能簡介</b></p><p>  IAR Embeded Workbench (以下簡稱IAR EW)是仿真/調(diào)試/編程的集成開發(fā)環(huán)境。是一種非常高效的嵌入式系統(tǒng)開發(fā)工具,它使用戶能夠充分有效地開發(fā)管理嵌入式應(yīng)用項(xiàng)目,其界面類似于MS Visual C++,可以在Windows 95/98/2000/XP平臺(tái)上運(yùn)行,功

86、能十分完善。IAR EW中包含了源程序文件編輯器、項(xiàng)目管理器(Project)\源程序調(diào)試器(Debug)待,并且為C/C++編譯器、匯編器、鏈接定位器等提供了單一而靈活的開發(fā)環(huán)境。IAR EW 的源級(jí)瀏覽器(Source Browser)功能利用符號(hào)數(shù)據(jù)庫使用戶可以快速瀏覽源文件,還可通過詳細(xì)的符號(hào)信息來優(yōu)化變量存儲(chǔ)器;文件查找功能可在指定的若干種文件中進(jìn)行全局文件搜索;IAR EW 還提供了對(duì)第三方工具軟件的接口,允許啟動(dòng)用戶指定的

87、應(yīng)用程序。</p><p>  IAR EW 適用于開發(fā)基于8位、16位以及32位微處理器的嵌入式系統(tǒng),其集成開發(fā)環(huán)境具有統(tǒng)一界面,為用戶提供了一個(gè)易學(xué)和具有最大代碼繼承能力的開發(fā)平臺(tái),以及對(duì)各種特殊目標(biāo)的支持。IAR 公司提出了所謂“不同架構(gòu),惟一解決方案”的理念用戶可以針多種不同的目標(biāo)處理器,在相同的集成開發(fā)環(huán)境中進(jìn)行基于不同CPU嵌入式系統(tǒng)應(yīng)用程序的開發(fā),有效提高工作效率,節(jié)省工作時(shí)間。IAT EW 還是一

88、種可擴(kuò)展的模塊化環(huán)境,允許用戶采用自己喜歡的編輯器和源代碼控制系統(tǒng),鏈接定位器(XLINK)可以輸出多種格式的目標(biāo)文件,使用戶可以采用第三方軟件進(jìn)行仿真調(diào)試。編譯器、匯編器和鏈接器也可在命令行上運(yùn)行,用戶可以在一個(gè)已建好的項(xiàng)目中把它們作為外部工具使用。</p><p>  3.2.2 主要功能模塊:</p><p>  (1) 高度優(yōu)化的IAR ARM C/C++ 編譯器(compile)

89、。</p><p>  (2) IAR ARM 匯編器(Assembler)。</p><p>  (3) 通用的IAR XLINK 鏈接器(Linker)。</p><p>  (4) IAR XAR 和XLIB 建庫程序和IAR DLIB C/C++運(yùn)行庫;</p><p>  (5) 功能強(qiáng)大的編輯器。</p><

90、;p>  (6) 項(xiàng)目管理器。</p><p>  (7) 命令行實(shí)用程序。</p><p>  (8) IAR C-SPY 調(diào)試器(先進(jìn)的高級(jí)語言調(diào)試器)。</p><p>  3.2.3 軟件特點(diǎn)</p><p>  IAR EWAM軟件的特點(diǎn):</p><p>  (1) 完善的ARM內(nèi)核支持。</

91、p><p>  (2) 客戶化地芯片級(jí)支持。</p><p>  (3) 編譯器速度優(yōu)化及浮點(diǎn)運(yùn)算庫功能擴(kuò)展。</p><p>  (4) 支持多種嵌入式操作系統(tǒng)。</p><p>  (5) 功能強(qiáng)大的Debug功能。 </p><p>  3.2.4 芯片級(jí)支持特性</p><p>  (1)

92、各廠商完整的ARM處理器 C/C++和匯編語言外設(shè)寄存器定義文件(*.h)。</p><p>  (2) 大量適于嵌入式代碼的編程語言擴(kuò)展特性,包括:存儲(chǔ)器關(guān)鍵字、本征函數(shù)、中斷函數(shù)、存儲(chǔ)器映射I/O等。</p><p>  (3) 多種評(píng)估板例程,包含:IAR、Analog Devices、Aiji System、ARM、Atmel、Cirrus Logic、Freescale、Keil

93、、OKI、Olimex、Pasat、Philips、Phytec、ST和TI等。</p><p>  (4) 支持ARM或Thumb模式下大至4G字節(jié)的應(yīng)用程序。</p><p>  (5) 每個(gè)函數(shù)都能選擇在ARM或Thumb模式下編譯。</p><p>  (6) 可生成VFP向量浮點(diǎn)協(xié)處理器代碼。</p><p>  (7) 支持Ana

94、log Devices、Atmel、Freescale、OKI、Philips、ST和TI等廠商的ARM處理器的Flash Loader程序。</p><p>  (8) 支持ARM Angel Debug monitor。</p><p>  3.2.5 集成開發(fā)環(huán)境的界面特色</p><p>  (1) 分層次的工程組織。 </p><p&g

95、t;  (2) 同一工作空間中允許存放多個(gè)工程。</p><p>  (3) 可??康拇翱诤投嘁晥D。</p><p>  (4) 源代碼瀏覽。</p><p>  (5) 創(chuàng)建和維護(hù)庫的工具。 </p><p>  (6) 可以和源代碼控制系統(tǒng)相集成。 </p><p>  (7) 文本編輯器。</p>

96、<p>  圖3-3 調(diào)試窗口</p><p>  圖3-3就是IAR Embeded Workbench的工作界面。其中:1窗口為工作窗口,2是程序源代碼窗口,3是反匯編窗口,4是寄存器窗口,5是存儲(chǔ)器窗口,其實(shí)還可以打開更多的窗口,例如變量窗口等。由此可見IAR為編程人員在調(diào)試過程中提供了很大的方便。</p><p><b>  4 編程及調(diào)試</b>

97、;</p><p><b>  整機(jī)初始化</b></p><p><b>  流程圖</b></p><p>  圖4-1 整機(jī)初始化流程圖</p><p><b>  初始化源程序</b></p><p>  功能:系統(tǒng)時(shí)鐘、加速模塊、中斷初始化&

98、lt;/p><p>  void system_init()</p><p>  {/*VPB分頻系數(shù)配置*/</p><p>  PLLCON = 1; // PLL使能(開啟)</p><p>  #if ((Fcclk/4)/Fpclk)==1 // VPB時(shí)鐘為處理器時(shí)鐘的1/4時(shí)</p><

99、p>  VPBDIV=0; // VPB分頻系數(shù)設(shè)置:模式0</p><p><b>  #endif</b></p><p>  #if((Fcclk/4)/Fpclk)==2 // VPB總線時(shí)鐘為處理器時(shí)鐘的1/2時(shí)</p><p>  VPBDIV=2; // VPB分頻系數(shù)設(shè)

100、置:模式2</p><p><b>  #endif</b></p><p>  #if((Fcclk/4)/Fpclk)==4 // VPB總線時(shí)鐘與處理器時(shí)鐘相同時(shí)</p><p>  VPBDIV=1; // VPB分頻系數(shù)設(shè)置:模式1</p><p><b>  #endi

101、f</b></p><p>  /*PLL 倍頻/分頻值自動(dòng)配置*/</p><p>  #if(Fcco/Fcclk)==2 // 流控振蕩頻率是系統(tǒng)頻率的2倍時(shí)</p><p>  PLLCFG=((Fcclk/Fosc)-1)|(0<<5); //PLL配置:</p><p>&l

102、t;b>  #endif</b></p><p>  #if(Fcco/Fcclk)==4</p><p>  PLLCFG=((Fcclk/Fosc)-1)|(1<<5);</p><p><b>  #endif</b></p><p>  #if(Fcco/Fcclk)==8</

103、p><p>  PLLCFG=((Fcclk/Fosc)-1)|(2<<5);</p><p><b>  #endif</b></p><p>  #if (Fcco/Fcclk)==16</p><p>  PLLCFG = ((Fcclk/Fosc)-1)|(3 << 5);</p>

104、<p><b>  #endif</b></p><p>  PLLFEED = 0xaa;</p><p>  PLLFEED = 0x55;</p><p>  while((PLLSTAT&(1<<10))==0);</p><p>  PLLCON = 3;</p>

105、<p>  PLLFEED = 0xaa;</p><p>  PLLFEED = 0x55;</p><p>  // 存儲(chǔ)器加速配置</p><p>  MAMCR = 0;</p><p>  #if Fcclk < 20000000</p><p>  MAMTIM = 1;</p>

106、;<p><b>  #else</b></p><p>  #if Fcclk < 40000000</p><p>  MAMTIM = 2;</p><p><b>  #else</b></p><p>  MAMTIM = 3;</p><p>

107、<b>  #endif</b></p><p>  MAMCR = 2;</p><p><b>  // VIC初始化</b></p><p>  VICIntSelect=0;</p><p>  VICIntEnClear=0xFFFFFFFF;</p><p>  

108、VICSoftIntClear=0xFFFFFFFF;</p><p>  VICProtection=0;</p><p>  VICVectAddr=0;</p><p>  VICDefVectAddr=0;</p><p><b>  }</b></p><p><b>  AD

109、程序設(shè)計(jì)</b></p><p><b>  流程圖</b></p><p>  圖4-2 A/D程序設(shè)計(jì)流程圖</p><p><b>  源程序</b></p><p><b>  while(1)</b></p><p><b&

110、gt;  {</b></p><p>  ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24); // 切換通道并進(jìn)行第一次轉(zhuǎn)換</p><p>  while( (ADDR&0x80000000)==0 );// 等待轉(zhuǎn)換結(jié)束</p><p>  ADCR = ADCR | (1 <&

111、lt; 24);// 再次啟運(yùn)轉(zhuǎn)換</p><p>  while( (ADDR&0x80000000)==0 );</p><p>  ADC_Data = ADDR;// 讀取ADC結(jié)果</p><p>  ADC_Data = (ADC_Data>>6) & 0x3FF;</p><p&g

112、t;  ADC_Data = ADC_Data * 3300;</p><p>  ADC_Data = ADC_Data / 1024;</p><p>  sprintf(str, "%4dmV at VIN1", ADC_Data);</p><p>  ISendStr(60, 23, 0x30, str); </p

113、><p>  DelayNS(10); </p><p><b>  }</b></p><p>  4.3 液晶模塊程序設(shè)計(jì)</p><p><b>  流程圖</b></p><p>  圖4-3 字符串顯示流程圖</p><p> 

114、 根據(jù)用戶的設(shè)置,判斷要寫入第幾行,然后將對(duì)應(yīng)的端口地址寫入液晶屏。再將字符逐個(gè)寫入液晶屏,此時(shí)液晶屏上會(huì)出現(xiàn)要顯示的字符。</p><p>  顯示數(shù)字模塊的設(shè)計(jì)與字符顯示模塊類似,其主要思想是將數(shù)字逐位轉(zhuǎn)化為字符串,然后寫入液晶屏。數(shù)字轉(zhuǎn)化為字符的方法是,先取數(shù)字的各位,轉(zhuǎn)化為ASCII碼,存入字符串?dāng)?shù)組中的第一個(gè)單元。以此類推,將數(shù)字的每一位取出,轉(zhuǎn)換為ASCII碼,依次存入字符串?dāng)?shù)組。再將字符串顯示在液晶

115、屏。</p><p><b>  其流程圖如下:</b></p><p>  圖4-4 字符轉(zhuǎn)換流程圖</p><p><b>  源程序</b></p><p>  LCD寫命令數(shù)據(jù)函數(shù)</p><p>  /*******************************

116、*************************************</p><p>  函數(shù)功能:寫命令/數(shù)據(jù)</p><p>  *說明:data 寫入的值 cd=0指令寫入, cd=1數(shù)據(jù)寫入,</p><p>  ********************************************************************/

117、</p><p>  extern void WriteOperate(unsigned char value,unsigned char cd)</p><p><b>  {</b></p><p>  BusyLoop(); //</p><p><b>  if(cd)</b>&

118、lt;/p><p>  LCDRS_DH; //RS=1;</p><p><b>  else</b></p><p>  LCDRS_CL; //RS=0;</p><p>  LCDRW_WL; //RW=0;</p><p>  LCDE_EH;

119、 //E=1;</p><p>  LCDOUT = value;</p><p><b>  LCDOUT_1;</b></p><p>  Delay(20);</p><p>  LCDE_EL; //E=0</p><p><b>  }</b><

120、;/p><p>  /**************************** 寫無參數(shù)指令 **************************</p><p><b>  入口參數(shù):命令</b></p><p>  *****************************************************************

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論