搜索
bottom↓
回复: 90

MCS-51单片机装备 2.4英寸 TFT LCD 触摸屏

[复制链接]

出0入0汤圆

发表于 2009-7-11 12:36:18 | 显示全部楼层 |阅读模式
2.4英寸 TFT LCD 买的是 34元的 + 2元的转接板;PCB是自己设计做的;再配上触摸屏及控制器IC。MCS-51单片机用的是STC11L60XE 。


显示效果1.jpg (原文件名:显示效果1.jpg)


显示效果2.jpg (原文件名:显示效果2.jpg)


触摸显示.jpg  (原文件名:显示效果4.jpg)


全部元件 (原文件名:全部元件.jpg)

焊接组装1.jpg (原文件名:焊接组装1.jpg)


焊接组装2.jpg (原文件名:焊接组装2.jpg)


焊接组装3.jpg (原文件名:焊接组装4.jpg)


焊接组装4.jpg (原文件名:焊接组装5.jpg)


焊接组装5.jpg (原文件名:焊接组装6.jpg)


焊接组装6.jpg (原文件名:焊接组装7.jpg)


焊接组装7.jpg (原文件名:焊接组装8.jpg)


焊接组装8.jpg (原文件名:焊接组装9.jpg)

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入90汤圆

发表于 2009-7-11 13:23:11 | 显示全部楼层
看上去很漂亮啊!呵呵!!!!!!!!!!!!!!!!!!那个34的TFT我也收藏了在,可惜没有时间玩,就没买!

出0入0汤圆

 楼主| 发表于 2009-7-11 13:26:19 | 显示全部楼层
有空将触摸程序调试好。

出0入0汤圆

发表于 2009-7-11 14:47:07 | 显示全部楼层
挺好的,没用啊

出0入0汤圆

发表于 2009-7-11 14:51:43 | 显示全部楼层
51还是很慢啊

出0入0汤圆

 楼主| 发表于 2009-7-11 15:03:02 | 显示全部楼层
MCS-51单片机用的是STC11L60XE,运行速度是传统51的8-12倍。我使用33MHz晶振时,模拟ISP操作VS1003B 和SD卡,可以流畅播放192kbps 44kHz的MP3歌曲。显示图片、文字速度也很快。显示上图的文字时我用的11.0592M,为了显示一个看一个字,每个字显示后面加了2ms延时。

(原文件名:AS-04 MP3播放 1.jpg)

出0入0汤圆

发表于 2009-7-11 15:13:47 | 显示全部楼层
这个51不是很慢的 和AVR一样也是单周期的指令

出0入0汤圆

发表于 2009-7-11 16:43:10 | 显示全部楼层
楼主 还有没有多的PCB啊?

出0入0汤圆

发表于 2009-7-11 16:54:15 | 显示全部楼层
这个还真是不错

出0入0汤圆

发表于 2009-7-11 17:48:57 | 显示全部楼层
TFT是在哪买的?

出0入0汤圆

 楼主| 发表于 2009-7-11 21:29:52 | 显示全部楼层
楼主 还有没有多的PCB啊?
PCB多余转让或易货交换:
http://item.taobao.com/auction/item_detail.jhtml?item_id=27a335693e8338ba7aebe3a6df136539&x_id=0db2

TFT是在哪买的?
TFT快卖完了:
http://item.taobao.com/auction/item_detail-db2-2cf2178c23c9cc37cc42ee7f9aefc99e.htm

出0入0汤圆

发表于 2009-7-11 21:34:46 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2009-7-14 18:45:48 | 显示全部楼层
触摸屏显示效果(有人提出,做个产品,小朋友可以写字画漫画。看看是不是有雏形了!):

(原文件名:显示效果5.jpg)


(原文件名:显示效果6.jpg)


(原文件名:显示效果7.jpg)


(原文件名:显示效果8.jpg)

今天触摸屏调试时发现X-、 Y+设计时调了,PCB上要更改。

(原文件名:触摸更正2.JPG)


(原文件名:触摸更正6.JPG)


(原文件名:触摸更正7.JPG)

出0入0汤圆

发表于 2009-7-15 11:33:12 | 显示全部楼层
做的很不错
可否上传源码?

出0入0汤圆

发表于 2009-7-15 11:42:09 | 显示全部楼层
mrak

出0入0汤圆

发表于 2009-7-15 13:54:44 | 显示全部楼层
能上些资料不?? ~~  mark~~~

出0入0汤圆

发表于 2009-7-15 14:39:31 | 显示全部楼层
好羡慕啊,顶》》》》》》》

