- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6-LED屏显示
实验6、LED屏显示实验 实验目的: 了解“STC89C54RD+”的基本结构和优势。 会使用keil c编译环境和c语言的开发。 了解与掌握汉字内码与标准字库的原理。 理解动态扫描显示的原理。 理解与掌握点阵LED屏显示的原理。 8*8点阵型LED屏的显示原理 16*16的点阵显示模块的搭建 动态显示的原理 行驱动 4-16线译码器的真值表 列驱动 汉字的编码 1、区位码 GB2312 80中共有7445个字符符号:所有的字符符号组成一个94*94的方阵;在此方阵中,每一行称为一个“区”,每一列称为一个“位”。这个方阵实际上组成一个有94个区(编号由 01 到 94 ),每个区有94个位(编号由01到 94)的汉字字符集。一个汉字所在的区号和位号的组合就构成了该汉字的“区位码”,其中高两位为区号,低两位为位号。这样区位码可以唯一地确定某一汉字或字符;反之,任何一个汉字或符号都对应一个唯一的区位码,没有重码。 2、汉字机内码(内码) PC机所有的数据都是以0和1保存的,按不同的数据操作,可以得到不同的结果。对于英文以ASCII码表示,只需要7位二进制(通常用一字节)存储即可。而对于中文,常用的就有5000个以上,一个汉字由两个字节机内码表示,即把ASCII表的高128个很少用到的数值,以两个字节为一组来表示汉字。因此计算机必须能区别汉字字符和英文字符。英文字符的的机内码是最高位二进制位为0的单字节ASCII码 。 内码与区位码的关系 汉字机内码的范围用二进制表示是,机内码高位=区码+A0H 机内码,机内码低位=位码+A0H;也就是说,机内码高位和机内码低位分别比对应的区码和位码大(160)D或 B或(A0)H。 例如汉字“啊” 的区位码为1601,其中区码为(16)D或(10)H,位码为(01)D或(01)H,则:机内码高位=10H+A0H=B0H,机内码低位=01H +A0H = A1H,所以:“啊”的机内码 = B0A1H。 汉字字模 得到了汉字的内码后,还仅是两个字节的二进制数字,如何在屏幕上去显示该汉字,涉及到汉字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载字符或汉字的形状。如英文的8*16点阵“A”的字模与中文的16*16点阵“你”的字模如下图所示。 字库的原理 1、根据机内码算出字模在字库的首地址 字库中的字模是按区位码的顺序来进行连续排列的。每一个区记录94个汉字,位号则为该字在该区中的位置。而对于16*16点阵的汉字而言,一个汉字需要32字节的字模。因此,汉字在字库中的具体位置计算公式为: (94*(区号-1)+(位号-1))*32 。 而机内码高位=区码+A0H 机内码,机内码低位=位码+A0H; 地址=(94*(机内码高位-160-1)+(机内码低位-160-1))*32 2、读取字符串的字模,并按行进行排列。 由于采用行动态扫描显示,即每个时刻只有一行是显示的,因此要把字符串所有的字模按行的方式来排列,以便列驱动在某个时刻锁存输出显示。这部分的程序代码要完成两个任务: 1、读取字符串的每个字符的字模 2、按行对字符串的所有字符字模进行排列 例子 程序分析 由以上分析可知,要实现汉字的显示,要顺序实现以下任务: 1、获得字符串中的汉字的内码与字符串的长度 2、根据内码计算出字模在字库中位置的首地址 3、根据首地址读取字模,并按行进行排列 4、把字模按行通过列驱动输出到屏的相应位置 5、驱动相应的行信号 6、重复执行4、5步聚,16次为一周期:动态显示16行为一周期。 1、获得字符串中的汉字的内码与字符串的长度 内码 例如:Unsigned char string[5]={“双实“}; 则string[0]为“双”内码的高地址,而string[1]为“双”内码的低地址; string[2]为“实”内码的高地址,而string[3]为“实”内码的低地址; String[4]为字符串的结束符“\0”。 字符串长度 sizeof(string)算出数组的大小(包含字符串结束符,因此( sizeof(string)-1)/2就能算出字符串中有几个汉字。注意:若字符串中含有字母,则以上的方法就无效,因为字母用ASCII来表示,只占一个字节 2、根据内码计算出字模在字库中位置的首地址 根据公式(94*(机内码高位-160-1)+(机内码低位-160-1))*32来计算出地址。 例如:“双”的内码高低字节分别为string[0]、 string[1],则“双”的字模在字库中位置的首地址为: Addr=94*(string[0]-160-1)+( string[1]-160-1))
原创力文档


文档评论(0)