📄 my01.lst
字号:
193 1 for(j=1;j<=255;j+=2)
194 1 WriteData(d1[j]); //屏幕显示,全亮
195 1
196 1 WriteCommand (0xb5); //设置显示位置—行
197 1 WriteCommand (0x00); //设置显示位置—列低地址
198 1 WriteCommand (0x10); //设置显示位置—列高地址
199 1 for(j=0;j<255;j+=2)
200 1 WriteData(d1[j]); //屏幕显示,全亮
201 1 //-----------------------------------------------------------------------
202 1 WriteCommand (0x40);
203 1 WriteCommand (0xb2); //设置显示位置—行
204 1 WriteCommand (0x00); //设置显示位置—列低地址
205 1 WriteCommand (0x10); //设置显示位置—列高地址
206 1 for(j=1;j<=255;j+=2)
207 1 WriteData(d2[j]); //屏幕显示,全亮
208 1
209 1 WriteCommand (0xb3); //设置显示位置—行
210 1 WriteCommand (0x00); //设置显示位置—列低地址
211 1 WriteCommand (0x10); //设置显示位置—列高地址
212 1 for(j=0;j<255;j+=2)
213 1 WriteData(d2[j]); //屏幕显示,全亮
214 1 //-----------------------------------------------------------------------
215 1 WriteCommand (0x40);
216 1 WriteCommand (0xb0); //设置显示位置—行
217 1 WriteCommand (0x00); //设置显示位置—列低地址
218 1 WriteCommand (0x10); //设置显示位置—列高地址
219 1 for(j=1;j<=255;j+=2)
220 1 WriteData(d3[j]); //屏幕显示,全亮
221 1
222 1 WriteCommand (0xb1); //设置显示位置—行
223 1 WriteCommand (0x00); //设置显示位置—列低地址
224 1 WriteCommand (0x10); //设置显示位置—列高地址
225 1 for(j=0;j<255;j+=2)
226 1 WriteData(d3[j]); //屏幕显示,全亮
227 1 TMOD=0X11;
228 1 TH0=(65535-50000)/256;
229 1 TL0=(65535-50000)%256;
230 1 TR0=1;//启动计时器
231 1 ET0=1;
232 1 EA=1;
233 1 while(1)
234 1 {
235 2 if(!DOWN)
236 2 { delay(10);
237 3 if(!DOWN)
238 3 {
239 4 cc=0;
240 4 WriteCommand(0xAf); // AF=ON , AE=OFF
241 4 b-=5;
C51 COMPILER V7.50 MY01 11/07/2006 20:14:31 PAGE 5
242 4 if(b<0) b=255;
243 4 WriteCommand(0x81);
244 4 WriteCommand(b);
245 4 }
246 3 }
247 2 if(!UP)
248 2 { delay(10);
249 3 if(!UP)
250 3 {
251 4 cc=0;
252 4 WriteCommand(0xAF); // AF=ON , AE=OFF
253 4 b+=5;
254 4 if(b>255) b=0;
255 4 WriteCommand(0x81);
256 4 WriteCommand(b);
257 4 }
258 3 } // key panduan
259 2 }
260 1 }
261 /**************************实现函数********************************************
262 *函数原型: unsigned char ReadCommand(void);
263 *功 能: 从oled上读当前命令到控制器。
264 *******************************************************************************/
265 void WriteCommand(unsigned com)
266 {
267 1 CS=1;
268 1 DC=0;
269 1 WR=0;
270 1 RD=1;
271 1 CS=0;
272 1 DAT=com;
273 1 CS=1;
274 1 }
275 /**************************实现函数********************************************
276 *函数原型: void WriteData(unsigned dat);
277 *功 能: 写数据到oled显示屏。
278 *******************************************************************************/
279 void WriteData(unsigned dat)
280 {
281 1 CS=1;
282 1 DC=1;
283 1 WR=0;
284 1 RD=1;
285 1 CS=0;
286 1 DAT=dat;
287 1 CS=1;
288 1 }
289 /**************************实现函数********************************************
290 *函数原型: void esbusini(void);
291 *功 能: 总线初始化。
292 *******************************************************************************/
293 void esbusini(void)
294 {
295 1 RES=0;
296 1 RES=1;
297 1 }
298 /**************************实现函数********************************************
299 *函数原型: void ini_dis(void);
300 *功 能: 显示初始化。
301 *******************************************************************************/
302 void ini_dis(void)
303 {
C51 COMPILER V7.50 MY01 11/07/2006 20:14:31 PAGE 6
304 1 unsigned char i,j;
305 1 for(i=0;i<8;i++)
306 1 {
307 2 WriteCommand (0xb0+i); //设置显示位置—行
308 2 WriteCommand (0x00); //设置显示位置—列低地址
309 2 WriteCommand (0x10); //设置显示位置—列高地址
310 2 for(j=0;j<128;j++)
311 2 WriteData(0x00); //屏幕显示,全亮
312 2 }
313 1 }
314 /**************************实现函数********************************************
315 *函数原型: void ini_oled(void);
316 *功 能: oled显示的准备工作。
317 *******************************************************************************/
318 void ini_oled(void)
319 {
320 1 esbusini();
321 1 /*************************************************
322 1 // SSD1303 Initialization Command
323 1 *************************************************/
324 1 // Lower Column Address
325 1 WriteCommand(0x00); /* Set Lower Column Address */
326 1 // High Column Address
327 1 WriteCommand(0x10); /* Set Higher Column Address*/
328 1 // Display Start Line
329 1 WriteCommand(0x40); /* Set Display Start Line */
330 1 // Contrast Control Register
331 1 WriteCommand(0x81); /* Set Contrast Control */
332 1 WriteCommand(0x20); /* 0 ~ 255 */
333 1 // Re-map
334 1 WriteCommand(0xA0); /* [A0]:column address 0 is map
335 1 to SEG0 , [A1]: columnaddress 131 is map to SEG0*/
336 1 // Entire Display ON/OFF
337 1 WriteCommand(0xA4); /* A4=ON */
338 1 // Normal or Inverse Display
339 1 WriteCommand(0XA6); /* Normal Display*/
340 1 // Multiplex Ratio
341 1 WriteCommand(0xA8); /* Set Multiplex Ratio */
342 1 WriteCommand(0x3f); /* Set to 36 Mux*/
343 1 // Set DC-DC
344 1 WriteCommand(0xAD); /* Set DC-DC */
345 1 WriteCommand(0x8A); /* 8B=ON, 8A=Off */
346 1 // Display ON/OFF
347 1 WriteCommand(0xAE); /* AF=ON , AE=OFF*/
348 1 // Display Offset
349 1 WriteCommand(0xD3); /* Set Display Offset */
350 1 WriteCommand(0x00); /* No offset */
351 1 // Display Clock Divide
352 1 WriteCommand(0xD5); /* Set Clock Divide */
353 1 WriteCommand(0x20); /* Set to 80Hz */
354 1 // Area Color Mode
355 1 WriteCommand(0xD8); /* Set Area Color On or Off*/
356 1 WriteCommand(0x00); /* Mono Mode */
357 1 // COM Pins Hardware Configuration
358 1 WriteCommand(0xDA); /* Set Pins HardwareConfiguration */
359 1 WriteCommand(0x12);
360 1 // VCOMH
361 1 WriteCommand(0xDB); /* Set VCOMH */
362 1 WriteCommand(0x00);
363 1 // VP
364 1 WriteCommand(0xD9); /* Set VP */
365 1 WriteCommand(0x22); /* P1=2 , P2=2 */
C51 COMPILER V7.50 MY01 11/07/2006 20:14:31 PAGE 7
366 1 WriteCommand(0xc0);//配置成标准应用
367 1 ini_dis();
368 1 }
369 void delay(unsigned char m)
370 {
371 1 unsigned char i,j;
372 1 while(--m)
373 1 {
374 2 for(i=0;i<50;i++)
375 2 for(j=0;j<80;j++);
376 2 }
377 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 876 ----
CONSTANT SIZE = 1024 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -