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

📄 lcm_t.lst

📁 多功能lcd电子钟 包含世界节日
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   LCM_T                                                                 12/08/2007 10:11:44 PAGE 1   


C51 COMPILER V7.50, 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          #include <reg52.h>
  20          #include <string.h>
  21          /*****************************************************************************/
  22          //灯与蜂鸣器定义
  23          sbit    led_b = P2^7;
  24          sbit    led_r = P1^4;
  25          sbit    led_g1 = P1^3;
  26          sbit    led_g2 = P1^2;
  27          sbit    led_g3 = P1^0;
  28          sbit    led_g4 = P1^1;
  29          sbit    beep   = P3^1;
  30          /*****************************************************************************/
  31          //温度传感器定义
  32          sbit DQ = P3 ^ 0;//ds18B20
  33          /*****************************************************************************/
  34          //键盘引脚定义
  35          sbit KEY_1 = P2^3;       //左上
  36          sbit KEY_2 = P2^4;       //左下
  37          sbit KEY_3 = P2^6;       //右上
  38          sbit KEY_4 = P2^5;       //右下
  39          sbit KEY_I = P3^2;       //常0
  40          /****************************************************************************/
  41          //引脚定义
  42          sbit   SID   =  P2^1;   //数据
  43          sbit   SCLK  =  P2^2;   //时钟
  44          /*****************************************************************************/
  45          //定义DS1302时钟接口
  46          sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
  47          sbit clock_dat = P3 ^ 4;//ds1302_dat(数据线)
  48          sbit clock_Rst = P3 ^ 3;//ds1302_Rst(复位线)
  49          /*****************************************************************************/
  50          //定义累加器A中的各位
  51          sbit a0   = ACC ^ 0;
  52          sbit a1   = ACC ^ 1;
  53          sbit a2   = ACC ^ 2;
  54          sbit a3   = ACC ^ 3;
  55          sbit a4   = ACC ^ 4;
C51 COMPILER V7.50   LCM_T                                                                 12/08/2007 10:11:44 PAGE 2   

  56          sbit a5   = ACC ^ 5;
  57          sbit a6   = ACC ^ 6;
  58          sbit a7   = ACC ^ 7;
  59          /****************************************************************************/
  60          //定义全局变量
  61          unsigned char yy,mo,dd,xq,hh,mm,ss;//定义时间映射全局变量(专用寄存器)
  62          bit w = 0; //调时标志位
  63          static unsigned char menu = 0;//定义静态小时更新用数据变量
  64          static unsigned char keys = 0;//定义静态小时更新用数据变量
  65          static unsigned char timecount = 0;//定义静态软件计数器变量
  66          /****************************************************************************/
  67          void DelayM(unsigned int a){//延时函数 1MS/次   
  68   1                      unsigned char i;
  69   1                      while( --a != 0){               
  70   2                              for(i = 0; i < 125; i++);  //一个 ; 表示空语句,CPU空转。
  71   2                      }                                  //i 从0加到125,CPU大概就耗时1毫秒
  72   1      }
  73          /****************************************************************************/
  74          //函数声明
  75          void lcm_w_word(unsigned char *str) ;  //写字符  例:lcm_w_word("您好!");
  76          void lcm_w_test(bit start,unsigned char ddata);  //(0,指令) (1,数据)
  77          void lcm_w_byte(unsigned char bbyte);  //写一个字节给lcm
  78          void delaynms(unsigned int di);  //延时
  79          void lcm_init(void); //lcm初始化
  80          void lcm_clr(void);  //清屏
  81          
  82          void days (viod) {        //公历节日数据库
  83   1                      
  84   1                      lcm_w_test(0,0x80);
  85   1                      lcm_w_word("[Dis]      [Set]");
  86   1      
  87   1                      lcm_w_test(0,0x98);
  88   1      //                                                                                              ----|----------------|
  89   1      
  90   1                      if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1月
  91   1                      if ( mo == 0x01 && dd == 0x28 ){ lcm_w_word("  世界麻风日    "); }
  92   1                      
  93   1                      if ( mo == 0x02 && dd == 0x02 ){ lcm_w_word("  世界湿地日    "); }//2月
  94   1                      if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word("  明天情人节了  "); }              
  95   1                      if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word("  今天是情人节  "); }
  96   1                                      
  97   1                      if ( mo == 0x03 && dd == 0x01 ){ lcm_w_word("  国际海豹日    "); }//3月         
  98   1                      if ( mo == 0x03 && dd == 0x03 ){ lcm_w_word("  全国爱耳日    "); }              
  99   1                      if ( mo == 0x03 && dd == 0x08 ){ lcm_w_word("   3.8妇女节    "); }              
 100   1                      if ( mo == 0x03 && dd == 0x12 ){ lcm_w_word("    植树节      "); }              
 101   1                      if ( mo == 0x03 && dd == 0x14 ){ lcm_w_word("  国际警察日    "); }              
 102   1                      if ( mo == 0x03 && dd == 0x15 ){ lcm_w_word("  消费者权益日  "); }              
 103   1                      if ( mo == 0x03 && dd == 0x17 ){ lcm_w_word("  国际航海日    "); }              
 104   1                      if ( mo == 0x03 && dd == 0x21 ){ lcm_w_word("  世界森林日    "); }              
 105   1                      if ( mo == 0x03 && dd == 0x22 ){ lcm_w_word("    世界水日    "); }              
 106   1                      if ( mo == 0x03 && dd == 0x23 ){ lcm_w_word("  世界气象日    "); }              
 107   1                      if ( mo == 0x03 && dd == 0x24 ){ lcm_w_word("世界防治结核病日"); }
 108   1                                      
 109   1                      if ( mo == 0x04 && dd == 0x01 ){ lcm_w_word("愚人节  小心上当"); }//4           
 110   1                      if ( mo == 0x04 && dd == 0x07 ){ lcm_w_word("  世界卫生日    "); }              
 111   1                      if ( mo == 0x04 && dd == 0x08 ){ lcm_w_word("    复活节      "); }              
 112   1                      if ( mo == 0x04 && dd == 0x13 ){ lcm_w_word("  黑色星期五    "); }
 113   1                                      
 114   1                      if ( mo == 0x05 && dd == 0x01 ){ lcm_w_word("  劳动节  放假  "); }//5           
 115   1                      if ( mo == 0x05 && dd == 0x04 ){ lcm_w_word("    青年节      "); }              
 116   1                      if ( mo == 0x05 && dd == 0x08 ){ lcm_w_word("  世界红十字日  "); }              
 117   1                      if ( mo == 0x05 && dd == 0x12 ){ lcm_w_word("  国际护士节    "); }              
