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

📄 lcd12864菜单程序.asm

📁 LCD12864菜单程序,使用在AT89S52上面
💻 ASM
📖 第 1 页 / 共 2 页
字号:
LCD12864菜单程序
/*-------------------------------------------
项目名:   家电中央控制系统工程
程序名:    显示MCU总体程序
编写人:    杜洋 
初写时间:  2005年9月5日晚20时
程序功能:    实现液晶、语音部分的人机对话和总线的通信
实现方法:  用中断实现总线接收
CPU说明:   89S52  12MHZ晶振
接口说明:  (详见 初定义)
信息说明:  
修改日志:  
  NO.1-

 
-------------------------------------------*/

;----------------------------------------初定义

LCDDAT    EQU     P2

RS        EQU     P3.5

RW        EQU     P3.6

E         EQU     P3.7

REDLED    EQU     P3.4

BACKLED   EQU     P3.1

PLAY      EQU     P1.7

STOPIN    EQU     P3.0

LIN       EQU     P3.2

SPDAT     EQU     P1

XX2       EQU     P0.0

LT_RAM    EQU     30H

LR_RAM    EQU     40H

SP_RAM    EQU     20H

DIS1_RAM  EQU     50H

DIS2_RAM  EQU     70H

DIS3_RAM  EQU     60H

DIS4_RAM  EQU     80H

RR1       EQU     26H

RR3       EQU     21H

RR4       EQU     22H

T0_RAM    EQU     23H

QR3_RAM   EQU     24H

QR2_RAM   EQU     25H

LCDDISPLAY EQU    26H                      ;菜单显示移位寄存器

MENU_RAM  EQU     27H                     ;菜单位置寄存器

ONOFFLCD  EQU     28H


;-------------------------------------程序入口

    ORG     0000H

    JMP     LCD_START

    ORG     0003H

    JMP     LIN_INT0

     ORG     000BH

     JMP     LED_T0

    ORG     0030H


;--------------------------------------主程序开始

LCD_START:
    

    SETB   PLAY
     
     MOV    T0_RAM,#250

     MOV    TMOD,#01H

     SETB   ET0

     MOV    TL0,#0B0H                ;50MS定时初值(T0计时用)
    
     MOV    TH0,#3CH                ;50MS定时初值
    
     CLR    IT0

    SETB   EX0
     
     SETB   TR0
    
     SETB   EA

     MOV    DPTR,#TAB_0
                      
     CALL   START_LCD 
     
     

;-----自检程序

     CALL   DL1S
                        
     MOV    MENU_RAM,#00H

     MOV    DPTR,#TAB_H
                      
     CALL   START_LCD 

     CLR    LCDDISPLAY

;--------------------------------------主循环体程序

LCD_LOOP:

     JB  ONOFFLCD,DISPLAY_PRO
    

LCD_LOOP_1:

        
    JMP    LCD_LOOP
     

;---------------------------- 菜单显示处理

DISPLAY_PRO:

    MOV   A,MENU_RAM

      MOV   DPTR,#MENUTAB_HOST

     RLC   A

     JMP   @A+DPTR


MENUNEXT:
     
     CALL   START_LCD
     
     CLR    LCDDISPLAY

     CLR    ONOFFLCD

    JMP    LCD_LOOP 


;-------------------------


MENUTAB_HOST:

     JMP    HOST_H           ;主菜单
     JMP    HOST_1           ;       1,控制
     JMP    HOST_2            ;       2,设置
     JMP    HOST_3              ;    3,智能
     JMP    HOST_4               ;  4,帮助
     
MENUTAB_1:

     JMP    HOST_11          ;
     JMP    HOST_12           ;       
     JMP    HOST_13            ;       


MENUTAB_2:
     JMP    HOST_21          ;
     JMP    HOST_22           ;       
     JMP    HOST_23            ;       

MENUTAB_3:

     JMP    HOST_31          ;
     JMP    HOST_32           ;       
     JMP    HOST_33            ;       

MENUTAB_4:

     JMP    HOST_41          ;
     JMP    HOST_42           ;       
     JMP    HOST_43            ;       


    
;-------------------------------菜单项主流程

HOST_H:                 ;主菜单的适用键

     MOV   A,LCDDISPLAY

     CJNE  A,#01H,HH_H1

     MOV    DPTR,#TAB_1

     MOV    MENU_RAM,#01H
     
     JMP    MENUNEXT

