字符的点阵显示
 
                                                 电子科技大学软件学03级02班 周银辉

一, 效果

二 关于C#读取字符点阵的代码
      (原理就不再阐述了,到Baidu里面搜一下,很多,不过一般都是C/C++的)
      (说明:对于一个字符,GetWordLattics函数返回的bool[,]表示一个16*8或16*16点阵,对应值为true表示该点应该被点亮)

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace ShowWord
{
    /**//// <summary>
    /// 字符解析器
    /// </summary>
    public class WordPaser
    {
        private static byte[] bytesOfASC;
        private static byte[] bytesOfHanZi;
        private static string pathOfASC = Application.StartupPath + Path.DirectorySeparatorChar + "ASC16";
        private static string pathOfHanZi = Application.StartupPath + Path.DirectorySeparatorChar + "HZK16";

        static WordPaser()
        {
            try
            {
                bytesOfASC = File.ReadAllBytes(pathOfASC);
                bytesOfHanZi = File.ReadAllBytes(pathOfHanZi);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        /**//// <summary>
        /// 获取指定的字符的点阵
        /// </summary>
        /// <param name="c">字符</param>
        /// <param name="lines">点阵行数</param>
        /// <param name="columns">点阵列数</param>
        /// <returns>点阵数据,对应值为true表示该点应该被显示,否则对应点不应该被显示</returns>
        public static bool[,] GetWordLattics(Char c, out int lines,out int columns)
        {
            lines = 16;
            columns = 8;
            bool[,] lattics = new bool[lines, columns];

            int intValue = (int)c;
            long offset = 0;

            if (intValue <= 255)
            {
                offset = intValue * 16L;
                for (int i = 0; i < lines; i++)
                {
                    for (int j = 0; j < columns; j++)
                    {
                        byte byteValue = bytesOfASC[offset + i];
                        lattics[i, j] = ((byteValue >> (7 - j)) & 0x1) != 0;
                    }
                }

            }
            else
            {
                lines = 16;
                columns = 16;
                lattics = new bool[lines, columns];

                byte[] bytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(c.ToString());


                int zone = bytes[0];//刚好是“区”的值,机内码   
                int num = bytes[1];//刚即时“位”的值 ,机内码   

                int area = (zone & 0x00ff) - 0xa0;  //根据机内码取得区码
                int bit = (num & 0x00ff) - 0xa0;   //根据机内码取得位码

                offset = (94 * (area - 1) + (bit - 1)) * 32L;
                
                for (int i = 0; i < lines; i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        for (int k = 0; k < 8; k++)
                        {
                            byte byteValue = bytesOfHanZi[offset + i * 2 + j];
                            lattics[i,8 * j + k] = ((byteValue >> (7 - k)) & 0x1) != 0;
                        }
                    }
                }

               
            }


            return lattics;
        }
    
    }
}

3 字库文件下载
代码中用到的两个字库文件(或者你可以在TurboC安装目录下中找到他们) http://files.cnblogs.com/zhouyinhui/zk.rar

转载于:https://www.cnblogs.com/zhouyinhui/archive/2006/11/28/575545.html

字符的点阵显示(模拟户外广告显示屏)相关推荐

  1. linux字符点阵,ASCII 字符的点阵显示

    来源:百问网 作者:韦东山 本文字数:2108,阅读时长:4分钟 要在 LCD 中显示一个 ASCII 字符,即英文字母这些字符,首先是要找到字符对应的点阵.在 linux 内核源码中有这个文件:li ...

  2. 从我国户外广告行业现状看其未来走向选择

    2013年5月,国家广告研究院联合中国商务广告协会OOH传播研究院.央视市场研究公司.艾瑞咨询集团共同发布<2013户外移动数字媒体发展趋势蓝皮书>.该<蓝皮书>指出,户外广告 ...

  3. 8乘8led点阵显示数字_基于51单片机的8乘8LED点阵显示屏的设计

    1 基于单片机的 8*8LED 点阵显示屏的设计 随着单片机在各个领域的广泛应用,许多用单片机作控制驱动 LED 显示屏也应运产生.本系统设 计使用单片机 MCS-51 控制扫描方法实现 LED 点阵 ...

  4. LED点阵显示,有关特殊国别(阿拉伯,希伯来,泰文)字符排版和乱码问题解决

    序:最近公司的需求:做一个模拟LED屏的显示控件 中间各种曲折!此文做个记录,本来早就改写完的!各种原因前后隔了两个多月! 文章写的比较详细,熟悉的大佬可以跳过直接看代码! PS:后面有完整的代码 正 ...

  5. ASCII字符点阵和汉字库点阵显示

    字符编码方式有ASCII,GBK和Unicode等,ASCII编码方式用 1 byte来表示一个字符,ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符.标准ASC ...

  6. 51单片机教程:8*8 点阵显示字符、数字、简单汉字

    点阵显示实验 一.什么是点阵? 我们用之前的方法一个IO口只能控制一个led,如果需要用更少的IO口控制更多的led怎么办呢,于是就有了点阵. 8X8点阵共由64个发光二极管组成,且每个发光二极管是放 ...

  7. LED显示屏给户外广告带来更多精彩

    LED依然是个热门的话题,但是LED照明并没见到有什么好的发展.依然是依靠政府扶持,还没有真正的走进普通家庭.各地的LED展会相继开展,由此可见LED火热是个伪命题啊,真正火起来的是LED显示屏,LE ...

  8. c语言 gbk字模点阵数组,GBK点阵显示字库的制作和使用

    GBK编码共收录汉字21003个.符号883个,并提供1894个造字码位,简.繁体字融于一库.以两个字节表示一个汉字,编码范围是0x8140~0xfefe,兼容GB2318,并覆盖了unicode中的 ...

  9. led显示屏建设标准_户外LED显示屏3大防护标准_显示屏应对恶劣天气?

    户外LED显示屏是现在LED显示屏应用最棺广泛的领域.面积巨大,显示效果震撼.同时为了更好的宣传效果,通常安装余楼顶,道路等空旷无遮挡地带.由于面积大且处于露天状态,LED显示屏面临巨大的环境挑战.经 ...

最新文章

  1. Gin 框架学习笔记(03)— 输出响应与渲染
  2. hadoop1.2.1伪分布模式安装教程
  3. Spring Boot 集成 Swagger 生成 RESTful API 文档
  4. LeetCode 213 House Robber II Python
  5. Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...
  6. pytorch安装教程(Windows版本)
  7. 启动hive报错:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang
  8. JMeter正则表达式-学习(3)
  9. Android显存到内存拷贝耗时,memcpy速度太慢?掌握这个技术让内存拷贝效率成倍提升...
  10. html汉字在ie11中乱码,你好 我电脑 IE11  网页下拉的键都变成的中文乱码 例如“马夬”“邢”之类的中文乱码...
  11. firefox火狐集成idm
  12. 虚拟人的手工前世和AI今生
  13. bm3d算法matlab,BM3D算法实现图像降噪.doc
  14. nginx错误502,503,504分析
  15. 成为技术传播者(二):Why and Why NOT
  16. 基于STM32:情侣互动玩偶(设计方案+源码+3D图纸+AD电路)
  17. 核函数(Kernels)
  18. 蓝桥杯 调和级数 Java
  19. CCNP-第十九篇-ISIS(二)
  20. 1、野火freertos学习笔记

热门文章

  1. [JAVA]deep copy链表
  2. python学习第一周(1)
  3. Beyond Compare进行内容替换的方法有哪些
  4. 解决在Ubuntu下打开txt文件乱码的问题
  5. jQuery 入门教程(1): 概述
  6. DIV+CSS如何设置字体间距
  7. 【android】【git】Android源代码获取(Windows)
  8. Larbin简介,及其在Ubuntu10.04下的编译安装
  9. python爬虫(五)_urllib2:urlerror和httperror
  10. 对象存储/编码/解码