• XS128-OLED例程

    这是用XS128驱动OLED的程序。------------------------------------ Code Warrior 5.0/1 Target : MC9S12XS128 Crystal: 16.000Mhz busclock:16.000MHz pllclock:32.000MHz ============================================ 使用说明: OLED电源使用5V。 ---------------- G 电源地 3.3V 接5V电源,电源跟模块之间串接100欧姆电阻,并加3.3V钳位二极管 D0 PORTE_PE2 单片机跟模块之间串接2k-3.3k电阻 D1 PORTE_PE3 单片机跟模块之间串接2k-3.3k电阻 RST PORTE_PE4 单片机跟模块之间串接2k-3.3k电阻 DC PORTE_PE5 单片机跟模块之间串接2k-3.3k电阻 CS 已接地,不用接 ============================================ 如果用户使用的是5V单片机,请看用户手册,切勿烧毁模块! ============================================*/ #include "derivative.h" #include <stdio.h> #include <string.h> #include "OLED12864.h" // PLL初始化子程序 BUS Clock=16M void SetBusCLK_48M(void) { CLKSEL=0X00; //disengage PLL to system PLLCTL_PLLON=1; //turn on PLL SYNR =0xc0 | 0x05; REFDV=0x80 | 0x01; POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz; _asm(nop); //BUS CLOCK=48M _asm(nop); while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system; } void Dly_ms(int ms) { int ii,jj; if (ms<1) ms=1; for(ii=0;ii<ms;ii++) for(jj=0;jj<1335;jj++); //16MHz--1ms //for(jj=0;jj<4006;jj++); //48MHz--1ms //for(jj=0;jj<5341;jj++); //64MHz--1ms } //============================MAIN()=========================== /*********************主函数************************************/ void main(void) { byte i=0; SetBusCLK_48M(); DDRB=0XFF; DDRE=0XFF; PORTB=0XFF; LCD_Init(); DisableInterrupts; for(;;) { //LCD_Fill(0xff); //Dly_ms(100); //LCD_Fill(0x00); //Dly_ms(2000); //LCD_CLS(); // LCD_Print(12,0,"广州Beyond科技"); // LCD_Print(15,2,"飞思卡尔智能车"); // LCD_Print(43,4,"专营店"); // LCD_Print(15,6,"智能车首选液晶"); //LCD_P8x16Str(48,4,"OLED"); //LCD_P6x8Str(16,6,"beyond-freescale"); //LCD_P6x8Str(34,7,"2012-10-01"); Draw_BMP(0,0,64,7,beyond96x64); //显示图片 //Draw_BMP(64,0,128,7,beyond64x64); } /* please make sure that you never leave main */ }

    5
    98
    255KB
    2013-12-17
    9
关注 私信
上传资源赚积分or赚钱