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

📄 ylcd128e.asm

📁 LCD12864显示 便携式 电池,压力,电流三输入表 单次读数 1240E 各通道增益不同 非线性自校准, x5165分配:0-0708H ( 25组计量数据 ) 校准 07d8h--07ec
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;********************************************************************************************************
;LCD12864显示  便携式  电池,压力,电流三输入表   单次读数    1240E  各通道增益不同  非线性自校准,
;x5165分配:0-0708H ( 25组计量数据;) 校准 07d8h--07ec;  (21单元分区)对应C8-dbh
;     组数07f0-07f1H; 计量开关07f2H  (不清除), 数据格式07F3H;  读电流零值0f74h-07f6h
;压力自动量程编号  ; < > 键显示电池/量程,     ;按 "+" "-"键电流清零
;2006.2.21    ;增加即时通讯*******************
;******************************************************************************************************
                             ;P0----BUS
SDI         BIT      P1.0    ;1240e
SCLK        BIT      P1.2
SDO         BIT      P1.1
DRDY        BIT      P1.3
;************************************************************
CS         BIT      P1.4     ;x5165 ;1
SOUT       BIT      P1.5            ;2
SIN        BIT      P1.6            ;5
SLK        BIT      P1.7            ;6
;***********************************************************
;控制IC Ks0108     模块 12864E   公司:上海磊志 台湾晶彩
_CS1      BIT  P2.0        ;左屏片选  低有效
_CS2      BIT  P2.1        ;右屏
_RST      BIT  P2.2        ;复位
R_W       BIT  P2.3        ;
D_I       BIT  P2.4        ;
E         BIT  P2.5        ;
;*********************************************************
KEY01       BIT      P2.6      ;KEY
KEY02       BIT      P2.7
SPIKE       BIT      P3.2      ;******
KEY0        BIT      P3.3
KEY1        BIT      P3.4
KEY2        BIT      P3.5      ;
KEY3        BIT      P3.6
KEY4        BIT      P3.7
;********************************可变RAM单元*******************
SWEMIT     BIT      00H      ;=1;要数据
SELdy      BIT      01H      ;电池位 +++++++++
SELI       BIT      02H      ;电流位
SELP       BIT      03H      ;压力位
KEY_DELAY  bit      04h      ;键扫描
volt_low     BIT      05H     ;=1,电池欠压显示
disp_batery  bit      06h     ;显示电压位  ;电池测量显示 ---双键操作
POL        BIT      07H      ;=1,A/D是负数输入
sel_ps     BIT      08H      ;选择压力表计量
SETHAO     BIT      09H      ;=1,表号已设置
OVERBIT    BIT      0aH      ;ad取样过载
negt_bit   bit      0bh      ;=1,计算当前误差为负
set_calib   bit     0ch      ;=1,有计量补偿。
BITHAO     BIT      0dH      ;=1,表号输入
DISPMODE    bit     0eh     ;=1,清零模式显示
bit_scan   bit      0fh     ;=1,数据输入扫描结束
bit_cal    bit      10h     ;计量修正输入结束
bit_flash  BIT      11H     ;输入闪烁位
WAIT_DY    BIT      12H     ;电池等待
                       ;22h
              ;26h  -27h      rxt  use
DIV0    EQU     29H     ;单极性十进制数据组
DIV1    EQU     2AH     ;
DIV2    EQU     2BH     ;
DIV3    EQU     2CH     ;
SUBCT	EQU	2DH

ram30	EQU	30H   ;a/d 采样输出 hight
ram31	EQU	31H
ram32	EQU	32H   ;d/a   low
ram33	EQU	33H   ;bcd   low

adhexh          equ     34h   ;a/d hex
adhexm          equ     35h   ;
adhexl          equ     36h   ;
save01          equ     37h   ;保存显示结果二进制 高位
save02          equ     38h   ;   ?????????????????/
save03          equ     39h   ;
savad_bh        equ     3ah   ;清零保存---取样原值高位
savad_bm        equ     3bh
savad_bl        equ     3ch
 RAM65          EQU     3dH   ;变换
