请问一下,我的LCD有四个寄存器,如何对着四个寄存器读和写???
为什么我的程序调试出来的结果:是只能够显示出对应的颜色,无法出现在程序指定的地方。同一个程序运行两次,颜色没变,但是出现的位置好像是随机的。期待回答!!!!!!!!!!
这是我写的程序:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "unistd.h"
#include "alt_types.h"
void X_ADDR(unsigned char x);
void Y_ADDR(unsigned char y);
void CMD(unsigned char cmd);
void DATA(unsigned char data);
int main()
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE,0xff);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RD_BASE,1);//RD始终在写的过程中置高
unsigned char i, j;
CMD(0x00);
for(j=10;j<=50;j++)
{
X_ADDR(10);
X_ADDR(0);
Y_ADDR(j);
for(i=10;i<=50;i++)
DATA(0xe3);
}
while(1);
return 0;
}
/*****************对寄存器x的操作************************/
void X_ADDR(unsigned char x)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_A1A0_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE, x);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,1);
}
/****************对寄存器y的操作******************************/
void Y_ADDR(unsigned char y)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_A1A0_BASE,1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE, y);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,1);
}
/*******************对寄存器cmd的操作******************************/
void CMD(unsigned char cmd)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_A1A0_BASE,2);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE, cmd);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,1);
}
/*******************对寄存器data的操作*****************************/
void DATA(unsigned char data)
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_A1A0_BASE,3);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,data);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,1);
}
一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
需要的太具体了,你需要把你需要驱动的LCD 给我们看看,让我们仔细了解一下你的使用背景。