📄 nios2lcd.txt
字号:
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "lcd_display.h"
#define char8 unsigned char
#define int16 unsigned int
#define int32 unsigned long
/****************************/
// delay
/****************************/
void delay(int32 i)
{
while(i!=0)
i--;
}
/****************************/
// delay 3s
/****************************/
void delay_3s()
{
char8 i=0;
while(i<100)
{
delay(50000);
i++;
}
}
/****************************/
/* read lcd status */
/****************************/
char8 read_status(void)
{
char8 i;
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0); //pio set to input
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,0); //LCD_DIR=0,b to a
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1); //LCD_CD=1
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RD_N_BASE,0); //LCD_RD_N=0
delay(10);
i=IORD_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE); //status byte
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RD_N_BASE,1); //LCD_RD_N=0
return(i);
}
/****************************/
/* read lcd status0 1 */
/****************************/
void st01(void)
{
while((read_status()&0x03)!=0x03)
;
}
/****************************/
/* read lcd status3 */
/****************************/
void st3(void)
{
while((read_status()&0x08)!=0x08)
;
}
/****************************/
// write data to lcd
/****************************/
void wr_data(char8 i)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0xff); //pio set to output
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,0); //LCD_CD=0
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,i); //write data
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,0); //LCD_WE=0
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,1); //LCD_WE=1
}
/****************************/
// write command to lcd
/****************************/
void wr_cmd(char8 i)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0xff); //pio set to output
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1); //LCD_CD=0
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,i); //write data
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,0); //LCD_WE=0
delay(10);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,1); //LCD_WE=1
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -