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

📄 cjtemp.asm

📁 单片机的汉字点阵式液晶显示器显示程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;******************************************************************************
D/I     equ     P1.2                    ;
R/W     equ     P1.3                    ;
E       equ     P1.4                    ;
CS1     equ     P1.0                    ;
CS2     equ     P1.1                    ;
RSTB    equ     P1.6                    ;
counter equ     32h    ;范围计数器,掌握数值长度

hang     equ     33h    ;大循环行变量(页码)
lie      equ     34h    ;大循环行变量(列)
hangc    equ     35h    ;行计数器
liec     equ     36h    ;列计数器

menusel  equ     39h    ;菜单选中标志(底色反色)
dianliuh       equ     50h;
dianliul       equ     51h;;小数点之后的电流数字(BCD码)

vh       equ     52h;
vl       equ     53h;;小数点之后的电压数字(BCD码)
wenduh   equ     54h   ;
wendul   equ     55h   ;;小数点之后的温度数字(BCD码)
timeh    equ      56h
timem    equ      57h   ;;
;******************************************************************************



        ORG     0000H
        aJMP     START                   ;Power ON jump to start address
        
        
        
        
        
        org 0060h
START:  mov   sp,#60h
        lcall sysini
        ;-----------------------
        mov    dptr,#face1
        lcall  all32        
        lcall pause
        lcall pause
        lcall pause
        lcall pause
        
        mov    dptr,#face2
        lcall  all32        
        lcall pause
        lcall pause
        lcall pause
        lcall pause
        mov    menusel,#0feh
        push   menusel
main:   ;-----------------------
        pop    menusel
        inc    menusel
        inc    menusel
        anl    menusel,#07h
        push   menusel
        mov    dptr,#mainmenu
        lcall  all32        
        lcall pause
        lcall pause
        lcall pause
        lcall pause    
        
        ;--------显示格式如下---------------------------------------
        ;电流:XXXmA(I)
        ;电压:X.XXV(voltage)
        ;温度:XX.X℃(wendu)
        ;时间:XX:XX(time)  
        ;-----------------------------------------------------------
        mov    menusel,#0ffh
        
        mov    dianliuh,#06h        
        mov    dianliul,#79h;679mA
        
        mov    vh,#04h
        mov    vl,#98h;4.98V
        
        mov    wenduh,#21h
        mov    wendul,#04h;21.4v
        
        mov    timeh,#14h
        mov    timem,#36h;14:36
        
        ;----------------------显示固定字符
        mov    dptr,#wendutab
        lcall  all32   
        ;---------------------------------
        ;---disp I(left)------------------    
        mov    hang,#0
        mov    lie,#48                 
        mov    a,dianliuh
        lcall  dispdigl
        
        ;---disp I(right)------------------       
        mov    hang,#0
        mov    lie,#0                    
        mov    a,dianliul                
        swap   a
        anl    a,#0fh
        lcall  dispdigr
                
        mov    hang,#0
        mov    lie,#16                
        mov    a,dianliul        
        anl    a,#0fh
        lcall  dispdigr
        ;---------------------------------------
        ;---disp voltage(left)------------------
        mov    hang,#2
        mov    lie,#48                           
        mov    a,vh
        lcall  dispdigl
        ;---disp voltage(right)------------------    
        mov    hang,#2
        mov    lie,#16                       
        mov    a,vl
        swap   a
        anl    a,#0fh
        lcall  dispdigr
        mov    hang,#2
        mov    lie,#32         
        mov    a,vl       
        anl    a,#0fh
        lcall  dispdigr
        ;---------------------------------------
        ;---disp wendu(left)------------------                     
        mov    hang,#4
        mov    lie,#48
        mov    a,wenduh
        swap   a
        anl    a,#0fh
        lcall  dispdigl   
        ;---disp wendu(right)------------------        
        mov    hang,#4
        mov    lie,#0                   
        mov    a,wenduh       
        anl    a,#0fh
        lcall  dispdigr
        mov    hang,#4
        mov    lie,#32         
        mov    a,wendul       
        anl    a,#0fh
        lcall  dispdigr
        ;---------------------------------------
        ;---disp time(left)------------------
        mov    hang,#6
        mov    lie,#48
        mov    a,timeh
        swap   a
        anl    a,#0fh
        lcall  dispdigl
        ;---disp time(right)------------------
        mov    hang,#6
        mov    lie,#0                     
        mov    a,timeh       
        anl    a,#0fh
        lcall  dispdigr
        
        mov    hang,#6
        mov    lie,#32           
        mov    a,timem
        swap   a               
        anl    a,#0fh
        lcall  dispdigr        
        
        mov    hang,#6
        mov    lie,#48
        mov    a,timem                    
        anl    a,#0fh
        lcall  dispdigr        
        lcall pause         
        ;-------------模拟电压的变化过程
        mov   a,vl
        inc   a
        da    a
        mov   vl,a
        ;-------------------------------         
        lcall pause        
        ajmp   main         
        
        
        