出0入0汤圆

 楼主| 发表于 2009-7-15 22:58:15 | 显示全部楼层
程序在“AS-04单片机实验开发板”上硬件(STC11L60XE 11.0592MHz)实验调试通过。
(AS-04 MCU StudyBoard + LCD1602 + 2.4 TFT LCD touch panel + OLED + VS1003B MP3)

/*----------------------------------------------------------------------------------------------
TFT LCD实验01:        显示彩条、单色彩色、小图片的测试
Cx51语言程序,文件名:main.c等         
程序在“AS-04单片机实验开发板”上硬件(STC11L60XE 11.0592MHz)实验调试通过。
(AS-04 MCU StudyBoard + LCD1602 + 2.4 TFT LCD touch panel + OLED + VS1003B MP3)
电子科技大学成都学院 周密,20090714。QQ1881003,http://shop34222612.taobao.com/       
-----------------------------------------------------------------------------------------------*/

由于时间问题,没有自己编程写程序(有空还是应该自己写),不是原创;PCB设计和硬件焊接组装是原创。
特此声明!如果网友认为侵权,请联系我(QQ 1881003)!

致谢:
LCD程序根据LCD屏店主提供的以及其他网友的程序移植修改;
触摸屏手写程序根据网友“正点原子@SCUT”的STM32程序移植修改;
OLED程序根据网友“草真多”的AVR程序移植修改。

这里顺便说一句,移植修改程序,有时候比自己编写还费神费事哦!

程序和原理图如下:

(为了方便初学单片机的网友,这里是Keil 工程文件,可以直接使用点击此处下载 ourdev_461600.rar(文件大小:65K) (原文件名:LTM024D250 UH7843S  STC11L60XE 11.0592MHz -1.rar)

注意UH7843的 3、4要交换,最好将2、5也交换,调试时才发现的,开板前检查了N次,都没发现。一定要先做几个样品才是,但为了省钱就没有。

(原文件名:TFT sch.JPG)

出0入0汤圆

 楼主| 发表于 2009-7-15 23:14:41 | 显示全部楼层
/*-----------------------------------------------------------------------------------------------
TFT LCD实验01:        显示彩条、单色彩色、小图片的测试
Cx51语言程序,文件名:main.c等         
程序在“AS-04单片机实验开发板”上硬件(STC11L60XE 11.0592MHz)实验调试通过。
(AS-04 MCU StudyBoard + LCD1602 + 2.4 TFT LCD touch panel + OLED + VS1003B MP3)
电子科技大学成都学院 周密,20090714。QQ1881003,http://shop34222612.taobao.com/       
-----------------------------------------------------------------------------------------------*/

#include "define.h"
#include "lcd.h"

void main(void)
{
          MUC_Init();
       
                LCD_Init();
                //LCD_ON = 1;
                while(1)
                {
                LCD_test();
                }
}

出0入0汤圆

 楼主| 发表于 2009-7-15 23:15:02 | 显示全部楼层
/*-------------------------               
         VCC        22        --|         |--1        GND
         VCC        21        --|         |--2        GND
         VCC        20        --|         |--3        GND       
        VCCIO        19        --|         |--4        #RST
        VCCIO        18        --|         |--5        NC
          D0        17        --|         |--6        #RD
          D1        16        --|         |--7        #WR
          D2        15        --|         |--8        #CS
          D3        14        --|         |--9        RS
          D4        13        --|         |--10        D7
          D5        12        --|         |--11        D6
                            
VCC        :2.6~3.3V
VCCIO        :1.6~3.3V
-------------------------*/

#include "lcd.h"
#include "define.h"

uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};


void delay_us(uchar t)                //延时函数t=1时为1us延时程序
{       
        {       
                for(t=0;t<1;t++)    //125应根据实验进行补偿调整为123(11.0592MHz)
                {;}       
        }
}



void delay_ms(uint t)                  //延时函数t=1时为1ms延时程序
{
        uchar  j=0;                    //根据汇编代码分析表明,用j进行的内部循环大约延时8us(12MHz)
        while(t--)
        {       
                for(j=0;j<113;j++)    //125应根据实验进行补偿调整为123(11.0592MHz)
                {;}       
        }
}



void MUC_Init()
{
                P0=0xff;
    P1=0xff;
           P2=0xff;
           P3=0xff;
}

