欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4653|回復: 0
打印 上一主題 下一主題
收起左側

51單片機匯編語言溫度自動控制系統

[復制鏈接]
跳轉到指定樓層
樓主
這是一款51單片機匯編語言溫度自動控制系統,電路簡單,采用不帶字庫的128X64液晶屏作為顯示器,程序采用匯編語言編程。 單片機匯編語言溫度自動控制系統.rar (91.19 KB, 下載次數: 46)


單片機源程序:
;****************************資源分配**************************
    FLAG1  EQU 54H;是否檢測到DS18B20標志位
    FLAG2  EQU 00H
    COUNT  EQU 63H
    CSA    EQU P0.4
    CSB    EQU P0.3
    RS     EQU P0.2
    RW     EQU P0.1
     E      EQU P0.0
    COM    EQU 21H       ;命令字
    DAT    EQU 22H       ;顯示數據
    column EQU 23H     ;
    pagef  EQU 24h      ;
    cpage  EQU 25H
    ccolumn EQU 26H    ;(0-15)
    CODE             EQU 27h
    column2          EQU 52H
    pagef2           equ 60h
    cpage2           EQU 61H
    ccolumn2         EQU 62H
    column3          EQU 2eH
    pagef3           equ 2fh
    cpage3           EQU 30H
    ccolumn3         EQU 31H
    column4          EQU 32H
    pagef4           equ 33h
    cpage4           EQU 34H
    ccolumn4         EQU 35H
    column5          EQU 36H
    pagef5           equ 37h
    cpage5           EQU 38H
    ccolumn5         EQU 39H
;*****************************主程序開始******************
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0                         ;外部中斷
ORG 0030H
START: MOV SP,#70H
      MOV P2,#0F0H
      CLR A                           
      CLR F0                     ;清設置鍵
      CLR FLAG2                  ;清確認鍵
      MOV COUNT,#0               ;中斷次數計數
      SETB IT0
      SETB EX0
      SETB EA
      
      LCALL INT                 ;LCD12864初始化子程序
      LCALL CLEAR               ;LDC12864清屏子程序
      LCALL DISPLAY1             ;顯示"溫度自動控制系統"
      LCALL DISPLAY2             ;顯示"設置溫度"
      LCALL DISPLAY3             ;顯示預設的溫度
      LCALL DISPLAY4             ;顯示"實際溫度"
      LCALL DISPLAY5
      LCALL GET_TEMPER           ;調用讀溫度子程序
      ACALL DISPLAY5             ;調用顯示
M:   
      LCALL GET_TEMPER
      LCALL DELAY1
      
MM:    LCALL DISPLAY3
MM1:   JB F0,MM4                ;是否按上"設置"
       JNB F1,M                 ;是否按下"確認"
       MOV A,48H
       CJNE A,43H,MM5
       MOV A,55H
       CJNE A,42H,MM5
       MOV A,56H
        CJNE A,41H,MM5
       LJMP MM8
     
MM4:   MOV A,COUNT
       CJNE A,#1,MM2
       LCALL DISPLAY8
       LCALL DISPLAY8
       LJMP MM
MM2:   CJNE A,#2,MM3
       LCALL DISPLAY9
       LCALL DISPLAY9
MM3:   CJNE A,#3,MM
       LCALL DISPLAY10
       LCALL DISPLAY10
       LJMP MM
MM5:   JC  MM7
       LJMP MM6
MM6:   LCALL DISPLAY6
       CLR  P0.5
       SETB P0.6
       SETB P0.7
       LJMP M
MM7:  LCALL DISPLAY7
      SETB P0.5
      CLR  P0.6
      SETB P0.7
       LJMP M
MM8:  LCALL DISPLAY11
      SETB P0.5
      SETB P0.6
      CLR  P0.7
      LJMP M
      
;***********************外部中斷0子程序**************
INT0:
     CLR EX0
     INC COUNT                 ;中斷計數器加1
     CPL P3.0
     MOV DPTR,#JS
     MOV A,P2
     MOV P2,#0FH
     MOV 47H,P2
     JNB ACC.4,E1
     JNB ACC.5,E2
     JNB ACC.6,E3
     JNB ACC.7,E4
     SETB EX0
     RETI
E1:  MOV 20H,#0
     LJMP KEYH
E2:  MOV 20H,#4
     LJMP KEYH
E3:  MOV 20H,#8
     LJMP KEYH
E4:  MOV 20H,#12
     LJMP KEYH
