热度 20
2014-12-28 22:15
1403 次阅读|
3 个评论
最近比较忙,被公司拉去排列文艺节目,每晚很晚才回来,回来都很累,随便折腾下移植就过了。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显示的时候有些像素点会跑偏,导致字符显示模糊。 附件1: TinyCLR.bin (文件大小: 439 KB 下载次数:6次)