LED点阵显示程序设计.docx
《LED点阵显示程序设计.docx》由会员分享,可在线阅读,更多相关《LED点阵显示程序设计.docx(7页珍藏版)》请在冰豆网上搜索。
![LED点阵显示程序设计.docx](https://file1.bdocx.com/fileroot1/2022-12/31/2796acfc-a966-4c52-8072-28983863ae74/2796acfc-a966-4c52-8072-28983863ae741.gif)
LED点阵显示程序设计
《单片机实训报告》
LED点阵显示程序设计
系别:
航空电子工系专业:
应用电子
班级:
210341姓名:
焦德龙
指导老师:
邱寄帆老师、陈伟老师日期:
2012年6月8日
目录
一、设计要求
二、设计目的
三、方案确定
四、编程
五、调试
六、程序
七、总结
一、设计要求
编制程序,设计字库,在LED点阵显示器上循环显示“成都航空职业技术学院”。
二、设计目的
1.掌握单片机与LED点阵显示器接口设计和编程方法;
2.掌握用LED点阵显示器显示汉字或图形的方法。
三、方案确定
LED点阵显示程序设计,利用程序来控制LED点阵实现循环,采用16X16来实现“成都航空职业技术学院”十个字的循环。
四、程序
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#8003H
MOVA,#80H
MOVX@DPTR,A;写控制字
LCALLGUANBI;关显示
MOV00H,#00H
MOVR6,#01H;DPTR的低8位
MOVR7,#80H;DPTR的高8位
LOOP0:
MOVR0,#00H;取TAB数
LOOP1:
LCALLLED1;采用堆栈将数据保存起来,运行另一段程序
INCR0
INCR0
CJNER0,#080H,LOOP1
LOOP2:
MOVR0,#00H
LOOP3:
LCALLLED5
INCR0
INCR0
CJNER0,#0E0H,LOOP3
SJMPLOOP0
DISPW1:
PUSH00H;02H,保护8002H的低八位
MOVR1,#80H;扫描
CLRC
DISP2:
MOVA,R0;取TAB1数
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
INCR0;
MOVA,R0
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPL,R6
MOVDPH,R7
MOVA,R1
CPLA
MOVX@DPTR,A
MOVR3,#80H
DJNZR3,$
LCALLGUANBI
INCR0
MOVA,R1
RRCA
MOVR1,A
JNCDISP2;当加到16产生进位(1行显示完毕)
JB00H,EXIT1
SETB00H
CLRC
MOVR1,#80H
MOVR6,#00H
MOVR7,#0A0H
AJMPDISP2
EXIT1:
MOVR6,#01H
MOVR7,#80H
CLR00H
POP00H
RET
;==================================================
LED1:
MOVR2,#04H;滚动显示扫描16次,返回
LEDY:
PUSH02H;(02H,保护8002H的低八位)
LED2:
PUSH02H
LED3:
PUSH02H
LED4:
DJNZR2,LED4
LCALLDISPW
POP02H
DJNZR2,LED3
POP02H
DJNZR2,LED2
POP02H
DJNZR2,LEDY
RET
;---------------------------------------
LED5:
MOVR2,#04H;滚动显示扫描16次,返回
LEDY1:
PUSH02H;(02H,保护8002H的低八位)
LED6:
PUSH02H
LED7:
PUSH02H
LED8:
DJNZR2,LED8
LCALLDISPW1
POP02H
DJNZR2,LED7
POP02H
DJNZR2,LED6
POP02H
DJNZR2,LEDY1
RET
;==================================================
DISPW:
PUSH00H;(00H,保护8000H的低八位)
MOVR1,#80H;显示一个字
CLRC
DISP1:
MOVA,R0;BH1
MOVDPTR,#TAB;DPTR的低8位
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
INCR0;BH2
MOVA,R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPL,R6;8001H端口地址
MOVDPH,R7
MOVA,R1;L0----L7,依次扫描
CPLA
MOVX@DPTR,A
MOVR3,#80H
DJNZR3,$
LCALLGUANBI
INCR0
MOVA,R1
RRCA
MOVR1,A
JNCDISP1;当加到16产生进位(1行显示完毕)
JB00H,EXIT
SETB00H
CLRC
MOVR1,#80H
MOVR6,#00H
MOVR7,#0A0H
AJMPDISP1
EXIT:
MOVR6,#01H
MOVR7,#80H
CLR00H
POP00H;弹出堆栈,执行下一段字节显示
RET
;==================================================
GUANBI:
MOVDPTR,#8001H;关显示子程序
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#0A000H
MOVX@DPTR,A
RET
TAB:
DB00H,01H,00H,05H,00H,09H,0FCH,3FH,04H,01H,04H,01H,04H,21H,7CH,22H
DB44H,12H,44H,12H,44H,0CH,54H,04H,24H,46H,02H,49H,81H,50H,00H,60H;成
DB08H,00H,48H,3EH,0FEH,22H,48H,22H,28H,12H,0FFH,12H,10H,0AH,48H,12H
DB0FEH,22H,46H,42H,45H,42H,7EH,46H,44H,2AH,44H,12H,7EH,02H,44H,02H;都
DB10H,02H,08H,0CH,7CH,28H,0C4H,7FH,4CH,00H,54H,10H,44H,3EH,7FH,12H
DB44H,12H,4CH,12H,54H,12H,44H,12H,44H,52H,44H,52H,52H,61H,0A1H,00H;航
DB40H,00H,80H,00H,0FEH,7FH,02H,40H,21H,22H,30H,0CH,08H,18H,04H,10H
DB00H,00H,0FCH,1FH,80H,00H,80H,00H,80H,00H,80H,20H,0FFH,7FH,00H,00H;空
TAB1:
DB20H,00H,7FH,20H,24H,7FH,24H,21H,3CH,21H,24H,21H,24H,21H,3CH,21H
DB24H,3FH,24H,21H,0E4H,12H,3FH,12H,22H,21H,20H,61H,0A0H,40H,20H,00H;职
DB20H,02H,20H,02H,20H,02H,20H,02H,22H,22H,24H,22H,24H,12H,28H,12H
DB28H,0AH,28H,0AH,28H,06H,20H,02H,20H,02H,20H,22H,0FFH,7FH,00H,00H;业
DB08H,02H,08H,02H,08H,12H,0C8H,3FH,3FH,02H,08H,02H,08H,02H,0C8H,1FH
DB58H,10H,8CH,08H,8BH,08H,08H,05H,08H,02H,08H,0DH,8AH,70H,64H,20H;技
DB80H,00H,80H,02H,80H,0CH,80H,08H,80H,20H,0FFH,7FH,80H,00H,0C0H,01H
DB0A0H,02H,90H,04H,88H,08H,84H,70H,83H,20H,80H,00H,80H,00H,80H,00H;术
DB44H,10H,88H,10H,88H,08H,00H,04H,0FEH,7FH,02H,04H,01H,20H,0F8H,07H
DB00H,02H,08H,21H,0FFH,7FH,80H,00H,80H,00H,80H,00H,0A0H,00H,40H,00H;学
DB00H,01H,1EH,02H,0F2H,7FH,2AH,40H,1AH,28H,0C6H,1FH,0AH,00H,12H,10H
DB0F2H,3FH,12H,05H,16H,05H,0AH,05H,82H,44H,82H,44H,42H,78H,32H,00H;院
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
END
五、调试
每个人做的程序,不可能一开始就达到很完美的样子,它必须经过我们对它进行调试才能使它变得更完美。
一开始我们的程序出来有一个很怪的现象,那就是它显出来的字左右是反的,看起真的好别扭,不过,这都是因为编码的愿因,经过我们重新编码后,显示出来的字回到了以前的状态,成功的并且正确的显示出“成都航空职业技术学院”十个字。
六、总结
本周我们继续单片机实训周,通过这次实训,让我对单片机编程有了的认识更加深刻,在这周的实训中,我们的项目是做一个LED点阵显示程序设计,在这次实训中呢,我们这组也遇到了很多麻烦,伤透了脑筋,主要是用字的左右结构出错了,到你想加就加,想减就,面对这个,我们的确想了很久,最后,在大家的一起努力下,我们一起解决了分问题,这也为我们成功的完成了这次实训打下了基础,不过我们做得不够完美,还有一些小问题没解决,比如说字的排版不是很好,这一点我们没做好,还有需要完善的地方,我们应该更加努力。
毕竟实践总会让人对事物的理解会更加的快而且也会增加更多的兴趣,对学习有很大的帮助。