打印
[STM8]

再抛个砖。STM8S207+OLED

[复制链接]
4136|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
精益求精|  楼主 | 2009-11-25 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define ZLG7289_pinCLK  (GPIO_PIN_0)  //PE0时钟信号,上升沿有效
#define ZLG7289_pinDIO  (GPIO_PIN_1)   //PE1数据信号,双向
#define ZLG7289_pinCS  (GPIO_PIN_2)  //PE2片选信号,低电平有效
#define ZLG7289_pinINT  (GPIO_PIN_7)  //PD7键盘中断请求信号,低电平(负边沿)有效


#define  WHITE   0
#define  BLACK   1
#define  LEDS8   (0xFF<<0) // P1[25:18]控制LED8~LED1,低电平点亮
//OLED屏测试用变量
#define   AD0_PIN_NUM    0   //8位数据总线
#define   RD_PIN_NUM     2    //PE08 读数据/指令控制位,低电平有效
#define   WR_PIN_NUM     3    //PE09 写数据/指令控制位,高电平变低电平时写入
#define  DC_PIN_NUM     1    //PE10数据/指令控制位,低电平—指令操作,高电平—数据操作
#define   RES_PIN_NUM    7   //PE11 复位信号,低电平复位
#define   CS_PIN_NUM     6   //PE12 使能位,低电平有效
#define PIN_RD               (   1 <<  2)
#define PIN_RW               (   1 <<  3)
#define PIN_DC               (   1 << 1)
#define PIN_RST              (   1 << 7)
#define PIN_CS               (   1 << 6)

#define PINS_CTRL            (0x1F <<  8)
#define PINS_DATA            (0xFF <<  0)
#define PINS_ALL             (PINS_CTRL | PINS_DATA)
/* pin CS  setting to 0 or 1                                                  */
#define LCD_CS(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_CS)  | (x ? PIN_CS : 0 );
/* pin RST setting to 0 or 1                                                   */
#define LCD_RST(x)            GPIOC->ODR = (GPIOC->ODR & ~PIN_RST) | (x ? PIN_RST : 0);
/* pin RS setting to 0 or 1                                                   */
#define LCD_DC(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_DC)  | (x ? PIN_DC : 0 );
/* pin RW setting to 0 or 1                                                   */
#define LCD_RW(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_RW)  | (x ? PIN_RW : 0 );
/* pin RD setting to 0 or 1                                                   */
#define LCD_RD(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_RD)  | (x ? PIN_RD : 0 );
/* Reading DATA pins                                                          */
#define LCD_DATA_IN           (((GPIOB->IDR & PINS_DATA) >> 0) & 0xFF)
/* Writing value to DATA pins                                                 */
#define LCD_DATA_OUT(x)       GPIOB->ODR = (GPIOB->ODR & ~PINS_DATA) | (x << 0);
#define DELAY_2N     0

char  dispbuff[32];
unsigned char page;   //显示页面数,0-63行,分为 0-7 个页面
unsigned char com;   //显示命令
unsigned char dat;   //显示数据
unsigned char jj;   //字库查询辅助变量
unsigned char   w_or_b;
extern void ExBusInit(void);
extern uint8 ReadData(void);
extern void WriteCommand(uint8 Data);
extern void WriteData(uint8 Data);
extern void clr_oled(void);
extern void init_oled(void);
extern void set_position(uint8 page1,uint8 p1,uint8 col1);
extern void display_prog(uint8 line,uint8 column,uint8 nn); //显示程序
extern void dprintf_CHAR12 (uint8 line,uint8 column,char str[20]);
extern void dprintf_WORD16 (uint8 line,uint8 column,char str[20]);
extern void dprintf_NUM48(uint8 line,uint8 column,char str[20]);
extern void disp_float(uint8 row,uint8 col,float x);
extern void disp_float_1(uint8 row,uint8 col,float x);
extern void disp_int(uint8 row,uint8 col,uint16 x);