;--------系统初始化---------------------
sysini: CLR     D/I
        CLR     R/W
        CLR     E 
        SETB    CS1
        SETB    CS2
        CLR     RSTB;lcd硬件复位
        NOP
        NOP
        NOP
        NOP
        SETB    RSTB
        lCALL    DELAY        
        MOV     A,#00111111B            ;Turn display on
        lCALL    CMDWR1
        lCALL    CMDWR2        
        MOV     A,#11000000B            ;Display start line (0)
        lCALL    CMDWR1
        lCALL    CMDWR2          
        ;-------------
        mov     menusel,#0ffh           
        ret
;----------------------------------------------


;入口参数为ACC(左边显示)        
dispdigl:rl     a    
         mov    dptr,#ptab1
         jmp    @a+dptr        
startm:  nop
         ret
                  

dispdigr:rl     a    
         mov    dptr,#ptab2
         jmp    @a+dptr        
startn:  nop
         ret
;---------------------------------------
ptab1:   ajmp  sub0
         ajmp  sub1
         ajmp  sub2
         ajmp  sub3
         ajmp  sub4
         ajmp  sub5
         ajmp  sub6
         ajmp  sub7
         ajmp  sub8
         ajmp  sub9
        
sub0:  mov    dptr,#dig0   ;设置显示数字表格        
        lcall   bloblx
        ajmp    STARTM
        
sub1:  mov    dptr,#dig1        
        lcall   bloblx
        ajmp    STARTM
        
sub2:  mov    dptr,#dig2        
        lcall   bloblx
        ajmp    STARTM
        
sub3:  mov    dptr,#dig3        
        lcall   bloblx
        ajmp    STARTM
        
sub4:  mov    dptr,#dig4
        lcall   bloblx        
        ajmp    STARTM
        
sub5:  mov    dptr,#dig5
        lcall   bloblx
        ajmp    STARTM
        
sub6:  mov    dptr,#dig6  
        lcall   bloblx
        ajmp    STARTM
        
sub7:  mov    dptr,#dig7
        lcall   bloblx
        ajmp    STARTM
        
sub8:  mov    dptr,#dig8
        lcall   bloblx
        ajmp    STARTM
        
sub9:  mov    dptr,#dig9
        lcall   bloblx
        ajmp    STARTM       

;--------------------------------------------
ptab2:   ajmp  subr0
         ajmp  subr1
         ajmp  subr2
         ajmp  subr3
         ajmp  subr4
         ajmp  subr5
         ajmp  subr6
         ajmp  subr7
         ajmp  subr8
         ajmp  subr9
        
subr0:  mov    dptr,#dig0   ;设置显示数字表格        
        lcall   blobrx
        ajmp    STARTn
        
subr1:  mov    dptr,#dig1        
        lcall   blobrx
        ajmp    STARTn
        
subr2:  mov    dptr,#dig2        
        lcall   blobrx
        ajmp    STARTn
        
subr3:  mov    dptr,#dig3        
        lcall   blobrx
        ajmp    STARTn
        
subr4:  mov    dptr,#dig4
        lcall   blobrx        
        ajmp    STARTn
        
subr5:  mov    dptr,#dig5
        lcall   blobrx
        ajmp    STARTn
        
subr6:  mov    dptr,#dig6  
        lcall   blobrx
        ajmp    STARTn
        
subr7:  mov    dptr,#dig7
        lcall   blobrx
        ajmp    STARTn
        
subr8:  mov    dptr,#dig8
        lcall   blobrx
        ajmp    STARTn
        
subr9:  mov    dptr,#dig9
        lcall   blobrx
        ajmp    STARTn       
       
       
        
        
;------显示32个汉字(满屏)-------
;------输入的参数为1个:表格地址
;---------------------------------
all32:  nop
        mov      hang,#0
        mov      hangc,#04
        mov      lie,#0
        mov      liec,#04         
kkk:    lCALL    datawr1        	
        mov      a,lie
        add      a,#16
        mov      lie,a
        djnz     liec, kkk;cs1 enable
        mov     lie,#0
        mov     liec,#4  
xxx:    lCALL    datawr2        	
        mov      a,lie
        add      a,#16
        mov      lie,a
        djnz     liec,xxx;cs2 enable 
        mov      liec,#4
        mov      lie,#0
        inc      hang
        inc      hang
        djnz     hangc,kkk 
        ret

;--------横向显示8个汉字菜单-----------------------------------
;--------入口参数为hang(1个参数)-----------------------------
;--------------------------------------------------------------
heng8:  nop             ;--------------------
        mov     lie,#00  ;lie为常数(总是从第0列开始显示) 
        mov     liec,#04       
lll:    lCALL    datawr1
        mov      a,lie
        add      a,#16
        mov      lie,a
        djnz     liec, lll;cs1 enable(在左侧第一行显示4个汉字)
        mov     lie,#0
        mov     liec,#4  
rrr:       
        lCALL    datawr2        	
        mov      a,lie
        add      a,#16
        mov      lie,a
        djnz     liec,rrr;cs2 enable 
        ret        

;--------左屏纵向显示8个汉字菜单-----------------------------------
;--------入口参数为lie(1个参数)-----------------------------

⌨️ 快捷键说明

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