KEYH:MOV A,47H
    JNB ACC.0,D0
    JNB ACC.1,D1
    JNB ACC.2,D2
    JNB ACC.3,D3
    SETB EX0
    RETI
D0: MOV A,#0
    ADD A,20H
    MOV 59H,A
    MOV B,#3
    MUL AB
    JMP @A+DPTR
D1: MOV A,#1
    ADD A,20H
     MOV 59H,A
    MOV B,#3
    MUL AB
    JMP @A+DPTR
D2: MOV A,#2
    ADD A,20H
    MOV 59H,A
    MOV B,#3
    MUL AB
    JMP @A+DPTR
D3: MOV A,#3
    ADD A,20H
    MOV 59H,A
    MOV B,#3
    MUL AB
    JMP @A+DPTR
JS: LJMP LOOP0
     LJMPLOOP1
    LJMP LOOP2
    LJMP LOOP3
    LJMP LOOP4
    LJMP LOOP5
    LJMP LOOP6
    LJMP LOOP7
    LJMP LOOP8
    LJMP LOOP9
    LJMP LOOP10
    LJMP LOOP11
LOOP0:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP1:
     ACALLSHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP2:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP3:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP4:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP5:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP6:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP7:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP8:
    ACALL SHIFT1
    MOV P2,#0F0H
     SETBEX0
    RETI
LOOP9:
    ACALL SHIFT1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP10:
    SETB F0              ;按下設置鍵
    MOV COUNT,#1
    MOV P2,#0F0H
    SETB EX0
    RETI
LOOP11:                  ;按下"確認"
    CLR F0
    SETB F1
    MOV COUNT,#0
    MOV P2,#0F0H
    SETB EX0
    RETI
SHIFT1:
     JB F0,LLL
     LJMP EXIT
LLL: MOV A,COUNT
     CJNE A,#2,LLL1
     MOV 48H,59H
     LJMP EXIT
LLL1: CJNE A,#3,LLL2
     MOV 55H,59H
     LJMP EXIT
LLL2: CJNE A,#4,EXIT
     MOV 56H,59H
     SETB F1
     CLR  F0
EXIT: RET
;*************************顯示子程序*************************
DISPLAY1:                        ;顯示"自動溫度控制系統" 循環效果
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#0
      lcall writeright2   
      LCALL DELAY1
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#0
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#1
      lcall writeright2
      LCALL DELAY1
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#0
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#1
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#2
      lcall writeright2
      LCALL DELAY1
      mov column4,#0
      mov pagef4,#0             ;
      mov code,#0
      lcall writeright2
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#1
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#2
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#3
      lcall writeright2
      LCALL DELAY1
      mov column3,#48
      mov pagef3,#0             ;
      mov code,#0
      lcall writeleft2
      mov column4,#0
      mov pagef4,#0             ;
      mov code,#1
      lcall writeright2
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#2
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#3
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#4
      lcall writeright2
      LCALL DELAY1
      mov column3,#32
      mov pagef3,#0             ;
      mov code,#0
      lcall writeleft2
      mov column3,#48
      mov pagef3,#0             ;
      mov code,#1
      lcall writeleft2
      mov column4,#0
      mov pagef4,#0             ;
      mov code,#2
      lcall writeright2
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#3
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#4
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#5
      lcall writeright2
      LCALL DELAY1
      mov column3,#16
      mov pagef3,#0             ;
      mov code,#0
      lcall writeleft2
      mov column3,#32
      mov pagef3,#0             ;
      mov code,#1
      lcall writeleft2
      mov column3,#48
      mov pagef3,#0             ;
      mov code,#2
      lcall writeleft2
      mov column4,#0
      mov pagef4,#0             ;
      mov code,#3
      lcall writeright2
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#4
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#5
      lcall writeright2
       mov column4,#48
      mov pagef4,#0             ;
       mov code,#6
      lcall writeright2
      LCALL DELAY1
      mov column3,#0
      mov pagef3,#0             ;
      mov code,#0
      lcall writeleft2
      mov column3,#16
      mov pagef3,#0             ;
      mov code,#1
      lcall writeleft2
      mov column3,#32
      mov pagef3,#0             ;
      mov code,#2
      lcall writeleft2
      mov column3,#48
      mov pagef3,#0             ;
      mov code,#3
      lcall writeleft2
      mov column4,#0
      mov pagef4,#0             ;
      mov code,#4
      lcall writeright2
      mov column4,#16
      mov pagef4,#0             ;
      mov code,#5
      lcall writeright2
      mov column4,#32
      mov pagef4,#0             ;
      mov code,#6
      lcall writeright2
      mov column4,#48
      mov pagef4,#0             ;
      mov code,#7
      lcall writeright2
      LCALL DELAY1
      RET
