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

📄 serial port.asm

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;******************************************************************
;*                                                                *
;* ME500单片机开发系统演示程序 - 12864 图片与文字显示             * 
;*                                                                *
;* ST7920控制芯片(汉字库),串口模式。                             *
;*                                                                *
;* 版本: V1.0 (2006/11/20)                                       *
;* 作者: gguoqing (Email: gguoqing@willar.com)                   *
;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界)*
;* 邮箱: support@willar.com                                      *
;*                                                                *
;*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED *
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!      *
;*                                                                *
;******************************************************************

;********************* 12864引脚定义 *********************

          CS     EQU  P2.0
          SID    EQU  P2.1
          SCLK   EQU  P2.2
          PSB    EQU  P2.3
          RST    EQU  P2.5
          
;**********************************************************

          LCD_X  EQU  30H     ;GDRAM水平坐标
          LCD_Y  EQU  31H     ;GDRAM垂直坐标
          TEMP   EQU  32H
          COUNT1 EQU  33H
          COUNT2 EQU  34H
          COUNT3 EQU  35H
          
;**********************************************************
       
          ORG  0000H
          LJMP MAIN
          ORG  0030H
        
;********************************************************** 
MAIN:
          MOV  SP,#60H
          CALL  LCD_INIT
          CALL  DELAY5MS
          
          MOV A,#80H
          MOV DPTR,#MENU1
          CALL WR_STRING

          MOV A,#90H
          MOV DPTR,#MENU2
          CALL WR_STRING

          MOV A,#88H
          MOV DPTR,#MENU3
          CALL WR_STRING

          MOV A,#98H
          MOV DPTR,#MENU4
          CALL WR_STRING

          MOV  R3,#200
MAIN1:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN1

          CALL  FLASH            ;闪烁
          CALL  CLEAR_LCD        ;清屏

          MOV  DPTR,#TU_TAB1	 ;显示图形1
	  CALL PHO_DISP

          MOV  R3,#200           ;
MAIN2:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN2

          CALL  FLASH            ;闪烁
          CALL  CLEAR_LCD        ;清屏 

          MOV  DPTR,#TU_TAB2	 ;显示图形2
	  CALL PHO_DISP

          MOV  R3,#200
MAIN3:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN3

          CALL  FLASH           ;闪烁
          CALL  CLEAR_LCD       ;清屏  

          JMP  MAIN
          
          RET

;**********************************************************

;  LCD 初始化

;**********************************************************  
LCD_INIT:
          CALL DELAY5MS      ;延时15ms
          CALL DELAY5MS
          CALL DELAY5MS

          CLR  PSB           ;串口驱动模式
          SETB CS            ;片选 高电平有效
          CLR  SCLK          ;时钟置于低电平

          CLR RST            ;LCD复位
          CALL DELAY5MS
          SETB RST
         
          MOV  A,#30H        ;基本指令操作
          CALL  WR_OPERAT

          MOV  A,#06H         
          CALL  WR_OPERAT

          MOV  A,#0CH         ;开显示,关光标,不闪烁
          CALL  WR_OPERAT
         
          MOV  A,#01H         ;清屏
          CALL  WR_OPERAT
          RET
;**********************************************************

; 写指令子程序

;**********************************************************  
WR_OPERAT:
          MOV  B,A           ;暂存数据
          MOV  A,#0F8H       ;写F8H控制命令
          CALL  WR_BYTE
          CALL  DELAY1MS
          
          MOV  A,B
          ANL A,#0F0H         ;写控制命令的高4位
          CALL  WR_BYTE
          CALL  DELAY1MS
          
          MOV A,B
          SWAP A
          ANL A,#0F0H         ;写控制命令的低4位 
          CALL  WR_BYTE
          CALL  DELAY1MS
          RET
;**********************************************************

; 写数据子程序

;**********************************************************  
WR_DATA:
          MOV  B,A            ;暂存数据
          MOV  A,#0FAH        ;写FAH控制命令
          CALL  WR_BYTE
          CALL  DELAY
          
          MOV  A,B
          ANL A,#0F0H         ;写数据的高4位
          CALL  WR_BYTE
          CALL  DELAY
          
          MOV A,B
          SWAP A
          ANL A,#0F0H         ;写数据的低4位
          CALL  WR_BYTE
          CALL  DELAY
          RET
;**********************************************************

; 写一个字节子程序
; 
;**********************************************************
WR_BYTE:
          MOV R5,#8
WR_BYTE1:                   
          RLC A
          MOV SID,C
          SETB SCLK
          NOP
          NOP
          NOP
          CLR SCLK
          DJNZ R5,WR_BYTE1
          RET
          
;**********************************************************

; 写字符串子程序

;**********************************************************
WR_STRING:
          CALL  WR_OPERAT
          MOV R4,#16
WR_STRING1:
          CLR A
          MOVC A,@A+DPTR
          CALL WR_DATA
          INC DPTR         
          MOV  R3,#08H         ;加入80ms的延时
WAIT:                          ;使你能够看清楚显示的过程
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,WAIT

          DJNZ R4,WR_STRING1
          RET

;**********************************************************

; 显示图像子程序

;**********************************************************
PHO_DISP:
    	  MOV  COUNT3,#02H
	  MOV  LCD_X,#80H
PHO_DISP1:
    	  MOV  LCD_Y,#80H
	  MOV  COUNT2,#20H
PHO_DISP2:
    	  MOV  COUNT1,#10H
	  LCALL WR_ZB
PHO_DISP3:
          CLR	A
	  MOVC A,@A+DPTR
	  LCALL  WR_DATA
	  INC	DPTR
	  DJNZ COUNT1,PHO_DISP3
	  INC	LCD_Y
	  DJNZ COUNT2,PHO_DISP2
	  MOV	LCD_X,#88H
	  DJNZ COUNT3,PHO_DISP1

          MOV	A,#36H
          LCALL WR_OPERAT
          MOV	A,#30H
          LCALL WR_OPERAT
          RET

;**********************************************************

; 写入显示坐标子程序

;**********************************************************
WR_ZB:
          MOV  A,#34H          ;34H - 扩充指令操作
          LCALL  WR_OPERAT 
          MOV  A,LCD_Y
	  LCALL  WR_OPERAT
	  MOV  A,LCD_X
	  LCALL  WR_OPERAT

⌨️ 快捷键说明

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