|
在ICC编译没问题,可在320 240的彩屏上没有任何反应
#include<iom32v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------端口定义----------------------------
#define nop asm("NOP")
#define LCD_CS PD0
#define LCD_WR PD1
#define LCD_RS PD3
#define LCD_RD PD4
#define LCD_RST PD2
#define LCD_CON_PORT PORTD
#define LCD_CON_DDR DDRD
#define CS_H LCD_CON_PORT|=(1<<LCD_CS)
#define CS_L LCD_CON_PORT&=~(1<<LCD_CS)
#define WR_H LCD_CON_PORT|=(1<<LCD_WR)
#define WR_L LCD_CON_PORT&=~(1<<LCD_WR)
#define RS_H LCD_CON_PORT|=(1<<LCD_RS)
#define RS_L LCD_CON_PORT&=~(1<<LCD_RS)
#define RD_H LCD_CON_PORT|=(1<<LCD_RD)
#define RD_L LCD_CON_PORT&=~(1<<LCD_RD)
#define RST_H LCD_CON_PORT|=(1<<LCD_RST)
#define RST_L LCD_CON_PORT&=~(1>>LCD_RST)
#define DATA_L PORTA
#define DATA_H PORTB
void MUC_Init();
void LCD_Init();
void LCD_WR_REG(uchar index,uint val);
void LCD_WR_Start();
void LCD_WR_Data(uint val);
void LCD_WR_End();
void LCD_test();
uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};
/************************************************
*函数名称: void Delayms(unsigned char MS)
*入口参数: unsigned MS,延时的毫秒数
*出口参数: 无
*函数功能: 延时指定毫秒(8M晶振)
*创建时间: 2009-09-11
*修改说明:
/************************************************/
void Delay_ms(unsigned int MS)
{
unsigned int i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
}
void main ()
{
// uchar px,py;
MUC_Init();
LCD_Init();
LCD_test();
while (1);
}
void MUC_Init()
{
DDRD=0xff;
// PORTD=0xff;
DDRA=0xff;
// PORTA=0xff;
DDRB=0xff;
// PORTB=0xff;
}
void LCD_Init()
{
RST_H;
Delay_ms(70);
RST_L;
Delay_ms(200);
RST_H;
Delay_ms(100);
//initializing funciton 1
LCD_WR_REG(0xe5,0x8000);
LCD_WR_REG(0x00,0x0001);
LCD_WR_REG(0x2b,0x0010);
LCD_WR_REG(0x01,0x0100);
LCD_WR_REG(0x02,0x0700);
LCD_WR_REG(0x03,0x1030);
LCD_WR_REG(0x04,0x0000);
LCD_WR_REG(0x08,0x0202);
LCD_WR_REG(0x09,0x0000);
LCD_WR_REG(0x0a,0x0000);
LCD_WR_REG(0x0c,0x0001);
LCD_WR_REG(0x0d,0x0000);
LCD_WR_REG(0x0f,0x0002);
LCD_WR_REG(0x10,0x0000);
LCD_WR_REG(0x11,0x0007);
LCD_WR_REG(0x12,0x0000);
LCD_WR_REG(0x13,0x0000);
Delay_ms(200);
LCD_WR_REG(0x10,0x17b0);
LCD_WR_REG(0x11,0x0227);
Delay_ms(50);
LCD_WR_REG(0x12,0x0139);
Delay_ms(50);
LCD_WR_REG(0x13,0x1a00);
LCD_WR_REG(0x29,0x0018);
Delay_ms(50);
LCD_WR_REG(0x20,0x0000);
LCD_WR_REG(0x21,0x0000);
//initializing function 2
LCD_WR_REG(0x30,0x0004);
LCD_WR_REG(0x31,0x0506);
LCD_WR_REG(0x32,0x0305);
LCD_WR_REG(0x35,0x0005);
LCD_WR_REG(0x36,0x0e00);
LCD_WR_REG(0x37,0x0404);
LCD_WR_REG(0x38,0x0403);
LCD_WR_REG(0x39,0x0407);
LCD_WR_REG(0x3c,0x0303);
LCD_WR_REG(0x3d,0x0e0a);
Delay_ms(50);
LCD_WR_REG(0x50,0x0000);
LCD_WR_REG(0x51,0x00ef);
LCD_WR_REG(0x52,0x0000);
LCD_WR_REG(0x53,0x013f);
LCD_WR_REG(0x60,0x2700);
LCD_WR_REG(0x61,0x0001);
LCD_WR_REG(0x6a,0x0000);
LCD_WR_REG(0x80,0x0000);
LCD_WR_REG(0x81,0x0000);
LCD_WR_REG(0x82,0x0000);
LCD_WR_REG(0x83,0x0000);
LCD_WR_REG(0x84,0x0000);
LCD_WR_REG(0x85,0x0000);
LCD_WR_REG(0x90,0x0010);
LCD_WR_REG(0x92,0x0000);
LCD_WR_REG(0x93,0x0003);
LCD_WR_REG(0x95,0x0110);
LCD_WR_REG(0x97,0x0000);
LCD_WR_REG(0x98,0x0000);
//开显示
LCD_WR_REG(0x07,0x0173);
}
void LCD_WR_REG(uchar index,uint val)
{
RD_H;
CS_L;
RS_L;
WR_L;
DATA_L=index;
DATA_H=0;
WR_H;
CS_H;
nop;
nop;
RD_H;
WR_H;
RS_H;
WR_L;
DATA_L=(uchar)val;
DATA_H=(uchar)(val>>8);
nop;
nop;
WR_H;
CS_H;
}
void LCD_WR_Start()
{
CS_L;
RS_L;
DATA_L = 0x22;
DATA_H = 0x00;
WR_L;
nop;
nop;
WR_H;
RS_H;
}
void LCD_WR_Data(uint val)
{
DATA_L = (uchar)val;
DATA_H = (uchar)(val>>8);
WR_L;
nop;
nop;
WR_H;
}
void LCD_WR_End()
{
CS_H;
}
void LCD_test()
{
uint temp,num;
uchar n;
//LCD_WR_REG(0x20,0); //0-239
//LCD_WR_REG(0x21,0); //0-319
LCD_WR_Start();
for(n=0;n<8;n++)
{
temp=color[n];
for(num=40*240;num>0;num--)
LCD_WR_Data(temp);
}
LCD_WR_End();
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|