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

📄 main.lst

📁 本代码实现的是12864图形LCD模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   MAIN                                                                  11/02/2007 15:16:55 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //========================================================================
   2          //  工程名称:Menu_MzLH01_MCS51.spj
   3          //  作    者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)    
   4          //  联系方式:QQ 644272644
   5          //      版权所有:北京铭正同创科技有限公司   www.mzdesign.com.cn
   6          //  适应芯片: S51/S52/MCS51兼容MCU
   7          //  实现功能: 以MzL02-12864 带LCD显示模块为显示平台的MzMenu_GUI软件包
   8          //                              的演示程序
   9          //
  10          //  系统要求: PC with CPU 233MHz,128MB RAM,
  11          //                      Keil uVision 2.0及以上版本
  12          //
  13          //  涉及的库:(a) 
  14          //
  15          //  组成文件:
  16          //      main.c          ----主程序文件
  17          //              Driver/LCD_Driver/   ----LCD驱动程序
  18          //      Driver/Key_Service/     ----键盘扫描程序
  19          //              MzMenu_GUI/                     ----MzMenu_GUI的软件包源码
  20          //
  21          //      硬件连接:
  22          //              LCD DB0~DB7  ---P0.0~P0.7
  23          //              LCD EP           ---P2.4
  24          //              LCD RW           ---P2.3
  25          //              LCD A0           ---P2.2
  26          //              LCD Reset        ---P2.1
  27          //              LCD CS           ---P2.0
  28          //              LCM 3.3V供电~~~(建议)
  29          //
  30          //              Key1    接P2.0
  31          //              Key2    接P2.1
  32          //              Key3    接P2.2
  33          //              键盘的公共端接地,接键盘的端口接上拉电阻
  34          //                  
  35          //
  36          //  当前版本:  V1.0
  37          //  日期:  2007-07-26
  38          //  
  39          //  参考文件: 
  40          //  维护记录:
  41          //-------------------------------------------------------------------
  42          //  Version   2007-07-26-V10   Modified By    Xinqiang Zhang(小丑)
  43          //
  44          //========================================================================
  45          #include "./Driver/LCD_Driver/LCD_Dis.h"
  46          #include "./Driver/Key_Service/Key.h"
  47          #include "./MzMenu_GUI/Menu_GUI.h"
  48          
  49          void Show_DotTest(void);
  50          void Show_LineTest(void);
  51          void Show_RectanglTest(void);
  52          void Show_HelpTest(void);
  53          void CharTest_Menu(void);
  54          
  55          void Show_CharTest(void);
