nios 中lcd的寄存器读写问题

2019-03-25 10:50发布

请问一下,我的LCD有四个寄存器,如何对着四个寄存器读和写???
为什么我的程序调试出来的结果:是只能够显示出对应的颜 {MOD},无法出现在程序指定的地方。同一个程序运行两次,颜 {MOD}没变,但是出现的位置好像是随机的。期待回答!!!!!!!!!!
这是我写的程序:
#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);
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
eeleader-mcu
1楼-- · 2019-03-25 13:34
< /

需要的太具体了,你需要把你需要驱动的LCD 给我们看看,让我们仔细了解一下你的使用背景。

一周热门 更多>