📄 lcd.c
字号:
TAN:DO;/* 治疗仪 SENSOR FOR TMP04 2001/8/25*/
$INCLUDE (REG52.DCL)
DECLARE VAR LITERALLY 'DECLARE';
VAR BUF(120) BYTE PUBLIC AT(80H) IDATA; /* 中文显示缓冲区 */
VAR ZBUF(8) WORD PUBLIC;/* 数据显示缓冲区 */
VAR DI WORD PUBLIC; /* 传感器缓冲T2 sensor value buf */
VAR DIH BYTE PUBLIC AT(.DI);
VAR DIL BYTE PUBLIC AT(.DI+1);
VAR (ADR,TT,CI)WORD PUBLIC AT(0FAH) IDATA; /* 显示指针,传感器缓冲T1 */
VAR (INA,INB,GUNWEI,RUN,DD,RUNM,BP,ER,AM,AP) BYTE PUBLIC;
/*50毫秒计数,脉冲计数,光标位置,运行标置,运行:秒-分单元, 脉冲输出标记,运行脉冲间隔(调制脉冲) */
VAR ADRH BYTE PUBLIC AT(.ADR) IDATA;
VAR ADRL BYTE PUBLIC AT(.ADR+1) IDATA;
VAR CIH BYTE PUBLIC AT(.CI) IDATA;
VAR CIL BYTE PUBLIC AT(.CI+1) IDATA;
VAR TTH BYTE PUBLIC AT(.TT) IDATA;
VAR TTL BYTE PUBLIC AT(.TT+1) IDATA;
VAR (AA,BB,CC,DAT1,DAT2,COM) BYTE PUBLIC;/* 键值,第一参数,第二参数,指令 */
VAR (SWEND,STIME,SFREQ,SMODE,RESET,WORK) BYTE PUBLIC;/*温度、时间、频率、模式标记*/
VAR OLED BYTE PUBLIC; /* LED灯输出缓冲 */
VAR KEYPORT BYTE PUBLIC AT(9C00H) AUXILIARY;/* 键盘输入口 */
VAR OULED BYTE PUBLIC AT(9400H) AUXILIARY; /* LED灯输出口,高有效 */
VAR OULCD BYTE PUBLIC AT(9000H) AUXILIARY; /* LCD输出数据口 */
VAR IND BYTE PUBLIC AT(9100H) AUXILIARY; /* LCD输出命令口 */
VAR EEBUF BYTE PUBLIC; /* EEPROM用缓冲区 */
VAR EE(20) BYTE PUBLIC; /* EEPROM:EE(0)写或读字节数,EE(1...)数据 */
VAR RE BIT PUBLIC;
STUS:PROCEDURE;/* LCD状态输入子程序1 */
VAR STU BYTE;
ST1:STU=IND;/* 输入LCD状态 */
STU=STU AND 03H;
IF STU <>03H THEN GOTO ST1;/* 允许写,准备好 */
END STUS;
STUS1:PROCEDURE; /* LCD状态输入子程序2 */
VAR STUU BYTE;
ST2:STUU=IND;/* 输入LCD状态 */
STUU=STUU AND 08H;
IF STUU=0 THEN GOTO ST2;/* 允许自动写,准备好 */
END STUS1;
OUT1:PROCEDURE;/* LCD输出参数和指令,AA=1输出1个参数,AA=2无参数,其它2个参数 */
DISABLE;
IF AA=2 THEN GOTO OU2;
IF AA=1 THEN GOTO OU1;
CALL STUS;
OULCD=DAT1; /* 输出参数1 */
OU1:CALL STUS;
OULCD=DAT2; /* 输出参数2 */
OU2:CALL STUS;
IND=COM; /* 输出指令码 */
ENABLE;
END OUT1;
INI:PROCEDURE;/* LCD初始化 */
AA=2;
COM=0A7H;
CALL OUT1;
AA=0;
DAT1=0; /* 低8位地址 */
DAT2=0; /* 高8位地址 */
COM=40H;
CALL OUT1;/* 图形区首址 */
DAT1=20H; /* 低8位地址 */
DAT2=0; /* 高8位地址 */
COM=41H;
CALL OUT1;/* 图形区首址 */
DAT1=00H; /* 图形区宽度,字节数/行 */
DAT2=08H; /* 08H */
COM=42H; /* 图形区宽度 */
CALL OUT1;
DAT1=20H; /* 图形区宽度,字节数/行 */
DAT2=00;
COM=43H; /* 图形区宽度 */
CALL OUT1;
CALL STUS;
IND=0A7H;
CALL STUS;
IND=80H;
CALL STUS;
IND=9FH;/* 9CH */
AA=0;
DAT1=15;/* 光标指针水平位置 */
DAT2=15; /* 光标指针垂直位置 */
COM=21H;
CALL OUT1;
END INI;
CLERAM:PROCEDURE;/* LCD清屏幕 */
DAT1=00H;
DAT2=00H;
COM=24H;
CALL OUT1;
CALL STUS;
IND=0B0H;
DO ADR=0 TO 2000h;
CALL STUS1;
OULCD=00H;
END;
CALL STUS;
IND=0B2H;
END CLERAM;
DISPLAY:PROCEDURE; /* 显示程序,显示 */
VAR X(30) STRUCTURE (Y(32) BYTE) CONSTANT/*显示字模矩阵,X=代码编号,Y=字模*/
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/* 0 NULL*/
10H,10H,57H,3AH,13H,0FEH,13H,32H, 3BH,56H,53H,93H,15H,15H,19H,11H,/* 1糖 */
40H,24H,0FEH,20H,0FCH,24H,0FEH,24H,0FCH,20H,0FCH,04H,004H,04H,0FCH,04H,
00H,3FH,20H,20H,3FH,20H,20H,2EH,22H,22H,24H,24H,48H,50H,82H,001H,/* 2尿 */
04H,0FEH,04H,04H,0FCH,84H,80H,0A4H,0A8H,0B0H,0A0H,90H,8EH,84H,80H,00H,
00H,00H,1FH,10H,90H,57H,50H,10H,37H,54H,94H,14H,25H,24H,44H,04H,/* 3病 */
80H,44H,0FEH,00H,08H,0FCH,40H,44H,0FEH,44H,44H,0A4H,14H,04H,14H,08H,
00H,40H,31H,11H,82H,67H,20H,08H,13H,22H,0E2H,22H,22H,22H,23H,22H,/* 4治 */
80H,80H,00H,10H,08H,0FCH,00H,08H,0FCH,08H,08H,08H,08H,08H,0F8H,08H,
01H,00H,1FH,10H,90H,57H,50H,10H,30H,50H,0D0H,10H,20H,22H,41H,00H,/* 5疗 */
00H,84H,0FEH,00H,00H,0F8H,10H,20H,40H,40H,40H,40H,40H,40H,40H,80H,
08H,08H,08H,12H,12H,32H,51H,91H,10H,10H,10H,10H,11H,12H,14H,18H,/* 6仪 */
00H,80H,64H,24H,04H,08H,08H,10H,90H,0A0H,40H,0A0H,10H,08H,0EH,04H,
02H,01H,7FH,48H,86H,02H,10H,0CH,04H,0FFH,01H,01H,02H,04H,18H,60H,/* 7实 */
00H,00H,0FEH,02H,84H,80H,80H,80H,84H,0FEH,00H,40H,20H,10H,0CH,04H,
00H,7DH,44H,48H,48H,50H,4BH,48H,44H,44H,44H,69H,52H,40H,40H,40H,/* 8际 */
08H,0FCH,00H,00H,00H,04H,0FEH,20H,20H,0A8H,0A4H,22H,22H,20H,0A0H,40H,
00H,43H,32H,12H,83H,62H,22H,0BH,10H,27H,0E4H,24H,24H,24H,2FH,20H,/* 9温 */
08H,0FCH,08H,08H,0F8H,08H,08H,0F8H,0H,0FCH,0A4H,0A4H,0A4H,0A4H,0FEH,0H,
01H,00H,3FH,22H,22H,3FH,22H,23H,20H,2FH,22H,21H,20H,43H,8CH,30H,/* 10度 */
00H,84H,0FEH,20H,28H,0FCH,20H,0E0H,00H,0F0H,20H,40H,80H,60H,1EH,04H,
00H,43H,30H,10H,00H,07H,0F0H,10H,11H,11H,12H,17H,10H,28H,47H,00H,/* 11运 */
10H,0F8H,00H,00H,08H,0FCH,80H,80H,00H,20H,10H,0F8H,08H,06H,0FCH,00H,
08H,0BH,10H,20H,40H,08H,17H,30H,50H,90H,10H,10H,10H,10H,10H,10H,/* 12行 */
08H,0FCH,00H,0H,00H,04H,0FEH,10H,10H,10H,10H,10H,10H,10H,50H,20H,
00H,04H,7EH,44H,47H,44H,44H,7CH,44H,44H,44H,44H,7CH,44H,00H,00H,/* 13时 */
08H,08H,08H,08H,0FEH,08H,08H,88H,48H,48H,08H,08H,008H,48H,28H,10H,
20H,1BH,08H,40H,4FH,48H,48H,48H,4FH,48H,48H,48H,4FH,48H,40H,40H,/* 14间 */
04H,0FEH,04H,24H,0F4H,24H,24H,24H,0E4H,24H,24H,24H,0E4H,24H,14H,08H,
10H,13H,54H,5EH,51H,55H,0FFH,11H,55H,55H,55H,95H,08H,10H,20H,43H,/* 15频 */
04H,0FEH,20H,44H,0FEH,04H,24H,24H,24H,24H,24H,24H,20H,50H,8CH,04H,
02H,01H,7FH,001H,42H,27H,11H,22H,4FH,01H,01H,0FFH,01H,01H,01H,01H,/* 16率*/
00H,08H,0FCH,00H,44H,88H,10H,48H,0E4H,20H,04H,0FEH,00H,00H,00H,00H,
11H,11H,1FH,11H,0FDH,13H,32H,3BH,56H,53H,90H,1FH,10H,10H,11H,16H,/* 17模 */
10H,14H,0FEH,10H,18H,0FCH,08H,0F8H,08H,0F8H,40H,0FEH,40H,0B0H,0EH,04H,
00H,00H,00H,00H,0FFH,00H,00H,3EH,08H,08H,08H,09H,00EH,70H,20H,00H,/* 18式 */
80H,0A0H,90H,84H,0FEH,80H,80H,80H,80H,40H,40H,20H,22H,12H,0AH,04H,
01H,21H,11H,11H,01H,02H,0F4H,13H,11H,11H,10H,10H,14H,18H,13H,0CH,/* 19设 */
0F0H,10H,10H,10H,10H,0EH,00H,0F8H,08H,10H,90H,0A0H,40H,0B0H,0EH,04H,
02H,01H,7FH,40H,80H,1FH,01H,01H,11H,11H,11H,11H,11H,29H,47H,80H,/* 20定 */
00H,00H,0FEH,02H,24H,0F0H,00H,00H,20H,0F0H,00H,00H,00H,06H,0FCH,00H,
00H,04H,04H,08H,08H,10H,20H,4FH,84H,04H,04H,04H,04H,08H,11H,20H,/* 21分 */
80H,80H,40H,40H,20H,10H,08H,0EEH,24H,20H,20H,20H,20H,20H,40H,80H,
08H,08H,7EH,08H,08H,0FFH,14H,14H,36H,75H,94H,14H,14H,14H,24H,4DH,/* 22赫 */
20H,28H,0FCH,20H,024H,0FEH,50H,50H,0D8H,56H,52H,50H,50H,50H,90H,30H,
00H,00H,7FH,01H,001H,01H,01H,01H,01H,01H,01H,01H,001H,0FFH,0H,00H,/* 23工 */
00H,08H,0FCH,0H,000H,00H,00H,00H,00H,00H,00H,00H,04H,0FEH,00H,00H,
09H,09H,09H,11H,12H,32H,54H,98H,10H,10H,10H,10H,10H,10H,10H,10H,/* 24作 */
00H,00H,04H,0FEH,80H,80H,90H,0F8H,80H,80H,88H,0FCH,80H,80H,80H,80H,
08H,08H,08H,48H,28H,2FH,08H,08H,18H,28H,49H,0C9H,9H,0AH,0CH,08H,/* 25状 */
40H,50H,48H,40H,44H,0FEH,40H,40H,0A0H,0A0H,10H,10H,8H,0EH,04H,00H,
01H,01H,0FFH,01H,02H,04H,0AH,31H,0C0H,02H,29H,29H,28H,48H,07H,00H,/* 26态 */
00H,04H,0FEH,00H,80H,040H,30H,0EH,04H,00H,10H,08H,24H,24H,0E0H,00H,
10H,7EH,10H,28H,7EH,08H,0FEH,09H,0AH,00H,1FH,10H,1FH,10H,1FH,10H,/* 27暂 */
0CH,0F0H,80H,84H,0FEH,90H,90H,10H,10H,10H,0F8H,10H,0F0H,10H,0F0H,10H,
10H,10H,17H,20H,23H,62H,0A3H,20H,2FH,28H,33H,20H,20H,20H,21H,20H,/* 28停 */
80H,48H,0FCH,0H,0F8H,08H,0F8H,00H,0FEH,02H,0F4H,40H,40H,40H,40H,80H,
01H,01H,01H,11H,11H,11H,11H,11H,11H,11H,11H,11H,11H,11H,0FFH,00H,/* 29=止 */
00H,00H,00H,00H,00H,10H,0F8H,00H,00H,00H,00H,00H,00H,04H,0FEH,00H);
VAR M WORD;
VAR (I,J,K) BYTE;
IF BP=0FFH THEN GOTO DIS2;/* BB>0 为数据刷新 */
IF BP=55H THEN GOTO DIS1;
ADR=0800H;/* 图形区首址 */
M=ADR;
AA=0;
CI=ADR;
DO K=0 TO 6; /* K汉字行数,最多为8行 */
DO I=0 TO 14; /* I 每行汉字符数=15 */
DO J=0 TO 15;/* 1汉字符行数=16 */
DAT1=ADRL;
DAT2=ADRH;
COM=24H; /* 地址指针位置 */
CALL OUT1;
CALL STUS;
OULCD=X(BUF(I+K*15)).Y(J);
CALL STUS;
IND=0C0H; /* 自动写设置 */
CALL STUS;
OULCD=X(BUF(I+K*15)).Y(J+16);
CALL STUS;
IND=0C0H; /* 自动写设置 */
ADR=ADR+20H;
END;
M=M+2;
ADR=M;
END;
CI=CI+512;
ADR=CI;
M=ADR;
END;
DIS1:ADR=1600H; /* */
K=7; /* */
M=ADR; /* */
DO I=0 TO 14; /* I 每行汉字符数=15 */
DO J=0 TO 15;/* 1汉字符行数=16 */
DAT1=ADRL;
DAT2=ADRH;
COM=24H; /* 地址指针位置 */
CALL OUT1;
CALL STUS;
OULCD=X(BUF(I+K*15)).Y(J);
CALL STUS;
IND=0C0H; /* 自动写设置 */
CALL STUS;
OULCD=X(BUF(I+K*15)).Y(J+16);
CALL STUS;
IND=0C0H; /* 自动写设置 */
ADR=ADR+20H;
END;
M=M+2;
ADR=M;
END;
DIS2:CI=168; /* 温度数据显示,ZBUF(0)=实际温度,ZBUF(1)=设定温度 */
DO I=0 TO 1;
AA=0;
DAT1=CIL; /* 低8位地址 */
DAT2=CIH; /* 高8位地址 */
COM=24H;
CALL OUT1;/* 文本区地址 */
AA=1;
DAT2=ZBUF(I)/100+10H; /* 显示码,西文 */
J=DAT2-10H;
COM=0C0H;
CALL OUT1;
DAT2=(ZBUF(I)-J*100)/10+10H;
K=DAT2-10H;
CALL OUT1;
DAT2=0EH; /* 显示码,西文小数点 */
CALL OUT1;
DAT2=(ZBUF(I)-J*100-K*10)+10H;
CALL OUT1;
CI=184;
END; /* 温度数据显示 */
CI=233; /* 时间数据显示,ZBUF(2)=实际时间,ZBUF(3)=设定时间,单位分 */
DO I=2 TO 3;
AA=0;
DAT1=CIL; /* 低8位地址 */
DAT2=CIH; /* 高8位地址 */
COM=24H;
CALL OUT1;/* 文本区地址 */
AA=1;
DAT2=ZBUF(I)/100+10H; /* 显示码=数据+10H,西文 */
J=DAT2-10H;
COM=0C0H;
CALL OUT1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -