⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1

📁 RM51单片机实验板配套实验例程库
💻
字号:
;********************************************
;* 串口接收演示程序,1200波特率,在液晶的第一行显示收到的汉字
;*  LRM 2005.11.21      *
;********************************************
;收到数据在70H-7CH
;
;*************************************************
LAMPBLAK EQU    P1.4         ;背光灯控制,=0时开,=1时关.
CS	 EQU	P1.5         ;液晶使能,=1操作,=0禁止.
SID      EQU	P1.6          ;液晶串行数据输入口
SCLK	 EQU	P1.7         ;液晶串行操作时钟口
;
;********************************************
;*             中断入口程序                 *
;********************************************
;
              ORG 0000H
                  LJMP      START
              ORG 0003H
                  RETI
              ORG 000BH
               RETI
              ORG 0013H
		  RETI
	      ORG 001BH
		RETI
	      ORG 0023H
		RETI
	      ORG 002BH
 		RETI
;
;********************************************
;*               主 程 序                   *
;********************************************
;
            START: MOV     SP,#4FH
                   CLR     CS                      ;液晶操
                   LCALL   SETUP                   ;LCD初始化
                   LCALL   LOGON                   ;开机显示画面
                   MOV		TMOD,#20H            ;T1为8位自动重装初值模式
	           MOV		TL1,#0E6H            ;赋初值,1200波特率
                   MOV		TH1,#0E6H            ;赋初值
	           CLR		ET1                   ;关T1中断
	           SETB	        TR1                 ;	  ;开定时器T1
                   MOV		SCON,#40H           ;  ; 串口初始化成方式1
	           MOV		PCON,#00H           ;   ;SMOD=1;加倍模式

           MAIN1:  LCALL  TXD1
                   AJMP   MAIN1
        ;
;
TXD1:
	           ;   ;数据长度入R2
        MOV             R5,#04
        MOV             DPTR,#TABB
START1: MOV		R4,#10H
START11:  MOV             A,#00H
        MOVC		A,@A+DPTR               ;50H-5FH装TABB表中数据
        MOV		SBUF,A             ;   ;数据发送
WAIT:	JBC		TI,CONT             ;  ;等待TI变1后转CONT并对TI清0
	SJMP	        WAIT
CONT:   INC             DPTR
        DJNZ	        R4,START11
        LCALL   DELAY1s
        DJNZ            R5,START1
        RET;
;
TABB: DB  00H,"我爱单片机设计",0FFH,00H,"单片机设计我爱",0FFH
      DB  00H,"祝C03 班同学学",0FFH,00H,"习好工作好都好",0FFH


;**********以下液晶开机显示程序**************
;
;***************开机显示画面***********************
LOGON:	MOV  A,#80H	       ;第一行左第一个字开始
	LCALL WRITE_COM
	MOV  DPTR,#CHINESE     ;WORD 16*16点阵TEST
	LCALL WRITE_HZ
        MOV  A,#90H	       ;第二行左第一个字开始
	LCALL WRITE_COM
	MOV  DPTR,#CHINESE1    ;WORD 16*16点阵TEST
	LCALL WRITE_HZ
        CLR   LAMPBLAK         ;开背光灯
        LCALL DELAY5S          ;显示5秒
        SETB  LAMPBLAK         ;关背光灯
        
        RET
;
UPDATA:
        MOV  A,#80H
	LCALL WRITE_COM
        MOV   R1,#70H           ;
        MOV   R3,#14            ; 14

MOVCLOP:MOV   A,@R1            ;
        LCALL WRITE_DAT
        INC   R1
        DJNZ  R3,MOVCLOP       ;
        RET

;**********初始化程序*************
SETUP:
	MOV  A,#01H		;CLEAR DISPLAY
	LCALL WRITE_COM
	MOV  A,#00110000B	;FUNCTION SETTING
	LCALL WRITE_COM
	MOV  A,#00000010B	;DDRAM SET TO '00H'
	LCALL WRITE_COM
	MOV  A,#00000100B	;
	LCALL WRITE_COM
	MOV  A,#00001100B	;DISPLAY ON
	LCALL WRITE_COM
	MOV  A,#00000001B	;CLEARING SCREEN
	LCALL WRITE_COM
	MOV  A,#10000000B	;SET DDRAM ADDRESS
	LCALL WRITE_COM
        LCALL DELAY
	LCALL DELAY
	LCALL DELAY
        LCALL DELAY
	RET
