📄 clockofoled.lst
字号:
WRO=0;
RDO=1;
CS=0;
DAT=com;
CS=1;
#else
216 1 unsigned char i;
217 1 CS=1;
218 1 CS=0;
219 1 DC=0;
220 1 for(i=0x80;i>0;i/=2)
221 1 {
222 2 CLK=0;
223 2 if(com&i)
224 2 DATA=1;
225 2 else
226 2 DATA=0;
227 2 CLK=1;
228 2 }
229 1 CS=1;
230 1 #endif
231 1 }
232 /**************************实现函数********************************************
233 *函数原型: void WriteData(unsigned dat);
234 *功 能: 写数据到oled显示屏。
235 *******************************************************************************/
236 void WriteData(unsigned dat)
237 {
238 1 #ifdef PAR
CS=1;
DC=1;
WRO=0;
C51 COMPILER V7.50 CLOCKOFOLED 08/28/2007 15:41:04 PAGE 5
RDO=1;
CS=0;
DAT=dat;
CS=1;
#else
247 1 unsigned char i;
248 1 CS=1;
249 1 DC=1;
250 1 CS=0;
251 1 for(i=0x80;i>0;i/=2)
252 1 {
253 2 CLK=0;
254 2 if(dat&i)
255 2 DATA=1;
256 2 else
257 2 DATA=0;
258 2 CLK=1;
259 2 }
260 1 CS=1;
261 1 #endif
262 1 }
263 /**************************实现函数********************************************
264 *函数原型: void esbusini(void);
265 *功 能: 总线初始化。
266 *******************************************************************************/
267 void esbusini(void)
268 {
269 1 RES1=0;
270 1 RES1=1;
271 1 }
272 /**************************实现函数********************************************
273 *函数原型: void ini_dis(void);
274 *功 能: 显示初始化。
275 *******************************************************************************/
276 void ini_dis(void)
277 {
278 1 unsigned char i,j;
279 1 for(i=0;i<8;i++)
280 1 {
281 2 WriteCommand(0xb0+i); //设置显示位置—行
282 2 WriteCommand(0x00); //设置显示位置—列低地址
283 2 WriteCommand(0x10); //设置显示位置—列高地址
284 2 for(j=0;j<128;j++)
285 2 WriteData(0x00); //屏幕显示,全亮
286 2 }
287 1 }
288 /**************************实现函数********************************************
289 *函数原型: void ini_oled(void);
290 *功 能: oled显示的准备工作。
291 *******************************************************************************/
292 void ini_oled(void)
293 {
294 1 esbusini();
295 1 /*************************************************
296 1 // SSD1303 Initialization Command
297 1 *************************************************/
298 1 // Lower Column Address
299 1 WriteCommand(0x00); /* Set Lower Column Address */
300 1 // High Column Address
301 1 WriteCommand(0x10); /* Set Higher Column Address*/
302 1 // Display Start Line
303 1 WriteCommand(0x40); /* Set Display Start Line */
C51 COMPILER V7.50 CLOCKOFOLED 08/28/2007 15:41:04 PAGE 6
304 1 // Contrast Control Register
305 1 WriteCommand(0x81); /* Set Contrast Control */
306 1 WriteCommand(0x20); /* 0 ~ 255 */
307 1 // Re-map
308 1 WriteCommand(0xA0); /* [A0]:column address 0 is map
309 1 to SEG0 , [A1]: columnaddress 131 is map to SEG0*/
310 1 // Entire Display ON/OFF
311 1 WriteCommand(0xA4); /* A4=ON */
312 1 // Normal or Inverse Display
313 1 WriteCommand(0XA6); /* Normal Display*/
314 1 // Multiplex Ratio
315 1 WriteCommand(0xA8); /* Set Multiplex Ratio */
316 1 WriteCommand(0x3f); /* Set to 36 Mux*/
317 1 // Set DC-DC
318 1 WriteCommand(0xAD); /* Set DC-DC */
319 1 WriteCommand(0x8A); /* 8B=ON, 8A=Off */
320 1 // Display ON/OFF
321 1 WriteCommand(0xAE); /* AF=ON , AE=OFF*/
322 1 // Display Offset
323 1 WriteCommand(0xD3); /* Set Display Offset */
324 1 WriteCommand(0x00); /* No offset */
325 1 // Display Clock Divide
326 1 WriteCommand(0xD5); /* Set Clock Divide */
327 1 WriteCommand(0x20); /* Set to 80Hz */
328 1 // Area Color Mode
329 1 WriteCommand(0xD8); /* Set Area Color On or Off*/
330 1 WriteCommand(0x00); /* Mono Mode */
331 1 // COM Pins Hardware Configuration
332 1 WriteCommand(0xDA); /* Set Pins HardwareConfiguration */
333 1 WriteCommand(0x12);
334 1 // VCOMH
335 1 WriteCommand(0xDB); /* Set VCOMH */
336 1 WriteCommand(0x00);
337 1 // VP
338 1 WriteCommand(0xD9); /* Set VP */
339 1 WriteCommand(0x22); /* P1=2 , P2=2 */
340 1 WriteCommand(0xc0);//配置成标准应用
341 1 ini_dis();
342 1 }
343 /*******************************function************************************************************/
344 //*******************显示X,Y坐标处的一个字符。一行可以显示16个字符。X为0到15,Y为0到3**************
345 void disc(unsigned char X,unsigned char Y,unsigned char * c)
346 {
347 1 unsigned char n;
348 1 WriteCommand (0xb7-(Y<<1));
349 1 if(X%2)
350 1 WriteCommand (0x08);
351 1 else
352 1 WriteCommand (0x00);
353 1 WriteCommand (0x10+(X>>1));
354 1 for(n=0;n<=15;n+=2)
355 1 WriteData(*(c+n));
356 1
357 1 WriteCommand (0xb7-(Y<<1)-1);
358 1 if(X%2)
359 1 WriteCommand (0x08);
360 1 else
361 1 WriteCommand (0x00);
362 1 WriteCommand (0x10+(X>>1));
363 1 for(n=1;n<=15;n+=2)
364 1 WriteData(*(c+n));
365 1 }
C51 COMPILER V7.50 CLOCKOFOLED 08/28/2007 15:41:04 PAGE 7
366 // X is 0 to 7
367 void dish(unsigned char X,unsigned char Y,unsigned char * h)
368 {
369 1 unsigned char n;
370 1 WriteCommand (0xb7-(Y<<1));
371 1 if(X%2)
372 1 WriteCommand (0x08);
373 1 else
374 1 WriteCommand (0x00);
375 1 WriteCommand (0x10+(X>>1));
376 1 for(n=0;n<=31;n+=2)
377 1 WriteData(*(h+n));
378 1
379 1 WriteCommand (0xb7-(Y<<1)-1);
380 1 if(X%2)
381 1 WriteCommand (0x08);
382 1 else
383 1 WriteCommand (0x00);
384 1 WriteCommand (0x10+(X>>1));
385 1 for(n=1;n<=31;n+=2)
386 1 WriteData(*(h+n));
387 1 }
388 void disn(unsigned char X,unsigned char Y,unsigned char n)
389 {
390 1 unsigned char m;
391 1 WriteCommand (0xb7-(Y<<1)); //
392 1 if(X%2)
393 1 WriteCommand (0x08); //设置低位列地址
394 1 else
395 1 WriteCommand (0x00); //设置低位列地址
396 1 WriteCommand (0x10+(X>>1));
397 1 //for(n=0;n<=15;n+=2)
398 1 // WriteData(*(c+n));
399 1 for(m=0;m<=15;m+=2)
400 1 WriteData(*(num[n]+m));
401 1
402 1 WriteCommand (0xb7-(Y<<1)-1);
403 1 if(X%2)
404 1 WriteCommand (0x08);
405 1 else
406 1 WriteCommand (0x00);
407 1 WriteCommand (0x10+(X>>1));
408 1 for(m=1;m<=15;m+=2)
409 1 WriteData(*(num[n]+m));
410 1 }
411
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1275 ----
CONSTANT SIZE = 560 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 16
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 + -