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

📄 main.lst

📁 一个用1602显示的多功能电子钟,内有实时时钟功能和温度显示功能!
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   MAIN                                                                  11/12/2007 01:02:04 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #include"ds18b20.h"
   3          #include"DS1302.h"
   4          #include"TG12864P.h"
   5          #include"beep.h"
   6          #include"key.h"
   7          #include"led.h"
   8          #include"keyboard.h"
   9          #include"delay.h"                
  10          unsigned char(* bmp[4])[256]={  &bmp0,&bmp1,&bmp2,&bmp3}; //图片指针  
  11           /******************************************************************
  12                                         操作系统主框架
  13                                                                                                                                                                    
  14          系统全局变量声明区:
  15                              menu       系统菜单指针
  16                                                  fun        系统功能函数指针
  17          *************************************************************************/
  18          unsigned char menu=0;
  19          unsigned char fun1=0,fun2=0,
  20          clock_flag=0;                                                    //闹钟开关的标志位
  21           unsigned char test=0;                   //tsst
  22          unsigned char * print[]={0,0,0,0,0,0,0}  ;
  23          
  24          extern unsigned char hour_sound,                 //闹钟 时
  25                               minute_sound,               //闹钟 秒
  26                               zhengshu;
  27          
  28           /******************************************************************
  29                            系统初始话函数 
  30                                            包括全部模块的初始化函数
  31           *******************************************************************/
  32           void init_system()
  33           {
  34   1         Reset_18B20();
  35   1         LcmInit();
  36   1         init_1302();
  37   1         init_keyboard();
  38   1         init_1302();
  39   1         Time0_Init();
  40   1       }
  41          /******************************************************************
  42                                接着是主函数与各个模块的联动函数
  43          *******************************************************************/
  44          
  45          
  46          
  47          
  48          /*****************************************************************
  49                                12864与键盘联动函数
  50                                                    在12864上显示键盘输入的字符
  51                                                    按下esc 或者win 建就
  52                                                    要求操作者选择是否保存输入的
  53                                                    文本。
  54                                然后
  55                                                    返回主界面
C51 COMPILER V8.02   MAIN                                                                  11/12/2007 01:02:04 PAGE 2   

  56          
  57          *****************************************************************/
  58          void screen()
  59          {
  60   1              uchar t=0,
  61   1                      temp=0,
  62   1                      pos=0,   //记录输入光标位置     ,输入一个字母或数字,光标加一
  63   1                      cap=0,                                                                                                                                              
  64   1                      flag=0;
  65   1              PutStr(0,2,"请选择");//按下推出建: esc 或win 后
  66   1              PutStr(1,0,"1 输入文本");
  67   1              PutStr(2,0,"2 打开文本");
  68   1              while(1)
  69   1              {
  70   2                      led_display(test);      
  71   2                      temp=sp2key_scan();
  72   2                      if(temp!=255)
  73   2                      {  
  74   3                              test=temp;    
  75   3                              LcmClearTXT();
  76   3                              t=temp;
  77   3                              temp=key_table[t];
  78   3                              if(temp=='1')flag=1;
  79   3                              if(temp=='2')flag=2;
  80   3                              led_display(t); //数码管显示
  81   3                              if(!flag)
  82   3                              {                
  83   4                                      PutStr(1,1,"输入错误!");
  84   4                                      delayms(700);
  85   4                                      LcmClearTXT();
  86   4                                      PutStr(0,2,"请选择");//按下推出建: esc 或win 后
  87   4                                      PutStr(1,0,"1 输入文本");
  88   4                                      PutStr(2,0,"2 打开文本");
  89   4                              }
  90   3                              if(flag)
  91   3                              {
  92   4                                      if(flag==1) break;                                              
  93   4                                      else
  94   4                                      {              //读取24c256中的文本
  95   5                                              while(1)
  96   5                                              {
  97   6                                                      temp=sp2key_scan();
  98   6                                                      if(temp!=255)   //按下任意建推出
  99   6                                                      {
 100   7                                                              break;
 101   7                                                              flag=3;
 102   7                                                      }
 103   6                                                      if(flag==3)break;        
 104   6                                              }   
 105   5                                      }  
 106   4                              }
 107   3                      }  
 108   2              } 
 109   1              LcmClearTXT();
 110   1              while(1)
 111   1              {           
 112   2                      temp=sp2key_scan();
 113   2                      if(temp!=255)
 114   2                      {
 115   3                              t=temp;
 116   3                              if(t<48) //输入为字母或其他符号                                          
 117   3                              {       
C51 COMPILER V8.02   MAIN                                                                  11/12/2007 01:02:04 PAGE 3   

 118   4                                      if(pos==64)
 119   4                                      { 
 120   5                                              pos=0;
 121   5                                              LcmClearTXT();  
 122   5                                      } 
 123   4                                      if(t==47)       //删除
 124   4                                      {
 125   5                                              if(pos)
 126   5                                              {                                               
 127   6                                                      Lcm_clear_char(pos);
 128   6                                                      if((pos%2))pos-=1;
 129   6                                                      if(pos)pos--;
 130   6                                              }   
 131   5                                      } 
 132   4                                      else                                                                                                            
 133   4                                      {       
 134   5                                              temp=key_table[t];
 135   5                                              if(t>9&&t<36)temp-=cap*32;//根据cap 令显示为大写或小写   
 136   5                                              input(temp,pos);
 137   5                                              pos++;                                                           
 138   5                                      }  
 139   4                              }
 140   3                              if(t==48)//换行
 141   3                              {                                                                                                                                 
 142   4                                      if(pos<48)
 143   4                                      {
 144   5                                              pos+=16;
 145   5                                              Location_xy_12864(pos/16,(pos%16)/2);
 146   5                                      }
 147   4                                      else
 148   4                                      {
 149   5                                              LcmClearTXT();
 150   5                                              pos=0;
 151   5                                      }  
 152   4                              }
 153   3                              if(t==49)cap=!cap;//cap:大小写转换
 154   3                              if(t==51||t==52) //按下推出建: esc 或win 后
 155   3                              break;
 156   3                      }                        
 157   2                      led_display(t);    
 158   2              } 
 159   1              LcmClearTXT();
 160   1              PutStr(0,2,"save ?");   
 161   1              PutStr(1,0,"y save");    
 162   1              PutStr(2,0,"n no");      
 163   1              while(1)
 164   1              {
 165   2                      temp=sp2key_scan();
 166   2                      if(temp!=255)
 167   2                      {
 168   3                              LcmClearTXT();
 169   3                              t=temp;
 170   3                              temp=key_table[t];
 171   3                              if(temp=='y'||temp=='Y')
 172   3                              {
 173   4                                      LcmClearTXT();
 174   4                                      PutStr(1,2,"saving....");
 175   4                                      delayms(500); 
 176   4                                      PutStr(2,2,"please wait..");
 177   4                                      //write_24c256(unsigned char *Data,unsigned char length,unsigned int add)
 178   4                                      delayms(1000);
 179   4                                      LcmClearTXT();
C51 COMPILER V8.02   MAIN                                                                  11/12/2007 01:02:04 PAGE 4   

 180   4                                      return;
 181   4                              }
 182   3                              if(temp=='n'||temp=='N')return;          
 183   3                              led_display(t);                         //数码管显示
 184   3                              LcmClearTXT();
 185   3                              PutStr(1,1,"输入错误!");
 186   3                              delayms(800);
 187   3                              LcmClearTXT();
 188   3                              PutStr(0,0,"save");             //按下推出建: esc 或win 后
 189   3                              PutStr(1,0,"y save");    
 190   3                              PutStr(2,0,"n no"); 
 191   3                      }        
 192   2              }   
 193   1      }  
 194          
 195          /**************************************************************************
 196                        系统菜单选择函数
 197          ***************************************************************************/

⌨️ 快捷键说明

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