4918|2

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求高手指点SSD1289的驱动程序【已解决】 [复制链接]

在网上找到的一些关于ssd1289的驱动程序,想移植到LM3S9B92上,程序为点亮TFT屏,只是没有成功,

 

求高手指点迷津。。。

 

 

#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "gpio.h"
#include "sysctl.h"

 

#define CSPORT GPIO_PORTC_BASE
#define CS GPIO_PIN_2
#define RSPORT GPIO_PORTC_BASE
#define RS GPIO_PIN_1
#define WRPORT GPIO_PORTC_BASE
#define WR GPIO_PIN_0
#define RDPORT GPIO_PORTC_BASE
#define RD GPIO_PIN_3
#define RESPORT GPIO_PORTH_BASE
#define RES GPIO_PIN_7
#define PWMPORT GPIO_PORTE_BASE
#define PWM GPIO_PIN_6
#define DBHPORT GPIO_PORTD_BASE
#define DBH GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
#define DBLPORT GPIO_PORTA_BASE
#define DBL GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7


void GPIOINT(void)
{
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//使能外设GPIOA
 GPIOPadConfigSet(GPIO_PORTA_BASE,DBL,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTA_BASE,DBL,GPIO_DIR_MODE_OUT);//设置管脚输出
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);//使能外设GPIOC
 GPIOPadConfigSet(GPIO_PORTC_BASE,CS|RS|WR|RD,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTC_BASE,CS|RS|WR|RD,GPIO_DIR_MODE_OUT);//设置管脚输出
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);//使能外设GPIOD
 GPIOPadConfigSet(GPIO_PORTD_BASE,DBH,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTD_BASE,DBH,GPIO_DIR_MODE_OUT);//设置管脚输出
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);//使能外设GPIOE
 GPIOPadConfigSet(GPIO_PORTE_BASE,PWM,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTE_BASE,PWM,GPIO_DIR_MODE_OUT);//设置管脚输出
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);//使能外设GPIOH
 GPIOPadConfigSet(GPIO_PORTH_BASE,RES,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTH_BASE,RES,GPIO_DIR_MODE_OUT);//设置管脚输出
}

 

 

void WriteCOM(unsigned char DB_H,unsigned char DB_L)
{
 GPIOPinWrite(CSPORT,CS,0X00);//CSB=0;
    GPIOPinWrite(RSPORT,RS,0X00);//RSB=0;
//    GPIOPinWrite(RDPORT,RD,RD);//RDB=1;
//    GPIOPinWrite(WRPORT,WR,WR);//WRB=1;
 GPIOPinWrite(DBHPORT,DBH,DB_H);//DBH=DB_H;
 GPIOPinWrite(DBLPORT,DBL,DB_L);//DBL=DB_L;
 GPIOPinWrite(WRPORT,WR,0X00);//WRB=0;
 GPIOPinWrite(WRPORT,WR,WR);//WRB=1;
// GPIOPinWrite(RSPORT,RS,RS);//RSB=1;
 GPIOPinWrite(CSPORT,CS,CS);//CSB=1;
}

 

 

void WriteDAT(unsigned char DB_H,unsigned char DB_L)
{
    GPIOPinWrite(CSPORT,CS,0X00);//CSB=0;
    GPIOPinWrite(RSPORT,RS,RS);//RSB=1;
//    GPIOPinWrite(RDPORT,RD,RD);//RDB=1;
//    GPIOPinWrite(WRPORT,WR,WR);//WRB=1;
    GPIOPinWrite(DBHPORT,DBH,DB_H);//DBH=DB_H;
 GPIOPinWrite(DBLPORT,DBL,DB_L);//DBL=DB_L;
 GPIOPinWrite(WRPORT,WR,0X00);//WRB=0;
 GPIOPinWrite(WRPORT,WR,WR);//WRB=1;
// GPIOPinWrite(RSPORT,RS,0X00);//RSB=0;
 GPIOPinWrite(CSPORT,CS,CS);//CSB=1;
}

 

 

void write_com(unsigned int address,unsigned int num)
{
    WriteCOM(address>>8,address);
    WriteDAT(num>>8,num);
}

 

 

 

/*****************************************************/
void delayms(unsigned int delay)
{
 SysCtlDelay(delay*(SysCtlClockGet()/ 3000)); // 延时约ms
}

void DelayNS(unsigned int tt)
{
 SysCtlDelay(tt*(SysCtlClockGet()/ 3000000)); // 延时约ns
}

 

 

void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
 {
         write_com(0x0044,(x2<<8)+x1);
         write_com(0x0045,y1);
         write_com(0x0046,y2);
         write_com(0x004e,x1);
         write_com(0x004f,y1);
       WriteCOM(0x00,0x22);                        
}

 

 

