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

📄 lcm_t.lst

📁 电子时钟,显示时间日期,年.节日等包括原码与电路设计
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.08   LCM_T                                                                 01/09/2008 14:33:36 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE LCM_T
OBJECT MODULE PLACED IN lcm_t.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcm_t.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          //---程序说明---//
   3          
   4          /*
   5                  名字:main.c
   6                  作者:杜洋(doyoung)
   7                  创建日:2006-11-26
   8                  工程:智能助理电子钟(AI-timer)
   9          */
  10          
  11          //---修改日志---//
  12          
  13          /*
  14          
  15          */
  16          
  17          
  18          //---硬件说明---//
  19          
  20          /*
  21          P0.0~0.7        NC
  22          
  23          P1.0            右上角LED-G             低电平有效(L)
  24          P1.1            右下角LED-G             L
  25          P1.2            左下角LED-G             L
  26          P1.3            左上角LED-G             L
  27          P1.4            4个LED-R                L
  28          
  29          P1.5~1.7        ISP下载用               ~
  30          
  31          P2.1            LCM -5 SID              串行数据输入,~
  32          P2.2            LCD -6 CLK              串行时钟,~
  33          
  34          P2.3            左上角KEY               -
  35          P2.4            左下角KEY               -
  36          P2.5            右上角KEY               -
  37          P2.6            右下角KEY               -
  38          
  39          P2.7            背后LED-B               L
  40          
  41          P3.0            温度单总线              ~
  42          
  43          P3.1            BEEP                    L
  44          
  45          P3.2            KEY中断                 -
  46          
  47          P3.3            DS1302 -5 RST_  低电平复位(L)
  48          P3.4            DS1302 -6 IO    ~
  49          P3.5            DS1302 -7 SCLK  ~
  50          
  51          P3.6            24C02 -6 SCL    ~
  52          P3.7            24C02 -5 SDA    ~
  53          
  54          */
  55          
C51 COMPILER V7.08   LCM_T                                                                 01/09/2008 14:33:36 PAGE 2   

  56          /****************************************************************************/
  57          //头文件
  58          #include <AT89X52.h>
  59          #include <string.h>
  60          /*****************************************************************************/
  61          //灯与蜂鸣器定义
  62          sbit    led_b = P2^7;
  63          sbit    led_r = P1^4;
  64          sbit    led_g1 = P1^3;
  65          sbit    led_g2 = P1^2;
  66          sbit    led_g3 = P1^0;
  67          sbit    led_g4 = P1^1;
  68          sbit    beep   = P3^1;
  69          /*****************************************************************************/
  70          //温度传感器定义
  71          sbit DQ = P3 ^ 0;//ds18B20
  72          /*****************************************************************************/
  73          //键盘引脚定义
  74          sbit KEY_1 = P2^3;       //左上
  75          sbit KEY_2 = P2^4;       //左下
  76          sbit KEY_3 = P2^6;       //右上
  77          sbit KEY_4 = P2^5;       //右下
  78          sbit KEY_I = P3^2;       //常0
  79          /****************************************************************************/
  80          //引脚定义
  81          sbit   SID   =  P2^1;   //数据
  82          sbit   SCLK  =  P2^2;   //时钟
  83          /*****************************************************************************/
  84          //定义DS1302时钟接口
  85          sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
  86          sbit clock_dat = P3 ^ 4;//ds1302_dat(数据线)
  87          sbit clock_Rst = P3 ^ 3;//ds1302_Rst(复位线)
  88          /*****************************************************************************/
  89          //定义累加器A中的各位
  90          sbit a0   = ACC ^ 0;
  91          sbit a1   = ACC ^ 1;
  92          sbit a2   = ACC ^ 2;
  93          sbit a3   = ACC ^ 3;
  94          sbit a4   = ACC ^ 4;
  95          sbit a5   = ACC ^ 5;
  96          sbit a6   = ACC ^ 6;
  97          sbit a7   = ACC ^ 7;
  98          /****************************************************************************/
  99          //定义全局变量
 100          unsigned char yy,mo,dd,xq,hh,mm,ss;//定义时间映射全局变量(专用寄存器)
 101          bit w = 0; //调时标志位
 102          static unsigned char menu = 0;//定义静态小时更新用数据变量
 103          static unsigned char keys = 0;//定义静态小时更新用数据变量
 104          static unsigned char timecount = 0;//定义静态软件计数器变量
 105          /****************************************************************************/
 106          void DelayM(unsigned int a){//延时函数 1MS/次   
 107   1                      unsigned char i;
 108   1                      while( --a != 0){               
 109   2                              for(i = 0; i < 125; i++);  //一个 ; 表示空语句,CPU空转。
 110   2                      }                                  //i 从0加到125,CPU大概就耗时1毫秒
 111   1      }
 112          /****************************************************************************/
 113          //函数声明
 114          void lcm_w_word(unsigned char *str) ;  //写字符  例:lcm_w_word("您好!");
 115          void lcm_w_test(bit start,unsigned char ddata);  //(0,指令) (1,数据)
 116          void lcm_w_byte(unsigned char bbyte);  //写一个字节给lcm
 117          void delaynms(unsigned int di);  //延时