DISPLAY2:                         ;顯示"設置溫度"
      mov column3,#16            ;
      mov pagef3,#2
       mov code,#8
      lcall writeleft2
      LCALL DELAY1
      mov column3,#32          ;
      mov pagef3,#2
      mov code,#9
      LCALL writeleft2
      LCALL DELAY1
       mov column3,#48          ;
      mov pagef3,#2
      mov code,#0
      lcall writeleft2
      LCALL DELAY1
      mov column4,#0            ;
      mov pagef4,#2
      mov code,#1
      lcall writeright2
      LCALL DELAY1
      RET
DISPLAY3:
      mov column2,#16
      mov pagef2,#2
      mov code,#10
       lcall writeright
                                  ;顯示預設的溫度
      mov column2,#24
      mov pagef2,#2
      mov code,48H
      lcall writeright
      mov column2,#32
      mov pagef2,#2
      mov code,55H
      lcall writeright
      mov column2,#40
      mov pagef2,#2             ;.
      mov code,#11
      lcall writeright
      mov column2,#48
      mov pagef2,#2
      mov code,56H
      lcall writeright
      RET
      
DISPLAY4:                              ;顯示"實際溫度"
      mov column3,#16            ;
      mov pagef3,#4
      mov code,#10
      lcall writeleft2
      LCALL DELAY1
      mov column3,#32           ;
      mov pagef3,#4
      mov code,#11
      lcall writeleft2
      LCALL DELAY1
      mov column3,#48          ;
      mov pagef3,#4
      mov code,#0
      lcall writeleft2
      LCALL DELAY1
      mov column3,#0          ;
      mov pagef3,#4
      mov code,#1
      lcall writeright2
      LCALL DELAY1
       RET
DISPLAY5:                            ;顯示實際的溫度
     MOV A,29H
     MOV C,40H  ;28的位地址
     RRC A
     MOV C,41H
     RRC A
     MOV C,42H
     RRC A
     MOV C,43H
     RRC A
     MOV 51H,A
     ANL 29H,#0FH
     MOV A,29H
     MOV B,#6
     MUL AB
     MOV 50H,A
      mov a,51H
     mov b,#10
     div ab
     mov 43H,a
     mov 42H,b
     MOV A,50H
     MOV B,#10
     DIV AB
     MOV 41H,A
      MOV 40H,B
      mov column2,#16
      mov pagef2,#4
      mov code,#10
      lcall writeright
      mov column2,#24            ;實際溫度
      mov pagef2,#4
      mov code,43h
      lcall writeright
      mov column2,#32
      mov pagef2,#4
      mov code,42h
      lcall writeright
      mov column2,#40
      mov pagef2,#4             ;.
      mov code,#11
      lcall writeright
      mov column2,#48
      mov pagef2,#4
      mov code,41h
      lcall writeright
      RET
      
DISPLAY6:
      mov column3,#24
      mov pagef3,#6             ;
      mov code,#13
      lcall writeleft2
      LCALL DELAY1
      mov column3,#40
      mov pagef3,#6             ;
      mov code,#14
      lcall writeleft2
      LCALL DELAY1
      mov column,#56
      mov pagef,#6             ; :
      mov code,#10
      lcall writeleft
      LCALL DELAY1
      mov column4,#0
      mov pagef4,#6             ;
      mov code,#15
      lcall writeright2
      LCALL DELAY1
      mov column4,#16
      mov pagef4,#6             ;
      mov code,#16
      lcall writeright2
      LCALL DELAY1
      mov column4,#32
       mov pagef4,#6             ; !
      mov code,#19
      lcall writeright2
      LCALL DELAY1
      RET
DISPLAY7:
      mov column3,#24
      mov pagef3,#6             ;
      mov code,#13
      lcall writeleft2
      LCALL DELAY1
      mov column3,#40
      mov pagef3,#6             ;
      mov code,#14
      lcall writeleft2
      LCALL DELAY1
      mov column,#56
      mov pagef,#6             ; :
      mov code,#10
      lcall writeleft
      LCALL DELAY1
      mov column4,#0
      mov pagef4,#6             ;
      mov code,#17
      lcall writeright2
      LCALL DELAY1
      mov column4,#16
      mov pagef4,#6             ;
      mov code,#0
      lcall writeright2
      LCALL DELAY1
      mov column4,#32
       mov pagef4,#6             ;!
      mov code,#19
      lcall writeright2
      LCALL DELAY1
      RET
