?? 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 + -