ram40    equ     40h     ;显示代码起始地址
ram41   EQU     41H     ;A/D结果十进制数据组    低位
ram42   EQU     42H     ;
ram43   EQU     43H     ;
ram44   EQU     44H     ;x10    用             高位
ram45	EQU	45H   ;计算备份    数据变换
ram46	EQU	46H   ;
ram47	EQU	47H   ;
ram48	EQU	48H   ;

RAM5	EQU	4dH       ;delay  time  unit
RAM6	EQU	4eH       ;delay  time  unit
RAM7	EQU	4fH       ;delay  time  unit

RAM50     EQU     50H   ;0计算      ;十进制数据处理
RAM51     EQU     51H   ;
RAM52     EQU     52H   ;
RAM53     EQU     53H   ;
RAM54     EQU     54H   ;
RAM55     EQU     55H   ;

RAM58     EQU     56H   ; ;58-59H 电池欠压处理
RAM59     EQU     57H   ;
Dly_Time  equ     58h   ;延时单元
;***********************固定RAM单元*********************************************
                ;5d-5fh    电流取样保存
;RAM60   EQU     60H   ;电流清零数据
;RAM61   EQU     61H   ;
;RAM62   EQU     62H   ;
RAM63    EQU    63H   ;即时通讯求和
RAMY4   EQU     64H     ;压力非线性补偿十进制数
INTNUMB   EQU   65H      ;整数位数
FULL_NO   EQU   66H       ;按量程编号

ZUSHU   EQU     67H      ;记录表号组数     ROM  (FDH)
ZUHAO   EQU     68H      ;数据序号0-21  第一个是表号ROM(FEH)
CALB    EQU     69H      ;计量选择
DTMODE  EQU     6aH      ;计量数据格式(最后开机)
x       equ     6bh     ;水平坐标0-64(0-128)
y       equ     6ch     ;垂直坐标 0-7
Pix     equ     6dh     ;画线或清屏点阵单元
map_no  equ     6eh     ;图象编号单元
hz_with  equ    6fh     ;显示字宽0-4,1-8;2-16
adhex70h   equ     70h     ;压力 a/d取样数据备份   h(清零显示计算)
adhex71h   equ     71h     ;
adhex72h   equ     72h     ;             l
yy_back0    equ     73h     ;压力十进制备份 H
yy_back1    equ     74h     ;压力十进制备份
yy_back2    equ     75h     ;压力十进制备份
dy_back0   equ     76h     ;电池十进制备份 H
dy_back1   equ     77h     ;电池十进制备份
dy_back2   equ     78h     ;电池十进制备份
i_back0     equ      79h      ;电流十进制备份 H
i_back1     equ      7ah      ;电流十进制备份
i_back2     equ      7bh      ;电流十进制备份
YHEX7CH     equ     7Ch     ;压力清零后显示值HEX----(计算线性补偿)
YHEX7DH     equ     7Dh     ;压力清零后显示值HEX
YHEX7EH     equ     7Eh     ;压力清零后显示值HEX
errram      equ      7Fh    ;计量误差单元
CALIB_DATA  EQU     0c8H    ;计量校验数据16字节首地址
;*******************************************************************************************************************
	ORG	0000H
	LJMP	BEGIN0
	ORG	023H     ;si 串行中断
	PUSH	PSW
	PUSH	ACC
        LJMP	RXT
         ORG	0050H
BEGIN0: MOV	SP,#0e0h
        MOV     PSW,#00H
        MOV	TMOD,#21H    ;T0为定时;T1为波特率
	MOV	TCON,#00
	MOV	TH1,#0FaH    ;f4h=2400;fah=4800
	MOV	TL1,#0FaH
	MOV	SCON,#0D0H   ;方式3,8位方式,容许接收
	MOV	PCON,#00     ;波特率不倍增
	MOV	TH0,#0E3H
	MOV	TL0,#3DH
	MOV	IE,#80H     ;EA,开启
	MOV	IP,#00H
        mov     p0,#0ffh    ;reset
        mov     p1,#0ffh
        mov     p2,#0ffh
        mov     p3,#0ffh
	MOV	R2,#0fbH     ;清05H-ffH
	MOV	R0,#05H
	CLR	A
