文章目录
- english_6x8_pixel.h
- write_chinese_string_pixel.h
- nokia_5110.h
- nokia_5110.c
- main.c
english_6x8_pixel.h
english_6x8_pixel.h
如下:
const 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
};
write_chinese_string_pixel.h
write_chinese_string_pixel.h
如下:
const unsigned char write_chinese[][24] = {{0x89, 0xF2, 0x00, 0xFF, 0x01, 0xF9, 0xFF, 0x00, 0xFC, 0x00, 0xFF, 0x00,0x00, 0x07, 0x04, 0x04, 0x02, 0x01, 0x02, 0x04, 0x01, 0x04, 0x07, 0x00}, /* 测 */{0x11, 0xF6, 0x00, 0x04, 0x24, 0xE4, 0x24, 0x24, 0xFF, 0x05, 0x06, 0x00,0x00, 0x07, 0x02, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00}, /* 试 */{0x8A, 0x6A, 0xFF, 0x49, 0x20, 0xAF, 0xA9, 0xE9, 0xA9, 0xAF, 0x20, 0x00,0x01, 0x00, 0x07, 0x00, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x00}, /* 程 */{0x00, 0xFE, 0x42, 0x4A, 0x4A, 0x5B, 0xEA, 0x5A, 0x4A, 0xC2, 0x42, 0x00,0x06, 0x01, 0x00, 0x00, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 序 */{0x00, 0xFC, 0x94, 0x94, 0x94, 0xFF, 0x94, 0x94, 0x94, 0xFE, 0x04, 0x00,0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x06, 0x00}, /* 电 */{0x20, 0x21, 0x21, 0x21, 0x21, 0xF9, 0x29, 0x25, 0x23, 0x31, 0x20, 0x00,0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 子 */{0x18, 0xD6, 0x54, 0xFF, 0x54, 0x56, 0xD4, 0x00, 0xFC, 0x00, 0xFF, 0x00,0x00, 0x03, 0x00, 0x07, 0x00, 0x02, 0x03, 0x00, 0x04, 0x04, 0x07, 0x00}, /* 制 */{0x10, 0x08, 0xFC, 0x13, 0x08, 0x04, 0xFF, 0x24, 0x24, 0x24, 0x04, 0x00,0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x00}, /* 作 */{0x40, 0x62, 0x52, 0xCA, 0x47, 0xE2, 0x42, 0xDE, 0x50, 0x50, 0x58, 0x00,0x04, 0x02, 0x01, 0x04, 0x04, 0x07, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00}, /* 杂 */{0x04, 0xA4, 0x24, 0xA4, 0x24, 0xBF, 0x24, 0x24, 0x24, 0xA6, 0x04, 0x00,0x02, 0x01, 0x00, 0x07, 0x04, 0x04, 0x05, 0x04, 0x06, 0x00, 0x03, 0x00}, /* 志 */{0x84, 0x44, 0xF5, 0x2E, 0x40, 0x10, 0x10, 0xFF, 0x10, 0x10, 0x10, 0x00,0x00, 0x00, 0x07, 0x00, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x00}, /* 社 */
};
nokia_5110.h
nokia_5110.h
如下:
#ifndef __NOKIA5110_H_
#define __NOKIA5110_H_
#include "sys.h"#define SCLK PAout(4)
#define SDIN PAout(3)
#define LCD_DC PAout(2)
#define LCD_CE PAout(1)
#define LCD_RST PAout(0)void LCD_init ( void );
void LCD_write_english_string ( unsigned char X, unsigned char Y, char *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 );
#endif
nokia_5110.c
nokia_5110.c
如下:
#include "delay.h"
#include "nokia_5110.h"
#include "english_6x8_pixel.h"
#include "write_chinese_string_pixel.h"static void LCD_write_byte ( unsigned char dat, unsigned char command ) {unsigned char i;LCD_CE = 0;if ( command == 0 ) {LCD_DC = 0;} else {LCD_DC = 1;}for ( i = 0; i < 8; i++ ) {if ( dat & 0x80 ) {SDIN = 1;} else {SDIN = 0;}SCLK = 0;dat = dat << 1;SCLK = 1;}LCD_CE = 1;
}static void LCD_set_XY ( unsigned char X, unsigned char Y ) {LCD_write_byte ( 0x40 | Y, 0 );LCD_write_byte ( 0x80 | X, 0 );
}static void LCD_clear ( void ) {unsigned int i;LCD_write_byte ( 0x0c, 0 );LCD_write_byte ( 0x80, 0 );LCD_write_byte ( 0x40, 0 );for ( i = 0; i <= 503; i++ ) {LCD_write_byte ( 0, 1 );}
}static 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_init ( void ) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOA, ENABLE );GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init ( GPIOA, &GPIO_InitStructure );LCD_RST = 0;delay_us ( 1 );LCD_RST = 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_CE = 0;
}void LCD_write_english_string ( unsigned char X, unsigned char Y, char *s ) {LCD_set_XY ( X, Y );while ( *s ) {LCD_write_char ( *s );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 ) {unsigned char i, n;LCD_set_XY ( X, Y );for ( i = 0; i < num; ) {for ( n = 0; n < ch_with * 2; n++ ) {if ( n == ch_with ) {if ( i == 0 ) {LCD_set_XY ( X, Y + 1 );} else {LCD_set_XY ( ( X + ( ch_with + row ) *i ), Y + 1 );}}LCD_write_byte ( write_chinese[line + i][n], 1 );}i++;LCD_set_XY ( ( X + ( ch_with + row ) *i ), Y );}
}
main.c
main.c
如下:
#include "delay.h"
#include "sys.h"
#include "nokia_5110.h"int main ( void ) {SystemInit();delay_init ( 72 );NVIC_Configuration();LCD_init();while ( 1 ) {LCD_write_english_string ( 0, 0, " Welcome!" );LCD_write_english_string ( 0, 3, " Nokia5110 LCD" );LCD_write_chinese_string ( 12, 4, 12, 4, 0, 5 );}
}