;************串行命令写入子程序****************
;写入命令字在A中
WRITE_COM:
	        LCALL DELAY1		;
                SETB  CS
		PUSH  ACC
		MOV  R0,#8
		MOV  A,#11111000B
COMM1:
                CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
                SETB SCLK
 		DJNZ R0,COMM1
		POP  ACC
		MOV  R5,A
		ANL  A,#0F0H
		MOV  R0,#8
COMM2:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,COMM2
		MOV  A,R5
		SWAP A
		ANL  A,#0F0H
		MOV  R0,#8
COMM3:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,COMM3
		CLR  CS
	        RET
;
;***********串行数据写入子程序****************
;写入数据字在A中
WRITE_DAT:
		LCALL DELAY1
                SETB CS
		PUSH  ACC
		MOV  R0,#8
		MOV  A,#11111010B
DATA1:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA1
		POP  ACC
		MOV  R5,A
		ANL  A,#0F0H
		MOV  R0,#8
DATA2:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA2
		MOV  A,R5
		SWAP A
		ANL  A,#0F0H
		MOV  R0,#8
DATA3:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA3
		CLR  CS
	        RET
;
;**************延时子程序**********************
;0.544ms
DELAY1:
	MOV  R7,#010H
D11:	MOV  R6,#010H
	DJNZ R6,$
	DJNZ R7,D11
	RET
;0.13s
DELAY:
	MOV  R1,#00H
D2:	MOV  R2,#00H
	DJNZ R2,$
	DJNZ R1,D2
	RET
;5.2s
DELAY5S:MOV  R3,#28H
DE5S:   LCALL DELAY
        DJNZ R3,DE5S
        RET
DELAY1S:MOV  R3,#9
DE1S:   LCALL DELAY
        DJNZ R3,DE1S
        RET
;
;************16*8点阵字写入子程序共16个******************
WRITE_ASCII:
		MOV  R4,#16
DDDD:	        CLR  A
		MOVC A,@A+DPTR
		LCALL WRITE_DAT
		INC  DPTR
		DJNZ R4,DDDD
		RET
;************16*8点阵字写入子程序共7个******************
WRITE_ASCII7:
		MOV  R4,#7
DDDD7:	        MOV  A,@R0
		LCALL WRITE_DAT
		INC  R0
                DJNZ R4,DDDD7
		RET
;************16*16点阵汉字写入子程序共7个***********
WRITE_HZ:		;WRITE 7 CHINESE TO LCD
		MOV  R4,#7
DD:	        CLR  A
		MOVC A,@A+DPTR
		INC  DPTR
		LCALL WRITE_DAT
		CLR  A
		MOVC A,@A+DPTR
		INC DPTR
		LCALL WRITE_DAT
		DJNZ R4,DD
		RET
;************16*16点阵汉字写入子程序共2个***********
WRITE_HZ2:		;WRITE 8 CHINESE TO LCD
		MOV  R4,#2
DD4:	        CLR  A
		MOVC A,@A+DPTR
		INC  DPTR
		LCALL WRITE_DAT
		CLR  A
		MOVC A,@A+DPTR
		INC DPTR
		LCALL WRITE_DAT
		DJNZ R4,DD4
		RET
;
;*****************************16*8点阵的字符代码表**********************************
TABLE1: DB     30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH,3EH,20H
;               0   1   2   3   4   5   6   7   8   9   :   ;   <   =   > "不显"
;**********************************自造字符地址表***********************************
;
;******************"这里是16*16点阵的汉字代码表"************************************
CHINESE:  DB "浙江海洋学院— "
CHINESE1: DB "串口发送演示器  "
CHINESE2: DB "          "
;;;;;;;;;;;;;;;;;;;;;;
        END	   				;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -