版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一、建立quartus ii工程首先,雙擊quartus ii 9.1圖標打開軟件,界面如下圖1.1所示 圖1.11.1 新建工程(1) 點擊file >New Project Wizard 出現(xiàn)圖1.2所示的對話框。 圖1.2 (2) 點擊Next。如圖1.3所示:第一行是工程的路徑,二、三行為實體名。填好后點擊Next。圖1.3(3)此處可選擇加入已設(shè)計好的文件到工程,點擊Next。圖1.4(4)選擇設(shè)計器件如圖1.5所示。接著點擊Next。圖1.5 (5)接著點擊Next。無需改動,點擊finish,顯示如下圖所示。圖1.6(6)此時,工程已經(jīng)建立完成,接下來需要建立一個原理圖輸入
2、文件,點擊file >New ->Block Diagram/Schematic File 后如圖1.7所示。圖1.7二、構(gòu)建一個nios ii 軟核(1)首先點擊Tools ->Sopc Builder圖2.1在System Name中輸入軟核的名稱,注意:軟核的名稱不能和quartus工程的實體名相同,否則編譯會出現(xiàn)錯誤,接著點擊ok。圖2.2圖中clk_0為時鐘名稱,100.0為時鐘值雙擊可修改其值。即軟核的時鐘就是100。()建立nios ii處理器點擊rocessors -> Nios ii Processor 如圖2.3所示圖2.3點擊后,將出現(xiàn)下圖,在下圖
3、中選擇軟核的類型。這里提供了三種類型,Nios II/e占用資源最少600-800LEs,功能也最簡單,速度最慢。Nios II/s占資源比,前者多一些,功能也多了,速度也忚一些Nios II/f占資源最多,功能也最多,速度就最快,用戶可根據(jù)實際的需要選擇不同的類型。此處選擇Nios II/f型,速度和功能都能滿足。下方Reset Vector是復(fù)位后啟動的Memory類型和偏移量。待SDRAM設(shè)置號以后再來設(shè)置此處。圖2.4點擊Next,如下圖所示,將Data Cache設(shè)置為None,即關(guān)閉Data Cache。圖2.5接下來連續(xù)點擊Next 3次,此時的界面如下圖所示。圖2.6在這里設(shè)置
4、JTAG Debug Module,即是Jtag調(diào)試時所用到的功能模塊,功能越多,所占用的資源也就越多。從上圖可以看見Level1 ->Level4功能逐漸增多,占用的資源也隨之增加。此處選擇Level1。點擊Finish如圖2.7所示,右擊cpu_0 ->Rename可修改處理器的名稱。圖2.7(3)建立JATG URAT模塊JTAG UART是實現(xiàn)PC和Nios II系統(tǒng)間的串行通信接口,它用于字符的輸入和輸出,是Nios ii系統(tǒng)開發(fā)調(diào)試中重要的工具,具體設(shè)置如圖2.8所示。雙擊Interface Protocos ->Serial->JTAG UART圖2.8點
5、擊Interface Protocos ->Serial->JTAG UART如圖2.9所示圖2.9此項無需修改點擊Next直至完成即可。此時顯示的界面如圖2.10所示:圖2.10(4)建立SDRAM模塊首先應(yīng)建立SDRAM控制器,具體設(shè)置如圖2.11所示圖2.11雙擊SDRAM Controller,顯示如下界面。圖中Presets選項為SDRAM的型號此處選擇Custom,以下幾項按照SDRAM數(shù)據(jù)手冊上的參數(shù)來設(shè)置即可。具體設(shè)置如下:圖2.12點擊Finish即可完成SDRAM控制器的設(shè)置。設(shè)置好SDRAM后如下圖所示。圖2.13雙擊CPU_0顯示如下,將Reset Vect
6、or項和Exception Vector設(shè)置為SDRAM_0。圖2.14至此基本模塊已經(jīng)建立完成。實驗1 LED閃爍實驗在以上模塊的基礎(chǔ)上建立PIO模塊,具體設(shè)置如下圖所示。圖2.15雙擊PIO(Parallel I/O)后如下圖所示,圖中第一個設(shè)置項為PIO的數(shù)據(jù)寬度。第二個設(shè)置項偉IO口的方向設(shè)置,類型從上到下依次為雙向口、只輸入、輸入輸出、只輸出。最后一項為IO口復(fù)位的初始值。圖2.16接著點擊Finish完成PIO模塊的建立,并將其改名為LED,如下圖所示圖2.17接著進行基地址的自動分配,具體設(shè)置如下圖所示。圖2.18到此,LED閃爍實驗所用到的軟核已經(jīng)構(gòu)建完成。接下來就開始編譯了,
7、首先保存一下,再點擊Generate,開始編譯,編譯會用較長的時間,編譯結(jié)束后顯示如下點擊Exit,進入Quartus ii軟件調(diào)用剛剛生成的軟核,雙擊Quartus ii軟件中的空白處,彈出如下窗口點擊led即可調(diào)用led軟核。接下來為軟核添加引腳,如下圖所示:右擊軟核,選擇Generate Pin For Symbol Parts 將顯示下圖接下來需要建立一個鎖相環(huán)為SDRAM提供時鐘具體過程如下,雙擊空白處,設(shè)置如下點擊顯示如下,點擊Next。接下來點擊IO- > Altpll,在填入PLL的名稱,點擊Next。在下圖的第二選項中選擇鎖相環(huán)的輸入時鐘,此處選擇50Mhz, 接著點擊
8、Next。進行如下設(shè)置下圖中第一個選項框中填入倍頻系數(shù),第二個選項框中填入分頻系數(shù),可根據(jù)需要進行設(shè)置,由于Nios ii軟核的時鐘設(shè)置的時100M,故在第一個選項框中填入2,第三個選項框為鎖相環(huán)輸出時鐘的起始相位,如下圖所示。接著點擊Next連續(xù)點擊Finish即可完成鎖相環(huán)的設(shè)置。然后雙擊空白處接著點擊Project調(diào)用PLL,并生成端口,進行如下連接接著,進行如下設(shè)置在出現(xiàn)的窗口中選擇項,出現(xiàn)下圖所示的界面點擊Unused Pin 進行如下設(shè)置,將所有未用到的引腳設(shè)置為三態(tài)輸入,以免功耗過大燒壞FPGA芯片圖3-1然后點擊ok即可,接下來編譯Quartus ii工程編譯結(jié)束后就可以分配引
9、腳了,具體設(shè)置如下設(shè)置后出現(xiàn)如下圖所示的界面,在引腳名稱后填入對應(yīng)的編號即可接下來再次編譯Quartus ii工程。同時將Nios ii 9.1 IDE 進入如下界面關(guān)閉Welcome,出現(xiàn)如下界面。點擊File->New->Project 出現(xiàn)如下界面 ,點擊下圖藍色處點擊Next出現(xiàn)下圖所示界面,第一行是工程名在Browse,選擇路徑為Quartus ii工程的存儲路徑,從中加入ptf文件,加入后會在下面出現(xiàn)一個CPU,如下圖所示點擊Finish即可。出現(xiàn)下圖所示的界面圖3-2將原程序拷入再進行如下設(shè)置,點擊Run - >Run,進入如下界面再點擊Target Conne
10、ction進行如下設(shè)置在JTAG cable中選擇USB_Blaster,JTAG Device中選擇EPCS,點擊Apply,然后點擊Close。在上圖中點擊Project ->Build All編譯工程,或者是快捷鍵(Ctrl+B)由于第一次編譯工程要對很多庫文件進行編譯,所以第一次編譯的時間會很長,以后的時間會較短,注意:每次編譯之前要進行保存,在編譯時文件不會自動保存,也不會提示用戶該文件沒有保存。編譯完后再進行如下設(shè)置點擊Tool ->Programmer,出現(xiàn)如下的界面。在Mode中選擇JTAG,再點擊ADD File,出現(xiàn)如下界面雙擊led.sof文件即可,在下圖所示
11、的界面中點擊Start執(zhí)行此項即將Quartus II 中的軟核下載到fpga中,接下來就是將Nios ii中得出程序下載到軟核中去,具體方法是點擊Run ->Run As ->Nios ii Hardware 。執(zhí)行后,用戶可以看見fpga核心板上的led在不斷地閃爍。接下來解釋一下如下出現(xiàn)#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include "unistd.h"#define led_
12、on IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, 0x01) #define led_off IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, 0x00) void fun();void main (void) while (1) /if (IORD_ALTERA_AVALON_PIO_DATA(KEY)=0) fun(); void fun(void) led_on; usleep(90000); led_off; usleep(90000); 出現(xiàn)中的#define led_on IOWR_ALTERA_AVALON_PIO_DAT
13、A(LED_BASE, 0x01) #define led_off IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, 0x00) 為在指定的地址輸出低電平和高電平。 usleep(90000);為Nios ii庫函數(shù)中得延時函數(shù),基本延時為1us即(usleep(1)的延時為1us)。實驗二 外部中斷實驗首先進入Sopc Builder,按照前面所講的方法,將cpu,sdram,jtag配置好,如下圖所示。 圖4-1圖中的interr的配置按如下方式進行。點擊Peripherals ->Microcontroller Peripherals ->pio彈出
14、如下窗口。選擇input ports only,點擊next選擇input ports only,點擊next出現(xiàn)如下界面。圖中Generate IRQ為產(chǎn)生中斷,即該端口具有中斷的功能。Level為中斷的類型,電平中斷Edge為邊沿中斷,選擇電平中斷,注意:電平中斷默認是高電平有效,點擊Finish。接著再配置一個只輸出的引腳來驗證是否進入中斷,配置方法和實驗一的是相同的。接著自動分配基地址,中斷優(yōu)先級可手動修改。然后點擊Generate生成軟核。接著在Quartus ii 中調(diào)用軟核進行如下連接。接著編譯工程,并將未用到的端口設(shè)置為三態(tài)輸入。設(shè)置方法見圖3-1所示。分配引腳,再次編譯工程,
15、結(jié)束后將程序下載到fpga中。打開Nios ii軟件,按照實驗1的步驟進行設(shè)置,打開軟件以后將出現(xiàn)3-2所示的界面。首先編譯工程,接著將在System.h中可以看見如下程序#define INTRERR_NAME "/dev/intrerr"#define INTRERR_TYPE "altera_avalon_pio"#define INTRERR_BASE 0x01001000#define INTRERR_SPAN 16#define INTRERR_IRQ 1#define INTRERR_IRQ_INTERRUPT_CONTROLLER_ID
16、0#define INTRERR_DO_TEST_BENCH_WIRING 0#define INTRERR_DRIVEN_SIM_VALUE 0#define INTRERR_HAS_TRI 0#define INTRERR_HAS_OUT 0#define INTRERR_HAS_IN 1#define INTRERR_CAPTURE 0#define INTRERR_DATA_WIDTH 1#define INTRERR_RESET_VALUE 0#define INTRERR_EDGE_TYPE "NONE"#define INTRERR_IRQ_TYPE &quo
17、t;LEVEL"#define INTRERR_BIT_CLEARING_EDGE_REGISTER 0可以看見INTRERR_IRQ 1與圖4-1中所示的INTRERR的中斷優(yōu)先級一樣的,都為1。接下來講解一下Nios ii的硬件中斷,首先介紹一下與硬件中斷相關(guān)的內(nèi)容,讓用戶對 Nios ii 的硬件中斷有一個概括性的了解。 ISR(Interrupt Service Routine)中斷服務(wù)函數(shù)是為硬件中斷服務(wù)的子程序。Nios ii處理器支持32 個硬件中斷,每一個使能了的硬件中斷都應(yīng)該有一個ISR與之對應(yīng)。中斷產(chǎn)生時,硬件中斷處理器會根據(jù)檢測到的有效中斷級別,調(diào)用相應(yīng)的 IS
18、R為其中斷服務(wù)。要完成硬件中斷工作,需要做兩件事: 第一,注冊中斷函數(shù)ISR,它的原函數(shù)型如下所示:Int alt_irq_register(alt_u32 id, void* context, void(*handler) (void*,alt_u32);id:中斷優(yōu)先級,即所注冊的ISR是為哪個中斷優(yōu)先級的中斷服務(wù)的。中斷優(yōu)先級在 SOPC Builder 中分配的,如下圖所示紅圈標示。中斷的優(yōu)先級可人為修改,0的優(yōu)先級最高。接下來介紹Context和Handler兩個參數(shù)。Context,為所注冊的 ISR傳遞參數(shù),可以是NULL;Handler,中斷服務(wù)函數(shù)ISR的指針。再來說返回值,
19、返回值是 0 時,表示中斷注冊成功;返回為負數(shù),表明中斷注冊失敗。此處有一個需要注冊的地方,如果 handler 不是NULL,則該優(yōu)先級中斷在注冊成功后將自動使能,也即是說,只要在handler 處有相應(yīng)的ISR,就不需要再進行使能處理了。接下來分析外部中斷的程序#include "altera_avalon_pio_regs.h"#include "stdio.h" #include "system.h"#include "alt_types.h" #include <io.h>#include&l
20、t;inter.h>#include<LED.C>int flag;void led(void);int init_key(void);void isr_key(void *context ,unsigned long id);int main() IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTRERR_BASE,1);/使能中斷 while(1) if (!init_key() printf("sucessfull"); else printf("unsucessfull"); if(flag) led();
21、return 0;void isr_key(void *context ,unsigned long id) IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTRERR_BASE,0);/禁止中斷 flag=flag; printf("okn%dn",flag);int init_key(void) IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTRERR_BASE,1); return alt_irq_register(INTRERR_IRQ,INTRERR_BASE,isr_key);/注冊中斷處理函數(shù)void led(void
22、) IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,1); usleep(100000); IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0); usleep(100000);其中init_key(void)函數(shù)的功能是使能外部中斷,并注冊中斷處理函數(shù)。在語句alt_irq_register(INTRERR_IRQ,INTRERR_BASE,isr_key);第一個參數(shù)INTRERR_IRQ即為中斷優(yōu)先級號,可在system.h中查得;第二個參數(shù)為所注冊的中斷處理函數(shù)的傳遞參數(shù),此處為INTRERR_BASE,即INTRERR的基地址;第三
23、個參數(shù)isr_key即為中斷處理函數(shù)。在程序中void isr_key(void *context ,unsigned long id)即為中斷處理函數(shù),在函數(shù)中首先禁止中斷,允許下次中斷。接著將標志位flag取反,并在Nios ii的下方打印出ok。在主函數(shù)中循環(huán)檢測中斷是否注冊成功,如果注冊成功,將打印輸出successful,否則打印輸出unsuccessful。接下來再次編譯工程,點擊Project ->Build All,如下圖所示。編譯完成后,再點擊hello_world_0 ->Run As ->Nios ii Hardware可以看見下方窗口打印出得字符,如下
24、圖所示。能夠打印出ok說明中斷注冊成功并產(chǎn)生了中斷,此處為低電平產(chǎn)生中斷,由于Nios ii默認是高電平產(chǎn)生中,在Quartus ii 中的interr引腳前加入了一個反相器,所以此處為低電平產(chǎn)生中斷。實驗三 Nios ii 控制lcd-12864想要驅(qū)動lcd-12864液晶,首先要知道12864液晶的使用方法和編程方法,接下來將要介紹12864液晶的基礎(chǔ)知識。一、 帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個16*16點漢字,和128個16*8點
25、ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面。可以顯示8×4行16×16點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。二、 基本特性:(1)、低電源電壓(VDD:+3.0-+5.5V)(2)、顯示分辨率:128×64點 (3)、內(nèi)置漢字字庫,提供8192個16×16點陣漢字(簡繁體可選) (4)、內(nèi)置 128個16×8點陣字符 (5)
26、、2MHZ時鐘頻率 (6)、顯示方式:STN、半透、正顯 (7)、驅(qū)動方式:1/32DUTY,1/5BIAS (8)、視角方向:6點 (9)、背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/51/10 (10)、通訊方式:串行、并口可選 (11)、內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負壓 (12)、無需片選信號,簡化軟件設(shè)計(13)、工作溫度: 0 - +55 ,存儲溫度: -20 - +60模塊接口說明:*注釋1:如在實際應(yīng)用中僅使用串口通訊模式,可將PSB接固定低電平,也可以將模塊上的J8和“GND”用焊錫短接。*注釋2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。
27、*注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。2.2并行接口管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數(shù)據(jù)RS=“L”,表示DB7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7DB0R/W=“L”,E=“HL”, DB7DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L
28、三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式16NC-空腳17/RESETH/L復(fù)位端,低電平有效18VOUT-LCD驅(qū)動電壓輸出端19AVDD背光源正端(+5V)(見注釋3)20KVSS背光源負端了解了引腳的功能,還需知道其操作時序。如下圖如果如何在 NIOS 下驅(qū)動液晶屏。從以上資料可知,需要程序控制的引腳有RS,R/W,EN,DB0-DB7。首先,我們需要在軟核中四個PIO模塊,如下圖所示圖中l(wèi)cd_data與是液晶的數(shù)據(jù)總線,由于液晶需要讀忙標志,所以設(shè)置lcd_data為雙向口位寬為8位,RS,RW,EN均設(shè)置為輸
29、出。Cpu,sdram,jtag,設(shè)置和實驗一相同。設(shè)置好以后,自動分配基地址,中斷優(yōu)先級,再進行編譯。然后回到Quartus ii中分配好引腳。至此硬件部分設(shè)置就已結(jié)束了。接下來打開Nios ii軟件,建立好工程以后第一步進行工程的編譯。在本節(jié)將要介紹如何在Nios ii中在線調(diào)試,這也是一個非常重要的工具。編譯結(jié)束后,需要編寫一個12864的驅(qū)動函數(shù),在編寫驅(qū)動函數(shù)之前,先介紹一下幾個常用的函數(shù)函數(shù)原型:IORD(BASE, REGNUM) 輸入?yún)?shù):BASE為寄存器的基地址,REGNUM為寄存器的偏移量函數(shù)說明:從基地址為BASE的設(shè)備中讀取寄存器中偏移量為REGNU
30、M的單元里面的值。寄存器的值在地址總線的范圍之內(nèi)。返回值: 函數(shù)原型:IOWR(BASE, REGNUM, DATA)輸入?yún)?shù):BASE為寄存器的基地址,REGNUM為寄存器的偏移量,DATA為要寫入的數(shù)據(jù)函數(shù)說明:往偏移量為REGNUM寄存器中寫入數(shù)據(jù)。寄存器的值在地址總線的范圍之內(nèi)。返回值: 函數(shù)原型:IORD_32DIRECT(BASE, OFFSET)輸入?yún)?shù):BASE為寄存器的基地址,OFFSET為寄存器的的偏移量函數(shù)說明:從地址位置為BASE+OFFSET的寄存器中直接讀取32Bit的數(shù)據(jù)。返回值:
31、; 函數(shù)原型:IORD_16DIRECT(BASE, OFFSET) 輸入?yún)?shù):BASE為寄存器的基地址,OFFSET為寄存器的的偏移量函數(shù)說明:從地址位置為BASE+OFFSET的寄存器中直接讀取16Bit的數(shù)據(jù)。返回值: 函數(shù)原型:IORD_8DIRECT(BASE, OFFSET) 輸入?yún)?shù):BASE為寄存器的基地址,OFFSET為寄存器的的偏移量函數(shù)說明:從地址位置為BASE+OFFSET的寄存器中直接讀取8Bit的數(shù)據(jù)。返回值: 函數(shù)原型:IOWR_32DIRECT(BASE, O
32、FFSET, DATA)輸入?yún)?shù):BASE為寄存器的基地址,REGNUM為寄存器的偏移量,DATA為要寫入的數(shù)據(jù)。函數(shù)說明:往地址位置為BASE+OFFSET的寄存器中直接寫入32Bit的數(shù)據(jù)。返回值: 函數(shù)原型:IOWR_16DIRECT(BASE, OFFSET, DATA)輸入?yún)?shù):BASE為寄存器的基地址,REGNUM為寄存器的偏移量,DATA為要寫入的數(shù)據(jù)。函數(shù)說明:往地址位置為BASE+OFFSET的寄存器中直接寫入16Bit的數(shù)據(jù)。返回值: 函數(shù)原型:IOWR_8DIRECT(BASE, OFFSET, DAT
33、A)輸入?yún)?shù):BASE為寄存器的基地址,REGNUM為寄存器的偏移量,DATA為要寫入的數(shù)據(jù)。函數(shù)說明:往地址位置為BASE+OFFSET的寄存器中直接寫入8Bit的數(shù)據(jù)。返回值: 接著寫12864的驅(qū)動函數(shù)。具體函數(shù)如下#include "altera_avalon_pio_regs.h"#include "stdio.h"#include "string.h" / strlen() #include "system.h"#include "alt_types.h" #include
34、 "unistd.h" #include <stdio.h>#include <sys/unistd.h>#include <io.h>void Lcd12864a_WrChar(alt_u8 row,alt_u8 col,alt_u8 *pCN,alt_u8 n);void Lcd1284a_Init(void) ;void Lcd12864a_WrCmd(alt_u8 cmd);void Lcd12864a_WrData(char data);void Lcd12864aa_WrData(unsigned char data);voi
35、d main() int i; IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0xff); Lcd1284a_Init(); Lcd12864a_WrCmd(0x80); char s="niosii_lcd12864液晶" Lcd12864aa_WrData(s); /* 函數(shù)原型:void Lcd1284a_Init(void) 功能 :初始化12864液晶 參數(shù) :無 返回值 :無 */ void Lcd1284a_Init(void) Lcd12864a_WrCmd(0x30); usleep(100); Lcd12
36、864a_WrCmd(0x30); usleep(37); Lcd12864a_WrCmd(0x0F); usleep(100); Lcd12864a_WrCmd(0x01); usleep(100); Lcd12864a_WrCmd(0x02); usleep(100); Lcd12864a_WrCmd(0x06); usleep(100); /* 函數(shù)原型: void LCD12864a_CheckBusy(void) 功能 :判別12864液晶是否處于忙狀態(tài) 參數(shù) :無 返回值 :無 */ void LCD12864a_CheckBusy(void) IOWR_ALTERA_AVALON
37、_PIO_DATA(RS_BASE,0); IOWR_ALTERA_AVALON_PIO_DATA(WR_BASE,1); IOWR(EN_BASE,0,1); IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0x00); usleep(72); while(IORD_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE) & 0x80)=0x80);/查busy IOWR(EN_BASE,0,0); usleep(72); IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE,
38、 0xff);/* 函數(shù)原型: void Lcd12864a_WrCmd(alt_u8 cmd) 功能 :向12864液晶寫入命令 參數(shù) :alt_u8 cmd 返回值 :無 */ void Lcd12864a_WrCmd(alt_u8 cmd) LCD12864a_CheckBusy(); IOWR_ALTERA_AVALON_PIO_DATA(RS_BASE,0); IOWR_ALTERA_AVALON_PIO_DATA(WR_BASE,0); IOWR_ALTERA_AVALON_PIO_DATA(EN_BASE,1); IOWR_ALTERA_AVALON_PIO_DATA(LCD_D
39、ATA_BASE,cmd); IOWR_ALTERA_AVALON_PIO_DATA(EN_BASE,0); usleep(72); /* 函數(shù)原型: void Lcd12864a_WrData(char data) 功能 :向12864液晶寫入數(shù)據(jù) 參數(shù) :char data 返回值 :無 */ void Lcd12864a_WrData(char data) int i=0x80,k=0; LCD12864a_CheckBusy(); IOWR_ALTERA_AVALON_PIO_DATA(RS_BASE,1); IOWR_ALTERA_AVALON_PIO_DATA(WR_BASE,0); IOWR_ALTERA_AVALON_PIO_DATA(EN_BASE,1); IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,data); IOWR_ALTERA_AVALON_PIO_DATA(EN_BASE,0); usleep(72); /* 函數(shù)原型: void Lcd12864a_WrChar(alt_u8 row,alt_u8 col,alt_u8 *pCN,alt_u8 n) 功能 :向指定行列寫入n個數(shù)據(jù) 參數(shù) :alt_u8 row,alt_u8 col,alt_u8 *pCN,alt_u8 n 返回值 :無 */ vo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧解決方案提升城市公共服務(wù)能力
- 未來數(shù)字化農(nóng)業(yè)在水果種植中的挑戰(zhàn)與機遇
- 糖尿病的健康
- 數(shù)字化農(nóng)業(yè)企業(yè)發(fā)展戰(zhàn)略建議
- 2024正規(guī)的加盟代理合同模板
- 制鞋業(yè)市場差異化競爭策略考核試卷
- 托兒所服務(wù)的自我管理考核試卷
- 醫(yī)藥制造業(yè)科研與創(chuàng)新考核試卷
- 農(nóng)業(yè)廢棄物壓縮機批發(fā)考核試卷
- 天然氣利用的節(jié)能與減排效果考核試卷
- 《1.6.1 余弦定理》說課稿
- 急診醫(yī)學(xué)測試試題及答案
- 2024年廣州鐵路(集團)公司招聘468人易考易錯模擬試題(共500題)試卷后附參考答案
- 第四單元兩、三位數(shù)除以一位數(shù)(單元測試)-2024-2025學(xué)年三年級上冊數(shù)學(xué)蘇教版
- 2024年保安員證考試題庫及答案(共240題)
- 人教版一年級上冊數(shù)學(xué)期末試題及答案
- 浙江省9+1高中聯(lián)盟2023-2024學(xué)年高一上學(xué)期11月期中英語試題 含解析
- 2025屆高三化學(xué)一輪復(fù)習 第13講 鐵鹽、亞鐵鹽及其轉(zhuǎn)化 課件
- 【電商企業(yè)跨國并購的績效探析案例:以阿里巴巴并購Lazada為例(論文)14000字】
- 2023年11月軟考中級系統(tǒng)集成項目管理工程師下午真題(第二批)
- 2024年江蘇省鹽城射陽縣部分村(居)宣傳文化管理員招聘57人歷年高頻難、易錯點500題模擬試題附帶答案詳解
評論
0/150
提交評論