📄 ylcd128e.asm
字号:
;********************************************************************************************************
;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 + -