搜索
bottom↓
回复: 2

320*240 RA8835控制单色LCD 测试

[复制链接]

出0入0汤圆

发表于 2010-5-29 17:25:00 | 显示全部楼层 |阅读模式
手上有块没控制器的 LM2028 320*240单色LCD
谁写过控制程序?上点代码!谢谢!



今天玩了一天单色LCD 双向IO时出问题,没玩转,所以好多图出不来
用的这液晶
AM320240_57C59 国产 ANDORIN 这东西不好,写一屏数要2秒.


这是个测试程序,正常 100M时钟

#include "system.h"
#include "altera_avalon_uart_regs.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "alt_types.h"
#include "system.h"  
#include "sys/alt_irq.h"  
#include  "priv/alt_busy_sleep.h"

#include <unistd.h>  
#include <stdio.h>  

union addr//地址共用体
        {
        alt_u16 address;
        alt_u8 a[2];
        };

unsigned char led,rev;
unsigned char ids=0;
unsigned char sd[9];



alt_u8  Bmp001[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 1
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:42:04
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x1C,0x00,0x00,0x1C,
0x00,0x00,0x3C,0x00,0x00,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x00,0x3C,0x00,
0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,
0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,
0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,
0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,
0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp002[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 2
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:42:29
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,
0xE0,0x07,0xC1,0xF0,0x0F,0x80,0xF0,0x0F,0x00,0xF0,0x0F,0x00,0x78,0x1E,0x00,0x78,
0x1E,0x00,0x78,0x1E,0x00,0x78,0x1E,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,
0x00,0xF0,0x00,0x01,0xF0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x3F,
0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x01,0xF8,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,
0x07,0x80,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x3F,
0xFF,0xFC,0x3F,0xFF,0xFC,0x3F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp003[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 3
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 13:48:07
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x80,0x03,0xFF,
0xC0,0x07,0xC3,0xE0,0x0F,0x81,0xE0,0x0F,0x00,0xF0,0x0F,0x00,0xF0,0x1E,0x00,0xF0,
0x1E,0x00,0xF0,0x1E,0x00,0xF0,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,
0x07,0xC0,0x00,0x3F,0x80,0x00,0x3F,0x00,0x00,0x3F,0xC0,0x00,0x03,0xE0,0x00,0x01,
0xF0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x78,0x3C,0x00,0x78,0x3C,0x00,0x78,
0x3C,0x00,0x78,0x3C,0x00,0x78,0x1E,0x00,0xF0,0x1F,0x00,0xF0,0x0F,0x83,0xE0,0x07,
0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

alt_u8  Bmp004[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 4
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:44:25
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,
0xE0,0x00,0x0F,0xE0,0x00,0x0F,0xE0,0x00,0x1F,0xE0,0x00,0x1D,0xE0,0x00,0x39,0xE0,
0x00,0x79,0xE0,0x00,0x71,0xE0,0x00,0xF1,0xE0,0x01,0xE1,0xE0,0x01,0xC1,0xE0,0x03,
0xC1,0xE0,0x07,0x81,0xE0,0x07,0x01,0xE0,0x0F,0x01,0xE0,0x0E,0x01,0xE0,0x1C,0x01,
0xE0,0x3C,0x01,0xE0,0x3F,0xFF,0xFE,0x3F,0xFF,0xFE,0x3F,0xFF,0xFE,0x00,0x01,0xE0,
0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,
0x01,0xE0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp005[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 5
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 15:06:51
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xE0,0x1F,0xFF,0xE0,0x1F,0xFF,
0xE0,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,
0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x7E,0x00,0x1D,0xFF,0x80,0x1F,0xFF,0xC0,0x1F,
0x83,0xE0,0x1F,0x01,0xF0,0x1E,0x00,0xF0,0x1C,0x00,0xF8,0x00,0x00,0x78,0x00,0x00,
0x78,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0x78,0x3C,0x00,0x78,
0x3C,0x00,0x78,0x3C,0x00,0xF0,0x1E,0x00,0xF0,0x1E,0x00,0xF0,0x1F,0x01,0xE0,0x0F,
0x83,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

alt_u8  Bmp006[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 6
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:45:35
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,0x7F,0xE0,0x01,0xFF,
0xF0,0x03,0xE0,0xF8,0x03,0xC0,0x78,0x07,0x80,0x7C,0x07,0x80,0x3C,0x0F,0x00,0x3C,
0x0F,0x00,0x00,0x0F,0x00,0x00,0x0E,0x00,0x00,0x1E,0x1F,0x80,0x1E,0x7F,0xC0,0x1E,
0xFF,0xE0,0x1F,0xC1,0xF0,0x1F,0x80,0xF8,0x1F,0x00,0x78,0x1F,0x00,0x7C,0x1E,0x00,
0x3C,0x1E,0x00,0x3C,0x1E,0x00,0x3C,0x1E,0x00,0x3C,0x1E,0x00,0x3C,0x0E,0x00,0x3C,
0x0F,0x00,0x3C,0x0F,0x00,0x78,0x07,0x00,0x78,0x07,0x80,0xF8,0x03,0xE1,0xF0,0x01,
0xFF,0xE0,0x00,0xFF,0xC0,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp007[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 7
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:45:58
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8,0x1F,0xFF,
0xF8,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x00,0xF0,0x00,0x00,0xF0,
0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0xC0,0x00,
0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x80,0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x0F,
0x00,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x1E,0x00,0x00,0x1E,0x00,
0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,
0x78,0x00,0x00,0xF0,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp008[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 8
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:46:15
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x80,0x03,0xFF,
0xC0,0x07,0xC3,0xE0,0x0F,0x00,0xF0,0x0F,0x00,0xF0,0x1E,0x00,0x78,0x1E,0x00,0x78,
0x1E,0x00,0x78,0x1E,0x00,0x78,0x1E,0x00,0x78,0x1F,0x00,0xF8,0x0F,0x00,0xF0,0x07,
0xC3,0xE0,0x03,0xFF,0xC0,0x00,0xFF,0x00,0x07,0xFF,0xE0,0x0F,0x81,0xF0,0x1F,0x00,
0xF8,0x1E,0x00,0x78,0x3C,0x00,0x3C,0x3C,0x00,0x3C,0x3C,0x00,0x3C,0x3C,0x00,0x3C,
0x3C,0x00,0x3C,0x3C,0x00,0x3C,0x1E,0x00,0x78,0x1F,0x00,0xF8,0x0F,0x81,0xF0,0x07,
0xFF,0xE0,0x03,0xFF,0xC0,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8 Bmp009[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 9
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:46:30
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x03,0xFF,0x00,0x07,0xFF,
0x80,0x0F,0x87,0xC0,0x1F,0x01,0xE0,0x1E,0x00,0xE0,0x3C,0x00,0xF0,0x3C,0x00,0x70,
0x3C,0x00,0x70,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,
0x00,0x78,0x1E,0x00,0xF8,0x1E,0x01,0xF8,0x0F,0x83,0xF8,0x0F,0xFF,0x78,0x03,0xFE,
0x78,0x01,0xF8,0x78,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x00,0xF0,0x00,0x00,0xF0,
0x3C,0x00,0xF0,0x3C,0x01,0xE0,0x3E,0x01,0xE0,0x1E,0x03,0xC0,0x1F,0x07,0x80,0x0F,
0xFF,0x80,0x07,0xFE,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
alt_u8  Bmp000[]=
{
/*------------------------------------------------------------------------------
;  若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
;  源文件 / 文字 : 0
;  宽×高(像素): 24×48
;  字模格式/大小 : 单色点阵液晶字模,横向取模,字节正序/144字节
;  数据转换日期  : 2009-6-18 9:47:05
------------------------------------------------------------------------------*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,
0xE0,0x07,0xC1,0xF0,0x07,0x80,0xF0,0x0F,0x00,0x78,0x0F,0x00,0x78,0x1E,0x00,0x3C,
0x1E,0x00,0x3C,0x1E,0x00,0x3C,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x3C,
0x00,0x1E,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x3C,0x00,
0x1E,0x3C,0x00,0x1E,0x3C,0x00,0x1E,0x1C,0x00,0x1C,0x1E,0x00,0x3C,0x1E,0x00,0x3C,
0x1E,0x00,0x3C,0x0F,0x00,0x78,0x0F,0x00,0x78,0x07,0x80,0xF0,0x07,0xC1,0xF0,0x03,
0xFF,0xE0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

//函数声明
void LCDClr(alt_u8 dt);
void Printstr(alt_u16 x,alt_u16 y,alt_u16 w,alt_u16 h,alt_u8 *Bmp );
/******************************************************************************
函数功能:延时
******************************************************************************/
void delaynop(alt_32 n)
{
    while(n--);
}
/******************************************************************************
函数功能:延时
******************************************************************************/
void delayms(alt_32 n)
{
    alt_32 i;
   
    while(n--)
    {
        i=12000;
        while(i--);
    }
}
/******************************************************************************
函数功能:延时
******************************************************************************/
void delayus(alt_32 n)
{
    alt_32 i;   
    while(n--)
    {
        i=12;
        while(i--);
    }
}

/*******************************************************/
//UART发送一个字节子程序
/*******************************************************/

void Uart_send(unsigned char data)
{
   
    IOWR_ALTERA_AVALON_UART_TXDATA(RS232_BASE,data);
     while(!((IORD_ALTERA_AVALON_UART_STATUS(RS232_BASE)&(0x40)) ==0x40));//等待发送完成   
}

/*******************************************************/
//UART发送多个字节子程序
/*******************************************************/

void Uart_send_n(unsigned char *ptr,unsigned char n)
{
    for(;n>0;n--)
    {
        Uart_send(*ptr);
        ptr++;
    }
}

/*******************************************************/
//串口数据扫描
/*******************************************************/

void sdatascan(void)
{
        switch (sd[5])
        {   
            case 0x16:
            Uart_send_n(sd,6);
            sd[6]=0;
            break;
            default : break;
        }
}

/*******************************************************/
//串口接收中断服务程序
/*******************************************************/

void Uart_ISR(void * context,alt_u32 id)
{
   while(!((IORD_ALTERA_AVALON_UART_STATUS(RS232_BASE)&(0x80)) ==0x80));//等待发送完成   
    sd[ids]=IORD_ALTERA_AVALON_UART_RXDATA(RS232_BASE);
   
   
   
   
   
        if(sd[0]==0X68)
        {
            ids=ids+1;
   
                if(ids>=6)
                    {   
                       if ((sd[5]==0X16))
                       {
                       ids=0;
                       rev=0x99;//取数标志         
                       }
                     else
                     {
                      ids=0;
                      }     
                    }               
        }      
}

//*******************************************************/
// 功    能:KEY1中断服务
//*******************************************************/

void Isr_KeyDown1(void* context, alt_u32 id)
{  
   alt_u8 i,l,x;
   i=20;l=2;
   x=i/l;
   IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY1_BASE, 0x0);    // 清中断捕获寄存器
   
   LCDClr(0X00);
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0xff);//LED灭
   Printstr(0,0,24,48,Bmp001 );
}

//*******************************************************/
// 功    能:KEY2中断服务
//*******************************************************/

void Isr_KeyDown2(void* context, alt_u32 id)
{  
   
   IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY2_BASE, 0x0);    // 清中断捕获寄存器
   LCDClr(0X55);
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0x00);//LED亮
   Printstr(0,0,24,48,Bmp002 );
}

//*******************************************************/
// 功    能:KEY3中断服务
//*******************************************************/
void Isr_KeyDown3(void* context, alt_u32 id)
{  
   
   IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY3_BASE, 0x0);    // 清中断捕获寄存器
   LCDClr(0Xff);
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0xff);//LED灭
   Printstr(0,0,24,48,Bmp003 );
}

//*******************************************************/
// 功    能:KEY4中断服务
//*******************************************************/
void Isr_KeyDown4(void* context, alt_u32 id)
{  
   
   IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY4_BASE, 0x0);    // 清中断捕获寄存器
   LCDClr(0XAA);
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0x00);//LED亮
   Printstr(0,0,24,48,Bmp004 );
}

/*******************************************************/
//串口中断初始化
/*******************************************************/

void PIOInit(void)

{
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDDATA_BASE,0x00);
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDCS_BASE,0x00);
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDAO_BASE,0x00);
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDWR_BASE,0x00);
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDRD_BASE,0x00);
     IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCDRST_BASE,0x00);
   
    IOWR_ALTERA_AVALON_UART_CONTROL(RS232_BASE, 0x80);//接收中断使能
    IOWR_ALTERA_AVALON_UART_STATUS(RS232_BASE, 0x00);//清状态标志
    IOWR_ALTERA_AVALON_UART_RXDATA(RS232_BASE, 0x00);//清接收寄存器
    alt_irq_register(RS232_IRQ,NULL,Uart_ISR);//注册中断服务子程序
   
    IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LED_BASE, 0x00); //LED_PIO为输出
   
    IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY1_BASE, 0x00); //KEY_PIO为输出
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY1_BASE, 0xff); //开启KEY的中断
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY1_BASE, 0x0);  //清边沿捕获寄存器
    alt_irq_register(PIO_KEY1_IRQ, NULL, Isr_KeyDown1);  //注册中断服务子程序
   

    IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY2_BASE, 0x00); //KEY_PIO为输出
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY2_BASE, 0xff); //开启KEY的中断
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY2_BASE, 0x0);  //清边沿捕获寄存器
    alt_irq_register(PIO_KEY2_IRQ, NULL, Isr_KeyDown2);  //注册中断服务子程序
   
    IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY3_BASE, 0x00); //KEY_PIO为输出
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY3_BASE, 0xff); //开启KEY的中断
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY3_BASE, 0x0);  //清边沿捕获寄存器
    alt_irq_register(PIO_KEY3_IRQ, NULL, Isr_KeyDown3);  //注册中断服务子程序
   
    IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY4_BASE, 0x00); //KEY_PIO为输出
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY4_BASE, 0xff); //开启KEY的中断
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY4_BASE, 0x0);  //清边沿捕获寄存器
    alt_irq_register(PIO_KEY4_IRQ, NULL, Isr_KeyDown4);  //注册中断服务子程序
}
void LCDCommand(unsigned char Com)
{
   
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDAO_BASE,0xFF);//AO=1
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDDATA_BASE,Com);//DATA out
     delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRD_BASE,0xFF);//RD=1
     delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDCS_BASE,0x00);//CS=0
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDWR_BASE,0x00);//WR=0  
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDWR_BASE,0xff);//WR=1;
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDCS_BASE,0xFF);//CS=1;
      delaynop(100);

}

