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

📄 万年历.lst

📁 本程序实现 用1602 液晶显示 实现 万年历的现实。用MA 400 A的实验板
💻 LST
字号:
C51 COMPILER V7.06   万年繽                                                                01/18/2009 20:08:38 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 万年繽
OBJECT MODULE PLACED IN 万年历.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 万年历.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          uchar code table[]="clock ME-400-A";
   5          uchar code table1[]="    00:00:00    ";
   6          uchar clk_time[7];  //秒,分,时寄存器数组
   7          sbit T_RST=P2^2;//ds1302-5
   8          sbit T_IO=P2^3;//ds1302-6
   9          sbit T_CLK=P2^4;//ds1302-7
  10          sbit en=P2^5;
  11          sbit rw=P2^6;
  12          sbit rs=P2^7;
  13          sbit led=P1^0;
  14          sbit dula=P1^1;
  15          sbit wela=P1^2;
  16          
  17          sbit ACC0=ACC^0;
  18          sbit ACC7=ACC^7;
  19          uchar num,clock_ss,clock_sg,clock_fs,clock_fg,
  20          clock_ms,clock_mg,
  21          taday_s,taday_g,
  22          yue_s,yue_g,
  23          xq,
  24          year_s,year_g;
  25          /******************DS1302:写入操作(上升沿)*********************/ 
  26          void write_byte(uchar da)
  27          {
  28   1         uchar i;
  29   1         ACC=da;
  30   1         led=0;
  31   1         for(i=8;i>0;i--)
  32   1         { 
  33   2            T_IO=ACC0;
  34   2                T_CLK=0;     
  35   2            T_CLK=1;
  36   2            ACC=ACC>>1;
  37   2         }
  38   1      }
  39          
  40          /******************DS1302:读取操作(下降沿)*****************/
  41          uchar read_byte(void)
  42          {
  43   1         uchar i;led=0;
  44   1         for(i=0;i<8;i++)
  45   1         {
  46   2            ACC=ACC>>1;
  47   2                T_CLK = 1;
  48   2                T_CLK = 0;
  49   2            ACC7 = T_IO;
  50   2         }
  51   1         return(ACC);
  52   1      
  53   1      }
  54          
  55          /******************DS1302:写入数据(先送地址,再写数据)***************************/ 
