LED显示控制系统的数据组织如图3所示。从图2可以得到图3(a)所示的从正面看过去显示行与显示数据位以及颜色的对应关系。为了提高数据的读取速度,将显示数据按扫描行进行连续排列,可得到图3(b)所示的存储单元与扫描行、存储单元数据位及颜色的关系。
具体编程时可按下列步骤进行:①将准备扫描的行地址送P2口的低4位中。②将DPTR指向待显示行相应存储单元的首地址。③以DPTR为指针,使用“MOXCA,@A+DPTR”读显示数据,并将显示数据送P0口。④通过P3.6产生SCK,同时DPTR加1。⑤重复②、③、④直到一行数据显示完毕,通过P3.4产生RCK将通过移位寄存器移入的一行数据显示。⑥重复②、③、④、⑤直到15行数据全部显示完毕。⑦重复①~⑥刷新显示。
根据上述编程步骤,可以很容易编出显示第i行的子程序1。子程序1的第3行至第9行为循环体,送1字节的显示数据共需10个机器周期,机器码的字节数为11。通过分析74HC595的SCK为上升沿有效,可用单片机的写信号(WR)来代替,故子程序1中的第5、6、7行3条指令可用,A”一条指令来替换,实验表明这样的替换是可靠的。显示第i行的子程序2为替换后的程序,送1字节的显示数据所需机器周期减为9,机器码的字节数减为6。再对显示第i行的子程序2仔细分析后发现,在仅使用SST89E516内部64 KB的Flash存储器作为显示数据存储且不增加辅助电路的前提下,只有子程序2第7行“DJNZ R0,DP1”这条2个机器周期2字节指令,可以利用SST89E516内部64 KB的Flash存储器大的特点,直接简单的重复256次子程序2中第3、4、5、6行4条单字节指令,从而可以缩短2个机器周期的时间。这样送1字节的机器周期可以减少为7,但程序需要增加1 KB。对64 KB的Flash存储器来说,程序增加1KB减少不了多少显示数据。与子程序1相比,子程序3速度提高了30%。在图2所示12 MHz晶振并利用SST89E516的倍速功能,其1个机器周期为0.5μs,在忽略其他数据处理时间的前提下,显示1屏完整数据所需时间近似为:(7×0.5 μs×256列×16行)=14.336 ms(每秒近70帧)。实验表明:人眼对LED显示屏开始感觉到闪烁大约为每秒55帧,即每帧时间18 mS。从图2、图1(c)和3个子程序可以看出,一帧显示数据在内存中的排列有以下几个特点:①按扫描行扫描的先后顺序依次排列;②在每一行按数据输出的先后顺序依次排列;③通过硬件和软件的优化使每个显示数据输出的时间最短。
欢迎到正辉装饰材料有限公司洽谈联系我们主要做::发光字制作,树脂字制作,LED发光字制作,树脂发光字,