//*******************************************************/
// 功    能:LCD数据
//*******************************************************/
void LCDData(unsigned char Data)
{
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDAO_BASE,0x00);//AO=0
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDDATA_BASE,Data);//输出COM
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRD_BASE,0xFF);//RD=1
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDCS_BASE,0x00);//CS=0
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDWR_BASE,0x00);//WR=0
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDWR_BASE,0xff);//WR=1;
      delaynop(100);
     IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDCS_BASE,0xFF);//CS=1;
     delaynop(100);
}

//*******************************************************/
// 功    能:LCD初始化
//*******************************************************/

void LCDInit(void)
{

    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRST_BASE,0xFF);//RES=1
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDAO_BASE,0xFF);//AO=1
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRD_BASE,0xFF);//RD=1
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDCS_BASE,0x00);//CS=0  
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDWR_BASE,0xff);//WR=1;
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRST_BASE,0x00);//RES=1
    delaynop(100);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCDRST_BASE,0xFF);//RES=1
     delaynop(100);
   
   
    LCDCommand(0x40);       //系统设置0x40
    LCDData(0x30);      //p1,原:0x30
    LCDData(0x87);       //p2,字符宽度设置
    LCDData(0x07);       //p3,字符高度设置
    LCDData(0x27);        //p4,显示窗口宽度(C/R)为40BYTE  
    LCDData(0x2b);        //p5,驱动频率的时间长度TC/R>=C/R+4 0x2b
    LCDData(0xef);        //p6,扫描祯参数,240行扫描  
    LCDData(0x28);         //p7,APL
    LCDData(0x00);         //p8,APH
   
    LCDCommand(0x44);          //显示区域设置,0x44
    LCDData(0x00);         //p1,sa1-L//显示一区
    LCDData(0x00);          //p2,sa1-H
    LCDData(0xef);          //p3,sL1  //一区所控制的显示屏上的行数
    LCDData(0x00);          //p4,sa2-L//显示二区
    LCDData(0x00);           //p5,sa2-H  
    LCDData(0xef);          //p6,sL2  
    LCDData(0x00);            //p7,sa3-L//显示三区
    LCDData(0x00);             //p7,sa3-L//显示三区
   
    LCDCommand(0x58);          //显示关闭
    LCDData(0x00);  
   
    LCDCommand(0x5b);            //显示合成(开/关)
    LCDData(0x0c);  
   
    LCDCommand(0x59);  
    LCDData(0x04);               
}
/*------------------------------------------------------------------------------
;  函数名称:  
;  函数功能://定义写RAM的地址
------------------------------------------------------------------------------*/

