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

📄 ex6-5.lst

📁 /* ex6-5.C - 绘图型 LCD 数字时钟 */
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   EX6_5                                                                 09/26/2006 20:28:21 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE EX6_5
OBJECT MODULE PLACED IN EX6-5.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE EX6-5.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /* ex6-5.C - 绘图型 LCD 数字时钟 */
   2                            
   3          #include <REGX51.H>
   4          
   5          #define TIMER0_COUNT 0xDC11     /* 10000h-((11,059,200/
   6                                                                     (12*FREQ))-
   7          17               */
   8          
   9          /*绘图型 LCD 指令 */
  10          #define  GLCD_OFF                        62
  11          #define  GLCD_ON                         63
  12          #define  GLCD_START_LINE_0       192
  13          #define  SET_PAGE                         184
  14          #define  SET_Y_ADDRESS_0          64
  15          #define  CLEAR                              0
  16          /*绘图型 LCD 控制线 */
  17          #define  ENABLE                            1
  18          #define  DISABLE                           0
  19          #define  READ                                1
  20          #define  WRITE                              0
  21          #define  COMMAND                       0
  22          #define  DATA                                1
  23          #define  GLCD_RESET                   P2_2
  24          #define  GLCD_CS2                       P2_3
  25          #define  GLCD_CS1                       P2_4
  26          #define  GLCD_D_I                       P2_5
  27          #define  GLCD_R_W                P2_6
  28          #define  GLCD_ENABLE          P2_7
  29          //
  30          #define  mode_button               P2_0
  31          #define  up_button                   P2_1
  32          
  33          typedef struct { 
  34                          char    hour;
  35                          char    minute;
  36                          char    second;
  37          } time;
  38          
  39          typedef struct { 
  40                          char    year;
  41                          char    month;
  42                          char    day;
  43          } date;
  44          
  45          time now={23,59,0},display;
  46          date today={5,9,1},tmpday;
  47          
  48          unsigned char gx,gy,mode;
  49          static unsigned timer0_tick;
  50          char code int2char[]="0123456789";
  51          char code dayofmonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
  52          
  53          unsigned char code digit[10][4][8]=
  54          //0
  55          {{
C51 COMPILER V8.02   EX6_5                                                                 09/26/2006 20:28:21 PAGE 2   

  56          {0X00,0X00,0X00,0XFC,0XFE,0X03,0X01,0X81},
  57          {0XC1,0X61,0X31,0X1B,0XFE,0XFC,0X00,0X00},
  58          {0X00,0X00,0X00,0X0F,0X1F,0X36,0X23,0X21},
  59          {0X20,0X20,0X20,0X30,0X1F,0X0F,0X00,0X00}},
  60          //1
  61          {
  62          {0X00,0X00,0X00,0X00,0X00,0X04,0X06,0XFF},
  63          {0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
  64          {0X00,0X00,0X00,0X00,0X20,0X20,0X20,0X3F},
  65          {0X3F,0X20,0X20,0X20,0X00,0X00,0X00,0X00}},
  66          //2
  67          {
  68          {0X00,0X00,0X00,0X1C,0X1E,0X03,0X01,0X81},
  69          {0XC1,0X41,0X61,0X33,0X3E,0X1C,0X00,0X00},
  70          {0X00,0X00,0X00,0X3C,0X3E,0X33,0X31,0X31},
  71          {0X30,0X30,0X30,0X30,0X30,0X3C,0X00,0X00}},
  72          //3
  73          {
  74          {0X00,0X00,0X00,0X0C,0X0E,0X02,0X01,0X41},
  75          {0X41,0XE1,0XE1,0XB2,0X1E,0X0C,0X00,0X00},
  76          {0X00,0X00,0X00,0X0C,0X1C,0X10,0X20,0X20},
  77          {0X20,0X20,0X20,0X11,0X1F,0X0E,0X00,0X00}},
  78          //4
  79          {
  80          {0X00,0X00,0X80,0XC0,0X60,0X30,0X18,0X0C},
  81          {0X06,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00},
  82          {0X00,0X07,0X07,0X04,0X04,0X04,0X04,0X24},
  83          {0X24,0X3F,0X3F,0X24,0X24,0X04,0X00,0X00}},
  84          //5
  85          {
  86          {0X00,0X00,0X00,0XFF,0XFF,0X43,0X23,0X23},
  87          {0X23,0X23,0X23,0X43,0XC3,0X80,0X00,0X00},
  88          {0X00,0X00,0X00,0X0C,0X1C,0X10,0X20,0X20},
  89          {0X20,0X20,0X20,0X10,0X1F,0X0F,0X00,0X00},},
  90          //6
  91          {
  92          {0X00,0X00,0X00,0XFC,0XFE,0X82,0X41,0X41},
  93          {0X41,0X41,0X41,0XC7,0X86,0X00,0X00,0X00},
  94          {0X00,0X00,0X00,0X0F,0X1F,0X30,0X20,0X20},
  95          {0X20,0X20,0X20,0X10,0X1F,0X0F,0X00,0X00}},
  96          //7
  97          {
  98          {0X00,0X00,0X00,0X0F,0X03,0X03,0X03,0X03},
  99          {0X83,0XC3,0X63,0X33,0X1F,0X0F,0X00,0X00},
 100          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F},
 101          {0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00}},
 102          //8
 103          {
 104          {0X00,0X00,0X00,0X1C,0XBE,0XE2,0X41,0X41},
 105          {0X41,0X41,0XE2,0XBE,0X1C,0X00,0X00,0X00},
 106          {0X00,0X00,0X0E,0X1F,0X11,0X20,0X20,0X20},
 107          {0X20,0X20,0X20,0X11,0X1F,0X0E,0X00,0X00}},
 108          //9
 109          {
 110          {0X00,0X00,0X00,0X7C,0XFE,0X82,0X01,0X01},
 111          {0X01,0X01,0X82,0XC6,0XFC,0XF8,0X00,0X00},
 112          {0X00,0X00,0X00,0X0C,0X1C,0X18,0X21,0X21},
 113          {0X21,0X21,0X10,0X1C,0X0F,0X03,0X00,0X00}}};
 114          unsigned char code slash[4][8]=
 115          ///
 116          {
 117          {0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0X60},
C51 COMPILER V8.02   EX6_5                                                                 09/26/2006 20:28:21 PAGE 3   

 118          {0X30,0X18,0X0C,0X06,0X03,0X01,0X00,0X00},
 119          {0X30,0X18,0X0C,0X06,0X03,0X01,0X00,0X00},
 120          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00}};
 121          //:
 122          unsigned char code comma[4][8]=
 123          {
 124          {0X00,0X00,0X00,0X00,0X00,0X00,0X10,0X38},
 125          {0X38,0X10,0X00,0X00,0X00,0X00,0X00,0X00},
 126          {0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X07},
 127          {0X07,0X02,0X00,0X00,0X00,0X00,0X00,0X00}};
 128          unsigned char code space[4][8]=
 129          {
 130          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 131          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 132          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 133          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00}};
 134          unsigned char code token[7][4][8]=
 135          {
 136          {
 137          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 138          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 139          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
 140          {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00}},
 141          //现
 142          {
 143          {0X42,0X42,0XFE,0X43,0X42,0X00,0X00,0XFE},
 144          {0X49,0X49,0X49,0X49,0XFF,0X00,0X00,0X00},
 145          {0X08,0X18,0X0F,0X04,0X22,0X20,0X20,0X13},
 146          {0X0E,0X01,0X01,0X3E,0X23,0X20,0X30,0X00}},
 147          //在
 148          {
 149          {0X02,0X02,0X02,0X84,0X64,0X1C,0X87,0X84},
 150          {0X84,0XF4,0X84,0X84,0XC4,0X86,0x04,0X00},
 151          {0X04,0X02,0X01,0X3F,0X00,0X10,0X10,0X10},
 152          {0X10,0X1F,0X10,0X10,0X10,0X18,0X10,0X00}},
 153          //时
 154          {
 155          {0XFC,0X44,0X44,0XFC,0X80,0X92,0X92,0X52},
 156          {0X52,0X5F,0X52,0XF2,0X9A,0XD2,0X80,0X00},
 157          {0X0F,0X04,0X04,0X0F,0X00,0X00,0X02,0X04},
 158          {0X80,0X00,0X40,0X1F,0X00,0X00,0X00,0X00}},
 159          //间
 160          {
 161          {0X00,0XFF,0X15,0X15,0X15,0X95,0X9F,0X10},
 162          {0X10,0X9F,0X95,0X15,0X15,0X15,0XFF,0X00},
 163          {0X00,0X3F,0X00,0X00,0X00,0X0F,0X0A,0X0A},
 164          {0X0A,0X0A,0X0F,0X00,0X20,0X20,0X1F,0X00}},
 165          //是
 166          {
 167          {0X40,0X40,0X40,0X5F,0X55,0X55,0X55,0XD5},
 168          {0X55,0X55,0X55,0X5F,0X40,0X60,0X40,0X00},
 169          {0X20,0X10,0X08,0X07,0X08,0X10,0X20,0X3F},
 170          {0X22,0X22,0X22,0X23,0X22,0X20,0X20,0X00}},
 171          //:
 172          {
 173          {0X00,0X00,0X00,0X00,0X00,0X00,0X10,0X38},
 174          {0X38,0X10,0X00,0X00,0X00,0X00,0X00,0X00},
 175          {0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X07},
 176          {0X07,0X02,0X00,0X00,0X00,0X00,0X00,0X00}}};
 177          
 178          void check_GLCD_busyflag(void)
 179          {
C51 COMPILER V8.02   EX6_5                                                                 09/26/2006 20:28:21 PAGE 4   

 180   1              unsigned char   x;
 181   1      
 182   1              GLCD_R_W=READ;
 183   1              GLCD_D_I=COMMAND;
 184   1              GLCD_ENABLE=ENABLE;
 185   1              P0=255;
 186   1              do {
 187   2                      x=P0 && 128;
 188   2              } while(x);
 189   1              GLCD_ENABLE=DISABLE;
 190   1              GLCD_D_I=1;
 191   1              GLCD_R_W=1;
 192   1      }
 193          
 194          void write_GLCD_command(unsigned command)
 195          {
 196   1              GLCD_R_W=WRITE;
 197   1              GLCD_D_I=COMMAND;
 198   1              GLCD_ENABLE=ENABLE;
 199   1              P0=command;
 200   1              GLCD_ENABLE=DISABLE;
 201   1              GLCD_D_I=1;
 202   1              GLCD_R_W=1;
 203   1              check_GLCD_busyflag();
 204   1      }
 205          
 206          void write_GLCD_data(unsigned GLCDdata)
 207          {
 208   1              GLCD_R_W=WRITE;
 209   1              GLCD_D_I=DATA;
 210   1              GLCD_ENABLE=ENABLE;
 211   1              P0=GLCDdata;
 212   1              GLCD_ENABLE=DISABLE;
 213   1              GLCD_D_I=0;
 214   1              GLCD_R_W=1;
 215   1              check_GLCD_busyflag();
 216   1      }
 217          
 218          void clear_GLCD()
 219          {
 220   1              int     i,j;
 221   1      
 222   1              GLCD_RESET=0;
 223   1              for(i=0;i<2;i++);
 224   1              GLCD_RESET=1;
 225   1              GLCD_CS1=1;
 226   1              GLCD_CS2=1;
 227   1              write_GLCD_command(GLCD_ON);    
 228   1              write_GLCD_command(GLCD_START_LINE_0);
 229   1              for(i=0;i<8;i++)
 230   1              {
 231   2                      write_GLCD_command(SET_PAGE+i); 

⌨️ 快捷键说明

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