//==========================================================================================
//**
//**纵向取模,字节倒序
//**
//==========================================================================================
typedef struct typCHAR_12 // 汉字字模显示数据结构
{
  uint8 Index[2];
  uint8 Msk[16];
}typCHAR_12;
/******************************************************************************************/
//
/******************************************************************************************/
typCHAR_12 const CHAR_12[]={  //16*8 字符
"1",0x00,0x00,0x20,0x20,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,
"2",0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,
"3",0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x0C,0x10,0x10,0x10,0x11,0x0E,0x00,
"4",0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x00,0x00,0x03,0x02,0x12,0x1F,0x12,0x12,0x00,
"5",0x00,0xF8,0x88,0x48,0x48,0x48,0x88,0x00,0x00,0x0C,0x10,0x10,0x10,0x10,0x0F,0x00,
"6",0x00,0xE0,0x10,0x88,0x88,0x98,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,
"7",0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,
"8",0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,
"9",0x00,0xF0,0x08,0x08,0x08,0x90,0xE0,0x00,0x00,0x00,0x19,0x11,0x11,0x08,0x07,0x00,
"0",0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,
".",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,
"a",0x00,0x20,0x90,0x50,0x50,0xE0,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x07,0x04,0x00,
"b",0x02,0xFE,0x20,0x10,0x10,0x10,0xE0,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x03,0x00,
"c",0x00,0xC0,0x20,0x10,0x10,0x10,0x20,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x02,0x00,
"d",0x00,0xE0,0x10,0x10,0x10,0x12,0xFE,0x00,0x00,0x03,0x04,0x04,0x04,0x02,0x07,0x04,
"e",0x00,0xE0,0x50,0x50,0x50,0x50,0x60,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x02,0x00,
"f",0x00,0x10,0x10,0xFC,0x12,0x12,0x06,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,0x00,
"g",0x00,0xB0,0x48,0x48,0x48,0x38,0x08,0x00,0x00,0x06,0x09,0x09,0x09,0x09,0x06,0x00,
"h",0x02,0xFE,0x20,0x10,0x10,0x10,0xE0,0x00,0x04,0x07,0x04,0x00,0x00,0x04,0x07,0x04,
"i",0x00,0x10,0x16,0xF6,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,0x00,
"k",0x02,0xFE,0x80,0x40,0xB0,0x10,0x10,0x00,0x04,0x07,0x04,0x00,0x05,0x06,0x04,0x00,
"l",0x00,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,0x00,
"m",0x10,0xF0,0x10,0xF0,0x10,0xE0,0x00,0x00,0x04,0x07,0x00,0x07,0x00,0x07,0x04,0x00,
"n",0x10,0xF0,0x20,0x10,0x10,0x10,0xE0,0x00,0x04,0x07,0x04,0x00,0x00,0x04,0x07,0x04,
"o",0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0x01,0x02,0x04,0x04,0x02,0x01,0x00,
"p",0x08,0xF8,0x10,0x08,0x08,0x08,0xF0,0x00,0x08,0x0F,0x0A,0x02,0x02,0x02,0x01,0x00,
"q",0x00,0xF0,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x01,0x02,0x02,0x02,0x09,0x0F,0x08,
"r",0x10,0x10,0xF0,0x20,0x10,0x10,0x30,0x00,0x04,0x04,0x07,0x04,0x04,0x00,0x00,0x00,
"s",0x00,0x60,0x90,0x90,0x90,0x30,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x03,0x00,0x00,
"t",0x00,0x10,0x10,0xFC,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x00,0x00,
"u",0x10,0xF0,0x00,0x00,0x00,0x10,0xF0,0x00,0x00,0x03,0x04,0x04,0x04,0x02,0x07,0x04,
"v",0x10,0x30,0xD0,0x00,0x00,0xD0,0x30,0x10,0x00,0x00,0x01,0x06,0x01,0x00,0x00,0x00,
"w",0x10,0xF0,0x00,0xF0,0x00,0xF0,0x10,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00,
"x",0x00,0x10,0x30,0xC0,0xD0,0x30,0x10,0x00,0x00,0x04,0x06,0x05,0x01,0x06,0x04,0x00,
"y",0x08,0x18,0xE8,0x00,0x80,0x68,0x18,0x08,0x08,0x08,0x08,0x07,0x01,0x00,0x00,0x00,
"z",0x00,0x30,0x10,0x90,0x50,0x30,0x10,0x00,0x00,0x04,0x06,0x05,0x04,0x04,0x06,0x00,
/*
"_",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
"/",0x00,0x00,0x00,0xE0,0x18,0x07,0x00,0x00,0x00,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,
":",0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
" ",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
">",0x00,0x00,0x40,0x40,0x80,0x80,0x00,0x00,0x01,0x01,0x05,0x05,0x03,0x03,0x01,0x01,
"<",0x00,0xFC,0x07,0x07,0x04,0xF8,0x00,0x00,0x10,0x9F,0xF0,0x90,0xF0,0x9F,0x10,0x00,
"C",0x00,0xF0,0x08,0x08,0x08,0x08,0x38,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x10,0x00,
"%",0xE0,0x50,0xE0,0x90,0x68,0x14,0x0A,0x00,0x00,0x31,0x0C,0x03,0x0E,0x11,0x0E,0x00,
"+",0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,
"-",0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
";",0x00,0x00,0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x08,0x04,0x02,0x01,0x00,
"=",0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
"L",0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00,
"A",0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
"B",0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,
"O",0xF8,0x04,0x02,0x02,0x02,0x04,0xF8,0x00,0x01,0x02,0x04,0x04,0x04,0x02,0x01,0x00,
"N",0x00,0x02,0xFE,0x0E,0x70,0x82,0xFE,0x02,0x00,0x04,0x07,0x04,0x00,0x03,0x07,0x00,
"D",0x00,0x02,0xFE,0x02,0x02,0x02,0x04,0xF8,0x00,0x04,0x07,0x04,0x04,0x04,0x02,0x01,
*/
};
沙发
精益求精|  楼主 | 2009-11-25 10:35 | 只看该作者
typedef struct typFNT_GB16        // 汉字字模显示数据结构
{
         uint8 Index[3];
         uint8 Msk[32];
}typFNT_GB16;
typFNT_GB16 const GB_16[] = {        // 显示为16*16                  //宋体  常规  小五(五号)  左上三        右下二
"北",0x00,0x00,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,0xFC,0x80,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x60,0x20,0x10,0x10,0x7F,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x38,0x00,
"京",0x00,0x00,0x10,0x10,0xD0,0x50,0x50,0x54,0x5C,0x50,0x50,0x50,0xD0,0x10,0x10,0x00,0x00,0x00,0x40,0x20,0x13,0x1A,0x42,0x42,0x3E,0x02,0x0A,0x12,0x13,0x60,0x00,0x00,
"版",0x00,0x00,0x00,0xF8,0x40,0x7C,0x40,0xF8,0x48,0x48,0x48,0x44,0x44,0xC4,0x00,0x00,0x00,0x00,0x60,0x1F,0x02,0x7E,0x20,0x5F,0x40,0x23,0x14,0x0C,0x33,0x40,0x40,0x00,
"本",0x00,0x00,0x00,0x10,0x10,0x10,0xD0,0x30,0xFC,0x30,0xD0,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x10,0x08,0x04,0x0B,0x08,0x08,0x7F,0x08,0x08,0x0B,0x04,0x18,0x08,0x00,

};

