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

📄 fun.lst

📁 基于AT89C51的电子万年历
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   FUN                                                                   05/09/2008 08:55:23 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FUN
OBJECT MODULE PLACED IN fun.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE fun.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //文件名:fun.c
   2          //文件包括:液晶模块的初始化子程序,写命令子程序,写数据子程序,按键扫描子程序,延时子程序,刷新时间子程序
   3          
   4          
   5          //头文件
   6          #include<config.h>
   7          
   8          
   9          //延时1ms子程序程序
  10          void Delay(uchar z)
  11          {
  12   1              uchar x,y;
  13   1              for(x=z;x>0;x--)
  14   1                      for(y=100;y>0;y--);
  15   1      }
  16          
  17          
  18          //写命令子程序
  19          void Write_com(uchar com)
  20          {
  21   1              RS=0;
  22   1              RW=0;
  23   1              Lcd_en=0;
  24   1              P0=com;
  25   1              Delay(5);
  26   1              Lcd_en=1;
  27   1              Delay(5);
  28   1              Lcd_en=0;
  29   1      }
  30          
  31          
  32          //写数据子程序
  33          void Write_data(uchar dat)
  34          {
  35   1              RS=1;
  36   1              RW=0;
  37   1              Lcd_en=0;
  38   1              P0=dat;
  39   1              Delay(5);
  40   1              Lcd_en=1;
  41   1              Delay(5);
  42   1              Lcd_en=0;       
  43   1      }
  44          
  45          /*
  46          //读数据子程序
  47          char Read_Data(void)
  48          {
  49              RS=1; 
  50              RW=1;
  51                  Lcd_en=0;
  52                  Delay(5);
  53                  Lcd_en=1;
  54                  Lcd_data=P0;
  55                  return(Lcd_data);
C51 COMPILER V7.50   FUN                                                                   05/09/2008 08:55:23 PAGE 2   

  56          }
  57          */
  58          
  59          //初始化子程序
  60          //将开机要显示的内容和某些寄存器的处置全部初始化
  61          void Initiate(void)
  62          {
  63   1              num=0;
  64   1              temp=0; 
  65   1      //      uchar t;
  66   1              year=2008;
  67   1              mon=5;
  68   1              day=9;
  69   1              we=5;
  70   1              hour=8;
  71   1              min=50;
  72   1              sec=00;
  73   1              SET_flag=0;
  74   1              Lcd_en=0;
  75   1              Write_com(0x38);                        //设置显示模式
  76   1              Write_com(0x0c);                        //开显示,不显示光标
  77   1              Write_com(0x06);                        //设置地址指针移动方式,每写一个字符后地址指针加1
  78   1              Write_com(0x01);                        //显示清零,必须清零,否则液晶屏上会显示黑块
  79   1              Write_com(0x80);                        //设置数据地址指针为第一行
  80   1              for(t=0;t<16;t++)
  81   1              {
  82   2                      Write_data(table[t]);   //显示液晶第一行
  83   2                      Delay(5);
  84   2              }
  85   1              Write_com(0x80+0x40);           //设置数据地址指针为第二行
  86   1              for(t=0;t<16;t++)
  87   1              {
  88   2                      Write_data(table1[t]);  //显示液晶第二行
  89   2                      Delay(5);                               
  90   2              }       
  91   1              TMOD=0x01;
  92   1              TH0=(65536-50000)/256;          //定时器计数器定时50ms
  93   1              TL0=(65536-50000)%256;  
  94   1              EA=1;
  95   1              ET0=1;  
  96   1              TR0=1;  
  97   1      }
  98          
  99          
 100          //刷新时间子程序
 101          void Write_Time(uchar add,uchar dat)
 102          {
 103   1              uchar shi,ge;
 104   1              shi=dat/10;
 105   1              ge=dat%10;
 106   1              Write_com(0x80+0x40+add);       //设置数据地址指针
 107   1              Write_data(0x30+shi);           //刷新时间的十位
 108   1              Write_data(0x30+ge);            //刷新时间的个位
 109   1      }
 110          
 111          
 112          //刷新日期子程序
 113          void Write_Date(uchar add,uchar dat)
 114          {
 115   1              uchar shi,ge;
 116   1              shi=dat/10;
 117   1              ge=dat%10;
C51 COMPILER V7.50   FUN                                                                   05/09/2008 08:55:23 PAGE 3   

 118   1              Write_com(0x80+add);            //设置数据地址指针
 119   1              Write_data(0x30+shi);           //刷新日期的十位
 120   1              Write_data(0x30+ge);            //刷新日期的个位
 121   1      }
 122          
 123          
 124          //刷新年子程序
 125          void Write_Year(uchar add,int dat)
 126          {
 127   1              uchar qian,bai,shi,ge;
 128   1              qian=dat/1000;
 129   1              bai=dat/100%10;
 130   1              shi=dat/10%10;
 131   1              ge=dat%10;
 132   1              Write_com(0x80+add);            //设置数据地址指针
 133   1              Write_data(0x30+qian);          //刷新日期的十位
 134   1              Write_data(0x30+bai);           //刷新日期的个位
 135   1              Write_data(0x30+shi);           //刷新日期的十位
 136   1              Write_data(0x30+ge);            //刷新日期的个位
 137   1                      
 138   1      }
 139          //键盘扫描子程序
 140          void Key_scan(void)
 141          {
 142   1              if(SET==0)
 143   1              {
 144   2                      Delay(5);
 145   2                      if(SET==0)
 146   2                      {
 147   3                              while(!SET);
 148   3                              SET_flag=1;
 149   3                              temp++;
 150   3                              if(temp==8)
 151   3                              {
 152   4                                      temp=0;
 153   4                                      SET_flag=0;
 154   4                                      Write_com(0x0c);                        //光标不再闪烁
 155   4                              }                       
 156   3                      }
 157   2              }
 158   1      }
 159          
 160          
 161          //
 162          void Key_process(void)
 163          {
 164   1              TR0=0;
 165   1      //      Key_scan();
 166   1              switch(temp)
 167   1              {
 168   2                      case 1:                                 
 169   2                                      Write_com(0x80+0x40+9);         //设置数据地址指针到秒钟的位置
 170   2                                      Write_com(0x0f);
 171   2                                      Up_key();
 172   2                                      Down_key();
 173   2                                      break;
 174   2                      case 2: 
 175   2                                      Write_com(0x80+0x40+6);         //设置数据地址指针到分钟的位置
 176   2                                      Up_key();
 177   2                                      Down_key();
 178   2                                      break;
 179   2                      case 3: 
C51 COMPILER V7.50   FUN                                                                   05/09/2008 08:55:23 PAGE 4   

 180   2                                      Write_com(0x80+0x40+3);         //设置数据地址指针到时钟的位置
 181   2                                      Up_key();
 182   2                                      Down_key();
 183   2                                      break;
 184   2                      case 4: 
 185   2                                      Write_com(0x80+15);                     //设置数据地址指针到星期的位置
 186   2                                      Up_key();
 187   2                                      Down_key();
 188   2                                      break;
 189   2                      case 5:                                 
 190   2                                      Write_com(0x80+11);                     //设置数据地址指针到日的位置
 191   2                                      Up_key();
 192   2                                      Down_key();
 193   2                                      break;
 194   2                      case 6: 
 195   2                                      Write_com(0x80+8);                      //设置数据地址指针到月的位置
 196   2                                      Up_key();
 197   2                                      Down_key();
 198   2                                      break;
 199   2                      case 7: 
 200   2                                      Write_com(0x80+3);                      //设置数据地址指针到年的位置
 201   2                                      Up_key();
 202   2                                      Down_key();
 203   2                                      break;
 204   2      
 205   2                      default:break;
 206   2              }
 207   1              TR0=1;
 208   1      }
 209          
 210          
 211          //加调节键按键扫描程序
 212          void Up_key(void)
 213          {
 214   1              if(value_up==0)
 215   1              {
 216   2                      Delay(5);
 217   2                      if(value_up==0)
 218   2                      {
 219   3                              while(!value_up);
 220   3                              switch(temp)
 221   3                              {
 222   4                                      case 1:
 223   4      //                                              Write_com(0x80+9);
 224   4      //                                              sec=Read_Data();                                                
 225   4                                                      sec++;
 226   4                                                      if(sec==60)
 227   4                                                              sec=0;

⌨️ 快捷键说明

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