HH_H1:

     CJNE  A,#02H,HH_H2

    MOV    DPTR,#TAB_2

     MOV    MENU_RAM,#02H
     
     JMP    MENUNEXT

HH_H2:

     CJNE  A,#03H,HH_H3

    MOV    DPTR,#TAB_3

     MOV    MENU_RAM,#03H
     
     JMP    MENUNEXT

HH_H3:

     CJNE  A,#04H,HH_H4

    MOV    DPTR,#TAB_4

     MOV    MENU_RAM,#04H
     
     JMP    MENUNEXT

HH_H4:

     CLR    LCDDISPLAY

     CLR    ONOFFLCD
  
     JMP    LCD_LOOP


     ;----------------------------------------------第一层菜单

HOST_1:                                   ;《《《控制》》》

    MOV   A,LCDDISPLAY               ;回到主菜单

     CJNE  A,#0DH,HH_10

     MOV    DPTR,#TAB_H

     MOV    MENU_RAM,#00H
     
     JMP    MENUNEXT

HH_10:

     MOV   A,LCDDISPLAY

     CJNE  A,#01H,HH_11

     MOV    DPTR,#TAB_11

     MOV    MENU_RAM,#05H
     
     JMP    MENUNEXT

HH_11:

     CJNE  A,#02H,HH_12

    MOV    DPTR,#TAB_12

     MOV    MENU_RAM,#06H
     
     JMP    MENUNEXT

HH_12:

     CJNE  A,#03H,HH_13

    MOV    DPTR,#TAB_13

     MOV    MENU_RAM,#07H
     
     JMP    MENUNEXT
HH_13:

     CLR    LCDDISPLAY

     CLR    ONOFFLCD
  
     JMP    LCD_LOOP


HOST_2:                                   ;《《《设置》》》

     MOV   A,LCDDISPLAY               ;回到主菜单

     CJNE  A,#0DH,HH_20

     MOV    DPTR,#TAB_H

     MOV    MENU_RAM,#00H
      
     JMP    MENUNEXT
HH_20:

     MOV   A,LCDDISPLAY

     CJNE  A,#01H,HH_21

     MOV    DPTR,#TAB_21

     MOV    MENU_RAM,#09H
      
     JMP    MENUNEXT
      
HH_21:

     CJNE  A,#02H,HH_22

    MOV    DPTR,#TAB_22

     MOV    MENU_RAM,#0AH
       
     JMP    MENUNEXT
      
HH_22:

     CJNE  A,#03H,HH_23

    MOV    DPTR,#TAB_23

     MOV    MENU_RAM,#0BH
       
     JMP    MENUNEXT
      
HH_23:

     CLR    LCDDISPLAY

     CLR    ONOFFLCD
  
     JMP    LCD_LOOP


HOST_3:                                     ;《《《智能》》》

    MOV   A,LCDDISPLAY                 ;回到主菜单

     CJNE  A,#0DH,HH_30

     MOV    DPTR,#TAB_H

     MOV    MENU_RAM,#00H
       
     JMP    MENUNEXT
      
HH_30:
    
     MOV   A,LCDDISPLAY

     CJNE  A,#01H,HH_31

     MOV    DPTR,#TAB_31

     MOV    MENU_RAM,#0CH
       
     JMP    MENUNEXT
      
HH_31:

     CJNE  A,#02H,HH_32

    MOV    DPTR,#TAB_32

     MOV    MENU_RAM,#0DH
       
     JMP    MENUNEXT
      
HH_32:

     CJNE  A,#03H,HH_33

    MOV    DPTR,#TAB_33

     MOV    MENU_RAM,#0EH
       
     JMP    MENUNEXT
      
HH_33:

     CLR    LCDDISPLAY

     CLR    ONOFFLCD
  
     JMP    LCD_LOOP


HOST_4:                                  ;《《《帮助》》》

    MOV   A,LCDDISPLAY              ;回到主菜单

     CJNE  A,#0DH,HH_40

     MOV    DPTR,#TAB_H

     MOV    MENU_RAM,#00H
       
     JMP    MENUNEXT
      
HH_40:
    
     MOV   A,LCDDISPLAY

     CJNE  A,#01H,HH_41

     MOV    DPTR,#TAB_41

     MOV    MENU_RAM,#0FH
       
     JMP    MENUNEXT
      
HH_41:

     CJNE  A,#02H,HH_42

    MOV    DPTR,#TAB_42

     MOV    MENU_RAM,#10H
       
     JMP    MENUNEXT
      
