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

📄 公交车报站系统.asm

📁 实现公交车报站系统
💻 ASM
字号:
;************************************************************
;ST7920的测试程序,该程序使用并口,可测试128×64点阵。其接口为
;RS---P2.5     R/W---P2.6     E---------P2.7     DB0~7-----P0
;重庆电子网 www.cqmcu.com QQ 444011745  469040972
;************************************************************
RS EQU P2.5
RW EQU P2.6
E EQU P2.7
QJ EQU 30H
ORG 0000H
AJMP START

;主程序
ORG 0100H
START:
LCALL DELAY
LCALL DELAY
LCALL SETUP
MOV QJ,#0H

MAIN:


     MOV P1,#0F8H
     MOV A,P1
     ANL A,#0F8H
     CJNE A,#0F8H,HAVE
     SJMP MAIN
HAVE:
	 MOV A,#01111111B    
	 MOV B,A
NEXT:
	 MOV A,B	 
	 RL A
	 MOV P1,A
	 MOV B,A
     MOV A,P1
	 ANL A,#0F8H	 
	 CJNE A,#0F8H,YES
	 SJMP NEXT
YES:
 
	 MOV A,P1	 					
A0:  CJNE A,#0DEH,A1	;前进	                1
 	 LCALL FORWARD
A1:  CJNE A,#0EEH,A2	;后退	                2
	 LCALL BACK
A2:  CJNE A,#0DBH,A3	;启动	                7
     MOV  A,#01H        ;清除显示
     LCALL WRITE_COM
	 MOV  A,#00001100B  ;DISPLAY ON
     LCALL WRITE_COM
	 MOV QJ,#0H
	 SJMP MAIN
A3:  CJNE A,#0EBH,A4	;复位					8
     MOV QJ,#0H
	 MOV  A,#01H        ;清除显示				
     LCALL WRITE_COM	 
A4:  CJNE A,#0F3H,Z1	;宣传					9
	 MOV DPTR,#TAB4
	 LCALL DISP
Z1:	MOV R0,#8
AA:
MOV A,#00011000B
LCALL WRITE_COM
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY	
DJNZ R0,AA
 LJMP MAIN
	 




DISP: 


MOV A,#80H
LCALL WRITE_COM

LCALL WRITE_HZ
RET


/*
LCALL MOVE
MOV A,#80H
LCALL WRITE_COM
MOV A,#00H
LCALL WRITE_DAT
MOV A,#00H
LCALL WRITE_DAT
LCALL DELAY
LCALL DELAY
;造字
MOVE:
MOV R0,#0
MOV DPTR,#TAB
MOV A,#40H
LCALL WRITE_COM
A1:                         ; CGRAM:写16组,每组2字节 	 
CLR A  
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC DPTR
CLR A
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC DPTR
INC R0
CJNE R0,#16,A1
RET
*/

FORWARD:

     MOV A,QJ
   	 CJNE A,#0H,ZHANDIAN1
	 MOV DPTR,#TAB1	  
	 LCALL DISP	 
	 MOV A,QJ
	 INC A
	 MOV QJ,A
	 SJMP R
ZHANDIAN1:
     MOV A,QJ
	 CJNE A,#1H,ZHANDIAN2
	 MOV DPTR,#TAB2
	 LCALL DISP
	 MOV A,QJ
	 INC A
	 MOV QJ,A
	 SJMP R
ZHANDIAN2:
     MOV A,QJ
	 MOV DPTR,#TAB3
	 LCALL DISP
	 SJMP R 
	 RET  
BACK:
   	 MOV A,QJ
	 CJNE A,#2H,ZHANDIAN3
	 MOV DPTR,#TAB2
	 MOV A,QJ
	 DEC A
	 MOV QJ,A
	 LCALL DISP
	 SJMP R
ZHANDIAN3:
   	 MOV A,QJ
	 MOV DPTR,#TAB1
	 LCALL DISP
	 SJMP R
R:   RET
;初始化
SETUP:
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV  A,#01H ;清除显示
LCALL WRITE_COM	 
MOV  A,#00110000B ;8位MPU控制界面,基本指令集动作
LCALL WRITE_COM
MOV  A,#00000010B ;DDRAM的计数器(AC)到"00H",降游标移动到开头原点位置
LCALL WRITE_COM
MOV  A,#00000100B ;
LCALL WRITE_COM
MOV  A,#00001000B ;DISPLAY OFF
LCALL WRITE_COM
MOV  A,#00000001B ;CLEARING SCREEN
LCALL WRITE_COM

RET
;读数据
READ:
LCALL DELAY1
SETB RS
SETB RS
SETB  RW
SETB  RW
MOV P0,#0FFH
SETB E
SETB E
MOV  A,P0
MOV  A,P0
CLR E
CLR E
LCALL DELAY1

RET
;写指令
WRITE_COM: 
LCALL DELAY 
CLR  RS
CLR  RS
CLR  RW
CLR  RW
MOV  P0,A
MOV  P0,A
SETB E
SETB E
NOP
NOP
CLR  E
CLR  E
RET

;写显示数据 
WRITE_DAT: 
LCALL DELAY1
SETB RS
SETB RS
CLR  RW
CLR  RW
MOV  P0,A
MOV  P0,A
SETB E
SETB E
NOP
NOP
CLR  E
CLR  E
RET

;延时1×1+16×1+16×16×2+16×2+1×2=563us 
DELAY1:
MOV  R7,#10H
D11: MOV  R6,#10H
DJNZ R6,$
DJNZ R7,D11
RET

;延时1×1+256×1+256×256×2+256×2+1×2=131843us
DELAY:
MOV  R1,#00H
D2: MOV  R2,#00H
DJNZ R2,$
DJNZ R1,D2
RET

;写32个字符到128×64液晶模块,前16个汉字在第一(二)行,后16个汉字在第三(四)行。
WRITE_HZ1:
MOV  R4,#16
DDDD:MOV A,#01H
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC  DPTR
DJNZ R4,DDDD
RET

;写16个汉字到128×64液晶模块,前8个汉字在第一(二)行,后8个汉字在第三(四)行。
WRITE_HZ: 
MOV  R4,#16
DD:	     
CLR  A
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC  DPTR
DJNZ R4,DD
RET

;定位,使汉字代码以偶字节开始
ORG 1000H
;"这里是16*16点阵的汉字代码表"
		  //												  												  //100
TAB1:   DB "11单片机课程设计 				                 												  " 
TAB2:   DB "22黑金刚51片机学   				               												  "   
TAB3:   DB "22黑金刚51片机学   				               												  "   
TAB4:   DB "22黑金刚51片机学   				               												  "   

;结束

END

⌨️ 快捷键说明

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