BEGIN1: MOV	@R0,A
	INC	R0
	DJNZ	R2,BEGIN1
; 序号       量程     量程编号NO       USE
;  0       1.6KP         10H
;  1       16KP          21H
;  2       25KP          22H
;  3       60kp          23H
;  4       100kp         34H
;  5       160kp         35H
;  6       200kp         36H
;  7       400kp         37H
;  8       600kp         38H
;  9       1.6MP         99H     (2.0mp)
;  a       2.5MP         9aH
;  b       6.0MP         9bH
;  c       25MP          AcH
;  d       40MP          AdH
;  e       60MP          AeH
;  f      100mp          bfh
        MOV  FULL_NO,#0ACH     ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        MOV    DPTR,#rang_tb3
        mov     R0,#FULL_NO          ;按量程编号
        MOV     A,@R0
        ANL     A,#0FH
        MOVC   A,@A+DPTR
        MOV    65H,A

chek00: ;LCALL   WRSR         ;写状态 ;开狗1.4S
        MOV    DPH,#07
        MOV    DPL,#0F0H      ;读组数  07F0H--07F2
        mov    r0,#zushu
        mov    r3,#4
        LCALL   READ_65        ;读R3字节结果存@R0
        mov     a,zushu
        cjne    a,#0ffh,chek0a1
        mov    zushu,#00
chek0a1:  mov     a,zuhao
        cjne    a,#0ffh,chek0a2
        mov    zuhao,#00
chek0a2:    MOV    DPH,#07
            MOV    DPL,#0d8H
            MOV    R0,#CALIB_DATA
            MOV    R3,#10H
            LCALL   READ_65
       mov    a,calb      ;0--no,1--use;2--lock
       jz     chek004
       CLR    C
       SUBB   A,#03
       JNC    CHEK004
       setb   set_calib   ;1 AND 2
       sjmp   chek003
chek004:  clr   set_calib  ;不补偿
          MOV    CALB,#0
chek003:  SETB    TR1

        lcall   init1240           ;复位 初始化
        lcall   selfcal       ;自校准偏移和增益
       ; LCALL   REDCC        ;连续读
        lcall   _128Ini        ;lcd初始化
        Lcall   FullCLEAR       ;full screen     22ms
        mov     map_no,#00h
        lcall   dis_map
        mov   Dly_Time,#10   ;10h=2.3s
        lcall  Delayb

            MOV    DPH,#07H      ;读电流零值
            MOV    DPL,#0F4H
            mov    r0,#60H
            mov    r3,#3
            lcall   read_65
           mov    a,60h     ;判断 补偿电流数据
           anl    a,#7fh
           jz     tstii
tstii3:    mov    60h,#0
           mov    61h,#0
           mov    62h,#0
           sjmp   start
tstii:     mov    a,61h
           cjne   a,#64h,tstii2
tstii2:    jc     start          ;零位小于100个字正常,大于100错误
           sjmp   tstii3
START:     Lcall   FullCLEAR
           lcall    fill_range      ;填充压力量程
           mov     map_no,#02h    ; 测量画面
           lcall   dis_map
           SETB    ES
;********************************************************************************************
MAINY:   setb   SELP
         clr    seldy
         clr    seli
         LCALL   SWICH_Y         ;选择输入+++++++++++++++++++++
        mov   Dly_Time,#2
        lcall  Delayb
        lcall  redone      ;only  one   reader
    ;  MOV    30H,#7FH        ;自动量程测试用
    ;  MOV    31H,#0FFH
        LCALL	READADy    ;读数据子程序 (备份) adhex70h
        LCALL   DISPPPY    ;清零计算 ;24位二进制计算,当前值-零位值
        LCALL	DEAL_DATA   ;量程、过载、结果BCD存ram30,  BIN备份到7C-7EH
        LCALL   DISXIAN     ;保存显示结果二进制 到37-39h