C51 COMPILER V7.50   LCM_T                                                                 12/08/2007 10:11:44 PAGE 3   

 118   1                      if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("近日注意母亲节  "); }              
 119   1                      if ( mo == 0x05 && dd == 0x15 ){ lcm_w_word("  国际家庭日    "); }
 120   1                      if ( mo == 0x05 && dd == 0x31 ){ lcm_w_word("  世界无烟日    "); }              
 121   1                                      
 122   1                      if ( mo == 0x06 && dd == 0x01 ){ lcm_w_word("  国际儿童节    "); }//6
 123   1                      if ( mo == 0x06 && dd == 0x05 ){ lcm_w_word("  世界环境日    "); }              
 124   1                      if ( mo == 0x06 && dd == 0x26 ){ lcm_w_word("  国际禁毒日    "); }              
 125   1                      if ( mo == 0x06 && dd == 0x06 ){ lcm_w_word("  全国爱眼日    "); }              
 126   1                      if ( mo == 0x06 && dd == 0x13 ){ lcm_w_word("近日注意父亲节  "); }
 127   1                      if ( mo == 0x06 && dd == 0x15 ){ lcm_w_word("近日注意父亲节  "); }
 128   1                                      
 129   1                      if ( mo == 0x07 && dd == 0x01 ){ lcm_w_word("香港回归记念日  "); }//7
 130   1                      if ( mo == 0x07 && dd == 0x07 ){ lcm_w_word("抗日战争记念日  "); }
 131   1                      if ( mo == 0x07 && dd == 0x11 ){ lcm_w_word("  世界人口日    "); }
 132   1      
 133   1                      if ( mo == 0x08 && dd == 0x01 ){ lcm_w_word("  八一建军节    "); }//8
 134   1                      if ( mo == 0x08 && dd == 0x08 ){ lcm_w_word("  中国男子节    "); }
 135   1                      if ( mo == 0x08 && dd == 0x15 ){ lcm_w_word("抗战胜利记念日  "); }
 136   1      
 137   1                      if ( mo == 0x09 && dd == 0x10 ){ lcm_w_word("  中国教师节    "); }//9
 138   1                      if ( mo == 0x09 && dd == 0x18 ){ lcm_w_word("九·一八事变记念"); }
 139   1                      if ( mo == 0x09 && dd == 0x20 ){ lcm_w_word("  国际爱牙日    "); }
 140   1                      if ( mo == 0x09 && dd == 0x27 ){ lcm_w_word("  世界旅游日    "); }
 141   1      
 142   1                      if ( mo == 0x10 && dd == 0x01 ){ lcm_w_word("  中国国庆节    "); }//10
 143   1                      if ( mo == 0x10 && dd == 0x04 ){ lcm_w_word("  世界动物日    "); }
 144   1                      if ( mo == 0x10 && dd == 0x24 ){ lcm_w_word("    联合国日    "); }
 145   1                      if ( mo == 0x10 && dd == 0x12 ){ lcm_w_word("明天国际教师节  "); }
 146   1                      if ( mo == 0x10 && dd == 0x13 ){ lcm_w_word("  国际教师节    "); }
 147   1      
 148   1                      if ( mo == 0x11 && dd == 0x10 ){ lcm_w_word("  世界青年节    "); }//11
 149   1                      if ( mo == 0x11 && dd == 0x17 ){ lcm_w_word("  世界学生节    "); }
 150   1      
 151   1                      if ( mo == 0x12 && dd == 0x01 ){ lcm_w_word("  世界艾滋病日  "); }//12
 152   1                      if ( mo == 0x12 && dd == 0x23 ){ lcm_w_word("  明晚平安夜    "); }
 153   1                      if ( mo == 0x12 && dd == 0x24 ){ lcm_w_word("  今晚平安夜    "); }
 154   1                      if ( mo == 0x12 && dd == 0x25 ){ lcm_w_word("    圣诞快乐    "); }
 155   1                      if ( mo == 0x12 && dd == 0x31 ){ lcm_w_word("    明日新年    "); }
 156   1      
 157   1                      else{ 
 158   2                              if ( hh >= 0x04 && hh <  0x06 ){ lcm_w_word("★★__▲▲__凌晨"); }
 159   2                              if ( hh >= 0x06 && hh <  0x08 ){ lcm_w_word("☆○__▲△__早晨"); }
 160   2                              if ( hh >= 0x08 && hh <  0x12 ){ lcm_w_word("__●__▲▲__上午"); }
 161   2                              if ( hh == 0x12)               { lcm_w_word("____▲●▲__中午"); }
 162   2                              if ( hh >= 0x13 && hh <  0x18 ){ lcm_w_word("__▲▲__●__下午"); }
 163   2                              if ( hh >= 0x18 && hh <  0x22 ){ lcm_w_word("△▲__●☆__晚上"); }
 164   2                              if ( hh >= 0x22 && hh <= 0x23 ){ lcm_w_word("△▲__★☆__夜里"); }
 165   2                              if ( hh >= 0x00 && hh <  0x04 ){ lcm_w_word("__★▲▲★__深夜"); }
 166   2                              }
 167   1      
 168   1      
 169   1      
 170   1      }
 171          /****************************************************************************/
 172          //初始化LCM
 173          void lcm_init(void)      {
 174   1              delaynms(100); //启动等待,等LCM讲入工作状态
 175   1              lcm_w_test(0,0x30);  //8 位介面,基本指令集
 176   1              lcm_w_test(0,0x0c);  //显示打开,光标关,反白关
 177   1              lcm_w_test(0,0x01);  //清屏,将DDRAM的地址计数器归零 
 178   1              delaynms(100); //启动等待,等LCM讲入工作状态
 179   1       
C51 COMPILER V7.50   LCM_T                                                                 12/08/2007 10:11:44 PAGE 4   

 180   1      }
 181          /******************************************************************************/
 182          //写指令或数据  (0,指令) (1,数据)
 183          void lcm_w_test(bit start, unsigned char ddata) {
 184   1              unsigned char start_data,Hdata,Ldata;
 185   1              if(start==0) 
 186   1                      start_data=0xf8;         //0:写指令
 187   1          else    
 188   1              start_data=0xfa;  //1:写数据
 189   1        
 190   1              Hdata=ddata&0xf0;                 //取高四位
 191   1              Ldata=(ddata<<4)&0xf0;  //取低四位
 192   1              lcm_w_byte(start_data);   //发送起始信号
 193   1              delaynms(5); //延时是必须的
 194   1              lcm_w_byte(Hdata);            //发送高四位
 195   1              delaynms(5);  //延时是必须的
 196   1              lcm_w_byte(Ldata);                //发送低四位
 197   1              delaynms(5);  //延时是必须的
 198   1      }
 199          
 200          /******************************************************************************/
 201          //发送一个字节(底层函数)
 202          void lcm_w_byte(unsigned char bbyte) {
 203   1              unsigned char i;
 204   1              for(i=0;i<8;i++){
 205   2                      SID=bbyte&0x80; //取出最高位
 206   2                      SCLK=1;
 207   2                      SCLK=0;
 208   2                      bbyte<<=1; //左移
 209   2              }  
 210   1      }
 211          
 212          /******************************************************************************/
 213          //延时(LCM占用)
 214          void delaynms(unsigned int di) {
 215   1              unsigned int da,db;
 216   1              for(da=0;da<di;da++);
 217   1                      for(db=0;db<10;db++);
 218   1      }
 219                  
 220          /*****************************************************************************/
 221          //清屏函数
 222          void lcm_clr(void){
 223   1              lcm_w_test(0,0x01);
 224   1              delaynms(40); //启动等待,等LCM讲入工作状态
 225   1      
 226   1      }
 227          
 228          /*****************************************************************************/
 229          //向LCM发送一个字符串,长度64字符之内。
 230          //应用:lcm_w_word("您好!"); 
 231          void lcm_w_word(unsigned char *str){

⌨️ 快捷键说明

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