//写寄存器地址函数
void LCD_WR_REG(uchar index)
{
//        delay_us(10);
        LCD_RS = 0;
        LCD_CS = 0;
        DATA = index;
        LCD_WR = 0;
        LCD_WR = 1;
        LCD_CS = 1;
        LCD_RS = 0;
}

//写8位数据函数
void LCD_WR_DATA8(uchar pd)
{
//        delay_us(10);

        LCD_RS = 1;
        LCD_CS = 0;
        DATA = pd;
        LCD_WR = 0;
        LCD_WR = 1;
        LCD_CS = 1;
        LCD_RS = 0;
}

//写寄存器数据函数
//输入:dbw 数据位数,1为16位,0为8位。
void LCD_WR_CMD(uchar dbw,uchar index,uint val)
{
        LCD_RS = 0;
        LCD_CS = 0;
        DATA = index;
        LCD_WR = 0;
        LCD_WR = 1;
        LCD_CS = 1;
        LCD_RS = 0;

        delay_us(1);

        if(dbw)
        {
                LCD_RS = 1;
                LCD_CS = 0;
                DATA = (uchar)(val>>8);
                LCD_WR = 0;
                LCD_WR = 1;
                LCD_CS = 1;
                LCD_RS = 0;
        }
        delay_us(1);

        LCD_RS = 1;
        LCD_CS = 0;
        DATA = (uchar)val;
        LCD_WR = 0;
        LCD_WR = 1;
        LCD_CS = 1;
        LCD_RS = 0;
}

/*

//读16位寄存器数据函数
//输入:index 寄存器地址
//输出:
unsigned int LCD_RD_REG16(uchar index)
{
        unsigned int pd;

        LCD_RS = 0;
        _nop_();
        _nop_();
        LCD_CS = 0;
        _nop_();
        _nop_();
        DATA = index;
        _nop_();
        _nop_();
        LCD_WR = 0;
        _nop_();
        _nop_();
        LCD_WR = 1;
        _nop_();
        _nop_();
        LCD_CS = 1;
        _nop_();
        _nop_();
        LCD_RS = 0;
        _nop_();
        _nop_();

        LCD_RS = 1;
        _nop_();
        _nop_();
        LCD_CS = 0;
        //OEB = 0x00;
        DATA = 0xFF;
        LCD_RD = 0;
        _nop_();
        _nop_();
        LCD_RD = 1;
        pd = DATA;
        LCD_CS = 1;
        LCD_RS = 0;
       
        pd = pd<<8;

        LCD_RS = 1;
        _nop_();
        _nop_();
        LCD_CS = 0;
        _nop_();
        _nop_();
        LCD_RD = 0;
        _nop_();
        _nop_();
        LCD_RD = 1;
        pd = pd + DATA;
        LCD_CS = 1;
        LCD_RS = 0;
        return pd;
}

*/

//写16位数据函数
void LCD_WR_Data(uint val)
{
        //LCD_RS = 1;
        LCD_CS = 0;
        DATA = (uchar)(val>>8);
        LCD_WR = 0;
        LCD_WR = 1;
        DATA = (uchar)val;
        LCD_WR = 0;
        LCD_WR = 1;
        LCD_CS = 1;
        //LCD_RS = 0;
}