typedef struct typNUM
{
uint8 Index[4];
uint8 Msk[48];
}typNUM;
typNUM  const NUM_48[]= {                // 24*16 数字
"S", 0x00,0xE0,0xF0,0xF8,0x1C,0x0C,0x04,0x04,0x04,0x04,0x0C,0x18,0x7C,0x7C,0x00,0x00,
        0x00,0x01,0x07,0x07,0x0E,0x0C,0x1C,0x18,0x38,0x38,0x70,0xF0,0xE0,0xC0,0x80,0x00,
        0x00,0x06,0x7E,0x78,0x30,0x60,0x40,0x40,0x40,0x40,0x60,0x70,0x3F,0x1F,0x0F,0x00,
        };

//****************************************************************************************
//*以下是OLED屏测试函数*
//****************************************************************************************
//****************************************************************************************
void ExBusInit(void)    //初始化P09702OLED显示屏总线
{   

       


  /* Set all pins for LCD as outputs                                          */
  //LCD_ALL_DIR_OUT
        GPIOB->DDR |= 0xFF;              /* Output.                  */
    GPIOB->CR1 |= 0xFF;              /* PushPull.                */
    GPIOB->CR2  = 0x00;              /* Output speed up to 2MHz. */
       
        GPIOC->DDR |= 0xFF;              /* Output.                  */
    GPIOC->CR1 |= 0xFF;              /* PushPull.                */
    GPIOC->CR2  = 0x00;              /* Output speed up to 2MHz. */

  //GPIOB->ODR |= PortPins;
  //GPIOC->ODR |= PortPins;
  //GPIOC->ODR &= (u8)(~PortPins);
  

   
  //LCD_CS(0);
  GPIOC->ODR &= (u8)(~GPIO_PIN_6);
  //GPIOE->BRR=PIN_CS;
  
  //LCD_RW(1);
  GPIOC->ODR |= GPIO_PIN_3;
  //GPIOE->BSRR=PIN_RW;
  
  //LCD_RD(1);
  GPIOC->ODR |= GPIO_PIN_2;
  //GPIOE->BSRR=PIN_RD;
  
  //LCD_DC(1);
  GPIOC->ODR |= GPIO_PIN_1;
  //GPIOE->BSRR=PIN_DC;
  
  //LCD_RST(0);
  GPIOC->ODR &= (u8)(~GPIO_PIN_7);
  //GPIOE->BRR=PIN_RST;
  delay( 15000 );
  delay( 15000 );
  //LCD_RST(1);
  GPIOC->ODR |= GPIO_PIN_7;
  //GPIOE->BSRR=PIN_RST;
  delay( 15000 );
  delay( 15000 );
}