DISPLAY8:
        mov column2,#24
        mov pagef2,#2
        mov code,48H
        lcall writeright
        LCALL DELAY
        LCALL DELAY
        mov column2,#24
        mov pagef2,#2
        mov code,#12
        lcall writeright
        RET
        
DISPLAY9:
        mov column2,#32
        mov pagef2,#2
        mov code,55H
        lcall writeright
        LCALL DELAY
        LCALL DELAY
        mov column2,#32
        mov pagef2,#2
        mov code,#12
        lcall writeright
        RET
DISPLAY10:
       mov column2,#48
        mov pagef2,#2
        mov code,56H
        lcall writeright
        LCALL DELAY
         LCALL DELAY
        mov column2,#48
        mov pagef2,#2
        mov code,#12
        lcall writeright
        RET
      
DISPLAY11:
      mov column3,#24
      mov pagef3,#6             ;
      mov code,#13
      lcall writeleft2
      LCALL DELAY1
      mov column3,#40
      mov pagef3,#6             ;
      mov code,#14
      lcall writeleft2
      LCALL DELAY1
      mov column,#56
      mov pagef,#6             ; :
      mov code,#10
      lcall writeleft
      LCALL DELAY1
      mov column4,#0
      mov pagef4,#6             ;
      mov code,#20
      lcall writeright2
      LCALL DELAY1
      mov column4,#16
      mov pagef4,#6             ;
      mov code,#21
      lcall writeright2
      LCALL DELAY1
      mov column4,#32
      mov pagef4,#6             ;!
      mov code,#19
      lcall writeright2
      LCALL DELAY1
      RET
DISPLAY:
      mov column2,#24
      mov pagef2,#2
      mov code,48H
      lcall writeright
      mov column2,#32
      mov pagef2,#2
      mov code,55H
      lcall writeright
      mov column2,#40
      mov pagef2,#2             ;.
      mov code,#11
      lcall writeright
      mov column2,#48
      mov pagef2,#2
      mov code,56H
      lcall writeright
     MOV A,29H
     MOV C,40H  ;28的位地址
     RRC A
     MOV C,41H
     RRC A
     MOV C,42H
     RRC A
     MOV C,43H
     RRC A
     MOV 51H,A
     ANL 29H,#0FH
     MOV A,29H
     MOV B,#6
     MUL AB
     MOV 50H,A
     mov a,51H
     mov b,#10
     div ab
     mov 43H,a
     mov 42H,b
     MOV A,50H
     MOV B,#10
     DIV AB
     MOV 41H,A
     MOV 40H,B
      mov column2,#24            ;實際溫度
      mov pagef2,#4
      mov code,43h
      lcall writeright
      mov column2,#32
      mov pagef2,#4
      mov code,42h
      lcall writeright
      mov column2,#40
      mov pagef2,#4             ;.
      mov code,#11
      lcall writeright
      mov column2,#48
       mov pagef2,#4
      mov code,41h
      lcall writeright
      RET
;***********************DS18B20復位初始化子程序***********
INIT_1820:      
     SETB P3.1
     NOP
     CLR P3.1;主機發出延時537微秒的復位低脈沖
     MOV R1,#3
TSR1: MOV R0,#107
     DJNZ R0,$
     DJNZ R1,TSR1
     SETB P3.1       ;然后拉高數據線
     NOP
     NOP
     NOP
     MOV R0,#25H
TSR2: JNB P3.1,TSR3  ;等待DS18B20回應
     DJNZ R0,TSR2
     LJMP TSR4      ; 延時
TSR3: SETB FLAG1     ; 置標志位,表示DS1820存在
     LJMP TSR5
TSR4: CLR FLAG1      ; 清標志位,表示DS1820不存在
     LJMP TSR7
TSR5: MOV R0,#117
TSR6: DJNZ R0,TSR6 ; 時序要求延時一段時間
TSR7: SETB P3.1
     RET    ; 讀出轉換后的溫度值
     
     
     
;***********************讀溫度子程序*****************      
GET_TEMPER:
     SETB P3.1
     LCALL INIT_1820;先復位DS18B20
     JB FLAG1,TSS2
     RET ; 判斷DS1820是否存在?DS18B20不存在則返回
