STM32驱动Nokia5110

//以下是lcd5110.c

#include "lcd5110.h"  
#include "english_6x8_pixel.h"  
//中文字库自己添加,如果没有请注释起来#include "write_chinese_string_pixel.h"  
  
  
//lcdgpio初始化函数  
//GPIOC.0.9.10.11.12推挽输出,GPIO口可自己设置  
void LCD_GPIO_init(void)  
{  
    GPIO_InitTypeDef GPIO_InitStructure;  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_Init(GPIOC,&GPIO_InitStructure);  
}  
  
  
//初始化函数  
void LCD_init(void)  
{  
      
    //产生一个让lcd复位的低电平脉冲  
    LCD_RST = 0;  
    delay_us(1);  
    LCD_RST = 1;  
    //关闭lcd  
    LCD_CE = 0;  
    delay_us(1);  
    //使能lcd  
    LCD_CE = 1;  
    delay_us(1);  
      
    LCD_write_byte(0x21, 0);  
    LCD_write_byte(0xc8, 0);  
    LCD_write_byte(0x06, 0);  
    LCD_write_byte(0x13, 0);  
    LCD_write_byte(0x20, 0);  
    LCD_clear();  
    LCD_write_byte(0x0c, 0);  
    //关闭lcd  
    LCD_CE = 0;  
}  
      
      
//清屏函数  
void LCD_clear(void)  
{  
  unsigned int i;  
  
  LCD_write_byte(0x0c, 0);              
  LCD_write_byte(0x80, 0);              
  
  for (i=0; i<504; i++)  
        LCD_write_byte(0, 1);              
      
}  
      
  
  
//设置lcd坐标函数  
void LCD_set_XY(unsigned char X, unsigned char Y)  
{  
  LCD_write_byte(0x40 | Y, 0);        // column  
  LCD_write_byte(0x80 | X, 0);    // row  
}  
  
  
//显示英文字符  
//输入参数c为显示的字符  
void LCD_write_char(unsigned char c)  
{  
  unsigned char line;  
  
  c -= 32;  
  
  for (line=0; line<6; line++)  
    LCD_write_byte(font6x8[c][line], 1);  
}  
  
  
//数字显示函数  
void LCD_write_number(unsigned char X,unsigned char Y,u16 num)  
{  
      
    //如果数字大于32000则显示输入错误  
    if(num>32000)  
        LCD_write_english_string(X,Y,"ERROR!");  
      
    //如果输入在32000内正常显示  
    else  
    {  
          
        unsigned char a,b,c,d,e; //a,b,c,d,e分别代表数字的万千百十个位  
        a=num/10000;  
        b=(num-a*10000)/1000;  
        c=(num-a*10000-b*1000)/100;  
        d=(num-a*10000-b*1000-c*100)/10;  
        e=num-a*10000-b*1000-c*100-d*10;  
          
        a+=48;  
        b+=48;  
        c+=48;  
        d+=48;  
        e+=48;  
          
        LCD_set_XY(X,Y);  
        LCD_write_char(a);  
          
        X++;  
        LCD_write_char(b);  
          
        X++;  
        LCD_write_char(c);  
          
        X++;  
        LCD_write_char(d);  
          
        X++;  
        LCD_write_char(e);  
          
    }  
}  
  
  
//英文字符串显示函数  
//输入参数*s为英文字符串指针  
//xy为显示字符串的位置x0-83,y0-5  
void LCD_write_english_string(unsigned char X,unsigned char Y,charchar *s)  
{  
      
    LCD_set_XY(X,Y);  
    while (*s)  
    {  
        LCD_write_char(*s);  
        s++;  
    }  
      
}  
  
/* 
//显示汉字,此部分自行添加字库,如果没有请注释起来 
//输入参数xy为汉字起始坐标 
//ch_with为汉字点阵的宽度 
//num为显示汉字的个数 
//line汉字点阵数组中的起始行数 
//row为汉字显示的行间距 
void LCD_write_chinese_string(unsigned char X, unsigned char Y, 
                   unsigned char ch_with,unsigned char num, 
                   unsigned char line,unsigned char row) 
{ 
    unsigned char i,n; 
     
    LCD_set_XY(X,Y);//设置起始位置 
    for (i=0;i

//下面是lcd5110.h
#ifndef __LCD5110_H  
#define __LCD5110_H  
#include "sys.h"  
  
//管脚定义  
#define SCLK PCout(0)  
#define SDIN PCout(9)  
#define LCD_DC PCout(10)  
#define LCD_CE PCout(11)  
#define LCD_RST PCout(12)  
  
void LCD_GPIO_init(void);  
void LCD_init(void);  
void LCD_clear(void);  
void LCD_set_XY(unsigned char X, unsigned char Y);  
void LCD_write_char(unsigned char c);  
void LCD_write_number(unsigned char X,unsigned char Y,u16 num);  
void LCD_write_english_string(unsigned char X,unsigned char Y,charchar *s);  
  
/*如无此功能请注释 
void LCD_write_chinese_string(unsigned char X, unsigned char Y,  
                   unsigned char ch_with,unsigned char num, 
                   unsigned char line,unsigned char row); 
void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map, 
                  unsigned char Pix_x,unsigned char Pix_y); 
*/  
  
void LCD_write_byte(unsigned char dat, unsigned char command);  
  
#endif  
  
//下面是english_6x8_pixel.h
// 6 x 8 font  
// 1 pixel space at left and bottom  
// index = ASCII - 32  
unsigned char font6x8[][6] =  
{  
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp  
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !  
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "  
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #  
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $  
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %  
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &  
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '  
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (  
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )  
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *  
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +  
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,  
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -  
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .  
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /  
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0  
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1  
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2  
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3  
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4  
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5  
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6  
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7  
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8  
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9  
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :  
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;  
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <  
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =  
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >  
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?  
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @  
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A  
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B  
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C  
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D  
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E  
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F  
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G  
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H  
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I  
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J  
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K  
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L  
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M  
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N  
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O  
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P  
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q  
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R  
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S  
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T  
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U  
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V  
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W  
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X  
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y  
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z  
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [  
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55  
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]  
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^  
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _  
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '  
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a  
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b  
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c  
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d  
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e  
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f  
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g  
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h  
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i  
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j  
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k  
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l  
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m  
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n  
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o  
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p  
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q  
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r  
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s  
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t  
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u  
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v  
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w  
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x  
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y  
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z  
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines  
};  


你可能感兴趣的:(电子设计)