⑤16位数据输出完毕后,通过P3.1脚产生一个SCK脉冲,将移位寄存器74LS164中的数据输出移入到单元板的74HC595串行移位寄存器中。
⑥重复第 eq oac(○,4)4至 eq oac(○,5)5步,直到一行数据全部输出完毕后,由P3.2 产生一个RCK脉冲,读取的一行数据将输出显示,然后扫描线下移一行。
⑦重复第 eq oac(○,1)1至 eq oac(○,6)6步。
此电路有这样几个特点:显示数据从串行FLASH输出后,不经单片机的处理,直接以“DMA”方式输出到移位寄存器74LS164,同时实现串并转换,节省数据处理时间,提高显示效率;在每场数据输出之前,通过信息在显示区域中的地址计算数据选择位数 ,并通过P3.0 端口模拟 个脉冲输出到串行FLASH,移出 位数据,数据产生错位,使输出显示的数据在16位输出数据的高8位,可以直接存放在移位寄存器中,输出到显示屏,以后同行各列的显示数据输出时,无需再进行数据选择位的判断,直接将显示数据从存储器中输出到显示屏。
存储器效率分析:
表1 存储器效率存储器
存储器
效率η静态显示一般垂直移动显示双RAM技术输出显示
η计算
公式
效率100%16%100%
观察表1可知,在垂直移动显示使用双RAM技术组织,大大提高了存储器效率,降低了显示数据存储器的占用。当显示信息比较大时,动态数据组织使用的存储器比较大,利用率低,而采用双RAM技术正好解决这个问题。一块RAM的效率是100%,双RAM是50%,当有N块RAM时,效率为 。
3 程序设计
针对图3所示控制电路,按照数据输出控制流程,编写了一段程序,随机显示一屏信息,显示数据已按顺序存储在串行FLASH中。
void display(unsigned int YL)
{ unsigned int i,j,p;
unsigned char line, unit_board_num, board_i;
unsigned char code *ram_point, *block_addr,* region_addr,* ram_begin_addr;
block_addr=YL/(Bw*Sw) * (Sw*Dw); //所在块的起始地址
region_addr=(YL%Sw)*Dw; /所在区的相对块的相对地址
i=YL/Sw;
region_recod=YL%Sw; //此变量记录显示数据已进入哪一区
ram_point=ram_begin_addr+block_addr+region_addr-1; // ram_begin_addr为数据起始地址