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

📄 mylcd.lst

📁 适合任意点阵的LCD屏幕的液晶时钟显示程序!开发人员只用简单的修改接口定义即刻方便调用!
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MYLCD                                                                 05/12/2005 10:41:59 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MYLCD
OBJECT MODULE PLACED IN mylcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mylcd.c OPTIMIZE(9,SIZE) DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************
   2          **这个程序是时钟程序用LCM12832作为显示.
   3          **P1口作为键盘输入P1.0=增加键;P11为选择键
   4          **时钟显示格式为:“时:分:秒”字体为16*16点阵
   5          **修改方式为两键式选择键合修改键
   6          **还可显示万年历:“年:月:日”
   7          **需要子函数:
   8          **              1、HEX->BCD子函数hex_bcd()
   9          **              2、显示子函数display()
  10          **              3、键盘子函数key()
  11          **              4、时钟子函数time()
  12          **              5、日历子函数day()
  13          **              6、显示控制子函数discommond()
  14          **              7、定时器中断0  time0()
  15          **              8、初始化子函数 begin().
  16          **              9、初始屏显display_begin().
  17          **              10、时间屏显display_time().
  18          **              11、润年判断leapf().
  19          **现有问题:键盘修改程序还未完成
  20          **                      程序不够精简
  21          *********************************************************/
  22          #include<reg52.h>
  23          #define time_TH 0x3c;                   // time0 :50ms  12M
  24          #define time_TL 0xba;
  25          
  26          unsigned char data msecond=0;
  27          bit data second_flag=0,day_flag=0,leap=0,display_flag=0,ku_flag;
  28          unsigned char day_temp;
  29          
  30          struct  time_str{
  31          unsigned char hour;
  32          unsigned char minute;
  33          unsigned char second;
  34          }time_now;
  35          
  36          struct day_str{
  37          unsigned int year;
  38          unsigned char month;
  39          unsigned char day;
  40          }day_now;
  41          
  42          
  43          //显示缓冲区
  44          unsigned char data display_bcd[13];
  45          
  46          
  47          //每月天数表
  48          unsigned char code day_num[]=
  49          {31,28,31,30,31,30,31,31,30,31,30,31};
  50          
  51          
  52          //时间显示位置表
  53          unsigned char code time_loc[][1]=
  54          {0,2,0,3,0,4,0,5,0,8,0,9,0,12,0,13
  55          ,16,4,16,5,16,8,16,9,16,12,16,13};
