程序为:;外部RAM0000H---0017H存放24个字符<br />;20H存放24个字符要显示的数字<br />;3EH写显示LCD的命令<br />;4DH4EH4FH写显示每个字符的地址和数据<br />;5DH5EH暂存每个字符的地址<br />SCK EQU P1.7 ;SPI时钟信号线<br />CS EQU P3.3 ;/CS片选信号线(底电平有效)<br />DATA EQU P1.5 ;写SPI线(即主机输出从机输入)<br /> ORG 0000H<br /> LJMP MAIN<br /> ORG 0003H<br /> RETI<br /> ORG 000BH<br /> RETI<br /> ORG 0013H<br /> RETI<br /> ORG 001BH<br /> RETI<br /> ORG 0023H<br /> RETI<br />MAIN: MOV SP, #60H<br /> MOV PSW, #0<br /> MOV IE, #0<br /> MOV 4DH, #00H<br /> MOV 4EH, #00H<br /> MOV 4FH, #00H<br /> MOV 5DH, #00H<br /> MOV 5EH, #01H<br /> NOP<br />TURNONLCD: MOV 3EH, #03H ;打开LCD显示器<br /> NOP<br /> LCALL WRSPI<br /> NOP<br />SYSEN: MOV 3EH, #01H ;打开系统晶振<br /> NOP<br /> LCALL WRSPI<br /> NOP<br />CLEARDISPLAY: MOV R7, #24<br /> MOV A, #0<br /> MOV DPTR, #0000H<br />RECLR: MOVX @DPTR, A ;清24段显示<br /> INC DPTR<br /> NOP<br /> NOP<br /> DJNZ R7, RECLR<br /> NOP<br /> NOP<br />INPUTNUM: MOV 20H, #0 ;写LCD显示器的24段的字 <br />RECYCLE: MOV 4DH, 5DH<br /> MOV 4EH, 5EH<br /> NOP<br /> MOV R7, #24<br /> MOV A, 20H<br /> MOV DPTR, #0000H<br />REINPUT: PUSH DPL<br /> PUSH DPH<br /> MOV DPTR, #TAB<br /> MOVC A, @A+DPTR<br /> POP DPH<br /> POP DPL<br /> MOVX @DPTR, A<br /> INC DPTR<br /> NOP<br /> NOP<br /> DJNZ R7, REINPUT ;24个字符全部出现相同的数字<br /> NOP<br /> NOP<br />DISPLAY: MOV DPTR, #0000H ;显示所有字符的内容<br /> MOV R7, #24<br />REPLAY: MOVX A, @DPTR<br /> NOP<br /> MOV 4FH, A <br /> LCALL WRDATA ;调用写字符数据的子程序<br /> NOP<br /> INC DPTR<br /> NOP<br /> NOP<br /> LCALL DELAY1S ;调用延时1S子程序<br /> NOP<br /> NOP<br /> DJNZ R7, REPLAY<br /> NOP<br /> MOV A, 5DH<br /> ADD A, #2<br /> MOV 5DH, A<br /> MOV A, 5EH<br /> ADD A, #2<br /> MOV 5EH, A<br /> MOV A, 20H<br /> ADD A, #1<br /> MOV 20H, A<br /> NOP<br /> NOP<br /> CJNE A, #16 RECYCLE<br /> NOP<br /> NOP<br />HERE: LJMP HERE ;循环结束<br />WRSPI: NOP ;写SPI子程序(12位数据=9位命令+3位ID命令)<br /> CLR CS<br /> CLR C ;DATA先移入3位ID命令100<br /> CLR SCK<br /> SETB SCK<br /> SETB DATA<br /> NOP<br /> NOP<br /> CLR SCK<br /> SETB SCK<br /> CLR DATA<br /> NOP<br /> NOP<br /> CLR SCK<br /> SETB SCK<br /> CLR DATA<br /> NOP<br /> NOP<br /> MOV A, 3EH<br /> CLR SCK <br /> MOV R6, #8<br />WRSPI1: SETB SCK ;上升沿移入8位命令<br /> NOP <br /> RLC A<br /> MOV DATA, C<br /> CLR SCK<br /> NOP<br /> NOP<br /> DJNZ R6, WRSPI1<br /> NOP<br /> CLR SCK<br /> SETB SCK<br /> SETB DATA ;DATA移入最后一位数据<br /> NOP<br /> NOP<br /> SETB CS<br /> NOP<br /> NOP<br /> RET<br /> NOP<br /> NOP<br /> NOP <br />WRDATA: CLR CS ;写模式为写连续的地址写字符的数据和地址(2个6位地址+一个8位数据+ID号)<br /> CLR C <br /> CLR SCK ;DATA先移入写ID号101<br /> SETB SCK<br /> SETB DATA<br /> CLR SCK<br /> SETB SCK<br /> CLR DATA<br /> CLR SCK<br /> SETB SCK<br /> SETB DATA <br /> MOV A, 4DH<br /> MOV R6, #6 ;移入第一个6位的地址<br /> CLR SCK<br /> NOP<br />WRDATA0: SETB SCK<br /> RLC A<br /> MOV DATA C<br /> NOP<br /> CLR SCK<br /> NOP<br /> DJNZ R6, WRDATA0<br /> NOP<br /> MOV R6, #4 ;移入数据的底4位<br /> CLR SCK<br /> CLR C<br /> MOV A, 4FH<br /> NOP<br />WRDATA1: SETB SCK<br /> RRC A<br /> MOV DATA C<br /> NOP<br /> CLR SCK<br /> DJNZ R6, WRDATA1<br /> NOP<br /> CLR SCK ;DATA先移入写ID号101<br /> SETB SCK <br /> SETB DATA<br /> NOP<br /> CLR SCK<br /> SETB SCK<br /> CLR DATA<br /> NOP<br /> CLR SCK<br /> SETB SCK<br /> SETB DATA<br /> NOP <br /> MOV R6, #6 ;移入第二个6位的地址<br /> CLR C<br /> MOV A, 4EH<br /> NOP<br /> CLR SCK<br /> NOP<br />WRDATA2: SETB SCK <br /> NOP<br /> RRC A<br /> MOV DATA, C<br /> CLR SCK<br /> NOP<br /> DJNZ R6, WRDATA2<br /> NOP<br /> NOP <br /> CLR C ;移入数据的高4位<br /> MOV A, 4FH<br /> MOV R6, #4 <br /> CLR SCK<br /> NOP<br />WRDATA3: SETB SCK<br /> RRC A<br /> MOV DATA, C<br /> NOP<br /> CLR SCK<br /> NOP<br /> DJNZ R6, WRDATA3<br /> NOP<br /> NOP<br /> SETB CS<br /> NOP<br /> NOP<br /> RET<br /> NOP<br /> NOP<br />DELAY1S: NOP ;延时1S子程序<br />DEL0: MOV R5, #20 <br />DEL1: MOV R6, #200 <br />DEL2: MOV R7, #250<br /> NOP<br /> DJNZ R7, DEL2<br /> NOP<br /> DJNZ R6, DEL1<br /> NOP<br /> NOP<br /> DJNZ R5, DEL0<br /> NOP<br /> NOP<br /> RET<br /> NOP<br /> NOP<br />TAB: DB 08H,12H,6BH,5BH,1FH,5DH,7DH,13H ;0-7的数码段的段码表<br /> DB 7FH,5FH,3FH,7CH,65H,7AH,6DH,2DH ;8-F的数码段的段码表<br />LCD有关的文件在附件中 <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20077/20077189218628.pdf'>https://bbs.21ic.com/upfiles/img/20077/20077189218628.pdf</a>
|