MCS-51单片机装备 2.4英寸 TFT LCD 触摸屏
2.4英寸 TFT LCD 买的是 34元的 + 2元的转接板;PCB是自己设计做的;再配上触摸屏及控制器IC。MCS-51单片机用的是STC11L60XE 。http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460251.jpg
显示效果1.jpg (原文件名:显示效果1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460252.jpg
显示效果2.jpg (原文件名:显示效果2.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460253.jpg
触摸显示.jpg(原文件名:显示效果4.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460254.jpg
全部元件 (原文件名:全部元件.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460255.jpg
焊接组装1.jpg (原文件名:焊接组装1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460256.jpg
焊接组装2.jpg (原文件名:焊接组装2.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460257.jpg
焊接组装3.jpg (原文件名:焊接组装4.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460258.jpg
焊接组装4.jpg (原文件名:焊接组装5.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460259.jpg
焊接组装5.jpg (原文件名:焊接组装6.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460260.jpg
焊接组装6.jpg (原文件名:焊接组装7.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460261.jpg
焊接组装7.jpg (原文件名:焊接组装8.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460262.jpg
焊接组装8.jpg (原文件名:焊接组装9.jpg) 看上去很漂亮啊!呵呵!!!!!!!!!!!!!!!!!!那个34的TFT我也收藏了在,可惜没有时间玩,就没买! 有空将触摸程序调试好。 挺好的,没用啊 51还是很慢啊 MCS-51单片机用的是STC11L60XE,运行速度是传统51的8-12倍。我使用33MHz晶振时,模拟ISP操作VS1003B 和SD卡,可以流畅播放192kbps 44kHz的MP3歌曲。显示图片、文字速度也很快。显示上图的文字时我用的11.0592M,为了显示一个看一个字,每个字显示后面加了2ms延时。
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_460289.jpg
(原文件名:AS-04 MP3播放 1.jpg) 这个51不是很慢的 和AVR一样也是单周期的指令 楼主 还有没有多的PCB啊? 这个还真是不错 TFT是在哪买的? 楼主 还有没有多的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 mark 触摸屏显示效果(有人提出,做个产品,小朋友可以写字画漫画。看看是不是有雏形了!):
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461328.jpg
(原文件名:显示效果5.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461329.jpg
(原文件名:显示效果6.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461330.jpg
(原文件名:显示效果7.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461331.jpg
(原文件名:显示效果8.jpg)
今天触摸屏调试时发现X-、 Y+设计时调了,PCB上要更改。
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461325.JPG
(原文件名:触摸更正2.JPG)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461326.JPG
(原文件名:触摸更正6.JPG)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461327.JPG
(原文件名:触摸更正7.JPG) 做的很不错
可否上传源码? mrak 能上些资料不?? ~~mark~~~ 好羡慕啊,顶》》》》》》》 程序在“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 UH7843SSTC11L60XE 11.0592MHz -1.rar) )
注意UH7843的 3、4要交换,最好将2、5也交换,调试时才发现的,开板前检查了N次,都没发现。一定要先做几个样品才是,但为了省钱就没有。
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461605.JPG
(原文件名:TFT sch.JPG) /*-----------------------------------------------------------------------------------------------
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();
}
} /*-------------------------
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延时程序
{
ucharj=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;
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;
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);
} 昨天调成功的OLED
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_461706.jpg
(原文件名:旋转 0715_110716.jpg) MARK LZ 很猛,那个触摸屏那么便宜啊??
有时间我也做下。 楼主的TFT和VS1003模块很好,我经过半天努力就把TFT完全焊接并演示成功了! 真是不错呀!!! 记下, 不错 很强啊 爱消失在7月末 make #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 charhao[];
#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;
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;
for(s=0;s<240;s++);
for(num=0;num<320;num++)
LCD_WR_Data(temp);
}
CS_H;
} //写寄存器地址函数
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;
}
去掉延时 1、如果使用以前网上流传的程序,678脚是错误的。2、电源要处理
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465883.JPG
(原文件名:引脚更正.JPG)
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465884.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 DATAPORTA 请问 lz有 3.5寸的手机屏资料吗 ?排线编号是TFT8K0940FPC,谢谢 想知道TFT是在什么地方买到的``` mark 很不错 好酷阿!!! 【32楼】 zhou__mi
积分:74
派别:
等级:------
来自:
1、如果使用以前网上流传的程序,678脚是错误的。2、电源要处理
你确定678脚是错误的吗? mark 顶 MARK 牛 楼主强啊! 呵呵好东西啊买了3块虽然一起买了转接板,但还是不方便,一直想做个这样的转接板,没想到楼主已经做了
不知道楼主现在还有没有转接板,要是有触摸板和IC的话那就更好了。 很爽啊~ 赞一个 赞一个 楼主也是成都的? 这个必须顶,学习 顶一个 mark 起得比鸡早。呵呵~ 记号记号 mark MARK,学习 mark 强银!! 【10楼】 zhou__mi :
PCB多余转让或易货交换:
http://item.taobao.com/auction/item_detail.jhtml?item_id=27a335693e8338ba7aebe3a6df136539&x_id=0db2
里面说全套散件58元,到你的店铺一看却是100元了? mark mark 好东西,收藏了! 不知道哪里有卖的 回复【63楼】hpdell
-----------------------------------------------------------------------
http://item.taobao.com/auction/item_detail.jhtml?item_id=dc1631b1ad8a2cc34d9972a5e656c821&x_id=0db2&received_or_posted=0&buyer_or_seller=0 不错的东西呀 mark 回复【12楼】zhou__mi
------------------------------------------------------------------
能不能贡献触摸的调试工程文件
谢谢
trucy2010@163.com mark mark~ 很好的资料,谢谢 mark 赞一个,呵呵 马克 mark 强! mark 好,记号! 收藏了,厉害啊。 mark 很强大支持下先 mark mark!!!! STC的单片机用久了,引脚容易氧化,不知道是不是没做好防潮 mark 真是羡慕你们这些技术强人啊 请问LZ有没有AVR的LCD TFT驱动例程,我是一个学生级初学者,弄了好久都没搞出来啊 {:handshake:} 不错不错,学习学习!我还在倒腾12864呢~
页:
[1]