|
花了好多好多天终于把液晶屏驱动写完了,呵呵正好赶在平安夜之前,明天开开心心过圣诞节。
当然写这些东西我只是复制、粘贴高手写的液晶屏驱动,自己动手写的不多,只是我把函数接口设计的更加人性化了,方便用户调用。
用户只需要自己定义画点的函数,就可以方便地调用所有驱动函数:
比较有特色的是显示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[512] = "";
- 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[i * 30][16]);
- }
-
- //+ 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);
- }
- }
复制代码 读者请先下载可执行文件进行测试,再下载源代码,兼容64M和256M nand flash TQ2440开发板
下载可执行镜像(针对东华3.5寸LCD):
下载可执行镜像(针对东华4.3寸LCD):
对于其它型号LCD,只需修改LCD_TFT.h头文件,将
#define LCD_Type LCDW43
这句话改成什么什么就可以了
原文链接,转载请注明出处:
http://www.cnblogs.com/multisili ... /12/23/1914721.html |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|