C51 COMPILER V8.08   MAIN                                                                  11/02/2007 15:16:55 PAGE 2   

  56          void Show_StringTest(void);
  57          void Show_ChTest(void);
  58          //========================================================================
  59          // 文件名:  main.c
  60          // 作  者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)
  61          // 日  期: 2007/07/26
  62          // 描  述: 以MzLH01-12864 带汉字库LCD显示模块为显示平台的MzMenu_GUI软件包
  63          //                              的演示程序
  64          //
  65          // 参  考: 无
  66          // 版  本:
  67          //      2007/07/26      First version    Mz Design
  68          //========================================================================
  69          void main(void)
  70          {
  71   1              //add your code here
  72   1              unsigned char uiKey=0;
  73   1              //uiKey用于存放扫描的键值状态
  74   1              unsigned char Item_Num,Update_Flag,Enter_Flag=0;
  75   1              //Item_Num:当前菜单界面当中共有几项菜单项,刷新时使用
  76   1              //Update_Flag:菜单界面刷新标识
  77   1              //Enter_Flag:确定键按下标识~~
  78   1              unsigned char PageItem_Num;
  79   1              //PageItem_Num:每页(全显示屏内)可以显示多少个菜单项
  80   1              unsigned char First_Index=0,Active_Index=0,Temp_Index=0;
  81   1              //First_Index:当前处在显示屏当中的最前面的菜单项序号
  82   1              //Active_Index:当前指向的菜单项,即当前活动的菜单项
  83   1              //Temp_Index:中间变量
  84   1              
  85   1              Key_Initial();                                                                                  //键盘扫描初始化(端口)
  86   1              
  87   1              LCD_Init();                                                                                             //初始化LCD
  88   1              Item_Num = GetMLNum(Menu_List01);                       //获取要显示的菜单的菜单项个数
  89   1              PageItem_Num = GetMLiNum_Page((unsigned char **)Menu_List01);   //获取要显示的菜单的页数
  90   1              Initial_Menu((unsigned char**)Menu_List01);
  91   1              while(1)
  92   1              {
  93   2                      
  94   2                      uiKey = Key_Get();                                      //获取键值
  95   2                      if(uiKey)                                                       //如有键按下则响应
  96   2                      {
  97   3                              switch(uiKey)                                   //判断键值进行分支控制界面
  98   3                              {
  99   4                                      case 3:                         //确定键按下
 100   4                                              Enter_Flag=1;                   //enter flag set
 101   4                                              break;
 102   4                                      case 2:                         //down  向下键按下
 103   4                                              if(Active_Index<Item_Num)       
 104   4                                              {
 105   5                                                      Active_Index++;
 106   5                                                      if(Temp_Index<PageItem_Num-1) Temp_Index++;
 107   5                                                      else if(First_Index<Item_Num) First_Index++;
 108   5                                                      Update_Flag = 1;
 109   5                                              }
 110   4                                              break;
 111   4                                      case 1:                         //up  向上键按下
 112   4                                              if(Active_Index>0)
 113   4                                              {
 114   5                                                      Active_Index--;
 115   5                                                      if(Temp_Index>0) Temp_Index--;
 116   5                                                      else if(First_Index>0) First_Index--;
 117   5                                                      Update_Flag = 1;
C51 COMPILER V8.08   MAIN                                                                  11/02/2007 15:16:55 PAGE 3   

 118   5                                              }
 119   4                                              break;
 120   4                                      default:break;
 121   4                              }
 122   3                      }
 123   2                      if(Update_Flag)                                         //Update_Flag为1时刷新菜单
 124   2                      {
 125   3                              UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 126   3                              Update_Flag=0;
 127   3                      }
 128   2                      if(Enter_Flag)                                          //有确定键按下时,则进入相应的功能函数
 129   2                      {
 130   3                              Enter_Flag = 0;
 131   3                              switch(Active_Index)
 132   3                              {
 133   4                                      case 0:                                         //这里仅定义了可以响应第一项菜单
 134   4                                              Show_DotTest();
 135   4                                              Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 136   4                                              Update_Flag = 1;
 137   4                                              break; 
 138   4                                      case 1:
 139   4                                              Show_LineTest(); 
 140   4                                              Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 141   4                                              Update_Flag = 1;
 142   4                                              break;                          //如感兴趣可以自己加进去玩玩
 143   4                                      case 2:
 144   4                                              Show_RectanglTest(); 
 145   4                                              Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 146   4                                              Update_Flag = 1;
 147   4                                              break;
 148   4                                      case 3:
 149   4                                              CharTest_Menu(); 
 150   4                                              Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 151   4                                              Update_Flag = 1;
 152   4                                              break;  
 153   4                                      case 4:
 154   4                                              Show_HelpTest(); 
 155   4                                              Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 156   4                                              Update_Flag = 1;
 157   4                                              break;
 158   4                                      case 5: break;  
 159   4                                      default:break;
 160   4                              } 
 161   3                      }
 162   2                      KeyScan_Service();                                      //键盘扫描的服务程序,最好在1KHz的定时/时基中断调用
 163   2              }
 164   1      }
 165          //绘点菜单项响应函数
 166          void Show_DotTest(void)
 167          {
 168   1              unsigned int Key=0;
 169   1              unsigned Exit_flag=1;
 170   1              ClrScreen(0);                                   //清屏
 171   1              SetPaintMode(0,1);                              //设置绘图模式及前景色
 172   1              PutPixel(0,0);                                  //绘制点
 173   1              PutPixel(2,0);
 174   1              PutPixel(4,0);
 175   1              PutPixel(6,0);
 176   1              PutPixel(8,0);
 177   1              PutPixel(9,0);
 178   1              PutPixel(10,0);
 179   1              PutPixel(0,2);
C51 COMPILER V8.08   MAIN                                                                  11/02/2007 15:16:55 PAGE 4   

 180   1              PutPixel(0,4);
 181   1              PutPixel(0,6);
 182   1              PutPixel(0,8);
 183   1              PutPixel(0,10);
 184   1      
 185   1              while(Exit_flag)
 186   1              {
 187   2                      Key = Key_Get();
 188   2                      if(Key!=0)
 189   2                              Exit_flag = 0;                  //任意键按下则返回
 190   2                      KeyScan_Service();
 191   2              }
 192   1      }
 193          //绘直线菜单项响应函数
 194          void Show_LineTest(void)
 195          {
 196   1              unsigned int Key=0;
 197   1              unsigned Exit_flag=1;
 198   1              ClrScreen(0);                                   //清屏
 199   1              SetPaintMode(0,1);                              //设置绘图模式及前景色

⌨️ 快捷键说明

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