//初始化函数
void LCD_Init()
{
        delay_ms(20000);
        LCD_RST = 0;
        delay_ms(1000);
        LCD_RST = 1;
        delay_ms(1000);

        //initializing funciton 1
        delay_us(10);
        LCD_WR_REG(0xA1);
        delay_us(16);
        LCD_WR_DATA8(0x00);
        delay_us(90);
        LCD_WR_REG(0xA0);
        delay_us(10);
        LCD_WR_DATA8(0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x70,0xC8);

        delay_ms(20);
       
        LCD_WR_CMD(0,0x72,0xA3);
        delay_us(10);
        LCD_WR_CMD(0,0x73,0x04);
        delay_us(10);
        LCD_WR_CMD(0,0x75,0x45);
        delay_us(10);
        LCD_WR_CMD(0,0x76,0x23);
        delay_us(10);
        LCD_WR_CMD(0,0x77,0x08);
        delay_us(10);
        LCD_WR_CMD(0,0x78,0x08);
        delay_us(10);
        LCD_WR_CMD(0,0x79,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x7F,0xF0);
        delay_us(10);

        LCD_WR_CMD(0,0x71,0x81);        //

        delay_ms(2);

        LCD_WR_CMD(0,0x0D,0x23);
        delay_us(10);
        LCD_WR_CMD(0,0x11,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x12,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x21,0x37);
        delay_us(10);
        LCD_WR_CMD(0,0x22,0x02);
        delay_us(10);
        LCD_WR_CMD(0,0x23,0x24);
        delay_us(10);
        delay_us(10);
        LCD_WR_CMD(0,0x24,0x13);
        delay_us(10);
        LCD_WR_CMD(0,0x25,0x0A);
        delay_us(10);
        LCD_WR_CMD(0,0x26,0x82);
        delay_us(10);
        LCD_WR_CMD(0,0x27,0x01);
        delay_us(10);
        LCD_WR_CMD(0,0x1E,0x25);
        delay_us(10);
        LCD_WR_CMD(0,0x1F,0x59);
        delay_us(10);

        //GAMMA设置
        LCD_WR_CMD(1,0x30,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x31,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x32,0x0555);
        delay_us(10);
        LCD_WR_CMD(1,0x33,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x34,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x35,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x36,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x37,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x38,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x39,0x0555);
        delay_us(10);
        LCD_WR_CMD(1,0x3A,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x3B,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x3C,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3D,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3E,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3F,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x40,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x41,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x42,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x43,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x44,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x45,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x46,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x47,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x48,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x49,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4A,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4B,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4C,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4D,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x4E,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x4F,0x0666);

        delay_us(400);
        LCD_WR_CMD(0,0x85,0x74);
        delay_us(40);

        LCD_WR_CMD(0,0x00,0x04);        //扫描方向控制
        delay_us(10);
        LCD_WR_CMD(0,0x01,0x07);        //扫描方向控制
        delay_us(10);

        LCD_WR_CMD(0,0x02,0x00);        //X
        LCD_WR_CMD(1,0x03,0x0000);        //Y

        //面板大小设置
        LCD_WR_CMD(0,0x04,0xEF);        //结束列数(0~239)       
        LCD_WR_CMD(1,0x05,0x013F);        //结束行数(0~319)

        //窗口设置
        LCD_WR_CMD(0,0x06,0x00);        //水平起始位置
        LCD_WR_CMD(1,0x07,0x0000);        //垂直起始位置
        LCD_WR_CMD(0,0x08,0xEF);        //水平结束位置
        LCD_WR_CMD(1,0x09,0x013F);        //垂直结束位置

        delay_us(10);
        LCD_WR_CMD(0,0x0A,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x0B,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x0C,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x14,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x15,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x16,0x00);
        delay_us(10);
        LCD_WR_CMD(1,0x17,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x18,0x01FF);
        delay_us(10);       
        LCD_WR_CMD(0,0x13,0x00);
        delay_us(10);
        LCD_WR_CMD(1,0x19,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1B,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1C,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1A,0x01FF);       
        delay_us(10);
        LCD_WR_CMD(0,0x1D,0x0E);
        delay_us(10);
        LCD_WR_CMD(0,0x10,0x06);                //开显示
        LCD_WR_REG(0x0E);
        delay_us(100);
}

//演示程序
void LCD_test()
{
        uint temp,num;
        unsigned int *p;
        uchar n,c,g;

//        LCD_WR_CMD(0,0x00,0x20);          //改变垂直方向显示
//        LCD_WR_CMD(0,0x01,0x07);          //改变垂直方向显示
        LCD_WR_CMD(0,0x02,0x00);          //X
        LCD_WR_CMD(1,0x03,0x0000);  //Y
        LCD_WR_CMD(0,0x04,0xEF);          //结束列数(0~239)       
        LCD_WR_CMD(1,0x05,0x013F);  //结束行数(0~319)

        //显示彩条       
        LCD_WR_REG(0x0E);
        LCD_RS = 1;
        for(n=0;n<8;n++)
         {
            temp=color[n];
                        for(num=40*240;num>0;num--)
            LCD_WR_Data(temp);
                        delay_ms(1);
         }
        delay_ms(100);

        //显示单色彩色
        for(c=0;c<8;c++)
        {
                temp = color[c];
                LCD_WR_CMD(0,0x2,0);        //0-239
                LCD_WR_CMD(1,0x3,0);        //0-319
               
                LCD_WR_REG(0x0E);
                LCD_RS = 1;
                for(n=0;n<240;n++)
                {
                                for(num=0;num<320;num++)
                          LCD_WR_Data(temp);
                                delay_ms(1);       
                 }
           delay_ms(100);
        }


        //显示小QQ图标
           for(g=0;g<8;g++)
        {
                for(c=0;c<6;c++)
                {
                        LCD_WR_CMD(0,0x02,c*40);
                        LCD_WR_CMD(1,0x03,g*40);
                        LCD_WR_CMD(0,0x04,c*40+39);
                        LCD_WR_CMD(1,0x05,g*40+39);

                        //LCD_WR_CMD(0,0x00,0x64);
                        LCD_WR_REG(0x0E);
                        LCD_RS = 1;
                        p = gImage_qqp;
                           for(num=0;num<1600;num++)        //
                        {               
                                LCD_WR_Data(*p++);
                                        //delay_ms(1);
                        }                
                }
        }
        delay_ms(100);
}

