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

📄 time.lst

📁 lcd1602的四位数据线用法
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TIME
OBJECT MODULE PLACED IN time.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE time.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"1602.h"
   2          #include"sd2000.h"
   3          
   4          #define uint  unsigned int
   5          #define uchar unsigned char
   6          
   7          extern unsigned char   date[7];   //日期数组
   8                            /*date[0]=year,date[1]=month,date[2]=day,date[3]=week,
   9                              date[4]=hour,date[5]=minute,date[6]=second*/
  10          
  11          
  12          //定义时间变量
  13          uchar time_ms,time_s,time_m,time_h,time_w,time_d,time_mo,time_y;
  14                                                                 //毫秒时间、秒、分、时,周,日,月,年等时间变量
  15          bit flag_s,flag_m,flag_h;                         //每秒、每分、每时的标志
  16          
  17          uchar flag_sy[11];  //闹钟的声音种类
  18          uchar flag_sw[11];       //闹钟允许标志 //10组闹钟,第10个用来贪睡功能
  19          uchar alarm[11][2];     //闹钟数组
  20          bit flag_alarm;   //闹钟标志
  21          
  22          
  23          bit flag_op;//进入操作界面标志
  24          
  25          uchar num_op;  //界面操作数,00为闹钟0,01为闹钟1,08为闹钟8,09为闹钟9,0a为正常时钟
  26          uchar num_fsn;//组时分闹的操作数。00为组,01为时,02为分,03为闹多久,04为闹钟声音种类;
  27          
  28          
  29          uchar key_temp;  //按键临时变量
  30          
  31          bit flag_flag_s;//秒钟闪动标志
  32          
  33          uchar at;
  34          
  35          
  36          void delay(uint time) //24M晶振 1ms
  37          {
  38   1              uint i,j;
  39   1              for(i=0;i<time;i++)
  40   1              {
  41   2                j=215;
  42   2                while(j--);
  43   2              }
  44   1      }
  45          static void TransmitInterrupt (void)
  46          {
  47   1       TI=0;
  48   1      }
  49          
  50          static void ReceiveInterrupt (void)
  51          {
  52   1       RI=0;
  53   1      }
  54          
  55          //串口中断处理程序
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 2   

  56          void com_isr(void) interrupt 4 using 1
  57          {
  58   1      EA=0;
  59   1      if (RI) ReceiveInterrupt ();
  60   1      if (TI) TransmitInterrupt ();
  61   1      EA=1;
  62   1      }
  63          //////////////////////////////////////////////////////////
  64          //SD2000每分钟中断//
  65          void SD2000_isr(void) interrupt 3 using 3
  66          {
  67   1         flag_m=1;    //标志
  68   1      }
  69          
  70          
  71          //定时中断处理程序
  72          void t0_isr(void) interrupt 1 using 2
  73          {
  74   1       TH0=0x3C;               //     
  75   1       TL0=0xB8;
  76   1       time_ms++;
  77   1       if(time_ms==20)  //0.5秒
  78   1        { time_ms=0;
  79   2          time_s++;
  80   2          flag_s=1;
  81   2        }//end if(time_ms==20)
  82   1      }
  83          ////////////////////////////////////////////////////////////////
  84          main()
  85          {
  86   1        uchar ii;
  87   1      
  88   1        TMOD=0x21;      //T0为方式1的16位定器数,T1为方式2的波特率发生器
  89   1        TH0=0x3C;              //     
  90   1        TL0=0xB8;              //24M晶振的25ms定时为0x3CB0   8为修正
  91   1      
  92   1        TH1=0xCC;              //
  93   1        TL1=0xCC;             //24M晶振的的1200B
  94   1      
  95   1        SCON=0xd0;   //串口方式3
  96   1        IE=0x92;        //开串口T0
  97   1      
  98   1        TR0=1;
  99   1        TR1=1;
 100   1      
 101   1        time_ms=0;
 102   1        time_s=0;
 103   1        time_m=58;
 104   1        time_h=23;
 105   1      
 106   1      
 107   1        flag_s=0;
 108   1        flag_m=0;
 109   1        flag_h=0;
 110   1        flag_alarm=0;
 111   1        flag_op=0;
 112   1      
 113   1        num_op=0;
 114   1        num_fsn=0;
 115   1      
 116   1        for(ii=0;ii<12;ii++)
 117   1        {
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 3   

 118   2         alarm[ii][0]=0;
 119   2         flag_sw[ii]=0;
 120   2         flag_sy[ii]=0;
 121   2        }
 122   1      
 123   1        for(ii=0;ii<12;ii++)
 124   1        {
 125   2         alarm[ii][1]=0;
 126   2        }
 127   1      
 128   1      
 129   1      
 130   1       inst_lcd();             //初始化LCD
 131   1      
 132   1      
 133   1       
 134   1       disp(0,0,time_h);       //时钟显示
 135   1       dispchar(2,0,0x3a); //冒号显示
 136   1       disp(3,0,time_m);       //分钟显示
 137   1      //////////////////////////////////////////////////////////////////////////////
 138   1      
 139   1        I2CWriteStatus();     //写SD2000状态寄存器
 140   1        I2CWriteTime();       //写SD2000时间寄存器
 141   1      
 142   1      
 143   1                 I2CReadDate();//读入实时数据
 144   1                 disp_bcd(6,0,date[0]);//年显示
 145   1                 dispchar(8,0,0x2e);   //间隔号“小点”显示
 146   1                 disp_bcd(9,0,date[1]);//月显示
 147   1                 dispchar(11,0,0x2e);   //间隔号“小点”显示
 148   1                 disp_bcd(12,0,date[2]);//日显示
 149   1                 dispchar(14,0,0x2e); //间隔号“小点”显示
 150   1                 dispchar(15,0,0x30|date[3]); //星期显示
 151   1      
 152   1      
 153   1       
 154   1        while(1)
 155   1        {
 156   2              if(flag_s) //秒钟闪动显示程序
 157   2               {
 158   3                 flag_s=0;
 159   3                 if(flag_flag_s)
 160   3                      {
 161   4                              dispchar(2,0,0x3a);
 162   4                              flag_flag_s=0;
 163   4                      }
 164   3                  else
 165   3                       {
 166   4                              dispchar(2,0,0x20);
 167   4                              flag_flag_s=1;
 168   4                       }
 169   3      
 170   3                      if(flag_op)             //进入操作界面后闪动操作的数组
 171   3                         {
 172   4                               switch(num_fsn)
 173   4                                      {
 174   5                                              case 0 : 
 175   5                                                      {
 176   6                                                              dispchar(0,1,0x20);
 177   6                                                              delay(100);
 178   6                                                      }break;
 179   5      
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 4   

 180   5                                              case 1 :
 181   5                                                      {
 182   6                                                              dispchar(1,1,0x20);
 183   6                                                              dispchar(2,1,0x20);
 184   6                                                              delay(50);
 185   6                                                      }  break;
 186   5      
 187   5                                              case 2:
 188   5                                                      {
 189   6                                                              dispchar(4,1,0x20);
 190   6                                                              dispchar(5,1,0x20);
 191   6                                                              delay(50);
 192   6                                                      }break;
 193   5      
 194   5                                              case 3:
 195   5                                                      {
 196   6                                                              dispchar(6,1,0x20);
 197   6                                                              delay(100);
 198   6                                                      } break;
 199   5                                              case 4: 
 200   5                                                      {

⌨️ 快捷键说明

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