/************************************************************************************/
//
/************************************************************************************/
void WriteCommand(uint8 Data)   //写指令代码到P09702OLED显示屏
{   
       


    //LCD_CS(0);
        GPIOC->ODR &= (u8)(~GPIO_PIN_6);
    //GPIOE->BRR=PIN_CS;
      
    //LCD_DC(0);
        GPIOC->ODR &= (u8)(~GPIO_PIN_1);
    //GPIOE->BRR=PIN_DC;

    //LCD_DATA_OUT( Data );
     GPIOB->ODR = (GPIOB->ODR & ~PINS_DATA) | (Data << AD0_PIN_NUM);


    //LCD_RW(0);
        GPIOC->ODR &= (u8)(~GPIO_PIN_3);
    //GPIOE->BRR=PIN_RW;

    delay( 10 );
    //LCD_RW(1);
        GPIOC->ODR |= GPIO_PIN_3;
    //GPIOE->BSRR=PIN_RW;

    //LCD_DC(1);
        GPIOC->ODR |= GPIO_PIN_1;
    //GPIOE->BSRR=PIN_DC;

}
/*************************************************************************************/
//
/*************************************************************************************/
void WriteData(uint8 Data)   //写参数及数据到P09702OLED显示屏
{     
        //#define PIN_RD               (   1 <<  2)
        //#define PIN_RW               (   1 <<  3)
        //#define PIN_DC               (   1 << 1)
        //#define PIN_RST              (   1 << 7)
        //#define PIN_CS               (   1 << 6)

    //LCD_DATA_OUT( Data );
    GPIOB->ODR = (GPIOB->ODR & ~PINS_DATA) | (Data << AD0_PIN_NUM);

    //LCD_RW(0);
        GPIOC->ODR &= (u8)(~GPIO_PIN_3);
    //GPIOE->BRR=PIN_RW;

    delay( 10 );
    //LCD_RW(1);
        GPIOC->ODR |= GPIO_PIN_3;
   
}
/*************************************************************************************/
//
/*************************************************************************************/
void clr_oled(void)
{
        int i,j;
        for(i=0;i<8;i++)
        {
                WriteCommand (0xB0+i);    //设置显示位置—行
                WriteCommand (0x02);      //设置显示位置—列低地址
                WriteCommand (0x10);      //设置显示位置—列高地址
                for(j=0;j<128;j++)     
                        WriteData(0x00);        //屏幕显示,全亮
        }
}
/*************************************************************************************/
//
/*************************************************************************************/
void init_oled(void)
{
        WriteCommand(0xAE); //Display off
        WriteCommand(0xAD); //Internal DC-DC off
        WriteCommand(0x8A); // Second byte
        WriteCommand(0xA8); //MUX Ratio
        WriteCommand(0x3F); //64 duty
        WriteCommand(0xD3); //Display offset
        WriteCommand(0x00); //Second byte
        WriteCommand(0x40); //Start line
        WriteCommand(0xA0); //Segment remap                //a0
        WriteCommand(0xC8); //COM remap
        WriteCommand(0xA6); //Set normal/inverse display (0xA6:Normal display)
        WriteCommand(0xA4); //Set entire display on/off (0xA4:Normal display)
        WriteCommand(0x81); //Contrast setting
        WriteCommand(0x5C); //Second byte
        WriteCommand(0xD5); //Frame rate
        WriteCommand(0x60); // 85 Hz
        WriteCommand(0xD8); //Mode setting
        WriteCommand(0x00); //Mono mode
        WriteCommand(0xD9); //Set Pre-charge period
        WriteCommand(0x84); // Second byte
        WriteCommand(0xAF); //Display on
}
/************************************************************************************/
//
/************************************************************************************/
void set_position(uint8 page1,uint8 p1,uint8 col1)
{
        uint8 temp_col;
        uint8 temp_col2;
        temp_col=col1>>4;
        temp_col2=col1&0x0f;
        WriteCommand(0xb0+page1+p1);
        WriteCommand(0x02+temp_col2);
        WriteCommand(0x10+temp_col);
}
/***********************************************************************************/
//
/***********************************************************************************/
void display_prog(uint8 line,uint8 column,uint8 nn) //显示程序
{
                unsigned char m,col,p,q,r;
                unsigned char k=0 ;
                page=line;                //字符启示页  0--8
                if (nn==1)
                {
                        q=48;       //字符的总字节数  12*8 字符--16字节
                        r=16;                //                16*16汉字--32字节
                                                //                24*16数字--48字节
                }
                else if (nn==2)
                {
                        q=32;
                        r=16;                //r字符的宽度
                        }
                else if (nn==3)
                {
                        q=16;
                        r=8;
                        }
                else
                {
                        q=12;
                        r=8;
                        };
                column=column*8;                //列的宽度和字符的宽度
                col=column;
                for (m=0; m<q; m++)        //
                {
                        p=m/r;                                //换行
                        switch (p)
                        {
                                case 0:
                                        if (k==0){
                                                set_position(page,p,col);
                                                k=1;
                                                break;
                                        }
                                        else
                                                break;
                                   case 1:
                                        if (k==1){
                                                set_position(page,p,col);
                                                k=2;
                                                break;
                                        }
                                        else
                                                break;
                                case 2:
                                        if (k==2){
                                                set_position(page,p,col);
                                                k=3;
                                                break;
                                        }
                                        else
                                                break;
                                case 3:
                                        if (k==3){
                                                set_position(page,p,col);
                                                k=4;
                                                break;
                                        }
                                        else
                                                break;
                                case 4:
                                        if (k==4){
                                                set_position(page,p,col);
                                                k=5;
                                                break;
                                        }
                                        else
                                                break;
                                case 5:
                                        if (k==5){
                                                set_position(page,p,col);
                                                k=6;
                                                break;
                                        }
                                        else
                                                break;                                       
                        }
                        if (nn==1)
                                dat=NUM_48[jj].Msk[m] ; //(1-64 行)取数据 jiu1
                        else if(nn==2)
                                dat=GB_16[jj].Msk[m] ;
                        else if(nn==3)
                                dat=CHAR_12[jj].Msk[m];
                        else
                                dat=0;
                        if (w_or_b==BLACK)
                                dat=~dat;
                         WriteData(dat);
                }
}
/*********************************************************************************/
//
/*********************************************************************************/
void dprintf_CHAR12 (uint8 line,uint8 column,char str[20])
{
        uint8 i=0;
        uint8 c1;

        unsigned char ulen;
        ulen = (unsigned char)sprintf(dispbuff,"%s",str);
       
        while(i<ulen)
        {
                c1 = dispbuff[i];
                for(jj=0;jj<sizeof(CHAR_12)/sizeof(CHAR_12[0]);jj++)//寻找字库
                        {
                                if(c1 == CHAR_12[jj].Index[0])
                                        break;
                        }
                display_prog(line,column,3);
                column++;

                 i++;
         }
}
/********************************************************************************/
// 显示汉字程序
/********************************************************************************/
void dprintf_WORD16 (uint8 line,uint8 column,char str[20])
{
        uint8 i=0;
        uint8 c1;
        uint8 c2;

        unsigned char ulen;
        ulen = (unsigned char)sprintf(dispbuff,"%s",str);
       
        while(i<ulen)
        {
                c1 = dispbuff[i];
                c2 = dispbuff[i+1];
                for(jj=0;jj<sizeof(GB_16)/sizeof(GB_16[0]);jj++)//寻找字库
                        {
                                if(c1 == GB_16[jj].Index[0] && c2 == GB_16[jj].Index[1])
                                        break;
                        }
                display_prog(line,column,2);
                column++;
                column++;

                 i++;
                i++;
         }
}

