免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1341 | 回复: 0
打印 上一主题 下一主题

[新手入门] 自己写了一个液晶屏的测试程序(汇编) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-06 11:48 |只看该作者 |倒序浏览
昨天花了四五个小时,做到凌晨三点多钟,写了一个12232液晶模块的测试程序。告别了编程器调试的时代,仿真机上手容易多了!

/*MPU=PHILIPS P89C58X2FN   OSC=6MH   LCM=12232*/
/*http://wangchunyu.cublog.cn COPY RIGHT @2006*/
RESET equ P2.0
E1 equ P2.1
E2 equ P2.2
RW equ P2.3
DI equ P2.4       /*定义引脚接法*/
PAGE0 EQU 28H     
NUM EQU 29H
COLUMN EQU 30H
OFFSET EQU 31H     /*定义变量*/
ORG 00H
SJMP START
ORG 30H
START:
CLR RESET         /*LCM RESET*/
SETB RESET
CLR E1
CLR E2
LCALL INITM        /*调初始化程序*/   
LCALL CLEAR        /*调清屏程序*/
MOV DPTR,#CHINESE1
MOV PAGE0,#0B8H
MOV COLUMN,#15
LCALL DISP16        /*显示“欢”*/
LCALL DELAY      
MOV DPTR,#CHINESE2
MOV PAGE0,#0B8H
MOV COLUMN,#35
LCALL DISP16       /*显示“迎”*/
LCALL DELAY
MOV DPTR,#CHINESE3
MOV PAGE0,#0B8H
MOV COLUMN,#55
LCALL DISP16        /*显示“光”*/
LCALL DELAY
MOV DPTR,#CHINESE4
MOV PAGE0,#0B8H
MOV COLUMN,#75
LCALL DISP16       /*显示“临”*/
LCALL DELAY
MOV DPTR,#CHINESE5
MOV PAGE0,#0B8H
MOV COLUMN,#95
LCALL DISP16      /*显示“!”*/
LCALL DELAY
RUN1:MOV R4,#32          /*滚屏程序*/
RUN:MOV A,#0DFH
SUBB A,R4
LCALL OUTMI
LCALL OUTSI
MOV R1,#2FH
LCALL L1
DJNZ R4,RUN
sjmp RUN1
                       