出0入0汤圆

 楼主| 发表于 2009-7-16 12:26:16 | 显示全部楼层
昨天调成功的OLED

(原文件名:旋转 0715_110716.jpg)

出0入0汤圆

发表于 2009-7-16 12:54:57 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-7-17 12:49:05 | 显示全部楼层
LZ 很猛,那个触摸屏那么便宜啊??
有时间我也做下。

出0入0汤圆

发表于 2009-7-19 20:33:29 | 显示全部楼层
楼主的TFT和VS1003模块很好,我经过半天努力就把TFT完全焊接并演示成功了!

出0入0汤圆

发表于 2009-7-22 19:32:50 | 显示全部楼层
真是不错呀!!!

出0入0汤圆

发表于 2009-7-26 15:39:32 | 显示全部楼层
记下,

出0入0汤圆

发表于 2009-7-26 17:11:06 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-7-26 17:25:23 | 显示全部楼层
很强啊

出0入0汤圆

发表于 2009-7-26 19:32:53 | 显示全部楼层
爱消失在7月末

出0入4汤圆

发表于 2009-7-26 19:48:47 | 显示全部楼层
make

出0入0汤圆

发表于 2009-7-28 17:06:51 | 显示全部楼层
#include<avr/io.h>

unsigned long int color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};

//数据控制总线   
#define          CS_H          PORTD |= (1<<2)  
#define   CS_L    PORTD &=~(1<<2)

#define          RS_H    PORTD |= (1<<3)
#define          RS_L          PORTD &=~(1<<3)

#define          RD_H     PORTD |= (1<<5)
#define          RD_L          PORTD &=~(1<<5)

#define          WR_H    PORTD |= (1<<4)
#define          WR_L    PORTD &=~(1<<4)
         
#define          RST_H   PORTD |= (1<<6)
#define          RST_L   PORTD &=~(1<<6)
extern unsigned char  hao[];
#define   DATA    PORTC
//写寄存器地址函数
void LCD_WR_REG(unsigned char index)
{
//        delay_us(10);
        RS_L;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = index;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}

//写8位数据函数
void LCD_WR_DATA8(unsigned char pd)
{
//        delay_us(10);

        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = pd;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}

//写寄存器数据函数
//输入:dbw 数据位数,1为16位,0为8位。
void LCD_WR_CMD(unsigned char dbw,unsigned char index,unsigned int val)
{
        RS_L;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = index;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;

        delay_us(20);

        if(dbw)
        {
                RS_H;
                delay_us(20);
                CS_L;
                delay_us(20);
                DATA = (unsigned char)(val>>8);
                WR_L;
                delay_us(20);
                WR_H;
                delay_us(20);
                CS_H;
                delay_us(20);
                RS_L;
                delay_us(20);
        }
        delay_us(20);

        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)val;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}


//写16位数据函数
void LCD_WR_Data(unsigned int val)
{
        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)(val>>8);
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(30);
        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)val;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
}

