搜索
bottom↓
回复: 1

大家帮忙看看一下tft程序在硬件上没显示什么问题

[复制链接]

出0入0汤圆

发表于 2009-10-2 09:55:22 | 显示全部楼层 |阅读模式
在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();
}

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-5 18:44

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

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