共享开源:S3C2450 驱动 群创7寸TFT(AT070TN83,800x480);原理图+驱动源码
一款本人设计的 多用途 TFT LCD接口板,支持群创 5.0, 5.6, 7.0三种TFT;一块LCD驱动板可在多款ARM开发板上直接使用(Mini2440,TQ2440,TQ6410,UT2416,UT2450,Idea6410);
以下是原理图及S3C2450下的驱动源码: 原理图;
点击此处下载 ourdev_555171.rar(文件大小:181K) (原文件名:原理图.rar) 基于S3C2450的驱动程序源码:
点击此处下载 ourdev_555174.rar(文件大小:4K) (原文件名:S3C2450_GDev.rar) 初始化代码:
static int lcd_init(void)
{
int x,y,m,n;
U8 pagewidth_in_byte=0,offsize_in_byte=0;
U8 clkval=0;
U16 hsync_cnt,vclk_cnt;
U16 lcd_horizon_value,lcd_line_value;
U8 lcd_vbpd,lcd_vfpd,lcd_vspw,lcd_hbpd,lcd_hfpd,lcd_hspw;
U8 lcd_frame_rate;
int i;
rMISCCR |= (1<<28);// select LCD controller for TFT lcd controller
rGPCUDP = 0xAAAAAAAA;
rGPCCON = 0xAAAAAAAA;
rGPDUDP = 0xAAAAAAAA;
rGPDCON = 0xAAAAAAAA;
rGPLCON = rGPLCON & ~(0x3ff<<20) | (0x1<< 28) | (0x1<< 26) | (0x1<< 24) | (0x1<< 22) | (0x1<< 20);
rGPLDAT |= (0x1f<<10);
rGPBUDP &= ~0x3;
rGPBCON = (rGPBCON & ~((3<<6)|(3<<2)|(3<<0))) | ((1<<6)|(1<<2)|(1<<0)); // Backlight Pwm control
rGPBDAT|=((1<<0) |(1<<3));
rGPBDAT &= ~(1<<1);
lcd_horizon_value = LCD_XSIZE;
lcd_line_value = LCD_YSIZE;
lcd_vbpd = VBPD;
lcd_vfpd = VFPD;
lcd_vspw = VSPW;
lcd_hbpd = HBPD;
lcd_hfpd = HFPD;
lcd_hspw = HSPW;
lcd_frame_rate = FRAME_RATE;
pagewidth_in_byte = lcd_horizon_value/8*16;
offsize_in_byte = 0;
hsync_cnt = (lcd_vbpd+lcd_vfpd+lcd_vspw+lcd_line_value);
vclk_cnt = (lcd_hbpd+lcd_hfpd+lcd_hspw+lcd_horizon_value);
//clkval = (U8)(((float)CPU_GetHclkHZ()/(float)(hsync_cnt*vclk_cnt*lcd_frame_rate*2))+0.5)-1;
clkval = 5;
rWINCON0 &= ~0x01;
rWINCON1 &= ~0x01;
rVIDCON0 &= (~3); // ENVID Off using Per Frame method
rVIDCON0 = (VIDOUT<<22)|(L1_DATA16<<19)|(L0_DATA16<<16)|(PNRMODE<<13)|(CLKVALUP<<12)|(clkval<<6)|(0<<5)|(CLKDIR<<4)|(CLKSEL_F<<2)|(0<<0);
rVIDCON1 = (VCLK_INVERTED<<7)|(HSYNC_INVERTED<<6)|(VSYNC_INVERTED<<5)|(VDEN_INVERTED<<4);
rVIDTCON0 = ((lcd_vbpd-1)<<16)|((lcd_vfpd-1)<<8)|(lcd_vspw-1);
rVIDTCON1 = ((lcd_hbpd-1)<<16)|((lcd_hfpd-1)<<8)|(lcd_hspw-1);
rVIDTCON2 = ((lcd_line_value-1)<<11)|(lcd_horizon_value-1);
#if(LCD_BPP==16)
rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_16WORD_BURST<<9)|(WINCONx_16BPP_565<<2); // 16word burst, 16bpp,
#endif
#if(LCD_BPP==24)
rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_16WORD_BURST<<9)|(WINCONx_24BPP_888<<2); // 16word burst, 24bpp,
#endif
rVIDOSD0A = (0<<11)|(0);
rVIDOSD0B = (lcd_horizon_value-1)<<11|(lcd_line_value-1);
rVIDW00ADD0B0 = (U32)LCD_Buffer;
rVIDW00ADD1B0 = (U32)LCD_Buffer + LCD_BUF_SIZE;
rVIDW00ADD2B0 = (offsize_in_byte<<13)|(LCD_XSIZE*sizeof(LCD_COLOR));
rDITHMODE = (1<<5)|(1<<3)|(1<<1)|(1<<0);
//rDITHMODE = 0;
rWINCON0 |= 0x1;
rVIDCON0 |= (1<<5)|0x3;
//? rINTSUBMSK |= (0xf << IRQ_SUB_LCD1); // MASK all LCD Sub Interrupt
DebugPrintf("S3C2450_LCDInit End(800x480)\n");
} JPG格式原理图:
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555175.JPG
(原文件名:原理图.JPG) http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555176.JPG
(原文件名:PCB.JPG) 安装和显示效果:
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555177.jpg
(原文件名:照片 2357.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555178.jpg
(原文件名:照片 2359.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555179.jpg
(原文件名:照片 2504.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555180.jpg
(原文件名:照片 2508.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555181.jpg
(原文件名:照片 2514.jpg) 好帖子,我喜欢 LCD屏数据手册:
点击此处下载 ourdev_555182.pdf(文件大小:771K) (原文件名:EK070TN83.pdf) 请问下楼主AT070TN83价格大概是多少呢? 看情况而定... 不错的东西,用的ADS还是MDK开发的,用于工业显示面板就爽了 回复【11楼】cqfeiyu
-----------------------------------------------------------------------
ADS 有全部源码吗,学习一下,有开发板没? MARK一下 回复【13楼】cqfeiyu
-----------------------------------------------------------------------
你想要哪些源码? 记号~~ S3C2450的任务就是显示吗?运行操作系统不,如何接收命令,数据,串口通讯还是USB通讯,还是总线通讯,带FIFO不等等疑问非常多 GUI是UCGUI吗? LZ给你2450的串口测试程序啊,要ADS1.2的工程文件,可以吗? 前排广告位招租。。。。 mark CPU使用率是如何计算出来的呢? 留名 mark 贴贴精品。。必顶 楼主显示器相当大 回复【17楼】cqfeiyu
s3c2450的任务就是显示吗?运行操作系统不,如何接收命令,数据,串口通讯还是usb通讯,还是总线通讯,带fifo不等等疑问非常多
-----------------------------------------------------------------------
目前已经是多线程OS + GUI + FS(修改过的FatFs);
通过串口终端作为控制台向系统发送命令和回馈信息
通过USB将系统的RAM盘,NandFlash,SD卡模拟成USB Mass Store与电脑交换数据 OS是继GUI之后的新作:
目前支持信号量和消息队列两种线程间通讯方式;
256级优先级,支持相同优先级的线程,无限线程数 mark 回复【18楼】Excellence 精益求精
gui是ucgui吗?
-----------------------------------------------------------------------
跟ucGUI相比,区别就大了~~~ 好东西!顶LZ,离酷不远了 回复【26楼】electricit
-----------------------------------------------------------------------
电脑显示器? 回复【26楼】electricit
楼主显示器相当大
-----------------------------------------------------------------------
用大分辨率的屏幕可以同时做很多事; LZ给个2450的串口测试程序啊,随便给个ADS1.2的工程文件y有吗? #include "System.h"
//===========================[ UART ]==============================
volatile unsigned int DebugUartCh=1;
void SelectDebugUart(unsigned int ch) // ch0 ~ ch3. added by junon 060530
{
DebugUartCh = ch;
if (ch>3) DebugUartCh = 1; // default UART channel 1
}
#ifdef __NANDBL
void InitDebugUart(unsigned int baud) // edited by junon 060530
{
int ch;
UART_REGS *pUartRegs;
unsigned int temp;
// select UART function
rUCON0 &= ~(0x3);//receive disable before gpio set to prevent dummy data input
rUCON1 &= ~(0x3);//receive disable
rUCON2 &= ~(0x3);//receive disable
rUCON3 &= ~(0x3);//receive disable
temp = (rGPHCON & ~0xffff ) | 0xaaaa;
rGPHCON = temp;//set uart mode, keep uart mode if it was to prevent gpio set to input, uart
//it will cause cause rx fifo dummy data input.
for (ch=0;ch<4;ch++)
{
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*ch);
pUartRegs->rUlCon = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
//11]
// Clock Sel,Tx Int,Rx Int, Rx Time Out, Rx err, Loop-back, Send break,Transmit Mode, Receive Mode
//1 0 0 0 , 0 1 0 0 , 01 01
// PCLK2 PulsePulse Disable GenerateNormal Normal Interrupt or Polling
pUartRegs->rUCon = 0x845;
//pUartRegs->rUbrDiv = ((int)(PCLK/16./baud+0.5)-1); //Baud rate divisior register 0
pUartRegs->rUbrDiv = 26; //Baud rate divisior register 0
pUartRegs->rUfCon = 0x6; //UART FIFO control register, FIFO disable, fifo reset
pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable
}
}
#else
void InitDebugUart(unsigned int baud) // edited by junon 060530
{
int ch;
float DIV_VAL;
int UDIV_SLOT;
volatile UART_REGS *pUartRegs;
unsigned int temp;
// select UART function
rUCON0 &= ~(0x3);//receive disable before gpio set to prevent dummy data input
rUCON1 &= ~(0x3);//receive disable
rUCON2 &= ~(0x3);//receive disable
rUCON3 &= ~(0x3);//receive disable
temp = (rGPHCON & ~0xffff ) | 0xaaaa;
rGPHCON = temp;//set uart mode, keep uart mode if it was to prevent gpio set to input, uart
//it will cause cause rx fifo dummy data input.
for (ch=0;ch<4;ch++)
{
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*ch);
pUartRegs->rUlCon = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
//11]
// Clock Sel,Tx Int,Rx Int, Rx Time Out, Rx err, Loop-back, Send break,Transmit Mode, Receive Mode
//1 0 0 0 , 0 1 0 0 , 01 01
// PCLK2 PulsePulse Disable GenerateNormal Normal Interrupt or Polling
/*
pUartRegs->rUCon = 0x245;
pUartRegs->rUbrDiv = ((int)(PCLK/16./baud+0.5)-1); //Baud rate divisior register 0
pUartRegs->rUfCon = 0x0; //UART FIFO control register, FIFO disable
pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable
pUartRegs->rUdivSlot= 0x54AA; //UART MODEM control register, AFC disable
*/
DIV_VAL = ((float)PCLK/16./baud)-1;
pUartRegs->rUCon = 0x845;
pUartRegs->rUbrDiv = (int)DIV_VAL; //Baud rate divisior register 0
pUartRegs->rUfCon = 0x6; //UART FIFO control register, FIFO disable, tx, rx fifo reset
pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable
UDIV_SLOT = (int)( (DIV_VAL-(int)DIV_VAL)*16 );
switch (UDIV_SLOT) {
case 0 : pUartRegs->rUdivSlot = 0; break;
case 1 : pUartRegs->rUdivSlot = 0x0080; break;
case 2 : pUartRegs->rUdivSlot = 0x0808; break;
case 3 : pUartRegs->rUdivSlot = 0x0888; break;
case 4 : pUartRegs->rUdivSlot = 0x2222; break;
case 5 : pUartRegs->rUdivSlot = 0x4924; break;
case 6 : pUartRegs->rUdivSlot = 0x4a52; break;
case 7 : pUartRegs->rUdivSlot = 0x54aa; break;
case 8 : pUartRegs->rUdivSlot = 0x5555; break;
case 9 : pUartRegs->rUdivSlot = 0xd555; break;
case 10 : pUartRegs->rUdivSlot = 0xd5d5; break;
case 11 : pUartRegs->rUdivSlot = 0xddd5; break;
case 12 : pUartRegs->rUdivSlot = 0xdddd; break;
case 13 : pUartRegs->rUdivSlot = 0xdfdd; break;
case 14 : pUartRegs->rUdivSlot = 0xdfdf; break;
case 15 : pUartRegs->rUdivSlot = 0xffdf; break;
}
}
// printf("DIV_VAL:%f , UDIV_SLOT:%d\n", DIV_VAL, UDIV_SLOT);
}
#endif
unsigned int Uart_putc(unsigned int c) // edited by junon 060530
{
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
if(c=='\n') {
while(!(pUartRegs->rUtrStat & 0x2));
pUartRegs->rUtxh = '\r';
}
while(!(pUartRegs->rUtrStat & 0x2)); //Wait until THR is empty.
pUartRegs->rUtxh = c;
return c;
}
unsigned int Uart_getc(void) // edited by junon 060530
{
unsigned int chRx;
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
while(!(pUartRegs->rUtrStat & 0x1)); //Receive data ready
chRx = pUartRegs->rUrxh;
return chRx;
}
#ifndef __NANDBL
int GetIntNum( void)
{
char str;
char *string = str;
int base = 10;
int minus = 0;
int result = 0;
int lastIndex;
int i,j;
gets(string);
i=0; j=0;
do {
if (string==0x8) {
if (i>0) i--;
} else
string=string;
} while(string!=0);
if(string=='-') {
minus = 1;
string++;
}
if(string=='0' && (string=='x' || string=='X')) {
base = 16;
string += 2;
}
lastIndex = strlen(string) - 1;
if(lastIndex<0)
return -1;
if(string=='h' || string=='H' ) {
base = 16;
string = 0;
lastIndex--;
}
if(base==10) {
result = atoi(string);
result = minus ? (-1*result):result;
}
else {
for(i=0;i<=lastIndex;i++) {
if(isalpha(string)) {
if(isupper(string))
result = (result<<4) + string - 'A' + 10;
else
result = (result<<4) + string - 'a' + 10;
}
else
result = (result<<4) + string - '0';
}
result = minus ? (-1*result):result;
}
return result;
}
void Uart_TxEmpty(void) // added 060624
{
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
while(!(pUartRegs->rUtrStat & 0x4)); //Wait until tx shifter is empty.
}
char Uart_GetKey(void) // added 060624
{
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
if(pUartRegs->rUtrStat & 0x1) //Receive data ready
return pUartRegs->rUrxh;
else
return 0;
}
// UART data download function, moved 060718
int UartDownAddress;
U32 UartDownProgramSize;
unsigned int DownloadData(void)
{
int i;
U16 checkSum=0,dnCS;
U32 fileSize=10;
U8 *downPt, key;
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
printf(" Type the download address : ");
UartDownAddress = GetIntNum();
if(UartDownAddress == (-1))
UartDownAddress = 0x31000000;
printf("Do you want to download through Debug UART port from 0x%x? : ",UartDownAddress);
key=getchar();
printf("%c\n",key);
if((key=='n')||(key=='N')) return 0;
downPt=(U8 *)UartDownAddress;
printf("UartDownAddress = %x\n",UartDownAddress);
printf("Download the plain binary file(.BHC) to be written through UART1 channel\n");
printf("The file format : <n+6>(4)+(n)+CS(2)\n");
printf("To transmit .BIN file : wkocm2 xxx.BIN /1 /d:1\n");
printf("Download methods : COM:8Bit,NP,1STOP\n");
printf("\nSTATUS : ");
rINTMSK=BIT_ALLMSK;
//tmp=pUartRegs->rUrxh; //To remove overrun error state.
i=0;
while(i<fileSize)
{
while(!(pUartRegs->rUtrStat&0x1));
*(downPt+i)=pUartRegs->rUrxh;
if(i==3)
{
fileSize=*((U8 *)(UartDownAddress+0))+
(*((U8 *)(UartDownAddress+1))<<8)+
(*((U8 *)(UartDownAddress+2))<<16)+
(*((U8 *)(UartDownAddress+3))<<24);
}
if((i%1000)==0)
pUartRegs->rUtxh = '#';
i++;
}
UartDownProgramSize=fileSize-6;
for(i=4;i<(fileSize-2);i++)
{
checkSum+=*((U8 *)(i+UartDownAddress));
}
dnCS=*((U8 *)(UartDownAddress+fileSize-2))+
(*( (U8 *)(UartDownAddress+fileSize-1) )<<8);
if(checkSum!=dnCS)
{
printf("Checksum Error!!! MEM : %xDN : %x\n",checkSum,dnCS);
return 0;
}
printf("\nDownload O.K.\n");
return 1;
}
unsigned int AUTO_DownloadData(int downaddr)
{
int i;
U16 checkSum=0,dnCS;
U32 fileSize=10;
U8 *downPt, key;
volatile UART_REGS *pUartRegs;
pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);
printf(" Type the download address : 0x%x",downaddr);
//UartDownAddress = GetIntNum();
UartDownAddress = downaddr;
if(UartDownAddress == (-1))
UartDownAddress = 0x31000000;
//printf("Do you want to download through Debug UART port from 0x%x? : ",UartDownAddress);
//key=getchar();
//printf("%c\n",key);
//if((key=='n')||(key=='N')) return 0;
downPt=(U8 *)UartDownAddress;
printf("UartDownAddress = %x\n",UartDownAddress);
printf("Download the plain binary file(.BHC) to be written through UART1 channel\n");
printf("The file format : <n+6>(4)+(n)+CS(2)\n");
printf("To transmit .BIN file : wkocm2 xxx.BIN /1 /d:1\n");
printf("Download methods : COM:8Bit,NP,1STOP\n");
printf("\nSTATUS : ");
rINTMSK=BIT_ALLMSK;
//tmp=pUartRegs->rUrxh; //To remove overrun error state.
i=0;
while(i<fileSize)
{
while(!(pUartRegs->rUtrStat&0x1));
*(downPt+i)=pUartRegs->rUrxh;
if(i==3)
{
fileSize=*((U8 *)(UartDownAddress+0))+
(*((U8 *)(UartDownAddress+1))<<8)+
(*((U8 *)(UartDownAddress+2))<<16)+
(*((U8 *)(UartDownAddress+3))<<24);
}
if((i%1000)==0)
pUartRegs->rUtxh = '#';
i++;
}
UartDownProgramSize=fileSize-6;
for(i=4;i<(fileSize-2);i++)
{
checkSum+=*((U8 *)(i+UartDownAddress));
}
dnCS=*((U8 *)(UartDownAddress+fileSize-2))+
(*( (U8 *)(UartDownAddress+fileSize-1) )<<8);
if(checkSum!=dnCS)
{
printf("Checksum Error!!! MEM : %xDN : %x\n",checkSum,dnCS);
return 0;
}
printf("\nDownload O.K.\n");
return 1;
}
//===========================[ BOARD LED ]================================
void Init_LED(void)
{
// LED1,2,4,8 -> GPC 0,5,6,7 in SMDK2450
rGPCCON = (rGPCCON&~(0x3<<0))|(0x1<<0);
rGPCCON = (rGPCCON&~(0x3f<<10))|(0x15<<10);
rGPCUDP &= ~((0x3f<<10)|(0x3<<0)); // pull-up/down disable
}
void Led_Display(int data)
{
rGPCDAT = (rGPCDAT & ~((0x7<<5)|(0x0<<0))) | (((data>>1) & 0x7)<<5) |((data & 0x1)<<0);
}
#endif
//===========================[ Initializing Console ]================================
void Console(unsigned int ch) // edited by junon 060530
{
SelectDebugUart(ch); // ch0 ~ ch3
InitDebugUart(115200);
#ifndef __NANDBL
SetResTDelay(1000); // Resolution of TDelay is 1000us=1ms
InitTDelayFunc();
Init_LED();
#endif
} 楼主,你的图能打开,但是确实空白的,怎么回事呀? mark一下 mark 回复【36楼】jiki119
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------
什么图? lz发一个2450的工程文件啊,ADS的.........不行吗 回复【40楼】liouravr
lz发一个2450的工程文件啊,ads的.........不行吗
-----------------------------------------------------------------------
源码都提供了,你自己难道连ADS工程也不会建吗~~~~ mark 回复【36楼】jiki119
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------
原理图为 power logic 格式 缺文件啊,而且,还有很多设置,你还说对了,我真不会............. mark 回复【44楼】liouravr
缺文件啊,而且,还有很多设置,你还说对了,我真不会.............
-----------------------------------------------------------------------
无语...... 回复【46楼】liuweiele Liuwei
回复【44楼】liouravr
缺文件啊,而且,还有很多设置,你还说对了,我真不会.............
-----------------------------------------------------------------------
无语......
-----------------------------------------------------------------------
不错。哼哼哈哈 不错。哼哼哈哈 MARK 六一节快乐哈O(∩_∩)O! 非常好! 这几天正在参考这个程序,LZ能提供一下驱动里面用到的GUI.h吗?有些设置应该在这里面。谢谢!
a_tang2008#%#163.com(请把#%#换成@) 飞熊! 绝对经典。正需要 请问lz还有空pcb没,我想买一块 楼主真是个好人 回复【55楼】winterv
请问lz还有空pcb没,我想买一块
-----------------------------------------------------------------------
你是否在广东省内? 不错,显示功能很强大! 回复【58楼】ag_wang
不错,显示功能很强大!
-----------------------------------------------------------------------
新版更强大:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4357508&bbs_page_no=1&search_mode=4&search_text=liuweiele&bbs_id=9999 回复【57楼】liuweieleLiuwei
-----------------------------------------------------------------------
没有,我在北京,方便吗 回复【60楼】winterv
回复【57楼】liuweieleliuwei
-----------------------------------------------------------------------
没有,我在北京,方便吗
-----------------------------------------------------------------------
算很远了. 回复【61楼】liuweieleLiuwei
-----------------------------------------------------------------------
请问:
(1)lcd是怎么固定在pcb上的捏?
(2)触摸屏是怎么固定在lcd上的捏?
(3)支持AT070TN83 v.1否?
(4)邮费我自理,价格合适的话可否卖我一块? mark LZ,我用的CPU是2440,屏是AT056TN53 ,GPB1接LCD_adj(3脚)调背光亮度;不控制时,屏显示正常,不过PWM一输出,屏就有水波纹,占空比越小,波纹越大,这问题如何解决? 一个字,强! 回复【57楼】liuweiele Liuwei
回复【55楼】winterv
请问lz还有空pcb没,我想买一块
-----------------------------------------------------------------------
你是否在广东省内?
-----------------------------------------------------------------------
我在广东省内,不过我想买个焊接好的连屏一起 d 高手做的东西就是牛! 原理图是用啥软件做的?打不开啊。 回复【69楼】enterout123
-----------------------------------------------------------------------
我用PADS-POWERLOGIC3.0软件也打不开啊,提示不能打开二进制文件 原理图不全啊 学习学习,给力 看帖难得回,今天必须谢谢楼主~ 开源无敌~~~~~~~ LZ 能不给发一个LCD与S3C2450连接图,能不给一个LCD是如何写数据命令等进去的datasheet
谢谢LZ了 回复【73楼】alwaysGo
-----------------------------------------------------------------------
LZ 能不给发一个LCD与S3C2450连接图,能不给一个LCD是如何写数据命令等进去的datasheet
谢谢LZ了 mark 板主善人 mark 不错啊!好好哦看看资料1 标记一下!
谢谢楼主。 学习。 Mark! MARK 这个驱动移植到2416上面可以吗?2450中用到加速了吗? 果断顶!好帖! 放个板凳 果断顶!好帖! 回复【91楼】dearwind153
回复【39楼】liuweieleliuwei
回复【36楼】jiki119
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------
什么图?
-----------------------------------------------------------------------
就是这个原理图是空白,请问lz是用什么软件打开的,我用protel99se,和altium desginer打开都是空白的
/////////////////////////////////////
power logic lz总是有硬货,支持 mark 一定要MARK 请问楼主怎样才能支持AT070TN92呢,50PIN的LCD,谢谢! 不错,顶 牛人,强烈围观。
mark ARM高手 楼主好人
马克备用
谢谢 谢谢楼主..... 感谢分享 兄弟可以上传一个S3C2450的封装库吗? 你好!可以给一个S3C2450的封装库吗? 请发到qsjit@163.com谢谢! 你好!可以给一个S3C2450的封装库吗? 请发到qsjit@163.com谢谢!
页:
[1]
2