C51 COMPILER V7.08   LCM_T                                                                 01/09/2008 14:33:36 PAGE 3   

 118          void lcm_init(void); //lcm初始化
 119          void lcm_clr(void);  //清屏
 120          
 121          void days (viod) {        //公历节日数据库
 122   1                      
 123   1                      lcm_w_test(0,0x80);
 124   1                      lcm_w_word("[Dis]      [Set]");
 125   1      
 126   1                      lcm_w_test(0,0x98);
 127   1      //                                                                                              ----|----------------|
 128   1      
 129   1                      if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1月
 130   1                      if ( mo == 0x01 && dd == 0x28 ){ lcm_w_word("  世界麻风日    "); }
 131   1                      
 132   1                      if ( mo == 0x02 && dd == 0x02 ){ lcm_w_word("  世界湿地日    "); }//2月
 133   1                      if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word("  明天情人节了  "); }              
 134   1                      if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word("  今天是情人节  "); }
 135   1                                      
 136   1                      if ( mo == 0x03 && dd == 0x01 ){ lcm_w_word("  国际海豹日    "); }//3月         
 137   1                      if ( mo == 0x03 && dd == 0x03 ){ lcm_w_word("  全国爱耳日    "); }              
 138   1                      if ( mo == 0x03 && dd == 0x08 ){ lcm_w_word("   3.8妇女节    "); }              
 139   1                      if ( mo == 0x03 && dd == 0x12 ){ lcm_w_word("    植树节      "); }              
 140   1                      if ( mo == 0x03 && dd == 0x14 ){ lcm_w_word("  国际警察日    "); }              
 141   1                      if ( mo == 0x03 && dd == 0x15 ){ lcm_w_word("  消费者权益日  "); }              
 142   1                      if ( mo == 0x03 && dd == 0x17 ){ lcm_w_word("  国际航海日    "); }              
 143   1                      if ( mo == 0x03 && dd == 0x21 ){ lcm_w_word("  世界森林日    "); }              
 144   1                      if ( mo == 0x03 && dd == 0x22 ){ lcm_w_word("    世界水日    "); }              
 145   1                      if ( mo == 0x03 && dd == 0x23 ){ lcm_w_word("  世界气象日    "); }              
 146   1                      if ( mo == 0x03 && dd == 0x24 ){ lcm_w_word("世界防治结核病日"); }
 147   1                                      
 148   1                      if ( mo == 0x04 && dd == 0x01 ){ lcm_w_word("愚人节  小心上当"); }//4           
 149   1                      if ( mo == 0x04 && dd == 0x07 ){ lcm_w_word("  世界卫生日    "); }              
 150   1                      if ( mo == 0x04 && dd == 0x08 ){ lcm_w_word("    复活节      "); }              
 151   1                      if ( mo == 0x04 && dd == 0x13 ){ lcm_w_word("  黑色星期五    "); }
 152   1                                      
 153   1                      if ( mo == 0x05 && dd == 0x01 ){ lcm_w_word("  劳动节  放假  "); }//5           
 154   1                      if ( mo == 0x05 && dd == 0x04 ){ lcm_w_word("    青年节      "); }              
 155   1                      if ( mo == 0x05 && dd == 0x08 ){ lcm_w_word("  世界红十字日  "); }              
 156   1                      if ( mo == 0x05 && dd == 0x12 ){ lcm_w_word("  国际护士节    "); }              
 157   1                      if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("近日注意母亲节  "); }              
 158   1                      if ( mo == 0x05 && dd == 0x15 ){ lcm_w_word("  国际家庭日    "); }
 159   1                      if ( mo == 0x05 && dd == 0x31 ){ lcm_w_word("  世界无烟日    "); }              
 160   1                                      
 161   1                      if ( mo == 0x06 && dd == 0x01 ){ lcm_w_word("  国际儿童节    "); }//6
 162   1                      if ( mo == 0x06 && dd == 0x05 ){ lcm_w_word("  世界环境日    "); }              
 163   1                      if ( mo == 0x06 && dd == 0x26 ){ lcm_w_word("  国际禁毒日    "); }              
 164   1                      if ( mo == 0x06 && dd == 0x06 ){ lcm_w_word("  全国爱眼日    "); }              
 165   1                      if ( mo == 0x06 && dd == 0x13 ){ lcm_w_word("近日注意父亲节  "); }
 166   1                      if ( mo == 0x06 && dd == 0x15 ){ lcm_w_word("近日注意父亲节  "); }
 167   1                                      
 168   1                      if ( mo == 0x07 && dd == 0x01 ){ lcm_w_word("香港回归记念日  "); }//7
 169   1                      if ( mo == 0x07 && dd == 0x07 ){ lcm_w_word("抗日战争记念日  "); }
 170   1                      if ( mo == 0x07 && dd == 0x11 ){ lcm_w_word("  世界人口日    "); }
 171   1      
 172   1                      if ( mo == 0x08 && dd == 0x01 ){ lcm_w_word("  八一建军节    "); }//8
 173   1                      if ( mo == 0x08 && dd == 0x08 ){ lcm_w_word("  中国男子节    "); }
 174   1                      if ( mo == 0x08 && dd == 0x15 ){ lcm_w_word("抗战胜利记念日  "); }
 175   1      
 176   1                      if ( mo == 0x09 && dd == 0x10 ){ lcm_w_word("  中国教师节    "); }//9
 177   1                      if ( mo == 0x09 && dd == 0x18 ){ lcm_w_word("九·一八事变记念"); }
 178   1                      if ( mo == 0x09 && dd == 0x20 ){ lcm_w_word("  国际爱牙日    "); }
 179   1                      if ( mo == 0x09 && dd == 0x27 ){ lcm_w_word("  世界旅游日    "); }