//初始化函数
void LCD_Init()
{
        //delay_ms(20000);
        RST_L;
        delay_ms(1000);
        RST_H;
        delay_ms(1000);

        //initializing funciton 1
        delay_us(10);
        LCD_WR_REG(0xA1);
        delay_us(16);
        LCD_WR_DATA8(0x00);
        delay_us(90);
        LCD_WR_REG(0xA0);
        delay_us(10);
        LCD_WR_DATA8(0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x70,0xC8);

        delay_ms(20);
       
        LCD_WR_CMD(0,0x72,0xA3);
        delay_us(10);
        LCD_WR_CMD(0,0x73,0x04);
        delay_us(10);
        LCD_WR_CMD(0,0x75,0x45);
        delay_us(10);
        LCD_WR_CMD(0,0x76,0x23);
        delay_us(10);
        LCD_WR_CMD(0,0x77,0x08);
        delay_us(10);
        LCD_WR_CMD(0,0x78,0x08);
        delay_us(10);
        LCD_WR_CMD(0,0x79,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x7F,0xF0);
        delay_us(10);

        LCD_WR_CMD(0,0x71,0x81);        //

        delay_ms(2);

        LCD_WR_CMD(0,0x0D,0x23);
        delay_us(10);
        LCD_WR_CMD(0,0x11,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x12,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x21,0x37);
        delay_us(10);
        LCD_WR_CMD(0,0x22,0x02);
        delay_us(10);
        LCD_WR_CMD(0,0x23,0x24);
        delay_us(10);
        delay_us(10);
        LCD_WR_CMD(0,0x24,0x13);
        delay_us(10);
        LCD_WR_CMD(0,0x25,0x0A);
        delay_us(10);
        LCD_WR_CMD(0,0x26,0x82);
        delay_us(10);
        LCD_WR_CMD(0,0x27,0x01);
        delay_us(10);
        LCD_WR_CMD(0,0x1E,0x25);
        delay_us(10);
        LCD_WR_CMD(0,0x1F,0x59);
        delay_us(10);

        //GAMMA设置
        LCD_WR_CMD(1,0x30,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x31,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x32,0x0555);
        delay_us(10);
        LCD_WR_CMD(1,0x33,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x34,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x35,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x36,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x37,0x0333);
        delay_us(10);
        LCD_WR_CMD(1,0x38,0x0444);
        delay_us(10);
        LCD_WR_CMD(1,0x39,0x0555);
        delay_us(10);
        LCD_WR_CMD(1,0x3A,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x3B,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x3C,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3D,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3E,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x3F,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x40,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x41,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x42,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x43,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x44,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x45,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x46,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x47,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x48,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x49,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4A,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4B,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4C,0x0777);
        delay_us(10);
        LCD_WR_CMD(1,0x4D,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x4E,0x0666);
        delay_us(10);
        LCD_WR_CMD(1,0x4F,0x0666);

        delay_us(400);
        LCD_WR_CMD(0,0x85,0x74);
        delay_us(40);

        LCD_WR_CMD(0,0x00,0x04);        //扫描方向控制
        delay_us(10);
        LCD_WR_CMD(0,0x01,0x07);        //扫描方向控制
        delay_us(10);

        LCD_WR_CMD(0,0x02,0x00);        //X
        LCD_WR_CMD(1,0x03,0x0000);        //Y

        //面板大小设置
        LCD_WR_CMD(0,0x04,0xEF);        //结束列数(0~239)       
        LCD_WR_CMD(1,0x05,0x013F);        //结束行数(0~319)

        //窗口设置
        LCD_WR_CMD(0,0x06,0x00);        //水平起始位置
        LCD_WR_CMD(1,0x07,0x0000);        //垂直起始位置
        LCD_WR_CMD(0,0x08,0xEF);        //水平结束位置
        LCD_WR_CMD(1,0x09,0x013F);        //垂直结束位置

        delay_us(10);
        LCD_WR_CMD(0,0x0A,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x0B,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x0C,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x14,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x15,0x00);
        delay_us(10);
        LCD_WR_CMD(0,0x16,0x00);
        delay_us(10);
        LCD_WR_CMD(1,0x17,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x18,0x01FF);
        delay_us(10);       
        LCD_WR_CMD(0,0x13,0x00);
        delay_us(10);
        LCD_WR_CMD(1,0x19,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1B,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1C,0x01FF);
        delay_us(10);
        LCD_WR_CMD(1,0x1A,0x01FF);       
        delay_us(10);
        LCD_WR_CMD(0,0x1D,0x0E);
        delay_us(10);
        LCD_WR_CMD(0,0x10,0x06);                //开显示
        LCD_WR_REG(0x0E);
        delay_us(100);
}
//*******************************演示程序********************************

void LCD_test()
{
        unsigned int temp,num,s;
        unsigned char n;
       
        LCD_WR_CMD(0,0x02,0x00);     //X方向开始点
        LCD_WR_CMD(1,0x03,0x0000);   //Y方向开始点
        LCD_WR_CMD(0,0x04,0xEF);     //X方向结束点
        LCD_WR_CMD(1,0x05,0x013F);   //Y方向结束点
       
        LCD_WR_REG(0x0E);            //写数据命令控制
        CS_L;
        RS_H;
        for(n=8;n>0;n--)
        {
            temp=color[n];
                for(num=20*240;num>0;num--)
                LCD_WR_Data(temp);
        }
        for(n=8;n>0;n--)
        {
        LCD_WR_CMD(0,0x02,0x00);
        LCD_WR_CMD(1,0x03,0x0000);
        LCD_WR_CMD(0,0x04,0xEF);
        LCD_WR_CMD(1,0x05,0x013F);
       
        LCD_WR_REG(0x0E);
        CS_L;
        RS_H;
            temp=color[n];
                for(s=0;s<240;s++);
                for(num=0;num<320;num++)
                LCD_WR_Data(temp);
        }
        CS_H;
}