HH_42:

     CJNE  A,#03H,HH_43

    MOV    DPTR,#TAB_43

     MOV    MENU_RAM,#11H
       
     JMP    MENUNEXT
      
HH_43:

     CLR    LCDDISPLAY

     CLR    ONOFFLCD
  
     JMP    LCD_LOOP

;----------------------------------------第二层菜单

HOST_11:

    MOV    DPTR,#TAB_11

     MOV    MENU_RAM,#04H

     JMP    MENUNEXT


HOST_12:

    MOV    DPTR,#TAB_12

     MOV    MENU_RAM,#04H

     JMP    MENUNEXT


HOST_13:

    MOV    DPTR,#TAB_13

     MOV    MENU_RAM,#04H

     JMP    MENUNEXT


HOST_21:

    MOV    DPTR,#TAB_21

     MOV    MENU_RAM,#07H

     JMP    MENUNEXT


HOST_22:

    MOV    DPTR,#TAB_22

     MOV    MENU_RAM,#07H

     JMP    MENUNEXT


HOST_23:

    MOV    DPTR,#TAB_23

     MOV    MENU_RAM,#07H

     JMP    MENUNEXT


HOST_31:

    MOV    DPTR,#TAB_31

     MOV    MENU_RAM,#0AH

     JMP    MENUNEXT


HOST_32:

    MOV    DPTR,#TAB_32

     MOV    MENU_RAM,#0AH

     JMP    MENUNEXT


HOST_33:

    MOV    DPTR,#TAB_33

     MOV    MENU_RAM,#0AH

     JMP    MENUNEXT


HOST_41:

    MOV    DPTR,#TAB_41

     MOV    MENU_RAM,#0DH

     JMP    MENUNEXT


HOST_42:

    MOV    DPTR,#TAB_42

     MOV    MENU_RAM,#0DH

     JMP    MENUNEXT


HOST_43:

    MOV    DPTR,#TAB_43

     MOV    MENU_RAM,#0DH

     JMP    MENUNEXT

;------------------------------

;----------------------------显示内容

TAB_0:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "    欢迎使用    ----------------家电中央控制系统自检中......    "
TAB_H:                                                            
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====主菜单项====3-智能   4-帮助1-控制    2-设置               "
TAB_1:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====控制选项====2-控制全部从机 1-从机选择控制 3-更新从机联接  "
TAB_2:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====设置选项====2-遥控设置   1-系统设置   3-时间设置    "
TAB_3:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====智能选项====2-温度自动控制 1-编程自动控制 3-时间自动控制  "
TAB_4:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====帮助选项====2-使用说明   1-系统自动检测 3-关于......       "
TAB_11:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAA         AA2AAAAAAAAAAAAA         AA4AAAAAAAAAAAAAAA"----;
DB "==从机选择控制==2-            ",0FH,20H,"1-            ",0FH,20H,"3-            ",0FH,1FH
TAB_12:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==控制全部从机==2-关闭全部从机 1-开启全部从机 共有从机  个 "
TAB_13:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==更新从机联接== [执行]-开始更新更新从机状态报告 [取消]-退出更新"
TAB_21:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====系统设置====                                                "
TAB_22:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====遥控设置====1-设置遥控键值  16路遥控开关设置2-设置遥控对象 "
TAB_23:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====时间设置====2005年09月06日  数字键入后按执行  22时33分      "
TAB_31:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==编程自动控制== [执行]-打开串口通过电脑串口编程 [取消]-关闭串口                                               "
TAB_32:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==温度自动控制==                                                "
TAB_33:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==时间自动控制==                                                "
TAB_41:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==系统自动检测==                                                "
TAB_42:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====使用说明====是由主机和多个从家电中央控制系统机组成的系统。",20H,1FH
TAB_43:
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====关于....====统完全由杜洋自行本家电中央控制系开发,产权所有。"
TAB_EORR:  ;错误信息
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====系统错误====自检的错误!!!系统内部产生无法请断电后重新启动"
TAB_NEW:      ;新从机加入
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "==有新从机接入==统....          有新的从机接入系从机ID号:   "
TAB_OUT:      ;有从机断开
;--"1AAAAAAAAAAAAAAA3AAAAAAAAAAAAAAA2AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA"----;
DB "====从机断开====已有1个从机断开 系统自检时发现--从机ID号:   "

⌨️ 快捷键说明

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