C51 COMPILER V7.08   LCM_T                                                                 01/09/2008 14:33:36 PAGE 4   

 180   1      
 181   1                      if ( mo == 0x10 && dd == 0x01 ){ lcm_w_word("  中国国庆节    "); }//10
 182   1                      if ( mo == 0x10 && dd == 0x04 ){ lcm_w_word("  世界动物日    "); }
 183   1                      if ( mo == 0x10 && dd == 0x24 ){ lcm_w_word("    联合国日    "); }
 184   1                      if ( mo == 0x10 && dd == 0x12 ){ lcm_w_word("明天国际教师节  "); }
 185   1                      if ( mo == 0x10 && dd == 0x13 ){ lcm_w_word("  国际教师节    "); }
 186   1      
 187   1                      if ( mo == 0x11 && dd == 0x10 ){ lcm_w_word("  世界青年节    "); }//11
 188   1                      if ( mo == 0x11 && dd == 0x17 ){ lcm_w_word("  世界学生节    "); }
 189   1      
 190   1                      if ( mo == 0x12 && dd == 0x01 ){ lcm_w_word("  世界艾滋病日  "); }//12
 191   1                      if ( mo == 0x12 && dd == 0x23 ){ lcm_w_word("  明晚平安夜    "); }
 192   1                      if ( mo == 0x12 && dd == 0x24 ){ lcm_w_word("  今晚平安夜    "); }
 193   1                      if ( mo == 0x12 && dd == 0x25 ){ lcm_w_word("    圣诞快乐    "); }
 194   1                      if ( mo == 0x12 && dd == 0x31 ){ lcm_w_word("    明日新年    "); }
 195   1      
 196   1                      else{ 
 197   2                              if ( hh >= 0x04 && hh <  0x06 ){ lcm_w_word("★★__▲▲__凌晨"); }
 198   2                              if ( hh >= 0x06 && hh <  0x08 ){ lcm_w_word("☆○__▲△__早晨"); }
 199   2                              if ( hh >= 0x08 && hh <  0x12 ){ lcm_w_word("__●__▲▲__上午"); }
 200   2                              if ( hh == 0x12)               { lcm_w_word("____▲●▲__中午"); }
 201   2                              if ( hh >= 0x13 && hh <  0x18 ){ lcm_w_word("__▲▲__●__下午"); }
 202   2                              if ( hh >= 0x18 && hh <  0x22 ){ lcm_w_word("△▲__●☆__晚上"); }
 203   2                              if ( hh >= 0x22 && hh <= 0x23 ){ lcm_w_word("△▲__★☆__夜里"); }
 204   2                              if ( hh >= 0x00 && hh <  0x04 ){ lcm_w_word("__★▲▲★__深夜"); }
 205   2                              }
 206   1      
 207   1      
 208   1      
 209   1      }
 210          /****************************************************************************/
 211          //初始化LCM
 212          void lcm_init(void)      {
 213   1              delaynms(100); //启动等待,等LCM讲入工作状态
 214   1              lcm_w_test(0,0x30);  //8 位介面,基本指令集
 215   1              lcm_w_test(0,0x0c);  //显示打开,光标关,反白关
 216   1              lcm_w_test(0,0x01);  //清屏,将DDRAM的地址计数器归零 
 217   1              delaynms(100); //启动等待,等LCM讲入工作状态
 218   1       
 219   1      }
 220          /******************************************************************************/
 221          //写指令或数据  (0,指令) (1,数据)
 222          void lcm_w_test(bit start, unsigned char ddata) {
 223   1              unsigned char start_data,Hdata,Ldata;
 224   1              if(start==0) 
 225   1                      start_data=0xf8;         //0:写指令
 226   1          else    
 227   1              start_data=0xfa;  //1:写数据
 228   1        
 229   1              Hdata=ddata&0xf0;                 //取高四位
 230   1              Ldata=(ddata<<4)&0xf0;  //取低四位
 231   1              lcm_w_byte(start_data);   //发送起始信号
 232   1              delaynms(5); //延时是必须的
 233   1              lcm_w_byte(Hdata);            //发送高四位
 234   1              delaynms(5);  //延时是必须的
 235   1              lcm_w_byte(Ldata);                //发送低四位
 236   1              delaynms(5);  //延时是必须的
 237   1      }
 238          
 239          /******************************************************************************/
 240          //发送一个字节(底层函数)
 241          void lcm_w_byte(unsigned char bbyte) {
C51 COMPILER V7.08   LCM_T                                                                 01/09/2008 14:33:36 PAGE 5   

 242   1              unsigned char i;

⌨️ 快捷键说明

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