nocalib:MOV   A,RAM30       ;显示数据备份到    ;73h--75h
        MOV   YY_BACK0,A
        MOV   A,RAM31
        MOV   YY_BACK1,A
        MOV   A,RAM32
        MOV   YY_BACK2,A
        LCALL   DATA_FILLy     ;填充压力显示数字   ;显示负数
        clr     es
        LCALL    CCOMM      ;即时通讯    *******************************
        setb   es
        JB      SWEMIT,KEY_com0    ;上传吗?
        JB      OVERBIT,OVERY0    ;ad取样过载
        SETB    SPIKE
        lcall   scan
        AJMP    MAINdY
KEY_com0:  LJMP  communi          ;通讯
OVERY0:    CLR   SPIKE          ;压力过载显示
           CLR    OVERBIT
           mov    Dly_Time,#2
           lcall  Delayb
           SETB   SPIKE
           SJMP   MAINDY
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DYBBB0: INC     ram59
        MOV     A,ram59
        CLR     C
        CJNE    A,#10H,MAINDYC    ;10h==14s
MAINDYC:  JC    MAINI0
        CLR     WAIT_DY
        MOV     ram59,#0
        AJMP    MAINDYb
MAINI0: AJMP    MAINI

MAINDY:  JB     disp_batery,MAINDYb  ;电池显示不间断测量
         JB     WAIT_DY,DYBBB0       ;间断测量转
MAINDYb: SETB   WAIT_DY              ;DELAY
         setb   seldy
         clr    SELP
         clr    seli
         LCALL   SWICH_DY         ;选择输入+++++++++++++++++++++
         mov   Dly_Time,#2
         lcall  Delayb
         lcall   scan
         mov   Dly_Time,#1
         lcall  Delayb
          lcall  redone         ;only  one   reader
MDYY:  	LCALL	READAD          ;读数据子程序 (不备份)
        LCALL	DEAL_DATAb       ;单极性数据处理 0-FFFFFFH
        mov    dy_back0,30h     ;数据备份
        mov    dy_back0+1,31h
        mov    dy_back0+2,32h
        lcall   scan
        jnb     volt_low,dyAA   ;不欠压转
        CLR     SPIKE            ;欠压处理
        Lcall   FullCLEAR
        mov     map_no,#01h   ;电池欠压请充电!!!!
        lcall   dis_map
        LCALL   DATA_FILLdy    ;电池填充数字
        mov   Dly_Time,#10
         lcall  Delayb
        setb    SPIKE
        lcall   goout
        ajmp    DISPDY

DYAA:   ;jb      SETHAO,DYAAA         ;进入计量画面不显示电池
        JNB     disp_batery,DYAAA    ;不显示电池转

DISPDY:    mov     x,#00        ;电池显示
           mov     y,#00
           lcall    clear_1h     ;清除1行程序(x,y外值)
           mov     map_no,#16    ; 电压显示行
           lcall   dis_map
           mov    a,76h           ;分解BCD码到51-55H
           mov    51h,a
           MOV    52H,#1DH  ;.
           mov    a,77h
           swap   a
           anl    a,#0fh
           mov    53h,a
           mov    a,77h
           anl    a,#0fh
           mov    54h,a

           mov     x,#40h
           mov     y,#00
           mov     r0,#51h
           mov     r3,#04h
          lcall    FILL_5BIT         ;设定Y,X,r0-显示数据地址,r3-个数
           SJMP    MAINI

DYAAA:     jb      sethao,maini
           mov     x,#00        ;
           mov     y,#00
           lcall    clear_1h     ;清除1行程序(x,y外值)
           mov     map_no,#02h    ; 测量画面
           lcall   dis_map
           lcall    fill_range      ;填充压力量程
           setb    SPIKE
          AJMP    MAINi
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MAINI:   setb   seli
         clr    SELP
         clr    seldy
         LCALL   SWICH_I         ;选择输入+++++++++++++++++++++ 4
         mov   Dly_Time,#2
         lcall  Delayb
         lcall   scan
         mov   Dly_Time,#1
         lcall  Delayb
         lcall  redone      ;only  one   reader
  	LCALL	READAD           ;读数据子程序
         lcall   add_iii        ;电流清零
        LCALL	DEAL_DATA        ;处理数据---十进制ram32-ram4
        mov    i_back0,30h       ;数据备份
        mov    i_back0+1,31h
        mov    i_back0+2,32h

⌨️ 快捷键说明

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