出0入0汤圆

 楼主| 发表于 2009-7-28 17:34:28 | 显示全部楼层
//写寄存器地址函数
void LCD_WR_REG(unsigned char index)
{
//        delay_us(10);
        RS_L;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = index;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}

//写8位数据函数
void LCD_WR_DATA8(unsigned char pd)
{
//        delay_us(10);

        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = pd;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}

//写寄存器数据函数
//输入:dbw 数据位数,1为16位,0为8位。
void LCD_WR_CMD(unsigned char dbw,unsigned char index,unsigned int val)
{
        RS_L;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = index;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;

        delay_us(20);

        if(dbw)
        {
                RS_L;
                delay_us(20);
                CS_L;
                delay_us(20);
                DATA = (unsigned char)(val>>8);
                WR_L;
                delay_us(20);
                WR_H;
                delay_us(20);
                CS_H;
                delay_us(20);
                RS_L;
                delay_us(20);
        }
        delay_us(20);

        RS_L;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)val;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(20);
}


//写16位数据函数
void LCD_WR_Data(unsigned int val)
{
        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)(val>>8);
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
        delay_us(30);

        RS_H;
        delay_us(20);
        CS_L;
        delay_us(20);
        DATA = (unsigned char)val;
        WR_L;
        delay_us(20);
        WR_H;
        delay_us(20);
        CS_H;
        delay_us(20);
        RS_L;
}

去掉延时

出0入0汤圆

 楼主| 发表于 2009-7-30 13:24:22 | 显示全部楼层
1、如果使用以前网上流传的程序,678脚是错误的。2、电源要处理



(原文件名:引脚更正.JPG)


(原文件名:电源处理.JPG)
/******************************
//RS指令选择:0 命令   1 数据
//RS------PC3  
******************************/
#define   LCD_RS_H           PORTC |= 1<<3
#define   LCD_RS_L     PORTC &= ~(1<<3)

/*****************************
//写控制信号
//WR-----PC4                                               (改接我的TFT LCD板的CS)
******************************/
#define   LCD_WR_H     PORTC |= 1<<4
#define   LCD_WR_L     PORTC &= ~(1<<4)

/******************************
//读控制信号
//RD-----PC5                                               (改接我的TFT LCD板的WR)
******************************/
#define   LCD_RD_H     PORTC |= 1<<5
#define   LCD_RD_L     PORTC &= ~(1<<5)                  

/******************************
//CS片选信号:0 无效     1 有效
//CS-----PC6                                               (改接我的TFT LCD板的RD)
*******************************/
#define   LCD_CS_H     PORTC |= 1<<6
#define   LCD_CS_L     PORTC &= ~(1<<6)

/******************************
//LCD复位:0 复位    1  正常
//RST----PC7
******************************/
#define   LCD_RST_H    PORTC |= 1<<7
#define   LCD_RST_L    PORTC &= ~(1<<7)

/*************************
       数据输出口
**************************/
#define DATA  PORTA

出0入0汤圆

发表于 2009-11-9 08:23:52 | 显示全部楼层
请问 lz有 3.5寸的手机屏资料吗 ?排线编号是TFT8K0940FPC,谢谢

出0入0汤圆