TSS2:
     MOV A,#0CCH ; 跳過ROM匹配
     LCALL WRITE_1820
     MOV A,#44H ; 發出溫度轉換命令
     LCALL WRITE_1820;通過調用顯示子程序實現延時一段時間,等待AD轉換結束,12位的話750微秒
     LCALL DISPLAY
     LCALL INIT_1820;準備讀溫度前先復位
     MOV A,#0CCH ; 跳過ROM匹配
     LCALL WRITE_1820
     MOV A,#0BEH ; 發出讀溫度命令
     LCALL WRITE_1820
     LCALL READ_18200
     RET
;*************************寫命令子程序**********
WRITE_1820:
     MOV R2,#8
     CLR C
WR1: CLR P3.1
     MOV R3,#6
     DJNZ R3,$
     RRC A
     MOV P3.1,C
     MOV R3,#23
     DJNZ R3,$
     SETB P3.1
     NOP
     DJNZ R2,WR1
     SETB P3.1
     RET
;***********************讀命令子程序***********
READ_18200:
     MOV R4,#2
     MOV R1,#29H
RE00: MOV R2,#8
RE01: CLR C
     SETB P3.1
     NOP
     NOP
     CLR P3.1
     NOP
     NOP
     NOP
     SETB P3.1
     MOV R3,#9
RE10: DJNZ R3,RE10
     MOV C,P3.1
     MOV R3,#23
RE20: DJNZ R3,RE20
     RRC A
     DJNZ R2,RE01
     MOV @R1,A
     DEC R1
     DJNZ R4,RE00
     RET
;**********************左半屏寫入數字子程序**************8
writeleft:            
mov dptr,#table1
push column
mov cpage,#2
mov ccolumn,#0
mov a,pagef
anl a,#07h
orl a,#0b8h            ;頁地址,0
mov com,a
lcall prm0
mov a,column
anl a,#3fh
orl a,#40h             ;列地址,0
mov com,a
lcall prm0
mov a,code
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp1:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn
mov a,ccolumn
inc dptr
cjne a,#8,lp1
dec cpage
inc pagef
mov a,cpage
jz over1
mov a,pagef
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column
mov a,column
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn,#0
ljmp lp1
over1:
ret
;************右半屏寫入數字子程序*******************
writeright:
mov dptr,#table1
push column2
mov cpage2,#2
mov ccolumn2,#0
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov a,code
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp2:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prr1
inc ccolumn2
mov a,ccolumn2
inc dptr
cjne a,#8,lp2
dec cpage2
inc pagef2
mov a,cpage2
jz over2
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
pop column2
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov ccolumn2,#0
ljmp lp2
over2:
ret
;*****************左半屏寫入漢字子程序*****************
writeleft2:
mov dptr,#table2
push column3
mov cpage3,#2
mov ccolumn3,#0
mov a,pagef3
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
mov a,column3
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov a,code
mov b,#32
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp3:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn3
mov a,ccolumn3
inc dptr
cjne a,#16,lp3
dec cpage3
inc pagef3
mov a,cpage3
jz over3
mov a,pagef3
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column3
mov a,column3
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn3,#0
ljmp lp3
over3:
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
writeright2:  ; 右半屏寫入漢字子程序
mov dptr,#table2
push column4
mov cpage4,#2
mov ccolumn4,#0
mov a,pagef4
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
mov a,column4
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov a,code
mov b,#32
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp4:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prr1
inc ccolumn4
mov a,ccolumn4
inc dptr
cjne a,#16,lp4
dec cpage4
inc pagef4
mov a,cpage4
jz over4
mov a,pagef4
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
pop column4
mov a,column4
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov ccolumn4,#0
ljmp lp4
over4:
ret
;*******************右半屏寫入數字子程序****************
writeleft1:
mov dptr,#table1
push column2
mov cpage2,#2
mov ccolumn2,#0
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov a,code
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp9:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn2
mov a,ccolumn2
inc dptr
cjne a,#8,lp9
dec cpage2
inc pagef2
mov a,cpage2
jz over9
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column2
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn2,#0
ljmp lp9
over9:
ret
;*********************寫指令代碼子程序()*******************
PRM0: CLR CSA
SETB CSB
  CLRrs
SETB rw
PRM01: MOV P1,#0FFH
SETB E
  MOVA,P1
  CLRE
JB  ACC.7,PRM01
  CLRrw
  MOVP1,COM
SETB E
  CLRE
  RET
  