void LCDaddr( alt_u16 x,  alt_u16 y)
{

    union  addr com1;
    com1.address=40*y+x/8;//9600字节
    LCDCommand(0x46);
     LCDData(com1.a[0]);
     LCDData(com1.a[1]);
     
   
}

//*******************************************************/
// 功    能:LCD 清屏
//*******************************************************/

void LCDClr(alt_u8 dt)
{
    alt_u32 i;
    LCDCommand(0x46);//设地址
    LCDaddr(0,0);
    LCDCommand(0x42);//写显存
    for(i=0;i<9600;i++)
    {
        usleep(1);
        LCDData(dt);
    }
}
/*------------------------------------------------------------------------------
;  函数名称:  
;  函数功能:贴BMP图x:起始横坐标,y:起始纵坐标 ,w图片宽,h图片高,s图片字节,图片数组
------------------------------------------------------------------------------*/

void Printstr(alt_u16 x,alt_u16 y,alt_u16 w,alt_u16 h,alt_u8 *Bmp )//
{
alt_u8 i=0;
while (h!=0)//显示行数
    {
    LCDaddr(x,y);
    LCDCommand(0x42);//写入显存数据
    for(i=0;i<w/8;i++)//显示列数  
        {
        LCDData(*Bmp);  //写入数据
        
        Bmp++;
      
        }  
    y++;
    h--;
    }
}
//*******************************************************/
//MAIN
//*******************************************************/
int main (void)
{
ids=0;  
PIOInit();
LCDInit();
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0xff);//LED灭
LCDClr(0X55);
//Printstr(0,0,24,48,Bmp001 );
while (1)
{

        if(rev==0x99)
         {
            usleep(5);  
         sdatascan();
          rev=0x00;
         }   
}
return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-5-29 20:33:36 | 显示全部楼层
我的产品上用了一个stn接口的lcd,使用verilog写了一个niosii的主设备接口,直接调用SDRAM内存数据输出,不用经过软核,软核只要写数据到sdram的相应位置就可以了,这样比较方便!

出0入0汤圆

发表于 2010-5-29 23:09:19 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-1 22:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表