天嵌 ARM开发社区

 找回密码
 注册
查看: 3549|回复: 2

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

[复制链接]
uyrfdcv 发表于 2010-12-24 18:25:44 | 显示全部楼层 |阅读模式
花了好多好多天终于把液晶屏驱动写完了,呵呵正好赶在平安夜之前,明天开开心心过圣诞节。

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

用户只需要自己定义画点的函数,就可以方便地调用所有驱动函数:
比较有特色的是显示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);

下载源代码:
下面是一段测试程序:
  1. void Main(void)
  2. {
  3.         LCD_DEVICE * device = &LCD_Device;
  4.         ML_U32 i;
  5.         char info[] = "MultiSilicon Link v1_2_8";
  6.         char string[] = "0123456789";
  7.         char buffer[512] = "";
  8.         Board_Init();
  9.         LCD_Init_Device();
  10.         while(1)
  11.         {        
  12.                 //+ LCD驱动测试
  13.                 //# 在(0, 0)坐标处画BMP格式图片(485 * 278像素)
  14.                 //^ 图片内容为东华大学图书馆
  15.                 LCD_Paint_BMP(0, 0, BMP_Library);
  16.                 //# 画实心矩形{(40, 40), (50, 50)}
  17.                 LCD_Draw_Rectangle(40, 40, 50, 50, RGB565_RED, 1);
  18.                 //# 画空心矩形{(42, 42), (48, 48)}
  19.                 LCD_Draw_Rectangle(42, 42, 48, 48, RGB565_WHITE, 0);
  20.                 //# 画直线{(42, 42), (48, 48)}
  21.                 LCD_Draw_Line(42, 42, 48, 48, RGB565_WHITE);
  22.                 //# 画直线{(42, 48), (48, 42)}
  23.                 LCD_Draw_Line(42, 48, 48, 42, RGB565_WHITE);
  24.                 //# 在(5, 150)坐标处画BMP格式图片(196 * 69像素)
  25.                 //^ 图片内容为“东华大学”
  26.                 LCD_Paint_BMP(5, 150, BMP_Logo);
  27.                 //# 显示中英文字符串
  28.                 //^ 注意:因为中文字库比较大
  29.                 //^ 所以使用本函数,编译后生成的可执行文件会比较大
  30.                 //^ 如果资源有限,可以使用LCD_Print_ASC()函数
  31.                 LCD_Print("东华大学");
  32.                 //# 显示英文字符串
  33.                 LCD_Print_ASC("\nDONGHUA UNIVERSITY");
  34.                 //# 换行
  35.                 LCD_New_Line();
  36.                 //+ 显示60*60字符点阵
  37.                 //# 设置字符点阵的宽度
  38.                 device->font.width = 60;
  39.                 //# 设置字符点阵的高度
  40.                 device->font.height = 60;
  41.                 //# 不显示背景颜色
  42.                 device->font.display_background_color = ML_FALSE;
  43.                 //+ 依次显示每个字符
  44.                 //^ 字符内容为“爱我东华”
  45.                 for(i = 0; i < 4; i++)
  46.                 {
  47.                         LCD_Display_Character(&Array[i * 30][16]);
  48.                 }
  49.                
  50.                 //+ nand flash驱动测试
  51.                 //# 初始化设备,该函数会调用_Flash_Init_device1()函数对设备进行初始化
  52.                 Flash_Init_Device(&Flash_Device);        
  53.                 //# 创建重定向表,如果Flash存在坏块,这一步是必要的
  54.                 Flash_Creat_Redirect_Table(&Flash_Device, 1);
  55.                 //# 在0x123456地址处写入字符串info
  56.                 Flash_Write(&Flash_Device, info, 0x123456, sizeof(info));
  57.                 //# 在0x234567地址处写入字符串string
  58.                 Flash_Write(&Flash_Device, string, 0x234567, sizeof(string));
  59.                 //# 在0x123456地址处读入sizeof(info)个字节并存入buffer
  60.                 Flash_Read(&Flash_Device, buffer, 0x123456, sizeof(info));
  61.                 Uart_Printf("\n%s", buffer);
  62.                 //# 在0x234567 + 3地址处读入sizeof(string)个字节并存入buffer
  63.                 Flash_Read(&Flash_Device, buffer, 0x234567 + 3, sizeof(string));
  64.                 Uart_Printf("\n%s", buffer);
  65.                 while(1);        
  66.         }
  67. }
复制代码
读者请先下载可执行文件进行测试,再下载源代码,兼容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
nuckzjt 发表于 2010-12-25 10:03:10 | 显示全部楼层
支持楼主,下载下来看看,谢谢
天嵌_support1 发表于 2010-12-25 10:13:00 | 显示全部楼层
支持支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-27 18:57 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表