void Initial_IC(void)
{
 GPIOPinWrite(PWMPORT,PWM,PWM);//PWM=1;
 GPIOPinWrite(RESPORT,RES,RES);//res=1;
 delayms(10);
 GPIOPinWrite(RESPORT,RES,0X00);//res=0;
 delayms(10);
 GPIOPinWrite(RESPORT,RES,RES);//res=1;
 delayms(10);
 GPIOPinWrite(CSPORT,CS,CS);//CSB=1;
 GPIOPinWrite(RSPORT,RS,RS);//RSB=1;
 GPIOPinWrite(WRPORT,WR,WR);//WRB=1;
 GPIOPinWrite(RDPORT,RD,RD);//RD=1;

 write_com(0x0000,0x0001);    delayms(1);  //打开晶振
    write_com(0x0003,0xA8A4);    DelayNS(1000);   //0xA8A4
    write_com(0x000C,0x0000);    DelayNS(1000);  
    write_com(0x000D,0x080C);    DelayNS(1000);  
    write_com(0x000E,0x2B00);    DelayNS(1000);  
    write_com(0x001E,0x00B0);    DelayNS(1000);  
    write_com(0x0001,0x2B3F);    DelayNS(1000);   //驱动输出控制320*240  0x6B3F
    write_com(0x0002,0x0600);    DelayNS(1000);
    write_com(0x0010,0x0000);    DelayNS(1000);
    write_com(0x0011,0x6070);    DelayNS(1000);        //0x4030           //定义数据格式  16位色
    write_com(0x0005,0x0000);    DelayNS(1000);
    write_com(0x0006,0x0000);    DelayNS(1000);
    write_com(0x0016,0xEF1C);    DelayNS(1000);
    write_com(0x0017,0x0003);    DelayNS(1000);
    write_com(0x0007,0x0233);    DelayNS(1000);        //0x0233      
    write_com(0x000B,0x0000);    DelayNS(1000);
    write_com(0x000F,0x0000);    DelayNS(1000);        //扫描开始地址
    write_com(0x0041,0x0000);    DelayNS(1000);
    write_com(0x0042,0x0000);    DelayNS(1000);
    write_com(0x0048,0x0000);    DelayNS(1000);
    write_com(0x0049,0x013F);    DelayNS(1000);
    write_com(0x004A,0x0000);    DelayNS(1000);
    write_com(0x004B,0x0000);    DelayNS(1000);
    write_com(0x0044,0xEF00);    DelayNS(1000);
    write_com(0x0045,0x0000);    DelayNS(1000);
    write_com(0x0046,0x013F);    DelayNS(1000);
    write_com(0x0030,0x0707);    DelayNS(1000);
    write_com(0x0031,0x0204);    DelayNS(1000);
    write_com(0x0032,0x0204);    DelayNS(1000);
    write_com(0x0033,0x0502);    DelayNS(1000);
    write_com(0x0034,0x0507);    DelayNS(1000);
    write_com(0x0035,0x0204);    DelayNS(1000);
    write_com(0x0036,0x0204);    DelayNS(1000);
    write_com(0x0037,0x0502);    DelayNS(1000);
    write_com(0x003A,0x0302);    DelayNS(1000);
    write_com(0x003B,0x0302);    DelayNS(1000);
    write_com(0x0023,0x0000);    DelayNS(1000);
    write_com(0x0024,0x0000);    DelayNS(1000);
    write_com(0x0025,0x8000);    DelayNS(1000);
    write_com(0x004f,0);        //行首址0
    write_com(0x004e,0);        //列首址0
 WriteCOM(0x00,0x22);
}

 

 

void Pant(unsigned int color1,unsigned int color2)
 {
         int i,j;
         Address_set(0,0,239,319);
 
    for(i=0;i<320;i++)
          {
           for (j=0;j<240;j++)
                    {
          WriteDAT(color1,color2);
             }
 
          }               
}

 


int main(void)
{
 SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);//配置系统时钟
 GPIOINT();
 Initial_IC();
 for(;;)
 {
 Pant(0xf8,0x00); //红色
 }
}

[ 本帖最后由 olympicjun 于 2012-4-27 17:07 编辑 ]

最新回复

可行  详情 回复 发表于 2012-7-17 21:43
 
点赞 关注

回复
举报

23

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

因使用JTAG口,需要解锁复用,解锁后一切正常。。。

 

 

特别提醒,必须添加保护JTAG的函数,否则芯片会锁死!!!

[ 本帖最后由 olympicjun 于 2012-4-27 17:11 编辑 ]

LCD3.rar

72.31 KB, 下载次数: 42

 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可行
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表