C51 COMPILER V7.06   万年繽                                                                01/18/2009 20:08:38 PAGE 2   

  56          void write_1302(uchar addr,uchar da)
  57          {
  58   1         T_RST=0;    //停止工作
  59   1         T_CLK=0;                                 
  60   1         T_RST=1;   //重新工作
  61   1         write_byte(addr);    //写入地址
  62   1         
  63   1         write_byte(da);
  64   1         T_RST=0;
  65   1         T_CLK=1;
  66   1      }
  67          
  68          /******************DS1302:读取数据(先送地址,再读数据)**************************/
  69          uchar read_1302(uchar addr)
  70          {
  71   1         uchar temp;
  72   1         T_RST=0;                                   //停止工作
  73   1         T_CLK=0;  
  74   1         T_RST=1;                         //重新工作
  75   1         write_byte(addr);   //写入地址
  76   1         temp=read_byte();
  77   1         T_RST=0;
  78   1         T_CLK=1;     //停止工作
  79   1         return(temp);
  80   1      }
  81          
  82          
  83          
  84          
  85          
  86          /***********************延时程序=a*1ms**************************************/
  87          void delay(uint z)
  88          {
  89   1              uint x,y;
  90   1              for(x=z;x>0;x--)
  91   1                      for(y=110;y>0;y--);
  92   1      }
  93          void write_com(uchar com)
  94          {  led=0;
  95   1              rs=0;
  96   1              P0=com;
  97   1              delay(5);
  98   1              en=1;
  99   1              delay(5);
 100   1              en=0;
 101   1      }
 102          
 103          void write_data(uchar date)
 104          {   led=0;
 105   1              rs=1;
 106   1              P0=date;
 107   1              delay(5);
 108   1              en=1;
 109   1              delay(5);
 110   1              en=0;
 111   1      }
 112          void init()
 113          {   P0=0xff;
 114   1          delay(5);
 115   1          led=1;
 116   1          P0=0xff;
 117   1          led=0;
C51 COMPILER V7.06   万年繽                                                                01/18/2009 20:08:38 PAGE 3   

 118   1              dula=0;
 119   1              wela=1;
 120   1           delay(5);
 121   1          wela=0;//关ME-400开发板数码管
 122   1          rw=0;
 123   1              en=0;
 124   1              write_com(0x38);//设置液晶
 125   1              write_com(0x0c);//设光标等
 126   1              write_com(0x06);//写一个字符地址指针加1且光标加1
 127   1              write_com(0x01);//清屏
 128   1              write_com(0x80);//设置地址指针
 129   1      }
 130          void display()
 131          {       clock_ms=clk_time[0]/ 16;  clock_mg=clk_time[0]%16;
 132   1               
 133   1              clock_fs=clk_time[1]/ 16;  clock_fg=clk_time[1]%16;
 134   1             
 135   1              clock_ss=clk_time[2]/ 16;   clock_sg=clk_time[2]%16;
 136   1              
 137   1                      taday_s=clk_time[3]/ 16;   taday_g=clk_time[3]%16;
 138   1               
 139   1              yue_s=clk_time[4]/ 16;      yue_g=clk_time[4]%16;
 140   1             
 141   1              xq=clk_time[5]%16;
 142   1              year_s=clk_time[6]/ 16;      year_g=clk_time[6]%16;
 143   1             
 144   1           write_com(0x80);
 145   1           write_data(0x30+year_s); 
 146   1           write_data(0x30+year_g);
 147   1           write_data('/');
 148   1           write_data(0x30+yue_s); 
 149   1           write_data(0x30+yue_g);
 150   1           write_data('/');
 151   1           write_data(0x30+taday_s); 
 152   1           write_data(0x30+taday_g);
 153   1           write_data('/');
 154   1           write_data(0x30+xq);     
 155   1         write_com(0x80+0x44);
 156   1         write_data(0x30+clock_ss);
 157   1         write_com(0x80+0x45);
 158   1         write_data(0x30+clock_sg);
 159   1         write_com(0x80+0x47);
 160   1         write_data(0x30+clock_fs);
 161   1         write_com(0x80+0x48);
 162   1         write_data(0x30+clock_fg);
 163   1         write_com(0x80+0x4a);
 164   1         write_data(0x30+clock_ms);
 165   1         write_com(0x80+0x4b);
 166   1         write_data(0x30+clock_mg);
 167   1      }
 168          void main()
 169          {
 170   1         uchar  temp=0x80;          
 171   1         uchar i;
 172   1              init();
 173   1      /*      for(num=0;num<14;num++)
 174   1              {
 175   1                      write_data(table[num]);
 176   1                      delay(20);
 177   1              }*/
 178   1      
 179   1              write_com(0x80+0x40);
C51 COMPILER V7.06   万年繽                                                                01/18/2009 20:08:38 PAGE 4   

 180   1              for(num=0;num<15;num++)
 181   1              {
 182   2                      write_data(table1[num]);
 183   2                      delay(20);
 184   2              }
 185   1              /*for(num=0;num<16;num++)
 186   1              {
 187   1                      write_com(0x18);
 188   1                      delay(20);
 189   1              }*/
 190   1              while(1)
 191   1           {
 192   2                 display();
 193   2      
 194   2                temp=0x81;                    
 195   2            for(i=0;i<7;i++)
 196   2                {
 197   3                   clk_time[i]=read_1302(temp);
 198   3                       temp+=2;
 199   3                }
 200   2      
 201   2               }
 202   1      }
 203          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    486    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     21    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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