资源描述:
《51单片机驱动1616LED点阵显示动画汉字汇编程序new》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、51单片机驱动16×16LED点阵显示动画汉字汇编程序这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG0000HST:MOVA,#0FFH;初始化MOVP1,AMOVP2,AMOVP3,AMOVP0,ACLRAMOVR0,#50H;显示缓存清0MOVR1,#20H;控制清0的次数ST0:MOV@R0,AINCR0DJNZR1,ST0;正文显示CHINESE:MOVDPTR,#TAB1;查表指针指向TAB1LCALLHZ;结束动画SCREE:MOVDPTR,#TAB2
2、;查表指针指向TAB2ACALLDDMOVDPTR,#TAB3;查表指针指向TAB3ACALLDDMOVDPTR,#TAB4;查表指针指向TAB4ACALLDDLJMPCHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD:MOVB,#00HMOVR0,#08H;显示8幅画面AJMPCCCC0:MOVA,BADDA,#20H;指向下一幅画面MOVB,ACC:MOVR7,#08H;画面停留时间MOVR3,BMOV37H,R0LCALLENTERDIS00:LCALLDISPLA
3、YDJNZR7,DIS00MOVR0,37HDJNZR0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ:MOVR3,#00H;查表偏移量MOVR5,#81H;查表128次MOVBACK:MOVR4,#10H;使显示完一个汉字MOVBACK0:MOVR7,#02H;一桢画面显示时间MOVR0,#6DH;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOVR1,#6CH;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOVR2,#10H;内存后移的次数DJNZR5
4、,MOVBACK1RET;显示完该表,返回MOVBACK1:MOVA,@R0;低8位被后移的内存单元数据暂存入AINCR0;后移两字节INCR0MOV@R0,A;放入要移的低8位数据MOVA,R0;R0指向下一个要后移的内存单元SUBBA,#04HMOVR0,AMOVA,@R1;高8位被后移的内存单元数据暂存入AINCR1;后移两字节INCR1MOV@R1,A;放入要移高8位的数据MOVA,R1;R1指向下一个要后移的内存单元SUBBA,#04HMOVR1,A;R1指向下一个要后移的内存单元DJNZR2,MOVBAC
5、K1;显示缓存数据依次后移MOVA,R3;从表TAB1读入要移进50H,51H的数据MOVCA,@A+DPTR;先给50H读数据MOV50H,AMOVA,R3;指向下一字节INCAMOVR3,AMOVCA,@A+DPTR;再给51H读数据MOV51H,AMOVA,R3;指向下一字节INCAMOVR3,AMOV30H,R3;保护数据MOV31H,R4MOV32H,R5DISMOV:LCALLDISPLAY;显示当前数据DJNZR7,DISMOVMOVR3,30HMOVR4,31HMOVR5,32HDJNZR4,MOVB
6、ACK0MOV30H,R3;保护数据MOV32H,R5MOVR7,#24H;显示当前数据延时DISMOV0:LCALLDISPLAYDJNZR7,DISMOV0MOVR3,30HMOVR5,32HLJMPMOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3ENTER:MOVR1,#50H;从50H单元起把表存入MOVR2,#20H;查表次数MOVA,R3CLLOOP_:MOVCA,@A+DPTR;查表MOV@R1,A;将表放进5X,6X单元INCR1;R1指向下一个地址空
7、间MOVA,R3;查表指针后移INCAMOVR3,A;将指针修改结果存入R3DJNZR2,CLLOOP_;没查完转CLLOOP_RET;15MS,显示子程序,一桢32个字节,影响A,R0,R1,R3,R4,R5,R6;;http://www.51hei.com/单片机网提供汉字取模工具,可显示任意汉字DISPLAY:MOVA,#0FFHMOVP0,AMOVP1,AMOVP2,AMOVP3,ASETBCMOVR6,#7FH;赋扫描字初值,左移后初值为0FEHMOVR5,#00H;列扫描低8位控制MOVR0,#50H;行
8、的高8(p1)位要显示的数据起始地址MOVR1,#10H;扫描次数DISLOOP:MOVA,@R0;从内存读数据MOVP2,#0FFH;装入数据时不显示任何东西MOVP3,#0FFHCPLA;数据取反以适合显示MOVP1,A;送入行的高8(p1)位要显示的数据INCR0;修改R0指向低8位要显示的数据MOVA,@R0;读低8位要显示的数据CPL