
串口232是怎样处理汉字?
最近想玩串口控制LED,但不懂VB和AT89S52他们之间是怎样的处理过程!那位高人指点一二???...
最近想玩串口控制LED,但不懂VB和AT89S52他们之间是怎样的处理过程!那位高人指点一二???
展开
1个回答
展开全部
这个问题比较复杂,我只能大概告诉您怎么实现。
1、汉字显示需要LED点阵,通常是16×16点阵显示一个汉字(大约相当于Word里的12pt 宋体字)。
2、LED显示的是点阵而不是汉字。AT89S52提供给点阵LED点阵扫描信号。简单的办法是:通过两个74LS154并列产生两个16×16点阵的场扫描信号。如果您想控制更多,则需要用一个上级74LS154选择一组下级74LS154(最多16个)
3、汉字在机内是以内码表示的。如果您想根据汉字内码获得点阵,则需要一个点阵字库。点阵字库容量很大(对于单片机而言),如果您想制作在单片机上,只能用外部ROM。简单的解决办法是由PC直接发给单片机点阵。
简单的实现方法是这样的:
AT89S52通过一个端口的四位给74LS154提供扫描信号,依次选择16列LED扫描线。
AT89S52通过另外两个端口的16位给LED扫描线的一行提供一列的16个LED的亮度信号。16列依次按点阵点亮,由于速度很快,眼睛感觉是同时亮起。
至于上位机那边,我建议您用QB写相对方便一些。
如果您用VB写,您需要MSComm控件传递数据。至于如何用MSComm控件传输数据以及AT89S52如何通过MAX232与串口物理连接,网上有许多例子您可以参考。
您需要用VB获得一个字库,具体方法是在一个PictureBox控件的0坐标打印12pt的宋体字,然后您用PictureBox的point函数获得16×16点范围内的点阵数据。以32个字节表示(每bit为一点的亮度)保存为字库(您需要学习如何用二进制文件来存储这个数组)。
如果您觉得使用字库麻烦,您可以用上述方法直接取得点阵,将那32个字节的点阵数据传给单片机器。
以上就是大概的方法,由于这个问题牵扯的东西实在太多。我没法给您具体的代码和图纸。希望上面这点东西能对您有帮助。祝您成功。
1、汉字显示需要LED点阵,通常是16×16点阵显示一个汉字(大约相当于Word里的12pt 宋体字)。
2、LED显示的是点阵而不是汉字。AT89S52提供给点阵LED点阵扫描信号。简单的办法是:通过两个74LS154并列产生两个16×16点阵的场扫描信号。如果您想控制更多,则需要用一个上级74LS154选择一组下级74LS154(最多16个)
3、汉字在机内是以内码表示的。如果您想根据汉字内码获得点阵,则需要一个点阵字库。点阵字库容量很大(对于单片机而言),如果您想制作在单片机上,只能用外部ROM。简单的解决办法是由PC直接发给单片机点阵。
简单的实现方法是这样的:
AT89S52通过一个端口的四位给74LS154提供扫描信号,依次选择16列LED扫描线。
AT89S52通过另外两个端口的16位给LED扫描线的一行提供一列的16个LED的亮度信号。16列依次按点阵点亮,由于速度很快,眼睛感觉是同时亮起。
至于上位机那边,我建议您用QB写相对方便一些。
如果您用VB写,您需要MSComm控件传递数据。至于如何用MSComm控件传输数据以及AT89S52如何通过MAX232与串口物理连接,网上有许多例子您可以参考。
您需要用VB获得一个字库,具体方法是在一个PictureBox控件的0坐标打印12pt的宋体字,然后您用PictureBox的point函数获得16×16点范围内的点阵数据。以32个字节表示(每bit为一点的亮度)保存为字库(您需要学习如何用二进制文件来存储这个数组)。
如果您觉得使用字库麻烦,您可以用上述方法直接取得点阵,将那32个字节的点阵数据传给单片机器。
以上就是大概的方法,由于这个问题牵扯的东西实在太多。我没法给您具体的代码和图纸。希望上面这点东西能对您有帮助。祝您成功。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询