用S3C44B0X+2.4寸TFT LCD做的万年历功能【恢复】
这是一个用S3C44B0X+2.4寸TFT LCD做的一个日历,目前只实现了以下功能:1.星期自动调整;
2.平年和闰年自动区分.
本贴被 liuweiele 编辑过,最后修改时间:2009-01-15,00:31:31. 在S3C44B0X上的实际运行界面效果:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_587524.jpg
(原文件名:IMAG0514.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_587525.jpg
(原文件名:IMAG0515.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_587526.jpg
(原文件名:IMAG0516.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_587527.jpg
(原文件名:IMAG0517.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_587528.jpg
(原文件名:IMAG0522.jpg) 程序源码:
点击此处下载 ourdev_587544.rar(文件大小:184K) (原文件名:RTC.rar) LCD驱动文件:
点击此处下载 ourdev_587564.rar(文件大小:3K) (原文件名:LCD_Drv.rar) 漂亮! 很漂亮 Cool ! 不错 用什么软件将BMP转成数组啊? 真到很好看也~~
但是有个问题想请教下,你的TFT LCD用什么来驱动的呢,我知道S3C44B0 属于ARM7,只能驱动STN屏,不知道你是怎么来做的呢?我看你的程序好像不是用总线方式来驱动的哦,是用了ARM7内部的LCD液晶控制器到寄存器?
请指教~~ 再看了一下,好像用的是总线方式驱动的哇?不知道你的速度快不快呢? 是总线方式。 给讲讲怎么做得,非常不错 用的是16位i80总线方式驱动,GUI使用了帧缓冲技术,即使是打开半透明效果,用66MHZ的S3C44B0X全屏刷新也完全感觉不到闪烁.
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_590544.jpg
(原文件名:IMAG0535.jpg) 图标是用Bin2C直接将BMP文件转换. lcd 不错。 请教:
用什么开发环境做的啊
非常漂亮! mark 用ADS1.2开发的:
最近增加了中/英两种语言切换功能:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_599284.jpg
(原文件名:IMAG0584.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_599285.jpg
(原文件名:IMAG0560.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_599286.jpg
(原文件名:IMAG0561.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_599304.jpg
(原文件名:IMAG0562.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_599287.jpg
(原文件名:IMAG0582.jpg)
本贴被 liuweiele 编辑过,最后修改时间:2009-01-22,23:52:32. 很羡慕啊 我也有44b0的板 2.4寸淘宝tft屏 不知能不能实现以上你的功能呢 以下蓝色文字由版主:kingofkings 于:2009-01-23,11:04:01 加入。<font color=black>请发贴人注意:本贴放在这分区不合适,即将移走
原来分区:AVR (原ourAVR.com) 技术论坛
即将移去的分区:ARM技术论坛
移动执行时间:自本贴发表0小时后
任何的疑问或咨询,请可随时联系站长。谢谢你的支持!</font> 不错 真厉害啊! 有没有硬件资料共享学习? 好想学习一下楼主的这个GUI,能发给完整源码吗? 这个GUI暂时没有学习资料~ mark COOL! COOL!终于找到了 LS也在做类似的东西? 不得不说 确实很棒 mark 有新东西了~ 很想知道楼主的GUI怎么弄出来的?! 丛最基本的画点,画线函数开始. 标志一下, mark 漂亮。。 MARK~~ MARK mark,gui咋做出来的? 请教楼主,为啥我用你给的半透明算法,将两张图alpha混合后,图片靠下部总会出现一些白线?不明白到底是怎么回事? 好 TO:【41楼】 songzi2018
能不能上传一张图片看一下? 能用1万年就好了 谢谢liuweiele,晚上回去上图和程序,硬件环境:友善mini2440
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_491256.JPG
注意按钮部分,不该有那一条条线 (原文件名:DSC02655.JPG)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_491257.JPG
注意图片的下半部,出现不该有的一条条线 (原文件名:DSC02659.JPG)
源码,ADS1.2工程,显示部分在LCD.c中ourdev_491267.rar(文件大小:2.09M) (原文件名:uCos2-2.rar)
手机拍的照片,效果不好,能看个大概,有mini2440+nec3.5板子可以直接将bin通过USB下载到0x30000000处运行; MMU没有设置好 to liuweiele:
非常感谢楼主指点,MMU那块我不太懂,请问楼主那块参数该怎么设置;也就是MMU_Init()函数,可以贴一段代码吗?谢谢楼主 这是我的设置:
void MMU_Init(void)
{
int i,j;
//========================== IMPORTANT NOTE =========================
//The current stack and code area can't be re-mapped in this routine.
//If you want memory map mapped freely, your own sophiscated MMU
//initialization code is needed.
//===================================================================
MMU_DisableDCache();
MMU_DisableICache();
//If write-back is used,the DCache should be cleared.
for(i=0;i<64;i++)
for(j=0;j<8;j++)
MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
MMU_InvalidateICache();
#if 0
//To complete MMU_Init() fast, Icache may be turned on here.
MMU_EnableICache();
#endif
MMU_DisableMMU();
MMU_InvalidateTLB();
//MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
//MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);//bank0
MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CB); //bank0
MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB); //bank0
MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);//bank1
MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
//MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CNB);//bank4 for STRATA Flash
MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
//30f00000->30100000, 31000000->30200000
MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB); //bank6-1
MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_CB); //bank6-2
MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CB); //bank6-3
MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7
MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR
MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR
MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used
MMU_SetTTBase(_MMUTT_STARTADDRESS);
MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR);
//DOMAIN1: no_access, DOMAIN0,2~15=client(AP is checked)
MMU_SetProcessId(0x0);
MMU_EnableAlignFault();
MMU_EnableMMU();
MMU_EnableICache();
MMU_EnableDCache(); //DCache should be turned on after MMU is turned on.
} void MMU_Init(void)
{
int i,j;
//========================== IMPORTANT NOTE =========================
//The current stack and code area can't be re-mapped in this routine.
//If you want memory map mapped freely, your own sophiscated MMU
//initialization code is needed.
//===================================================================
MMU_DisableDCache();
MMU_DisableICache();
//If write-back is used,the DCache should be cleared.
for(i=0;i<64;i++)
for(j=0;j<8;j++)
MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
MMU_InvalidateICache();
#if 0
//To complete MMU_Init() fast, Icache may be turned on here.
MMU_EnableICache();
#endif
MMU_DisableMMU();
MMU_InvalidateTLB();
//MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
//MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);//bank0
MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CNB); //bank0
MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB); //bank0
MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);//bank1
MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
//MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CNB);//bank4 for STRATA Flash
MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
//30f00000->30100000, 31000000->30200000
MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CNB); //bank6-1
MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_CNB); //bank6-2
MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CNB); //bank6-3
MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7
MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR
MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR
MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used
MMU_SetTTBase(_MMUTT_STARTADDRESS);
MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR);
//DOMAIN1: no_access, DOMAIN0,2~15=client(AP is checked)
MMU_SetProcessId(0x0);
MMU_EnableAlignFault();
MMU_EnableMMU();
MMU_EnableICache();
MMU_EnableDCache(); //DCache should be turned on after MMU is turned on.
} 谢谢liuweiele:晚上回去研究 不客气 就是MMU_Init()没有处理好,谢谢liuweiele,问题解决,但是还是搞不清楚什么时候设置RW_CB/RW_CNB/RW_NCNB
修改后的源码,供大家参考ourdev_491655.rar(文件大小:2.09M) (原文件名:uCos2.rar) 这个只要熟悉MMU的原理和作用就好办了. 谢谢楼主,正在补一补这方面的东西 mark 我用44B0的板子点这个屏,最开始的时候用总线的方案,但是将总线延长后,哪怕是不接屏,只给一个IO取反的动作,仿真时也会死机。如果把总线拉出秋的飞线拆了,进入仿真,就可以运行了。这是干扰的问题吗?但看过有网友的制作,好像比我拉出来的飞线都长,他们却成功了。我不知道会不会同引导程序里的东东有关?
请兄弟们帮忙指正。 如果是接在44B0X的并行总线上,最好不要超过10cm,否则很容易导致NorFlash或SDRAM读写错误.用IO口模拟就没那么严格了,不过没什么实用价值~~~ 感谢liuweiele的提醒,的确是引线过长了,我把引线尽可能的短,实验成功了,但有两个问题1:我把时钟调到66M,在两个图片转换,还是有明显的“拉窗帘”的现象。当然比我用IO口模拟出来的效果要好多了。2:我的引导程序有仿真的时候可以正常运行,但烧的IC里后就不运行了,但用另一个实例中的引导程序却是仿真的时候会死机,但烧进IC就可以运行,我不知道问题出在哪里。还请兄弟帮忙解答一下。 实现程序Remap到RAM运行,并使能Cache功能,适当优化一下SDRAM的时序(以速度优先),才能大幅提升CPU的性能. 做得真不错
好好向LZ学习!!
记下有时间来学下 刚好准备做小屏图片切显
马克 mark 好漂亮啊,流口水了 mark 我按楼主的方法做,只不过是用的八位数据线,怎么是花屏啊? mark 44b0x能有MMU??? 不知道楼主能否具体透露一下44B0和tft LCD的连接图?
LCD_nRST->GPC5 Output.
LCD_LED->GPE5(Timer2 PWM) Output.还有 回复【68楼】pig163xx
不知道楼主能否具体透露一下44B0和tft LCD的连接图?
LCD_nRST->GPC5Output.
LCD_LED->GPE5(Timer2 PWM) Output.还有
-----------------------------------------------------------------------
驱动程序有说明 mark arm真好,顶楼主。 Mark! 哇!好强大! mark mark MARK mark--------- 学习了~~,不错。 楼主用的什么GUI啊?很好看啊 回复【79楼】haihai 春海
楼主用的什么gui啊?很好看啊
-----------------------------------------------------------------------
自己设计的GUI 谢谢楼主,还没入门。 要是再详细一点就好了!!! mark~~~
前不久刚好买了块2.4寸的TFT LCD,只做了个俄罗斯方块游戏,现在还得好好向LZ学习学习GUI设计呢。 帮顶,确实不错, 楼主你的QQ号是多少啊?有问题想和你讨教呢! 楼主你好,我买了一块ILI9320的液晶屏,我用44b0的数据口直接 接液晶的数据口
16位的,不知道什么原因,数据口的电压 都为3.6V,超级终端也显示乱码!请问这是什么原因呢? m mark,很漂亮。
BTW:发现一处文字错误:星期二的英语缩写不是THU. 回复【88楼】sharpufo 风生水起月皎白
mark,很漂亮。
btw:发现一处文字错误:星期二的英语缩写不是thu.
-----------------------------------------------------------------------
TUE mark 好厉害,向LZ致敬 很漂亮,学习了 ARM芯片做的,好牛啊 漂亮,楼主是用开发班做的吗,我买个嵌入式的开发板楼主能介绍个吗 请问楼主您是怎么样将彩屏的背景设置成一幅图片然后再上面写数据,我平时在彩屏上写数据时背景都是清屏是的颜色(一种颜色),但不知道怎么将背景设置成一幅图片,如果可以的话楼主可以知道一些吗,小弟感激不尽!!! 厉害呀!!! 看看看 学习下MMU,随便补补 库啊!!!!!!!!!!!!!!!!!!! 牛,楼主威武
页:
[1]
2