| 本文章共2793字,分2页,当前第1页,快速翻页: | |
基于AVR的LED数字大屏幕的设计与实现 作者:宋晖 高小明 来源:微计算机信息 摘要:研究基于AVR单片机的LED数字大屏幕显示技术。上位PC机通过串行端口为下位AVR单片机传输要显示的字符的编码,下位AVR单片机通过驱动74HC595可将字符的编码通过LED点阵的形式显示出来,并且给出了一种矩阵转置移位算法。 http://www.51kaifa.com 1引言 LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,应用越来越广泛。ATMEGA16L单片机是一款基于AVR RISC 的、低功耗CMOS 8 位单片机,具有16K字节的自编程FLASH, 512字节的EEPROM, 1K字节的SRAM, 通过AVR单片机来控制LED的显示,结构简单,应用灵活,并且易于扩展。 2 系统设计原理 2.1 编码设计 编码设计有两个过程:字库提取以及字模编码转换。字库的提取涉及到的两个字库文件,一个为ASC16,专门存放ASCII编码;另一个为HZK16,专门存放汉字字库编码。要提取字库,首先要对它进行初始化,即打开字库。然后根据一个字符提取它相应的编码。首先取出字符的内码后(注意区分单字节和双字节的内码),接着通过内码得到该字符对应的字模的编码在ASCII或HZK16内的偏移量,最后就可以根据这个地址在文件中的偏移位置找到相应的字模编码,我们可以通过这个公式来计算: 在ASCII中,偏移量=(内码的低地址)*16, 在HZK16中,偏移量= ((内码的高地址-161)*94 + (内码的低地址-161))*32。 此时得到的字模编码不是最终所要的编码(单字节数据如英文是按8*16点阵来显示,而双字节数据时如汉字是按16*16点阵来显示的)。这里统一使用8*16点阵,这就需要对其转换。下图左表格表示的是汉字编码在字库内存放顺序,右表格表示的是经过转换过后的编码存放顺序。编码转换过程如图1所示:
图1 编码转换 2.2 矩阵转换移位算法 矩阵转换移位算法目的就是如何把这些原始的数据转换成串行的数据, 以便把数据正确的输入到74HC595。原始的数据必须要对其转换。下面为它的算法实现。 for(m=0;m<8;m++) //m表示的是第几个LED { for(j=0;j<8;j++) //j表示的是某个LED的第几排数据 { for(i=0;i<8;i++) //i表示的是取某个LED的第某排数据的第几位 { displayport_a[m][j]|=((displaycode_a[i][m]&0x01)<<i); displaycode_a[i][m]=displaycode_a[i][m]>>1; // displayport_a[m][j]表示存放已转换好数据 // displaycode_a[i][m]表示存放的是原始数据 //‘|’表示相或,‘&’表示相与,‘<<’表示左移 |