LCD驱动+nand flash驱动,显示BMP图片,显示汉字,nand flash随机读写
花了好多好多天终于把液晶屏驱动写完了,呵呵正好赶在平安夜之前,明天开开心心过圣诞节。当然写这些东西我只是复制、粘贴高手写的液晶屏驱动,自己动手写的不多,只是我把函数接口设计的更加人性化了,方便用户调用。
用户只需要自己定义画点的函数,就可以方便地调用所有驱动函数:
比较有特色的是显示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);
}
}读者请先下载可执行文件进行测试,再下载源代码,兼容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 支持楼主,下载下来看看,谢谢 支持支持
页:
[1]