;***********************寫顯示數據子程序()******************
PRM1: CLR CSA
SETB CSB
  CLRrs
SETB rw
PRM11: MOV P1,#0FFH
SETB E
  MOVA,P1
  CLRE
JB  ACC.7,PRM11
SETB rs
  CLRrw
  MOVP1,DAT
SETB E
  CLRE
  RET
;********************寫指令代碼子程序()***************
PRR0: CLR CSB
SETB CSA
  CLRrs
SETB rw
PRR01: MOV P1,#0FFH
SETB E
  MOVA,P1
  CLRE
JB  ACC.7,PRR01
  CLRrw
  MOVP1,COM
SETB E
  CLRE
  RET
  
;************************寫顯示數據子程序()**************
PRR1: CLR CSB
SETB CSA
  CLRrs
SETB rw
PRR11: MOV P1,#0FFH
SETB E
  MOVA,P1
  CLRE
JB  ACC.7,PRR11
SETB rs
  CLRrw
  MOVP1,DAT
SETB E
  CLRE
  RET
  
;*********************LCD12864初始化子程序**************
INT: MOV COM,#0C0H ;設置顯示起始行為第一行
LCALL PRM0
LCALL PRR0
  MOVCOM,#3FH  ;開顯示設置
LCALL PRM0
LCALL PRR0
  RET
  
;**************************LCD12864液晶清屏子程序*****************
CLEAR: MOV R4,#00H
CLEAR1: MOV A,R4
  ORLA,#0B8H
  MOVCOM,A
LCALL PRM0
LCALL PRR0
  MOVCOM,#40H
LCALL PRM0
LCALL PRR0
  MOVR3,#40H
CLEAR2: MOV DAT,#00H
LCALL PRM1
LCALL PRR1
DJNZ R3,CLEAR2
  INCR4
CJNE R4,#08H,CLEAR1
  RET
;***********************延時子程序*************
DELAY: MOV R0,#20
SS:   MOV R1,#20
      DJNZ R1,$
      DJNZ R0,SS
      RET
DELAY1:MOV R0,#5
YY:   MOV R1,#110
QQ:   MOV R2,#200
      DJNZ R2,$
      DJNZ R1,QQ
      DJNZ R0,YY
      RET
