金牌会员
 
- 积分
- 1920
- 金钱
- 1920
- 注册时间
- 2013-11-18
- 在线时间
- 268 小时
|
最近比较忙,被公司拉去排列文艺节目,每晚很晚才回来,回来都很累,随便折腾下移植就过了。LCD早就移植好,Toucher也移植好了,只是还没有验证。回到正题上,这次实验直接就上字符显示跟汉字显示。因为这些实验用MF来实现,也实在是太简单了。之前用裸机做的,又是LCD驱动,又是字库的制作,还要用文件系统把字库从SD卡烧写到W32Q64上面。用MF来实现,你只需要把转换的字库加到VS的资源管理器那里,然后就可以调用字库来显示中英文。字库也是完全可以定制,直接用系统的字库文件通过软件跟指令来按需求转换,具体的做法,后面的章节再详细讨论,我这里已经制作好一个字库直接用就可以了。
先直接上代码,整个工程也附在附件上:
using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using System.Threading;
using MFPins;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;
using Microsoft.SPOT.Presentation.Media;
using Microsoft.SPOT.Input;
using Microsoft.SPOT.Touch;
namespace LED
{
public class Program
{
public static void Main()
{
OutputPort led0 = new OutputPort(MFPins.CPU.Pins.PB5, true);
Bitmap TFT = new Bitmap(240, 320);
TFT.DrawText("Hello .NET Micro Framework!", Resources.GetFont(Resources.FontResources.STXIHEI), Colors.Green, 10, 30);
TFT.DrawText("这是战舰开发板", Resources.GetFont(Resources.FontResources.STXIHEI), Colors.Red, 50, 50);
TFT.Flush();
while (true)
{
led0.Write(!led0.Read());
Thread.Sleep(500);
}
}
}
}
Bitmap TFT = new Bitmap(240, 320)这句是在内存里开辟空间给LCD显示做缓存,之后一切相关函数都是先操作缓存,直到执行TFT.Flush()函数,MF才会把缓存数据写到LCD上显示出来。 TFT.DrawText("Hello .NET Micro Framework!", Resources.GetFont(Resources.FontResources.STXIHEI), Colors.Green, 10, 30); TFT.DrawText("这是战舰开发板", Resources.GetFont(Resources.FontResources.STXIHEI), Colors.Red, 50, 50);这两句就是文本显示,第一参数就是字符串,第二个参数就是获取工程资源管理器上的字库,第三个参数自然就是显示的颜色,后两个就是显示的X,Y位置。然后执行TFT.Flush(),LCD就可以显示出来了。效果如下图
最后还附上最近固件,内容就是增加了Toucher。存在的Bug:1,部署的代码,偶尔后读取不了,要复位一两次才正常,估计跟W32Q64的底层有关,因为现在的代码都是部署到W32Q64上,每次开机的都是从它那里读出来执行。
2,LCD显示的时候有些像素点会跑偏,导致字符显示模糊。
|
|