搜索
bottom↓
回复: 15

上传自己写的使用M051芯片点亮SSD1963

[复制链接]

出0入0汤圆

发表于 2011-2-19 15:36:28 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_617071AMOX17.pdf(文件大小:1.64M) (原文件名:如何使用M051芯片点亮SSD1963.pdf)

(原文件名:IMG_0137.JPG)


程序已经上传了,在这里 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4522181&bbs_page_no=1&search_mode=3&search_text=ldqmoon&bbs_id=9999

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-2-19 15:54:07 | 显示全部楼层
问一下您的SSD1963的版本是多少的。。我用0.2的初始化不行,用V1.1的也不行不知道是不是我的屏坏了、。

我的初始化代码

/**************************************************************************************
函数功能:初始化SSD1963
输入:    无
输出:          无
注意:    无
**************************************************************************************/
void InitSSD1963(void)
{
    //GPIOB->BSRR = GPIO_Pin_0;//禁止芯片操作
        LCD_RST_H();
    LCD_CS_H();
        LCD_RD_H();
        LCD_WR_H();
        LCD_RST_L();
        DelayMs(100);
        LCD_RST_H();
        DelayMs(100);

        WriteCommand(0x01);                //软复位
       
        WriteCommand(0xE2);                //Set PLL with OSC = 10MHz (hardware),        Multiplier N = 35, 250MHz < VCO < 800MHz = OSC*(N+1), VCO = 360MHz
       
        LCD_CS_L();
        WriteData(0x35);                //参数1
        WriteData(0x02);                //参数2 Divider M = 2, PLL = 360/(M+1) = 120MHz
        WriteData(0x04);                //参数3 Validate M and N values
        LCD_CS_H();

        WriteCommand(0xE0);                // Start PLL command
        LCD_CS_L();
        WriteData(0x01);                // enable PLL
        LCD_CS_H();
       
        DelayMs(1);
       
        WriteCommand(0xE0);                // Start PLL command again
        LCD_CS_L();
        WriteData(0x03);                // now, use PLL output as system clock       
        LCD_CS_H();
       
        DelayMs(5);        
       
       
        WriteCommand(0x01);                //软复位
        DelayMs(10);
       
        /*****************************************************************
        * 7" TFT model # TY700TFT800480
        *****************************************************************/
        //Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
        //Typical DCLK for TY700TFT800480 is 33.3MHz(datasheet), experiment shows 30MHz gives a stable result
        //30MHz = 120MHz*(LCDC_FPR+1)/2^20
        //LCDC_FPR = 262143 (0x3FFFF)
        //Time per line = (DISP_HOR_RESOLUTION+DISP_HOR_PULSE_WIDTH+DISP_HOR_BACK_PORCH+DISP_HOR_FRONT_PORCH)/30 us = 1056/30 = 35.2us
        WriteCommand(0xE6);
   
        LCD_CS_L();
        WriteData((LCD_FPR >> 16) & 0xFF);
        WriteData((LCD_FPR >> 8) & 0xFF);
        WriteData(LCD_FPR & 0xFF);
        LCD_CS_H();       
       
        //Set LCD mode, varies from individual manufacturer
        WriteCommand(0xB0);
       
        LCD_CS_L();
        WriteData(0x03);//0x10                                // set 18-bit for 7" panel TY700TFT800480
        WriteData(0x00);                                    // set Hsync+Vsync mode
        WriteData(mHIGH((TFT_WIDTH-1)));                 // Set LCD panel size(DISP_HOR_RESOLUTION = 800) H
        WriteData(mLOW((TFT_WIDTH-1)));                // Set LCD panel size(DISP_HOR_RESOLUTION = 800) L
        WriteData(mHIGH((TFT_HEIGHT-1)));                // Set LCD panel size(DISP_VER_RESOLUTION = 480) H
        WriteData(mLOW((TFT_HEIGHT-1)));                // Set LCD panel size(DISP_VER_RESOLUTION = 480) L
        WriteData(0x00);//0x00                                // RGB sequence
        LCD_CS_H();
       
       
        //Set horizontal period
        WriteCommand(0xB4);
       
        LCD_CS_L();
        WriteData(mHIGH(TFT_HSYNC_PERIOD));
        WriteData(mLOW(TFT_HSYNC_PERIOD));
        WriteData(mHIGH((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH)));
        WriteData(mLOW((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH)));
        WriteData(TFT_HSYNC_PULSE-1);
        WriteData(0x00);
        WriteData(0x00);
        WriteData(0x00);
        LCD_CS_H();
               
        //Set vertical period
        WriteCommand(0xB6);
       
        LCD_CS_L();
        WriteData(mHIGH(TFT_VSYNC_PERIOD));
        WriteData(mLOW(TFT_VSYNC_PERIOD));
        WriteData(mHIGH((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH)));
        WriteData(mLOW((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH)));
        WriteData(TFT_VSYNC_PULSE-1);
        WriteData(0x00);
        WriteData(0x00);
        LCD_CS_H();
       

//        WriteCommand(0x3A);        //Set pixel format, i.e. the bpp
//        LCD_CS_L();
//        WriteData(0x55);         //set 16bpp
//        LCD_CS_H();
               
        WriteCommand(0x36);        //Set pixel format, i.e. the bpp
        LCD_CS_L();
        WriteData(0x00);         //set 16bpp
        LCD_CS_H();
       
        WriteCommand(0xF0);        //设置SSD1963同CPU接口为16bit Set pixel data interface
        LCD_CS_L();
        WriteData(0x03);        //16-bit(565 format) data for 16bpp PIC32MX only
        LCD_CS_H();       
       
        //WriteCommand(0x21);        //进入图形颜色翻转模式
       
//    WriteCommand(0xBC);//重要
//       
//        LCD_CS_L();
//    WriteData(brightness);//亮度值
//    WriteData(contrast);//对比度值
//    WriteData(saturation);//饱和度值
//    WriteData(0x01);//处理机允许
//        LCD_CS_H();
        
        WriteCommand(0x29);        // Turn on display; show the image on display
       
        WriteCommand(0xB8);        //设置GPIO配置
        LCD_CS_L();
        WriteData(0x0F);        //GPIO is controlled by host; 4个IO设置成输出
        WriteData(0x01);        //GPIO0 使用正常的IO功能
        LCD_CS_H();
//
//        WriteCommand(0xBA);        //设置GPIO配置
//        LCD_CS_L();
//        WriteData(0x02);        //GPIO0 使用正常的IO功能
//        LCD_CS_H();
       
        s1963gpio = Down2Up2Left2Right;//LCD方向设置
        SetS1963GpioOut();        //设置固定的输出值
}