table1:
DB   0F0h, 0F8h,  0Ch,  04h
DB   04h,  0Ch, 0F8h, 0F0h        ;0
DB   0Fh,  1Fh,  30h, 20h
DB   20h,  30h,  1Fh, 0Fh
DB   00h,  00h,  08h, 0F8h         ;1
DB   0FCh,  00h,  00h, 00h
DB   00h,  00h,  20h, 3Fh
DB   3Fh,  20h,  00h, 00h
DB 30h,  38h,  0Ch, 04h
DB 04h,  0Ch, 0F8h, 0F0h
DB 20h,  30h,  38h, 2Ch          ;2
DB 26h,  23h,  21h, 38h
DB 10h,  18h,  0Ch, 84h
DB  84h, 0CCh,  78h,  30h
DB  08h,  18h,  30h, 20h
DB  20h,  31h,  1Fh, 0Eh         ;3
DB 00h, 0C0h,  70h, 18h
DB 0FCh, 0FEh,  00h,  00h
DB  07h,  05h,  04h, 24h
DB  3Fh,  3Fh,  24h, 04h          ;4
DB 0FCh, 0FCh, 0C4h,  44h
DB  44h, 0C4h,  84h,  04h
DB   08h,  18h,  30h, 20h
DB  20h,  30h,  1Fh, 0Fh          ;5
DB 0F0h, 0F8h,  8Ch,  44h
DB  44h, 0CCh,  98h,  10h
DB  0Fh,  1Fh,  30h, 20h
DB  20h,  30h,  1Fh, 0Fh          ;6
DB   1Ch,  0Ch,  0Ch, 0Ch
DB 0CCh, 0ECh,  3Ch,  1Ch
DB   00h,  00h,  3Ch,  3Fh
DB  03h,  00h,  00h, 00h         ;7
DB   30h,  78h, 0CCh,  84h
DB  84h, 0CCh,  78h,  30h
DB 0Eh,  1Fh,  31h, 20h
DB  20h,  31h,  1Fh, 0Eh          ;8
DB 0F0h, 0F8h,  0Ch,  04h
DB  04h,  0Ch, 0F8h, 0F0h
DB  08h,  19h,  33h, 22h
DB  22h,  33h,  1Fh, 0Fh         ;9
DB  00h,  00h,  00h, 00h,  00h,  00h, 00h,  00h
DB  00h,  00h,  33h, 33h,  00h,  00h, 00h,  00h   ;: 10
DB 00H,00H,00H,00H,00H,00H,00H,00H               ; 11  .
DB 00H,00H,30H,30H,00H,00H,00H,00H
DB  00h,  00h,  00h,  00h,  00h, 00h,  00h,  00h
DB  00h,  00h,  00h, 00h,  00h,  00h, 00h,  00h   ; 12
DB  80H,  80H,  80H, 80H,  80H,  80H, 80H, 80H,
DB  00H,  00H,  00H, 00H,  00H,  00H, 00H, 00H     ; 13
table2:
DB  10h,  22h,  64h, 0Ch,  80h,  00h, 0FEh, 92h  ;0
DB  92h,  92h,  92h, 92h, 0FFh,  02h,  00h, 00h
DB  04h,  04h, 0FEh,  01h, 40h,  7Eh,  42h, 42h
DB  7Eh,  42h,  7Eh, 42h,  42h,  7Eh, 40h,  00h
DB  00h,  00h, 0FCh,  24h, 24h,  24h, 0FCh, 0A5h  ;1
DB 0A6h, 0A4h, 0FCh,  24h,  34h, 26h,  04h,  00h
DB  40h,  20h,  9Fh, 80h,  42h,  42h, 26h,  2Ah
DB  12h,  2Ah,  26h, 42h,  40h, 0C0h,  40h, 00h
DB  00h,  00h,  00h, 0F8h, 48h,  4Ch,  4Ah, 49h   ;2
DB  48h,  48h,  48h, 0FCh, 08h,  00h,  00h, 00h
DB  00h,  00h,  00h, 0FFh, 44h,  44h,  44h, 44h
DB  44h,  44h,  44h, 0FFh, 00h,  00h,  00h, 00h
DB  20h,  24h,  24h, 0E4h, 26h,  34h,  20h, 10h   ;3
DB  10h, 0FFh,  10h,  10h, 10h, 0F8h,  10h,  00h
DB  08h,  1Ch,  0Bh, 08h,  08h,  8Ah, 4Ch,  30h
DB  0Ch,  03h,  40h, 80h,  40h,  3Fh, 00h,  00h
DB  10h,  10h,  10h, 0FFh, 90h,  50h,  0Ch, 44h   ;4
DB  24h,  15h,  06h, 14h,  24h,  54h, 0Ch,  00h
DB  02h,  42h,  81h, 7Fh,  00h,  40h, 42h,  42h
DB  42h,  42h,  7Eh, 42h,  43h,  62h, 40h,  00h
DB  40h,  60h,  5Eh, 48h,  48h, 0FFh,  48h, 4Ch   ;5
DB  68h,  40h, 0F8h,  00h, 00h, 0FFh,  00h,  00h
DB  00h,  00h,  3Fh, 01h,  01h, 0FFh,  11h, 21h
DB  1Fh,  00h,  07h, 40h,  80h,  7Fh, 00h,  00h
DB  00h,  02h,  22h, 22h,  32h,  2Eh, 0A2h, 62h   ;6
DB  22h,  22h,  91h, 09h,  01h,  00h, 00h,  00h
DB  00h,  00h,  42h, 22h,  1Ah,  43h, 82h,  7Eh
DB  02h,  02h,  0Ah, 13h,  66h,  00h, 00h,  00h
DB  20h,  30h, 0ACh,  63h, 30h,  88h, 0C8h, 0A8h   ;7
DB  99h,  8Eh,  88h, 0A8h, 0CCh,  88h, 00h,  00h
DB  22h,  67h,  22h, 12h,  92h,  40h, 30h,  0Fh
DB  00h,  00h,  3Fh, 40h,  40h,  41h, 70h,  00h
DB  40h,  40h,  42h, 0CCh, 00h,  40h, 0A0h,  9Fh  ;8
DB  81h,  81h,  81h, 9Fh, 0A0h,  20h,  20h, 00h
DB  00h,  00h,  00h, 7Fh, 0A0h,  90h,  40h, 43h
DB  2Ch,  10h,  28h, 26h,  41h, 0C0h,  40h, 00h
DB  00h,  10h,  17h, 0D5h, 55h,  57h,  55h, 7Dh  ;9
DB  55h,  57h,  55h, 0D5h, 17h,  10h,  00h, 00h
DB  40h,  40h,  40h, 7Fh,  55h,  55h, 55h,  55h
DB  55h,  55h,  55h, 7Fh,  40h,  60h, 40h,  00h
DB  10h,  0Ch,  04h, 44h,  8Ch,  94h, 35h,  06h  ;10
DB 0F4h,  04h,  04h, 04h,  04h,  14h, 0Ch,  00h
DB  02h,  82h,  82h, 42h,  42h,  23h, 12h,  0Eh
DB  03h,  0Ah,  12h, 22h,  42h, 0C3h,  02h, 00h
DB  00h, 0FEh,  02h,  22h, 0DAh, 06h,  40h,  42h ;11
DB  42h,  42h, 0C2h,  42h, 43h,  62h,  40h, 00h
DB  00h, 0FFh,  08h,  10h, 08h,  07h,  10h, 08h
DB  46h,  80h,  7Fh, 00h,  02h,  04h, 18h,  00h
DB   00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h,         ;12 空白
DB   00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB   00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB   00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB  00h,  08h,  30h, 00h, 0FFh,  20h,  20h, 20h    ;13
DB  20h, 0FFh,  20h,  22h, 24h,  30h,  20h, 00h
DB  08h,  0Ch,  02h,  01h,0FFh,  40h,  20h, 1Ch
DB  03h,  00h,  03h, 0Ch,  30h,  60h, 20h,  00h
DB  04h,  04h,  84h, 84h,  44h,  24h, 54h,  8Fh   ;14
DB  14h,  24h,  44h, 44h,  84h,  86h, 84h,  00h
DB  01h,  21h,  1Ch, 00h,  3Ch,  40h, 42h,  4Ch
DB  40h,  40h,  70h, 04h,  08h,  31h, 00h,  00h
DB  10h,  10h,  10h, 0FFh, 10h,  10h, 0F8h,  10h   ;15
DB  00h, 0F8h,  08h,  08h, 08h, 0FCh,  08h,  00h
DB  40h,  20h,  1Eh, 01h,  20h,  40h, 3Fh,  00h
DB  00h,  7Fh,  20h, 20h,  20h,  7Fh, 00h,  00h
DB  00h,  88h,  88h, 48h, 0FFh,  48h,  28h, 08h    ;16
DB  48h, 0FFh,  08h,  08h, 0FCh, 08h,  00h,  00h
DB  80h,  60h,  04h, 08h,  27h, 0C0h,  08h, 04h
DB  23h, 0C0h,  01h,  00h, 27h,  48h, 0C6h,  00h
DB  00h, 0FEh,  02h,  22h, 0DAh, 06h,  88h,  44h   ;17
DB  57h, 0A4h,  54h,  4Ch, 84h,  80h,  80h, 00h
DB  00h, 0FFh,  08h,  10h, 08h,  07h,  10h, 1Eh
DB  12h, 0FFh,  12h,  12h, 18h,  11h,  00h, 00h
DB  00h,  00h,  00h, 00h,  00h,  00h, 00h,  00h   ;18 :
DB  00h,  00h,  00h, 00h,  00h,  00h, 00h,  00h
DB  00h,  00h,  33h, 33h,  00h,  00h, 00h,  00h
DB  00h,  00h,  00h, 00h,  00h,  00h, 00h,  00h
DB  00h,  00h,  00h, 00h,  00h,  00h, 1Ch, 0FEh   ;19 !
DB 0FEh,  1Ch,  00h, 00h,  00h,  00h, 00h,  00h
DB  00h,  00h,  00h,  00h,  00h, 00h,  00h,  33h
DB  33h,  00h,  00h, 00h,  00h,  00h, 00h,  00h
DB  00h,  80h,  60h, 0F8h, 07h,  00h,  7Eh, 22h   ;20
DB  22h, 0E2h,  22h,  22h, 3Fh,  82h,  00h, 00h
DB  01h,  00h,  00h, 0FFh, 41h,  21h,  11h, 09h
DB  05h, 0FFh,  05h,  09h, 31h,  61h,  21h, 00h
DB  10h,  10h,  10h, 0FFh, 90
h, 50h,  48h,  48h   ;21
DB  48h,  7Fh,  48h, 0CCh, 68h,  40h,  00h, 00h
DB  02h,  42h,  81h, 7Fh,  00h,  02h, 06h,  1Ah
DB  02h,  42h,  82h, 7Fh,  02h,  03h, 02h,  00h
END

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表