使用特权

评论回复
板凳
精益求精|  楼主 | 2009-11-25 10:35 | 只看该作者
/**********************************************************************************/
//
/**********************************************************************************/
void dprintf_NUM48(uint8 line,uint8 column,char str[20])
{
        uint8 i=0;
        uint8 c1;

        unsigned char ulen;
        ulen = (unsigned char)sprintf(dispbuff,"%s",str);
       
        while(i<ulen)
        {
                c1 = dispbuff[i];
                for(jj=0;jj<sizeof(NUM_48)/sizeof(NUM_48[0]);jj++)//寻找字库
                        {
                                if(c1 == NUM_48[jj].Index[0])
                                        break;
                        }
                display_prog(line,column,1);
                column++;
                column++;
                 i++;
         }
}
/***********************************************************************************/
//        显示浮点
/***********************************************************************************/
void disp_float(uint8 row,uint8 col,float x)
{
        sprintf(dispbuff,"%-4.1f",x);                 //左对齐
        dprintf_CHAR12(row,col,dispbuff);       
}
/***********************************************************************************/
//        显示浮点 1
/***********************************************************************************/
void disp_float_1(uint8 row,uint8 col,float x)
{
        sprintf(dispbuff,"%4.2f",x);                 //左对齐
        dprintf_CHAR12(row,col,dispbuff);       
}
/***********************************************************************************/
//        显示整数
/***********************************************************************************/
void disp_int(uint8 row,uint8 col,uint16 x)
{
        sprintf(dispbuff,"%d",x);
        dprintf_CHAR12(row,col,dispbuff);       
}

使用特权

评论回复
地板
精益求精|  楼主 | 2009-11-25 10:37 | 只看该作者
ExBusInit();
  init_oled();      
  clr_oled();
  


        dprintf_WORD16(0,0,"品牌");
        w_or_b=BLACK;
        dprintf_WORD16(0,8,"北京");
        w_or_b=WHITE;
        dprintf_CHAR12(0,14,"<");

       
        dprintf_CHAR12(4,0,"123456");
       
        dprintf_CHAR12(6,0,"abcd");

使用特权

评论回复
5
dianbeng007| | 2014-8-11 11:23 | 只看该作者

使用特权

评论回复
6
hxjlm| | 2015-2-28 14:41 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开发新产品,完善旧产品。精益求精,追求卓越。 希望每一次硬件或软件的改进,都能把产品的质量提高一点。

19

主题

364

帖子

0

粉丝