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

📄 lcd.c

📁 C51 DOS/WINDOWS下的MCS51系列液晶显示器(LCD)的C驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
                                  OULED=OLED;
                                  AA=0;   /* 光标回原位 */
                                  DAT1=15;/* 光标指针水平位置 */
                                  DAT2=15; /* 光标指针垂直位置 */
                                  COM=21H;
                                  CALL OUT1;
                                 END;
                            ELSE DO;/* 温度设置  */
                                 OLED=OLED AND 0C0H;/* 开温度设置灯 */
                                 OLED=OLED OR 01H;
                                 OULED=OLED;
                                 SWEND=1; /* 建立温度标记 */
                                 STIME=0; /* 取消时间设置标记 */
                                 SFREQ=0; /* 取消频率设置标记 */
                                 SMODE=0; /* 取消模式设置标记 */
                                 AA=0;
                                 DAT1=GUNWEI;/* 27光标指针水平位置 */
                                 DAT2=5; /* 光标指针垂直位置 */
                                 COM=21H;/* 光标移设置温度位置 */
                                 CALL OUT1;
                                 END;
                 END;

    IF CC=2 THEN DO;/* 设定时间 */
                 IF STIME=1 THEN DO; 
                                  GUNWEI=27; /* 光标回原位 */
                                  STIME=0; /* 取消时间设置标记 */
                                  OLED=OLED AND 0FDH;
                                  OULED=OLED;/* 关时间设置灯 */
                                  AA=0;
                                  DAT1=15; /* 光标指针水平位置 */
                                  DAT2=15; /* 光标指针垂直位置 */
                                  COM=21H; /* 光标回原位 */
                                  CALL OUT1;
                                 END;
                            ELSE DO;/* 时间设置 */
                                 OLED=OLED AND 0C0H;
                                 OLED=OLED OR 02H;/* 开时间设置灯 */
                                 OULED=OLED;
                                 SWEND=0; /* 取消温度标记 */
                                 STIME=1; /* 建立时间标记 */
                                 SFREQ=0; /* 取消频率标记 */
                                 SMODE=0; /* 取消模式标记 */
                                 AA=0;
                                 IF GUNWEI<25 THEN GUNWEI=27;
                                 DAT1=GUNWEI;/* 27光标指针水平位置 */
                                 DAT2=7; /* 光标指针垂直位置 */
                                 COM=21H;/* 光标移设置时间位置 */
                                 CALL OUT1;
                                 END;
                 END;

    IF CC=3 THEN DO; /* 频率设置 */
                 IF SFREQ=1 THEN DO;
                                  GUNWEI=27;/* 光标回原位 */
                                  SFREQ=0;/* 关频率设置标记  */
                                  OLED=OLED AND 0FBH; /* 关频率设置标记灯 */
                                  OULED=OLED;
                                  AA=0;
                                  DAT1=15; /* 光标指针水平位置 */
                                  DAT2=15; /* 光标指针垂直位置 */
                                  COM=21H; /* 光标回原位 */
                                  CALL OUT1;
                                 END;
                            ELSE DO;/* 频率设置 */
                                 OLED=OLED AND 0C0H;
                                 OLED=OLED OR 04H;/* 开频率设置灯 */
                                 OULED=OLED;
                                 SWEND=0; /* 取消温度标记 */
                                 STIME=0; /* 取消时间标记 */
                                 SFREQ=1; /* 建立频率标记 */
                                 SMODE=0; /* 取消模式标记 */
                                 AA=0;
                                 DAT1=GUNWEI;/* 27光标指针水平位置 */
                                 DAT2=9; /* 光标指针垂直位置 */
                                 COM=21H;/* 光标移频率设置 */ 
                                 CALL OUT1;
                                 END;
                 END;

    IF CC=4 THEN DO;
                 IF SMODE=1 THEN DO;/* 关模式设置 */
                                  GUNWEI=27; /* 光标回原位 */
                                  SMODE=0;
                                  OLED=OLED AND 0F7H; /* 关模式设置灯 */
                                  OULED=OLED;
                                  AA=0;
                                  DAT1=15; /* 光标指针水平位置 */
                                  DAT2=15; /* 光标指针垂直位置 */
                                  COM=21H; /* 光标回原位 */
                                  CALL OUT1;
                                 END;
                            ELSE DO; /* 频率设置 */
                                 OLED=OLED AND 0C0H;
                                 OLED=OLED OR 08H;/* 开频率设置灯 */
                                 OULED=OLED;
                                 SWEND=0; /* 取消温度标记 */
                                 STIME=0; /* 取消时间标记 */
                                 SFREQ=0; /* 取消频率标记 */
                                 SMODE=1; /* 建立模式标记 */
                                 AA=0;
                                 DAT1=25;/* 光标指针水平位置 */
                                 DAT2=11; /* 光标指针垂直位置 */
                                 COM=21H; /* 光标移模式设置 */
                                 CALL OUT1;
                                 END;
                 END;

    IF CC=5 THEN DO; /* + */
                  IF SWEND=1 THEN DO;/* 温度加1 */
                                   IF GUNWEI=27 THEN ZBUF(1)=ZBUF(1)+1;
                                   IF GUNWEI=25 THEN ZBUF(1)=ZBUF(1)+10;
                                   IF GUNWEI=24 THEN ZBUF(1)=ZBUF(1)+100;
                                   IF ZBUF(1)>450 THEN ZBUF(1)=450;
                                  END;
                  IF STIME=1 THEN DO;/* 时间加1 */
                                   IF GUNWEI=27 THEN ZBUF(3)=ZBUF(3)+1;
                                   IF GUNWEI=26 THEN ZBUF(3)=ZBUF(3)+10;
                                   IF GUNWEI=25 THEN ZBUF(3)=ZBUF(3)+100;
                                   IF ZBUF(3)>300 THEN ZBUF(3)=300;
                                  END;
                  IF SFREQ=1 THEN DO;/* 频率加1 */
                                   IF GUNWEI=27 THEN ZBUF(5)=ZBUF(5)+1;
                                   IF GUNWEI=26 THEN ZBUF(5)=ZBUF(5)+10;
                                   IF GUNWEI=25 THEN ZBUF(5)=ZBUF(5)+100;
                                   IF GUNWEI=24 THEN ZBUF(5)=ZBUF(5)+1000;
                                   IF ZBUF(3)>2750 THEN ZBUF(3)=2750;
                                  END;
                  IF SMODE=1 THEN DO;/* 模式加1 */
                                   ZBUF(7)=ZBUF(7)+1;
                                   IF ZBUF(7)>9 THEN ZBUF(7)=9;
                                  END;
                 END;

    IF CC=6 THEN DO;/* - */
                  IF SWEND=1 THEN DO;/* 温度减1 */
                                   IF GUNWEI=27 THEN ZBUF(1)=ZBUF(1)-1;
                                   IF GUNWEI=25 THEN DO;
                                                      IF ZBUF(1)>10 THEN ZBUF(1)=ZBUF(1)-10;
                                                     END;
                                   IF GUNWEI=24 THEN DO;
                                                      IF ZBUF(1)>100 THEN ZBUF(1)=ZBUF(1)-100;
                                                      END;
                                   IF ZBUF(1)<300 THEN ZBUF(1)=300;
                                  END;
                  IF STIME=1 THEN DO;/* 时间减1 */
                                   IF GUNWEI=27 THEN ZBUF(3)=ZBUF(3)-1;
                                   IF GUNWEI=26 THEN DO;
                                                      IF ZBUF(3)>10 THEN ZBUF(3)=ZBUF(3)-10; 
                                                     END;
                                   IF GUNWEI=25 THEN DO;
                                                      IF ZBUF(3)>100 THEN ZBUF(3)=ZBUF(3)-100;
                                                     END;
                                   IF ZBUF(3)<1 THEN ZBUF(3)=1;
                                  END;
                  IF SFREQ=1 THEN DO;/* 频率减1 */
                                   IF GUNWEI=27 THEN ZBUF(5)=ZBUF(5)-1;
                                   IF GUNWEI=26 THEN DO;
                                                      IF ZBUF(5)>10 THEN ZBUF(5)=ZBUF(5)-10;
                                                     END;   
                                   IF GUNWEI=25 THEN DO;
                                                      IF ZBUF(5)>100 THEN ZBUF(5)=ZBUF(5)-100;
                                                     END;
                                   IF GUNWEI=24 THEN DO;
                                                      IF ZBUF(5)>1000 THEN ZBUF(5)=ZBUF(5)-1000;
                                                     END; 
                                   IF ZBUF(5)<2250 THEN ZBUF(5)=2250;
                                  END;
                  IF SMODE=1 THEN DO;/* 模式减1 */
                                   ZBUF(7)=ZBUF(7)-1;
                                   IF ZBUF(7)<1 THEN ZBUF(7)=1;
                                  END;
                 END;

    IF CC=7 THEN DO;/* 复位键 */
     IF (SWEND=1 OR STIME=1 OR SFREQ=1)=1 THEN DO;/* 移光标 */
                                                GUNWEI=GUNWEI-1;
                                            IF SWEND=1 THEN DO;
                                             IF GUNWEI=26 THEN GUNWEI=GUNWEI-1;
                                             IF GUNWEI<24 THEN GUNWEI=27; 
                                                             DAT2=5;
                                                            END;
                                            IF STIME=1 THEN DO;
                                                             IF GUNWEI<25 THEN GUNWEI=27;
                                                             DAT2=7;
                                                             END;
                                             IF SFREQ=1 THEN DO;
                                                              IF GUNWEI<24 THEN GUNWEI=27; 
                                                              DAT2=9;
                                                              END;
                                                AA=0;       /* 光标移位 */
                                                DAT1=GUNWEI;/* 光标指针水平位置 */
                                                /*DAT2=5; /* 光标指针垂直位置 */
                                                COM=21H;
                                                CALL OUT1;
                                              END;
                                         ELSE DO;/* 非设置状态 */
                                               GOTO ST;
                                               OLED=OLED AND 0C0H;
                                               OULED=OLED;
                                               RUN=0;  
                                               RUNM=0;
                                               WORK=0;
                                               BUF(113)=28;
                                               BUF(114)=29;
                                               ZBUF(2)=0;/*ZBUF(3);/*P1_2=1;*/
                                               P1_3=1;
                                              END;
                 END;

  IF CC=8 THEN DO; /* WORK IN 运行/暂停键 */
   IF WORK=0 THEN DO;
                  WORK=1;
                  RE=(SWEND=1 OR STIME=1 OR SFREQ=1 OR SMODE=1 OR P1_7=1);
                  IF RE=0 THEN DO;/* 运行条件.P1_7为水位开关 */
                                RUN=1;
                                BUF(113)=23;
                                BUF(114)=24;
                                CI=65535-(10000/ZBUF(5))*100;
                                RCAP2H=CIH;
                                RCAP2L=CIL;
                  IF RUNM=0 THEN ZBUF(2)=ZBUF(3);/*无暂停标记,设置时间送实际时间*/
                                DD=0;
                                ZBUF(4)=ZBUF(5);   /*设置频率送实际频率*/
                                ZBUF(6)=ZBUF(7);
                                RUNM=0;
                               END;
                          ELSE DO; /* 不满足运行条件,暂停 */
                                RUN=0;  
                               END;
                  END;
             ELSE DO;   /* WORK=1 */
                   WORK=0;
                   RUN=0;
                   IF ZBUF(2)>0 THEN RUNM=1;/* 暂停标记 */
                                ELSE RUNM=0;
                   BUF(113)=27;
                   BUF(114)=28;
                  END;
               END;
LP3:BP=55H;
    GOTO LP1;
LP4:BP=0FFH;
    IF ER=0 THEN GOTO LP2;
    ER=0;
    GOTO LP1;

GOTO ST;
GOTO ST;
GOTO ST;
GOTO ST;
   AA=33;
END TAN;

⌨️ 快捷键说明

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