📄 ex6-5.lst
字号:
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 + -