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

📄 test5.asm

📁 基于单片机C51和LCD1602的显示《将近酒》的程序
💻 ASM
字号:
;=====硬件连接参加如下=========================
CS1  EQU P1.0     ;
RES  EQU P1.1     ;复位端,低电平触发有效,正常时 高电平
A0   EQU P1.2     ;
RW   EQU P1.3     ;
E_RD EQU P1.4     ;
Data_bus data P0  ;LCM Data bus
;----------------------------------------------

HZ_P data 51H    ;页地址
HZ_C data 52H    ;行地址
HZ_H data 53H    ;字高   16x16显示的时候 =2
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:CALL LCM_INIT
     CALL DELAY
     LCALL clr_screen

     SJMP $






;===LCM initalization 初始化=======
LCM_INIT:
 LCALL    DELAY
 CLR      RES             ;initalization  reset      复位
 LCALL    DELAY
 LCALL    DELAY
 SETB RES
 LCALL    DELAY
 MOV      A,#0E2H         ;initialize interal function
 LCALL    TCOM
 LCALL    DELAY
 MOV      A,#0A2H         ;set LCD bias=1/9
 LCALL    TCOM
 MOV      A,#0C8H         ;set SHL COM1 to COM64 =C0H,set SHL COM64 to COM1 =C8H    设置显示方向
 LCALL    TCOM
 MOV      A,#0A0H         ;ADC select SEG0 to SEG131  A1H 显示图像左右镜像
 LCALL    TCOM
 MOV      A,#040H         ;Initial Display Line
 LCALL    TCOM
 MOV      A,#02CH
 LCALL    TCOM
 LCALL    DELAY
 MOV      A,#02EH
 LCALL    TCOM
 LCALL    DELAY
 MOV      A,#02FH         ;power control(VC,VR,VF=1,1,1)
 LCALL    TCOM
 LCALL    DELAY
     ;----------------------------
 MOV      A,#023H         ;Regulator resistor select    对比度设置 020H~027H
 LCALL    TCOM
 MOV      A,#081H         ;set reference voltage mode
 LCALL    TCOM
 MOV      A,#019H         ;set reference voltage  亮度电压调节 00H~03FH  先发指令 81H,后写具体值
 LCALL    TCOM
     ;以上2条指令互相配合可以调节到合适得对比度

 MOV      A,#0A6H         ;set reverse display OFF  ,正 反显示设置      A6 正显示 A7反显示
 LCALL    TCOM
 MOV      A,#0D2h         ;driving mode set
 LCALL    TCOM
 MOV      A,#000H         ;MODE 1
 LCALL    TCOM
 MOV      A,#0AFH         ;turns the display ON
 LCALL    TCOM

 ret
;***********Initial over***********


;======亮度测试========
Light_test:
   mov r7,#00H
  LT_LOOP:
   call delay_ns
   MOV A,#10000001B     ;set column address MSB   ;列地址  高4位
   CALL TCOM
   mov a,r7
   call tcom            ;change亮度
   cjne r7,#03Fh,LTA
    mov r7,#00h
    jmp lt_loop
   LTA:
    inc R7
   jmp LT_LOOP

;==========清屏==========================================
;实际上就是RAM中全写00H
;========================================================
clr_screen:
  mov r2,#10110000b
 clr_2:
  MOV A,R2 ;set page address
  LCALL TCOM
  MOV A,#010H ;set column address MSB  ;列地址
  LCALL TCOM
  MOV A,#00H ;set column address LSB   ;列地址
  LCALL TCOM
  MOV R1,#10H ;set (8*8)*16characters
 clr1:
   MOV R0,#08H
 clr0:
   mov a,#0f0h
   call tdata
   DJNZ R0,clr0
   DJNZ R1,clr1
   INC R2
   LCALL DELAY
   CJNE R2,#10110011,clr_2
  ret
;----------------CLR Screen Over-------------------------

;====忙查寻==============================================
;在高速中,使用忙查询会稳定显示效果
;========================================================
busy_check:
 mov data_bus,#0FFH
 mov a,data_bus
 SETB CS1
 CLR CS1                     ;cs1=0
 CLR A0                      ;a0=0
 setb RW                     ;RW=1
 clr e_rd                    ;RD=0
 nop
 nop
 mov a,data_bus
 setb e_rd

 nop
 nop
 setb cs1                   ;

 ;jmp busy_check

 ret

;------------------Over-------------------------------------------



;=====送命令,CS1=0 A0=0  RD=1,RW 0-->1
TCOM:
 SETB RES
 SETB CS1
 setb RW
 setb E_RD
 CLR A0                         ;A0=0
 nop
 nop
 CLR CS1                        ;CS1=0
 nop
 nop
 mov data_bus,a                 ;DATA
 nop
 nop
 clr rw                         ;RW 0-->1
 nop
 nop
 setb rw
 setb cs1
 SETB A0
 setb E_RD
 SETB RES
 ret


;=======送显示数据=======   A0=1  CS1=0  RD=1 RW 0-->1
TDATA:
  SETB RES
  SETB CS1
  SETB A0
  SETB RW
  CLR CS1
  SETB E_RD

TRANSMIT:
 MOV DATA_bus,A
 SETB RW
 NOP
 NOP
 NOP
 CLR RW
 nop
 nop
 SETB CS1
 SETB E_RD
 SETB RW
 SETB A0
 SETB RES
 RET

;===延时子程序=================================

DELAY:       ;time = 40Hx(41Hx2+1+2)us   CY=12MHZ
  MOV 40H,#0100 ;10.05ms   ;32h
DELAY1:
  MOV 41H,#051
DELAY2:
   DJNZ 41H,DELAY2 ;192us
   DJNZ 40H,DELAY1
   RET

Delay_ns:     ;100ms
 mov R6,#200
 dns1:
 call delay
 djnz r6, dns1
 ret

⌨️ 快捷键说明

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