uyrfdcv 发表于 2010-12-24 15:33:27

LCD驱动+nand flash驱动,显示BMP图片,显示汉字,nand flash随机读写

本帖最后由 uyrfdcv 于 2010-12-24 15:56 编辑

花了好多好多天终于把液晶屏驱动写完了,呵呵正好赶在平安夜之前,明天开开心心过圣诞节。

当然写这些东西我只是复制、粘贴高手写的液晶屏驱动,自己动手写的不多,只是我把函数接口设计的更加人性化了,方便用户调用。

用户只需要自己定义画点的函数,就可以方便地调用所有驱动函数:
比较有特色的是显示BMP图片,显示汉字,nand flash随机读写:

比如要在LCD上显示“Merry 圣诞节”,只要下面一句废话就可以了:
LCD_Print("Merry 圣诞节");
还有显示BMP格式图片用LCD_Paint_BMP()函数,先要去随便找张BMP图片,再转换成C语言数组。
将文件转换成C语言数组推荐一个小软件:

还有如果你想显示楷体、黑体等汉字,或者想显示很大很大的汉字,可以使用LCD_Display_Character()函数,当然又需要用到一个高高高……手写的软件:
先用这个软件生成自定义字符点阵数组,然后就可以了。
很不爽的是这个论坛好像不能上传图片,不然我就传几张说明图片上去了。

还有用户可以先把图片存在nand flash里,这样编译后的可执行文件就不会太大,
函数调用也很简单:Flash_Write(device, buffer, start_address, number);
下载源代码:
下面是一段测试程序:void Main(void)
{
        LCD_DEVICE * device = &LCD_Device;
        ML_U32 i;
        char info[] = "MultiSilicon Link v1_2_8";
        char string[] = "0123456789";
        char buffer = "";
        Board_Init();
        LCD_Init_Device();
        while(1)
        {       
                //+ LCD驱动测试
                //# 在(0, 0)坐标处画BMP格式图片(485 * 278像素)
                //^ 图片内容为东华大学图书馆
                LCD_Paint_BMP(0, 0, BMP_Library);
                //# 画实心矩形{(40, 40), (50, 50)}
                LCD_Draw_Rectangle(40, 40, 50, 50, RGB565_RED, 1);
                //# 画空心矩形{(42, 42), (48, 48)}
                LCD_Draw_Rectangle(42, 42, 48, 48, RGB565_WHITE, 0);
                //# 画直线{(42, 42), (48, 48)}
                LCD_Draw_Line(42, 42, 48, 48, RGB565_WHITE);
                //# 画直线{(42, 48), (48, 42)}
                LCD_Draw_Line(42, 48, 48, 42, RGB565_WHITE);
                //# 在(5, 150)坐标处画BMP格式图片(196 * 69像素)
                //^ 图片内容为“东华大学”
                LCD_Paint_BMP(5, 150, BMP_Logo);
                //# 显示中英文字符串
                //^ 注意:因为中文字库比较大
                //^ 所以使用本函数,编译后生成的可执行文件会比较大
                //^ 如果资源有限,可以使用LCD_Print_ASC()函数
                LCD_Print("东华大学");
                //# 显示英文字符串
                LCD_Print_ASC("\nDONGHUA UNIVERSITY");
                //# 换行
                LCD_New_Line();
                //+ 显示60*60字符点阵
                //# 设置字符点阵的宽度
                device->font.width = 60;
                //# 设置字符点阵的高度
                device->font.height = 60;
                //# 不显示背景颜色
                device->font.display_background_color = ML_FALSE;
                //+ 依次显示每个字符
                //^ 字符内容为“爱我东华”
                for(i = 0; i < 4; i++)
                {
                        LCD_Display_Character(&Array);
                }
               
                //+ nand flash驱动测试
                //# 初始化设备,该函数会调用_Flash_Init_device1()函数对设备进行初始化
                Flash_Init_Device(&Flash_Device);       
                //# 创建重定向表,如果Flash存在坏块,这一步是必要的
                Flash_Creat_Redirect_Table(&Flash_Device, 1);
                //# 在0x123456地址处写入字符串info
                Flash_Write(&Flash_Device, info, 0x123456, sizeof(info));
                //# 在0x234567地址处写入字符串string
                Flash_Write(&Flash_Device, string, 0x234567, sizeof(string));
                //# 在0x123456地址处读入sizeof(info)个字节并存入buffer
                Flash_Read(&Flash_Device, buffer, 0x123456, sizeof(info));
                Uart_Printf("\n%s", buffer);
                //# 在0x234567 + 3地址处读入sizeof(string)个字节并存入buffer
                Flash_Read(&Flash_Device, buffer, 0x234567 + 3, sizeof(string));
                Uart_Printf("\n%s", buffer);
                while(1);       
        }
}

uyrfdcv 发表于 2010-12-24 16:13:01

我都还没写完,就说:对不起从发帖到现在已经超过30分钟,不能再编译了,晕死了

所以只能回复里面再写:
读者请先下载可执行文件进行测试,再下载源代码,兼容64M和256M nand flash TQ2440开发板
下载可执行镜像(针对东华3.5寸LCD):
下载可执行镜像(针对东华4.3寸LCD):

对于其它型号LCD,只需修改LCD_TFT.h头文件,将
#define LCD_Type                LCDW43
这句话改成什么什么就可以了

原文链接,转载请注明出处:
http://www.cnblogs.com/multisilicon/archive/2010/12/23/1914721.html

天嵌_support1 发表于 2010-12-24 19:00:55

:)支持支持

liuyongbo 发表于 2010-12-25 17:43:28

支持支持!

weiguanglin 发表于 2010-12-27 16:14:17

谢谢,正需要呢!!!

qihang 发表于 2011-1-12 11:47:15

绝对是高手,顶一下!!!

jrh00102 发表于 2011-3-16 22:08:32

顶一下!!!

jrh00102 发表于 2011-3-16 22:10:56

顶一下!!!

pzxsoso 发表于 2011-3-23 09:57:46

支持谢谢!正想学习!

ccy1987 发表于 2011-4-3 22:25:53

太强悍了,呵呵

txgc_wm 发表于 2011-4-4 01:02:56

楼主,知道为什么将程序下到sdram中可以运行,但下到nandflash中不能运行吗?分散加载那个配置文件是写对的!

txgc_wm 发表于 2011-4-4 01:11:49

楼主,知道为什么将程序下到sdram中可以运行,但下到nandflash中不能运行吗?分散加载那个配置文件是写对的!

zhouhao15917 发表于 2011-4-29 15:31:17

LCD_Display_Character()请问这个函数是在哪里的?

zhouhao15917 发表于 2011-4-29 15:33:12

不知道谁能回答我呢

rabbit35 发表于 2011-8-19 01:04:00

不能下载啊。。
页: [1] 2
查看完整版本: LCD驱动+nand flash驱动,显示BMP图片,显示汉字,nand flash随机读写