发表于 2009-11-14 21:19:47 | 显示全部楼层
想知道TFT是在什么地方买到的```

出0入0汤圆

发表于 2009-11-15 12:43:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-15 22:48:31 | 显示全部楼层
很不错

出0入0汤圆

发表于 2009-11-28 16:09:12 | 显示全部楼层
好酷阿!!!

出0入85汤圆

发表于 2009-11-28 16:39:06 | 显示全部楼层
【32楼】 zhou__mi
积分:74
派别:
等级:------
来自:
        1、如果使用以前网上流传的程序,678脚是错误的。2、电源要处理

你确定678脚是错误的吗?

出0入0汤圆

发表于 2009-12-10 16:25:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-10 17:06:03 | 显示全部楼层

出0入0汤圆

发表于 2010-1-12 10:07:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-1-12 15:49:40 | 显示全部楼层

出0入0汤圆

发表于 2010-1-12 16:26:45 | 显示全部楼层
楼主强啊!

出0入134汤圆

发表于 2010-1-12 18:26:11 | 显示全部楼层
呵呵  好东西啊  买了3块  虽然一起买了转接板,但还是不方便,一直想做个这样的转接板,没想到楼主已经做了  
不知道楼主现在还有没有转接板,要是有触摸板和IC的话那就更好了。

出0入0汤圆

发表于 2010-1-14 00:23:57 | 显示全部楼层
很爽啊~

出0入0汤圆

发表于 2010-2-18 00:20:26 | 显示全部楼层
赞一个

出0入0汤圆

发表于 2010-2-18 00:54:45 | 显示全部楼层
赞一个

出0入4汤圆

发表于 2010-2-18 10:45:40 | 显示全部楼层
楼主也是成都的?

出0入0汤圆

发表于 2010-2-18 23:13:15 | 显示全部楼层
这个必须顶,学习

出0入0汤圆

发表于 2010-2-18 23:48:56 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2010-2-19 09:10:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-19 09:19:03 | 显示全部楼层
起得比鸡早。呵呵~

出0入0汤圆

发表于 2010-2-19 15:24:14 | 显示全部楼层
记号记号

出0入0汤圆

发表于 2010-3-4 15:40:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-4 18:36:18 | 显示全部楼层
MARK,学习

出0入0汤圆

发表于 2010-3-4 18:44:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-8 01:44:03 | 显示全部楼层
强银!!

出0入4汤圆

发表于 2010-3-9 12:09:46 | 显示全部楼层
【10楼】 zhou__mi :
PCB多余转让或易货交换:
http://item.taobao.com/auction/item_detail.jhtml?item_id=27a335693e8338ba7aebe3a6df136539&x_id=0db2
里面说全套散件58元,到你的店铺一看却是100元了?

出0入0汤圆

发表于 2010-3-17 14:58:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-10 00:13:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-10 00:41:09 | 显示全部楼层
好东西,收藏了!

出0入0汤圆

发表于 2010-6-12 16:41:11 | 显示全部楼层
不知道哪里有卖的

出0入0汤圆

 楼主| 发表于 2010-8-19 12:03:30 | 显示全部楼层
回复【63楼】hpdell
-----------------------------------------------------------------------

http://item.taobao.com/auction/item_detail.jhtml?item_id=dc1631b1ad8a2cc34d9972a5e656c821&x_id=0db2&received_or_posted=0&buyer_or_seller=0

出0入18汤圆

发表于 2010-8-19 16:57:10 | 显示全部楼层
不错的东西呀

出0入0汤圆

发表于 2010-8-19 21:19:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-20 16:32:02 | 显示全部楼层
回复【12楼】zhou__mi
------------------------------------------------------------------


能不能贡献触摸的调试工程文件
谢谢

trucy2010@163.com

出0入0汤圆

发表于 2010-9-8 08:46:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-9 17:12:23 | 显示全部楼层
mark~

出0入0汤圆

发表于 2010-9-9 18:27:16 | 显示全部楼层
很好的资料,谢谢

出0入0汤圆

发表于 2010-10-11 11:51:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-11 13:09:04 | 显示全部楼层
赞一个,呵呵

出0入0汤圆

发表于 2010-10-11 14:59:43 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-10-13 15:57:37 | 显示全部楼层
mark

出0入112汤圆

发表于 2010-10-13 16:59:44 | 显示全部楼层
强!

出0入0汤圆

发表于 2010-10-21 15:59:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-28 13:14:58 | 显示全部楼层
好,记号!

出0入0汤圆

发表于 2011-6-8 10:22:49 | 显示全部楼层
收藏了,厉害啊。

出0入0汤圆

发表于 2011-6-17 21:07:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-4 18:23:00 | 显示全部楼层
很强大支持下先

出0入0汤圆

发表于 2011-10-19 00:05:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-19 08:33:44 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2011-10-19 08:36:54 | 显示全部楼层
STC的单片机用久了,引脚容易氧化,不知道是不是没做好防潮

出0入0汤圆

发表于 2011-10-19 22:20:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-20 10:33:14 | 显示全部楼层
真是羡慕你们这些技术强人啊

出0入0汤圆

发表于 2012-8-24 17:14:56 | 显示全部楼层
请问LZ有没有AVR的LCD TFT驱动例程,我是一个学生级初学者,弄了好久都没搞出来啊

出0入0汤圆

发表于 2012-8-27 13:34:02 | 显示全部楼层

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 00:19

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

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