出0入0汤圆

 楼主| 发表于 2011-2-19 16:21:03 | 显示全部楼层
你是总线方式还是IO模拟的?
用我程序里的初始化试下

SSD1963调试时比较麻烦, 先确定好1.2v电压正常,时序选择正确。 然后量一下晶振两端的电压,看是不是0.6v左右, 没问题的话再看软件


初始化后回读一下看看是不是你写进去的数据。

出0入0汤圆

 楼主| 发表于 2011-2-19 16:21:43 | 显示全部楼层
如果有示波器的话,可以量量引脚的波形,没波形的话屏就还没坏

出0入0汤圆

发表于 2011-2-19 16:44:22 | 显示全部楼层
我用的是IO模拟方式,1.2V电压正常,现在是能控制SSD1963的PWM端口打开屏的背光,,现在屏能显示了,但是是屏显示不正常,是一片蓝,不是纯蓝色,是杂七杂八的蓝色。

出0入0汤圆

 楼主| 发表于 2011-2-19 17:17:53 | 显示全部楼层
估计是屏和1963的数据位有问题, 是多少位接的?

出0入0汤圆

发表于 2011-2-19 18:49:30 | 显示全部楼层
SSD1963和屏是18位接口。。

出0入0汤圆

 楼主| 发表于 2011-2-27 13:30:25 | 显示全部楼层
如何了?
我的QQ是28773030, QQ上聊吧

出0入0汤圆

 楼主| 发表于 2011-3-3 09:58:48 | 显示全部楼层
更改文中一处笔误:
M051会在P3.1为低,复位时进入ISP状态。

更改为
M051会在P3.2为低,复位时进入ISP状态。




点击此处下载 ourdev_619610EVN6JL.pdf(文件大小:1.64M) (原文件名:如何使用M051芯片点亮SSD1963.pdf)

出0入0汤圆

发表于 2011-3-3 10:05:18 | 显示全部楼层
猛顶,多大的屏啊

出0入0汤圆

发表于 2011-3-18 08:26:14 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-28 11:22:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-14 09:35:23 | 显示全部楼层
留待后用...

出0入0汤圆

发表于 2013-1-11 22:19:59 | 显示全部楼层
ldqmoon 发表于 2011-2-19 16:21
你是总线方式还是IO模拟的?
用我程序里的初始化试下

如果晶振电压为零,是不是就是芯片坏了。。。

出0入0汤圆

发表于 2013-2-25 16:40:50 | 显示全部楼层
ldqmoon 发表于 2011-2-19 16:21
你是总线方式还是IO模拟的?
用我程序里的初始化试下

你好,问你一下你这里有读取LCD屏的某个点的颜色值?有的话给我好吗?谢谢

出0入0汤圆

发表于 2014-10-25 10:53:04 | 显示全部楼层
_yuming 发表于 2011-2-19 18:49
SSD1963和屏是18位接口。。

您好,,看您搞这个SSD1963已经很长时间了吧,小弟有一个疑问想请教:怎么修改SSD1963的四个GPIO的输出值呢??我每次都是在初始化函数里设置过一次之后,,以后就改不了了。。。麻烦您指点一点,,多谢。。我的QQ:1786094591
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 12:25

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

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