C51 COMPILER V7.50   MYLCD                                                                 05/12/2005 10:41:59 PAGE 2   

  56          
  57          
  58          //汉字显示位置表
  59          //指定位置显示“年,月,日,时,分,秒”
  60          unsigned char code zhi_loc[]=
  61          {0x06,0x01,0x0a,0x01,0x0e,0x01,0x06,0x10,0x0a,0x10,0x0e,0x10};
  62          /********************************************************************
  63          **字库开始
  64          **********************************************************************/
  65          unsigned char code shi[]={
  66          /*--  文字:  年  --*/
  67          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68          0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80,
  69          0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
  70          
  71          /*--  文字:  月  --*/
  72          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  73          0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,
  74          0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,
  75          
  76          /*--  文字:  日  --*/
  77          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  78          0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
  79          0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,
  80          
  81          /*--  文字:  时  --*/
  82          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  83          0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10,0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10,
  84          0x44,0x90,0x44,0x90,0x7C,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,
  85          
  86          /*--  文字:  分  --*/
  87          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88          0x08,0x80,0x0C,0x80,0x08,0x40,0x10,0x20,0x10,0x30,0x20,0x18,0x40,0x0E,0x9F,0xE4,
  89          0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xA0,0x20,0x40,0x40,0x00,
  90          
  91          /*--  文字:  秒  --*/
  92          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  93          0x0C,0x20,0xF0,0x20,0x10,0x20,0x11,0x28,0xFD,0xA4,0x11,0x22,0x32,0x22,0x3A,0x20,
  94          0x54,0x22,0x54,0x22,0x90,0x04,0x10,0x08,0x10,0x10,0x10,0x60,0x11,0x80,0x16,0x00};
  95          unsigned char code num[]={
  96          /*--  文字:  0  --*/
  97          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  98          0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
  99          
 100          /*--  文字:  1  --*/
 101          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 102          0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
 103          
 104          /*--  文字:  2  --*/
 105          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 106          0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
 107          
 108          /*--  文字:  3  --*/
 109          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 110          0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
 111          
 112          /*--  文字:  4  --*/
 113          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 114          0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,
 115          
 116          /*--  文字:  5  --*/
 117          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
C51 COMPILER V7.50   MYLCD                                                                 05/12/2005 10:41:59 PAGE 3   

 118          0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
 119          
 120          /*--  文字:  6  --*/
 121          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 122          0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
 123          
 124          /*--  文字:  7  --*/
 125          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 126          0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
 127          
 128          /*--  文字:  8  --*/
 129          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 130          0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,
 131          
 132          /*--  文字:  9  --*/
 133          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 134          0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,
 135          
 136          /*--  文字:  0  --*/
 137          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 138          0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,
 139          
 140          /*--  文字:  1  --*/
 141          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 142          0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,
 143          
 144          /*--  文字:  2  --*/
 145          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 146          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,
 147          
 148          /*--  文字:  3  --*/
 149          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 150          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,
 151          
 152          /*--  文字:  4  --*/
 153          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 154          0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,
 155          
 156          /*--  文字:  5  --*/
 157          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 158          0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,
 159          
 160          /*--  文字:  6  --*/
 161          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 162          0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,
 163          
 164          /*--  文字:  7  --*/
 165          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 166          0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,
 167          
 168          /*--  文字:  8  --*/
 169          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 170          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,
 171          
 172          /*--  文字:  9  --*/
 173          /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
 174          0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,
 175          
 176          };
 177          unsigned char code ku[]={
 178          /*--  调入了一幅图像:这是哭的的图像  --*/
 179          /*--  宽度x高度=16x16  --*/
C51 COMPILER V7.50   MYLCD                                                                 05/12/2005 10:41:59 PAGE 4   

 180          0x03,0xC0,0x0C,0x30,0x10,0x08,0x20,0x04,0x40,0x02,0x52,0x4A,0x8C,0x31,0x80,0x01,
 181          0x80,0x01,0x81,0x81,0x42,0x42,0x44,0x22,0x20,0x04,0x10,0x08,0x0C,0x30,0x03,0xC0,
 182          /*--  调入了一幅图像:这是笑的的图像  --*/
 183          /*--  宽度x高度=16x16  --*/
 184          0x03,0xC0,0x0C,0x30,0x10,0x08,0x20,0x04,0x40,0x02,0x40,0x02,0x8C,0x31,0x92,0x49,
 185          0x80,0x01,0x80,0x01,0x44,0x22,0x42,0x42,0x21,0x84,0x10,0x08,0x0C,0x30,0x03,0xC0
 186          };
 187          /*****************************************************************************
 188          **字库结束
 189          ******************************************************************************/
 190          
 191          void day();
 192          void time();
 193          void begin();
 194          void display(unsigned char *cpoint,unsigned char x_line,unsigned char y_line,unsigned char s_l);
 195          unsigned char hex_bcd(unsigned char hex);
 196          void display_begin();
 197          void display_time(struct time_str time,struct day_str day);
 198          bit leapf(unsigned int year);
 199          
 200          void main()
 201          {
 202   1              begin();
 203   1              display_begin();
 204   1              while (1)
 205   1              {
 206   2                      while (1)
 207   2                      {
 208   3                              time();
 209   3                              day();
 210   3                              if (display_flag)
 211   3                              {
 212   4                                      display_flag=0;
 213   4                                      display_time(time_now,day_now);
 214   4                      
 215   4                              }
 216   3                              if (display_flag)
 217   3                                      continue;
 218   3                              if((day_now.month==2)&leap)
 219   3                              {
 220   4                                      leap=0;
 221   4                                      day_temp=29;
 222   4                              }
 223   3                      }
 224   2              }
 225   1      }
 226          
 227          
 228          
 229          
 230          /******************************************************
 231          **time()子函数
 232          **参数:second_flay
 233          **
 234          ******************************************************/
 235          void time(){
 236   1      if(second_flag){
 237   2              display_flag=1;
 238   2              second_flag=0;
 239   2      //                                      day_flag=1;
 240   2      
 241   2              time_now.second++;
C51 COMPILER V7.50   MYLCD                                                                 05/12/2005 10:41:59 PAGE 5   

 242   2              if(time_now.second==60){
 243   3                      time_now.second=0;
 244   3                      time_now.minute++;
 245   3                      if(time_now.minute==60){
 246   4                              time_now.minute=0;
 247   4                              time_now.hour++;
 248   4                              if(time_now.hour==24){
 249   5                                      time_now.hour=0;
 250   5                                      day_flag=1;
 251   5                                      }
 252   4                              }
 253   3                      }
 254   2              }
 255   1      }
 256          
 257          
 258          
 259          
 260          /*********************************************************
 261          **day()子函数
 262          **参数:day_flag日标志;leap润年标志
 263          **
 264          **********************************************************/
 265          void day(){
 266   1      if(day_flag){
 267   2              day_flag=0;
 268   2              day_now.day++;
 269   2              if(day_now.day==day_temp+1){
 270   3                      day_now.month++;
 271   3                      if((day_now.month==2)&leap){
 272   4                              leap=0;
 273   4                              day_temp=29;
 274   4                              }
 275   3                      else day_temp=day_num[day_now.month-1];
 276   3                      day_now.day=1;
 277   3                      if(day_now.month==13){
 278   4                              day_now.month=1;

⌨️ 快捷键说明

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