程序流程图及其说明
- 格式:docx
- 大小:187.39 KB
- 文档页数:4
程序流程图及其说明
依据本系统的结构原理,可以绘制出程序流程图,如下面图
5. 5. 3(1)和图 5. 5. 3(2)所示。
N
Y
回
示子程序中使用DPTR地址寄存器作为地址指针,开头时指向数据表首地址,当一帧(即一屏四个字符)字符显示完成后,进入下一帧(即下一屏四个字符)字符,从右到左的流淌显示,此时DPTR指向字符表的第三个字节处。
第一次调用列扫描子程序时,先向掌握列线的八个74HC595发送 63个1和1个0,同时第一次调用行数据发送子程序,使DPTR指向字符表的第一个字节,在循环体中DPTR加1,从而发送16行的数据到掌握行线的两个74HC595中,这样就完成了第一次列扫描子程序和第一第次行数据发送子程序的调用。
其次次调用列扫描子程序时,只需发送一个1,就
能实现移位的操作,而此时行数据发送子程序将发送字符表中第三、四个字节的数据,以后DPTR增加到第128个字节处,行数据发送子程序将发第128个字节的数据,这个就完成一帧的显示(即一屏四个字的显示,由于一个汉字的点阵字模大小为32 byte)。
由LED的结构原理可知,在列扫描子程序中,1对应的列为暗,而O对应的列被点亮。
数据表按显示要求编码。
每两个字节为LED点阵板一列中16位相应的显示行数据。
由于数据为16位,因此必需分两次发送。
当数据发来时, 对应的为O的列线与行线相交点的发光三极管被点亮,为1被关暗。
字符表中每32个字节数据为一个字符的编码信息。
程序中为了能够存取片外数据存储器6264中0020H以上单元的数据, 只能实行MoVX @DPTR,A和MOVX A, @DPTR作为存取数据的指令,缘由是Ro与Rl的间接寻址方式只能寻址到OOlFH单元。
同时为了能够很好地对数据寻址,我们使用50H和51H两个单元来产生每一个帧数据的基值,09H单元作为行数据的指针,而DPTR被更多地用来作地址偏移量使用。
51H在每次循环后使DPTR加2,使得它所指向的数据表地址前移。
此后调用帧扫描子程序时,每帧显示的字符将向后移。
例如其次次调用帧扫描子程序,DPTR的值为表首地址加1,此时取出的是字符表中第三、四个字节中的数据,再协作列扫描子程序,此时看到的显示效果为第一个显示字符向左移动了一列,其第一列从左端移出了屏幕,而后面的三个显示字符均前行了一列,最终一列为字符表第129、130字节中的数据,这样就完成一帧的显示。
随着51H在每次循环后使DPTR加一次次地加2,每帧显示都将当前显示字符的一列从左端移出,将后续显示字符的一列从右端移入,形成了全部设置字符的流水显示。
DPTR能增加的最大值等于字符表中全部字节数减去128个字节数而得到的值,否则DpTR将指到表外。
为了保证最终一个字也能移动显示,DPTR又要能指向最终一个显示字符的最终一个编码字节。
因此将字符表中倒数的128个字节数全部设为OOh,这样就能保证以黑屏显示效果结束全部字符一场移动的显示。
每帧反复循环扫描的次数,打算显示移动速度。
在显示子程序程序中, 移动速度由帧扫描次数计数器R5中的初值打算。
该值可依据不同晶振的频率和个人的喜好打算。