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

📄 lcd

📁 LCD多级菜单演示
💻
📖 第 1 页 / 共 2 页
字号:
//设置器程序   2004-7-13
//LCM为 8行*128列  (1-8)*(0-127)T6963
//#pragma CD SB OE DB SM
//#pragma OT(9,size) 

#include  "C:\keil\C51\INC\reg52.h"
#include  "C:\keil\C51\INC\setjmp.h"
#include  "C:\keil\C51\INC\stdio.h"
#include  "C:\keil\C51\INC\string.h"
#include  "C:\keil\C51\INC\intrins.h"
#include  "C:\keil\C51\INC\ctype.h"
#include  "C:\keil\C51\INC\math.h"
#include  "C:\keil\C51\INC\stdlib.h"
#include  "C:\keil\C51\INC\absacc.h"
#include  "C:\keil\C51\INC\float.h"
#include  "hzk.h"
#include  "hpc800.h"

main()
{
 unsigned char kkey=0;
 init_sys();
 kkey=0; 
 do{
    kkey=key_scan();
   }
 while(kkey==0);
 clscr();
 updown_key=1;   
 sub_menu_lock=0;
 
 for(;;)
  {
   if(sub_menu_lock==0)      //子菜单无效,主菜单有效
    {
     menu_sel(updown_key);
     key=key_scan();
     if(key==KEY_DOWN)           //下箭头
      {
       updown_key=updown_key+1;
       if(updown_key>4)
        {
         updown_key=1;
        }
      }
     else if(key==KEY_UP)     //上箭头
      {
       if(updown_key==0)
        {
         updown_key=1;
        }
       else
        { 		
         updown_key=updown_key-1;
        }
       if(updown_key==0)
        {
         updown_key=4;
        }  
      }
     else if(((key==KEY_1)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(updown_key==1))   //选择子菜单1
      {
       clscr();
       sub_menu1_updown_key=1;
       sub_menu_lock=1;
       sub_menu1_flag=1;
       sub_menu2_flag=0;
       sub_menu3_flag=0;
       sub_menu4_flag=0;
      }
     else if(((key==KEY_2)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(updown_key==2))    //选择子菜单2
      {
       clscr();
       sub_menu2_updown_key=1;
       sub_menu_lock=1;
       sub_menu1_flag=0;
       sub_menu2_flag=1;
       sub_menu3_flag=0;
       sub_menu4_flag=0;
      }
     else if(((key==KEY_3)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(updown_key==3))    //选择子菜单3
      {
       clscr();
       sub_menu3_updown_key=1;
       sub_menu_lock=1;
       sub_menu1_flag=0;
       sub_menu2_flag=0;
       sub_menu3_flag=1;
       sub_menu4_flag=0;
      }
     else if(((key==KEY_4)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(updown_key==4))   //选择子菜单4
      {
       clscr();
       sub_menu4_updown_key=1;
       sub_menu_lock=1;
       sub_menu1_flag=0;
       sub_menu2_flag=0;
       sub_menu3_flag=0;
       sub_menu4_flag=1;
      }
    } 
   if(sub_menu_lock==1)                               //子菜单有效   
    {
     if(sub_menu1_flag==1)            //子菜单1有效
      {
       sub_menu1_sel(sub_menu1_updown_key);
       key=key_scan();
       if(key==KEY_DOWN)
        {
         sub_menu1_updown_key=sub_menu1_updown_key+1;
         if(sub_menu1_updown_key>10)
          {
           sub_menu1_updown_key=1;
          }
        }
       else if(key==KEY_UP)
        {
         if(sub_menu1_updown_key==0)
          {
           sub_menu1_updown_key=1;
          }
         else
          { 		
           sub_menu1_updown_key=sub_menu1_updown_key-1;
          }
         if(sub_menu1_updown_key==0)
          {
           sub_menu1_updown_key=10;
          }  
        }
       else if(((key==KEY_1)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==1))   //选择子菜单1的子菜单1
        {
         set_terminal_addr(0);    //设终端地址
        }
       else if(((key==KEY_2)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==2))   //选择子菜单1的子菜单2
        {
         read_terminal_addr(0);   //读终端地址
        }
       else if(((key==KEY_3)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==3))   //选择子菜单1的子菜单3
        {
         read_terminal_status();  //读终端状态
        }
       else if(((key==KEY_4)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==4))   //选择子菜单1的子菜单4
        {
         set_channel_addr();    //设通道地址
        }
       else if(((key==KEY_5)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==5))   //选择子菜单1的子菜单5
        {
         read_channel_addr();   //读通道地址
        }
       else if(((key==KEY_6)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==6))   //选择子菜单1的子菜单6
        {
         set_channel_mask();   //屏蔽所有通道
        }
       else if(((key==KEY_7)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==7))   //选择子菜单1的子菜单7
        {
         set_trouble_mask();    //设故障屏蔽
        }
       else if(((key==KEY_8)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==8))   //选择子菜单1的子菜单8
        {
         set_init_value();    //设置初始值
        } 
       else if(((key==KEY_9)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==9))   //选择子菜单1的子菜单9
        {
         read_init_value();    //读取初始值
        }
       else if(((key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu1_updown_key==10))   //选择子菜单1的子菜单10
        {
         read_sum_value();   //读取累计值
        }
       else if((key==KEY_CANCLE)|(key==KEY_LEFT))   //回到主菜单按键
        {
         clscr();
         sub_menu_lock=0;
        }  
      }
     else if(sub_menu2_flag==1)        //子菜单2有效
      {
       sub_menu2_sel(sub_menu2_updown_key);
       key=key_scan();
       if(key==KEY_DOWN)
        {
         sub_menu2_updown_key=sub_menu2_updown_key+1;
         if(sub_menu2_updown_key>9)
          {
           sub_menu2_updown_key=1;
          }
        }
       else if(key==KEY_UP)
        {
         if(sub_menu2_updown_key==0)
          {
           sub_menu2_updown_key=1;
          }
         else
          { 		
           sub_menu2_updown_key=sub_menu2_updown_key-1;
          }
         if(sub_menu2_updown_key==0)
          {
           sub_menu2_updown_key=9;
          }  
        }
       else if(((key==KEY_1)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==1))   //选择子菜单2的子菜单1
        {
         round_check_terminal();  //巡检终端
        }
       else if(((key==KEY_2)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==2))   //选择子菜单2的子菜单2
        {
         sent_simulate_pulse();   //发送脉冲
        }
       else if(((key==KEY_3)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==3))   //选择子菜单2的子菜单3
        {
         sent_high_pulse();      //发高电平
        }
       else if(((key==KEY_4)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==4))   //选择子菜单2的子菜单4
        {
         sent_low_pulse();      //发低电平
        }
       else if(((key==KEY_5)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==5))   //选择子菜单2的子菜单5
        {
         sent_cut_pulse();      //断路电平
        }
       else if(((key==KEY_6)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==6))   //选择子菜单2的子菜单6
        {
         sent_short_pulse();    //短路电平
        }
       else if(((key==KEY_7)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==7))   //选择子菜单2的子菜单7
        {
         open_switch_command();  //打开开关
        }
       else if(((key==KEY_8)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==8))   //选择子菜单2的子菜单8
        {
         close_switch_command();  //关闭开关
        }
       else if(((key==KEY_9)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu2_updown_key==9))   //选择子菜单2的子菜单9
        {
         read_channel_status();  //通道状态
        }
       else if((key==KEY_CANCLE)|(key==KEY_LEFT))   //回到主菜单按键
        {
         clscr();
         sub_menu_lock=0;
        }   	
      }
     else if(sub_menu3_flag==1)         //子菜单3有效
      {
       sub_menu3_sel(sub_menu3_updown_key);
       key=key_scan();
       if(key==KEY_DOWN)
        {
         sub_menu3_updown_key=sub_menu3_updown_key+1;
         if(sub_menu3_updown_key>10)
          {
           sub_menu3_updown_key=1;
          }
        }
       else if(key==KEY_UP)
        {
         if(sub_menu3_updown_key==0)
          {
           sub_menu3_updown_key=1;
          }
         else
          { 		
           sub_menu3_updown_key=sub_menu3_updown_key-1;
          }
         if(sub_menu3_updown_key==0)
          {
           sub_menu3_updown_key=10;
          }  
        }
       else if(((key==KEY_1)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==1))   //选择子菜单3的子菜单1
        {
         collect_data_all();      //全部数据采集          
        } 
       else if(((key==KEY_2)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==2))   //选择子菜单3的子菜单2
        {
         query_data_all();        //全部数据查询   
        }
       else if(((key==KEY_3)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==3))   //选择子菜单3的子菜单3
        {
         query_coll_data();        //按集中器查询   
        }
       else if(((key==KEY_4)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==4))   //选择子菜单3的子菜单4
        {
         set_pulse_value();      //设置脉冲常数
        } 
       else if(((key==KEY_5)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==5))   //选择子菜单3的子菜单5
        {
         read_pulse_value();     //读取脉冲常数
        }
       else if(((key==KEY_6)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==6))   //选择子菜单3的子菜单6
        {
         set_collector_addr();   //设集中器地址
        } 
       else if(((key==KEY_7)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==7))   //选择子菜单3的子菜单7
        {
         read_collector_addr();  //读集中器地址
        }
       else if(((key==KEY_8)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==8))   //选择子菜单3的子菜单8
        {
         set_coll_it_addr();     //设置终端数量
        }
       else if(((key==KEY_9)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==9))   //选择子菜单3的子菜单9
        {
         data_upload();         //抄表数据上载   
        } 
       else if(((key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu3_updown_key==10))   //选择子菜单3的子菜单10
        {
         clear_all_data();        //清空全部数据
        }
       else if((key==KEY_CANCLE)|(key==KEY_LEFT))   //回到主菜单按键
        {
         clscr();
         sub_menu_lock=0;
         colle_startup_flag=0;
        }  
      }
     else if(sub_menu4_flag==1)         //子菜单4有效
      {
       sub_menu4_sel(sub_menu4_updown_key);
       key=key_scan();
       if(key==KEY_DOWN)
        {
         sub_menu4_updown_key=sub_menu4_updown_key+1;
         if(sub_menu4_updown_key>5)
          {
           sub_menu4_updown_key=1;
          }
        }
       else if(key==KEY_UP)
        {
         if(sub_menu4_updown_key==0)
          {
           sub_menu4_updown_key=1;
          }
         else
          { 		
           sub_menu4_updown_key=sub_menu4_updown_key-1;
          }
         if(sub_menu4_updown_key==0)
          {
           sub_menu4_updown_key=5;
          }  
        }
       else if(((key==KEY_1)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu4_updown_key==1))   //选择子菜单4的子菜单1
        {
         sys_status();       //系统状态
        }
       else if(((key==KEY_2)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu4_updown_key==2))   //选择子菜单4的子菜单2
        {
         set_comport();      //通讯设置
        }
       else if(((key==KEY_3)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu4_updown_key==3))   //选择子菜单4的子菜单3
        {
         set_timer();       //设置时间
        }
       else if(((key==KEY_4)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu4_updown_key==4))   //选择子菜单4的子菜单4
        {
         set_password();   //设置密码
        }
       else if(((key==KEY_5)|(key==KEY_RIGHT)|(key==KEY_ENTER))&&(sub_menu4_updown_key==5))   //选择子菜单4的子菜单5
        {
         set_logo_start();  //开机界面
        }  
       else if((key==KEY_CANCLE)|(key==KEY_LEFT))   //回到主菜单按键
        {
         clscr();
         sub_menu_lock=0;
        }   				
      }
    }  
  }
}


void wcode(unsigned char cod)
 {
  //clr_wdt();
  PB=PB&0xef;    //chip select
  _nop_();
  PA=cod;
  _nop_();
  PB=PB|0x80;    //CODE SELECT
  PB=PB&0xdf;    ///WR active low
  PB=PB|0x20;    ///WR active high
  PB=PB|0x10;    //chip deselect
 }


void wdata(unsigned char dat)
 {
  //clr_wdt();
  PB=PB&0xef;    //chip select
  PB=PB&0x7f;   //data select
  PB=PB&0xdf;   //WR active low
  _nop_();
  PA=dat;
  _nop_();
  PB=PB|0x20;    ///WR active high
  PB=PB|0x10;    //chip deselect
 }

void setb(unsigned char dot) 
 {
  wcode(0xf8|dot);
 }

/*void clrb(unsigned char dot) 
 {
  wcode(0xf0|dot);
 } 
*/
void setxy(unsigned char x,unsigned char y) 
 {	

⌨️ 快捷键说明

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