DELAY:MOV R1,#0FFH       /*延时子程序*/
L1:MOV R2,#0FFH
L2:MOV R3,#01H
L3:DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RETI
DISP16:MOV R1,PAGE0  /*汉字上部分页*/
MOV R2,PAGE0      
INC R2               /*汉字下部分页*/
MOV R3,#17            /*汉字行数*/   
MOV R4,#00H
DISP1:
DJNZ R3,DISP2        /*16行显示完返回*/
RETI
DISP2:
MOV A,COLUMN
CLR C
SUBB A,#61           
JNC SLA16            /*列数大于61转从*/
/*主显示*/  
MOV A,#0E2H
LCALL OUTMI            
MOV A,R1
LCALL OUTMI          /*初始化上页*/
MOV A,COLUMN
LCALL OUTMI          /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTMD          /*取数送上行*/
INC R4            /*地址增一*/
MOV A,R2
LCALL OUTMI          /*初始化下页*/
MOV A,COLUMN
LCALL OUTMI          /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S   
LCALL OUTMD          /*取数送下行*/
INC COLUMN
INC R4
SJMP DISP1
SLA16:               /*从显示*/
MOV A,#0E2H
LCALL OUTSI
MOV A,R1
LCALL OUTSI         /*初始化上页*/
MOV A,COLUMN
CLR C
SUBB A,#61
LCALL OUTSI          /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTSD          /*取数送上行*/
INC R4              /*地址增一*/
MOV A,R2
LCALL OUTSI         /*初始化下页*/
MOV A,COLUMN
CLR C
SUBB A,#61
LCALL OUTSI          /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTSD          /*取数送下行*/
INC COLUMN           /*列加一*/
INC R4
SJMP DISP1
DISP_S:MOV B,A       /*高低位调整子程序*/
MOV C,B.0
MOV ACC.7,C
MOV C,B.1
MOV ACC.6,C
MOV C,B.2
MOV ACC.5,C
MOV C,B.3
MOV ACC.4,C
MOV C,B.4
MOV ACC.3,C
MOV C,B.5
MOV ACC.2,C
MOV C,B.6
MOV ACC.1,C
MOV C,B.7
MOV ACC.0,C
RETI
INITM:             /*初始化子程序*/
MOV A,#0E2H
LCALL OUTMI
LCALL OUTSI
MOV A,#0AEH
LCALL OUTMI
LCALL OUTSI
MOV A,#0A4H
LCALL OUTMI
LCALL OUTSI
MOV A,#0A9H
LCALL OUTMI
LCALL OUTSI
MOV A,#0A0H
LCALL OUTMI
LCALL OUTSI
MOV A,#0EEH
LCALL OUTMI
LCALL OUTSI
MOV A,#00H
LCALL OUTMI
LCALL OUTSI
MOV A,#0C0H
LCALL OUTMI
LCALL OUTSI
MOV A,#0AFH
LCALL OUTMI
LCALL OUTSI
RETI
CLEAR:MOV B,#0B8H       /*清屏子程序*/
CLEAR0:PUSH B
MOV A,B
LCALL OUTMI
LCALL OUTSI
MOV A,#00H
LCALL OUTMI
MOV R2,#7AH
MOV A,#00H
CLEAR1:LCALL OUTMD
DEC R2
CJNE R2,#3DH,CLEAR1
MOV A,#00H
LCALL OUTSI
CLEAR2:LCALL OUTSD
DJNZ R2,CLEAR2
POP B
INC B
MOV A,B
CJNE A,#0BCH,CLEAR0
RETI
OUTMI:CLR DI            /*指令送主驱动*/
SETB RW
MOV B,A
PR1:MOV P0,#0FFH
SETB E1
MOV A,P0
CLR E1
JB ACC.7,PR1
MOV A,B
CLR RW
MOV P0,A
SETB E1
CLR E1
SETB DI
RETI
OUTSI:CLR DI        /*指令送从驱动*/
SETB RW
MOV B,A
PR2:MOV P0,#0FFH
SETB E2
MOV A,P0
CLR E2
JB ACC.7,PR2
MOV A,B
CLR RW
MOV P0,A
SETB E2
CLR E2
SETB DI
RETI
OUTMD:CLR DI         /*数据送主驱动*/
SETB RW
MOV B,A
PR3:MOV P0,#0FFH
SETB E1
MOV A,P0
CLR E1
JB ACC.7,PR3
MOV A,B
SETB DI
CLR RW
MOV P0,A
SETB E1
CLR E1
RETI
OUTSD:CLR DI               /*数据送从驱动*/
SETB RW
MOV B,A
PR4:MOV P0,#0FFH
SETB E2
MOV A,P0
CLR E2
JB ACC.7,PR4
MOV A,B
SETB DI
CLR RW
MOV P0,A
SETB E2
CLR E2
RETI
CHINESE1:         /*欢*/
DB 20H,08H,2CH,10H,23H,60H,20H,80H
DB 23H,41H,3CH,31H,04H,02H,08H,0CH
DB 0F0H,30H,17H,0C0H,10H,30H,10H,08H
DB 14H,06H,18H,03H,00H,02H,00H,00H
CHINESE2:         /*迎*/
DB 02H,00H,42H,02H,22H,04H,13H,0F8H
DB 00H,04H,3FH,0E2H,20H,42H,40H,82H
DB 41H,02H,3FH,0FEH,20H,02H,20H,42H
DB 20H,22H,7FH,0C6H,20H,04H,00H,00H
CHINESE3:         /*光*/
DB 02H,00H,02H,01H,42H,02H,22H,04H
DB 1AH,18H,03H,0E0H,02H,00H,0FEH,00H
DB 02H,00H,03H,0FCH,0AH,02H,12H,02H
DB 62H,02H,26H,02H,02H,0EH,00H,00H
CHINESE4:         /*临*/
DB 00H,00H,3FH,0F8H,00H,00H,0FFH,0FFH
DB 02H,00H,04H,0FFH,08H,82H,30H,82H
DB 0D4H,82H,12H,0FEH,13H,82H,10H,82H
DB 10H,82H,31H,0FFH,10H,80H,00H,00H
CHINESE5:         /*!*/
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,38H,00H,7FH,0CCH
DB 7FH,0CCH,38H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
END



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18542/showart_108808.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP