【嵌入式Linux】LCD应用程序2440

参考了文献:

http://www.cnblogs.com/cxjchen/archive/2013/05/13/3075490.html

http://www.cnblogs.com/chrispauls/p/4026760.html


#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>

#define BLACK 0x00000
#define RED   0x0F100
#define GREEN 0x007E0
#define BLUE  0x0001F
#define WHITE 0x0FFFF

int fbfd;
struct fb_var_screeninfo varinfo;
struct fb_fix_screeninfo fixinfo;
unsigned long screensize;
unsigned long x_width;    //每行字节数
unsigned long y_width;    //每列字节数
unsigned short * fbp;

void lcd_Disp_Dot(int x,int y);
void lcd_Disp_Char(int x,int y,char c);
void lcd_Disp_Str(int x,int y,char* str);

/*
 字模
 每个占16行
 0: ' '
 1~26: a~z
 27~52:A~Z
 53~63:0~9
 64:@
 65:#
*/
static const char font_8x16[] = {
    /* 32 0x20 ' ' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 97 0x61 'a' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x78, /* 01111000 */
    0x0c, /* 00001100 */
    0x7c, /* 01111100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x76, /* 01110110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 98 0x62 'b' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xe0, /* 11100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x78, /* 01111000 */
    0x6c, /* 01101100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 99 0x63 'c' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 100 0x64 'd' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x1c, /* 00011100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x3c, /* 00111100 */
    0x6c, /* 01101100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x76, /* 01110110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 101 0x65 'e' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 102 0x66 'f' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x1c, /* 00011100 */
    0x36, /* 00110110 */
    0x32, /* 00110010 */
    0x30, /* 00110000 */
    0x78, /* 01111000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x78, /* 01111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 103 0x67 'g' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x76, /* 01110110 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x7c, /* 01111100 */
    0x0c, /* 00001100 */
    0xcc, /* 11001100 */
    0x78, /* 01111000 */
    0x00, /* 00000000 */

    /* 104 0x68 'h' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xe0, /* 11100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x6c, /* 01101100 */
    0x76, /* 01110110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0xe6, /* 11100110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 105 0x69 'i' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x00, /* 00000000 */
    0x38, /* 00111000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 106 0x6a 'j' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x00, /* 00000000 */
    0x0e, /* 00001110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */

    /* 107 0x6b 'k' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xe0, /* 11100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x66, /* 01100110 */
    0x6c, /* 01101100 */
    0x78, /* 01111000 */
    0x78, /* 01111000 */
    0x6c, /* 01101100 */
    0x66, /* 01100110 */
    0xe6, /* 11100110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 108 0x6c 'l' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x38, /* 00111000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 109 0x6d 'm' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xec, /* 11101100 */
    0xfe, /* 11111110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 110 0x6e 'n' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xdc, /* 11011100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 111 0x6f 'o' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 112 0x70 'p' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xdc, /* 11011100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x7c, /* 01111100 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0xf0, /* 11110000 */
    0x00, /* 00000000 */

    /* 113 0x71 'q' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x76, /* 01110110 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x7c, /* 01111100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x1e, /* 00011110 */
    0x00, /* 00000000 */

    /* 114 0x72 'r' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xdc, /* 11011100 */
    0x76, /* 01110110 */
    0x66, /* 01100110 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0xf0, /* 11110000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 115 0x73 's' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0x60, /* 01100000 */
    0x38, /* 00111000 */
    0x0c, /* 00001100 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 116 0x74 't' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x10, /* 00010000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0xfc, /* 11111100 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x36, /* 00110110 */
    0x1c, /* 00011100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 117 0x75 'u' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x76, /* 01110110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 118 0x76 'v' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x6c, /* 01101100 */
    0x38, /* 00111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 119 0x77 'w' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xfe, /* 11111110 */
    0x6c, /* 01101100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 120 0x78 'x' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0x6c, /* 01101100 */
    0x38, /* 00111000 */
    0x38, /* 00111000 */
    0x38, /* 00111000 */
    0x6c, /* 01101100 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 121 0x79 'y' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7e, /* 01111110 */
    0x06, /* 00000110 */
    0x0c, /* 00001100 */
    0xf8, /* 11111000 */
    0x00, /* 00000000 */

    /* 122 0x7a 'z' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0xcc, /* 11001100 */
    0x18, /* 00011000 */
    0x30, /* 00110000 */
    0x60, /* 01100000 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 65 0x41 'A' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x10, /* 00010000 */
    0x38, /* 00111000 */
    0x6c, /* 01101100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 66 0x42 'B' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfc, /* 11111100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x7c, /* 01111100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0xfc, /* 11111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 67 0x43 'C' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x3c, /* 00111100 */
    0x66, /* 01100110 */
    0xc2, /* 11000010 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc2, /* 11000010 */
    0x66, /* 01100110 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 68 0x44 'D' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xf8, /* 11111000 */
    0x6c, /* 01101100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x6c, /* 01101100 */
    0xf8, /* 11111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 69 0x45 'E' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0x66, /* 01100110 */
    0x62, /* 01100010 */
    0x68, /* 01101000 */
    0x78, /* 01111000 */
    0x68, /* 01101000 */
    0x60, /* 01100000 */
    0x62, /* 01100010 */
    0x66, /* 01100110 */
    0xfe, /* 11111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 70 0x46 'F' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0x66, /* 01100110 */
    0x62, /* 01100010 */
    0x68, /* 01101000 */
    0x78, /* 01111000 */
    0x68, /* 01101000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0xf0, /* 11110000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 71 0x47 'G' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x3c, /* 00111100 */
    0x66, /* 01100110 */
    0xc2, /* 11000010 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xde, /* 11011110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x66, /* 01100110 */
    0x3a, /* 00111010 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 72 0x48 'H' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 73 0x49 'I' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x3c, /* 00111100 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 74 0x4a 'J' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x1e, /* 00011110 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0xcc, /* 11001100 */
    0x78, /* 01111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 75 0x4b 'K' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xe6, /* 11100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x6c, /* 01101100 */
    0x78, /* 01111000 */
    0x78, /* 01111000 */
    0x6c, /* 01101100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0xe6, /* 11100110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 76 0x4c 'L' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xf0, /* 11110000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x62, /* 01100010 */
    0x66, /* 01100110 */
    0xfe, /* 11111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 77 0x4d 'M' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xee, /* 11101110 */
    0xfe, /* 11111110 */
    0xfe, /* 11111110 */
    0xd6, /* 11010110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 78 0x4e 'N' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xe6, /* 11100110 */
    0xf6, /* 11110110 */
    0xfe, /* 11111110 */
    0xde, /* 11011110 */
    0xce, /* 11001110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 79 0x4f 'O' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 80 0x50 'P' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfc, /* 11111100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x7c, /* 01111100 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0x60, /* 01100000 */
    0xf0, /* 11110000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 81 0x51 'Q' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xd6, /* 11010110 */
    0xde, /* 11011110 */
    0x7c, /* 01111100 */
    0x0c, /* 00001100 */
    0x0e, /* 00001110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 82 0x52 'R' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfc, /* 11111100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x7c, /* 01111100 */
    0x6c, /* 01101100 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0xe6, /* 11100110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 83 0x53 'S' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x60, /* 01100000 */
    0x38, /* 00111000 */
    0x0c, /* 00001100 */
    0x06, /* 00000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 84 0x54 'T' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7e, /* 01111110 */
    0x7e, /* 01111110 */
    0x5a, /* 01011010 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 85 0x55 'U' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 86 0x56 'V' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x6c, /* 01101100 */
    0x38, /* 00111000 */
    0x10, /* 00010000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 87 0x57 'W' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xfe, /* 11111110 */
    0xee, /* 11101110 */
    0x6c, /* 01101100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 88 0x58 'X' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x6c, /* 01101100 */
    0x7c, /* 01111100 */
    0x38, /* 00111000 */
    0x38, /* 00111000 */
    0x7c, /* 01111100 */
    0x6c, /* 01101100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 89 0x59 'Y' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x66, /* 01100110 */
    0x3c, /* 00111100 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x3c, /* 00111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 90 0x5a 'Z' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0xc6, /* 11000110 */
    0x86, /* 10000110 */
    0x0c, /* 00001100 */
    0x18, /* 00011000 */
    0x30, /* 00110000 */
    0x60, /* 01100000 */
    0xc2, /* 11000010 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 48 0x30 '0' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x38, /* 00111000 */
    0x6c, /* 01101100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xd6, /* 11010110 */
    0xd6, /* 11010110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x6c, /* 01101100 */
    0x38, /* 00111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 49 0x31 '1' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x18, /* 00011000 */
    0x38, /* 00111000 */
    0x78, /* 01111000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x18, /* 00011000 */
    0x7e, /* 01111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 50 0x32 '2' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0x06, /* 00000110 */
    0x0c, /* 00001100 */
    0x18, /* 00011000 */
    0x30, /* 00110000 */
    0x60, /* 01100000 */
    0xc0, /* 11000000 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 51 0x33 '3' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x3c, /* 00111100 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 52 0x34 '4' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x0c, /* 00001100 */
    0x1c, /* 00011100 */
    0x3c, /* 00111100 */
    0x6c, /* 01101100 */
    0xcc, /* 11001100 */
    0xfe, /* 11111110 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x0c, /* 00001100 */
    0x1e, /* 00011110 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 53 0x35 '5' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xfc, /* 11111100 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 54 0x36 '6' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x38, /* 00111000 */
    0x60, /* 01100000 */
    0xc0, /* 11000000 */
    0xc0, /* 11000000 */
    0xfc, /* 11111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 55 0x37 '7' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0xfe, /* 11111110 */
    0xc6, /* 11000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x0c, /* 00001100 */
    0x18, /* 00011000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x30, /* 00110000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 56 0x38 '8' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 57 0x39 '9' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x7e, /* 01111110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x06, /* 00000110 */
    0x0c, /* 00001100 */
    0x78, /* 01111000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 64 0x40 '@' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x7c, /* 01111100 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xde, /* 11011110 */
    0xde, /* 11011110 */
    0xde, /* 11011110 */
    0xdc, /* 11011100 */
    0xc0, /* 11000000 */
    0x7c, /* 01111100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */

    /* 35 0x23 '#' */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x6c, /* 01101100 */
    0x6c, /* 01101100 */
    0xfe, /* 11111110 */
    0x6c, /* 01101100 */
    0x6c, /* 01101100 */
    0x6c, /* 01101100 */
    0xfe, /* 11111110 */
    0x6c, /* 01101100 */
    0x6c, /* 01101100 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
    0x00, /* 00000000 */
};


/*
 主函数
*/
int main(void)
{
	int x, y;

	//打开设备驱动
	fbfd = open("/dev/fb0",O_RDWR);
	if (fbfd<0)
	{
		printf("Open error!\n");
		return -1;
	}
	//获取屏幕可变参数
	if(ioctl(fbfd,FBIOGET_VSCREENINFO,&varinfo))
	{
		printf("Reading var error!\n");
		return -1;
	}
	//获取屏幕固定参数
	if(ioctl(fbfd,FBIOGET_FSCREENINFO,&fixinfo))
 	{
		printf("Reading fix error!\n");
		return -1;
	}

 	//计算显存大小
	/*
	 __u32(unsigned int) xres:横向可视范围
	 __u32(unsigned int) yres:纵向可视范围
	 __u32(unsigned int) bits_per_pixel:每一像素的bit数
	bits_per_pixel/8 为一个像素占用的字节数
	*/
	screensize = varinfo.xres * varinfo.yres * varinfo.bits_per_pixel/8;   
	printf("xbit:%d   ybit: %d\n",varinfo.xres,varinfo.yres);
	printf("bits_per_pixel: %d\n",varinfo.bits_per_pixel);
	printf("screensize=%d\n",screensize);

	//映射屏幕缓冲区到用户地址空间
	fbp = (unsigned short *)mmap(0,screensize,PROT_READ|PROT_WRITE, MAP_SHARED,fbfd,0);
	if ((int)fbp == -1)
	{
		printf("Mmap error!\n");
		return -1;
	}

	//清屏
	memset(fbp,0,screensize);
	lcd_Disp_Char(varinfo.xres/2,varinfo.yres/2,'a');
	lcd_Disp_Str(0,0,"abc 123");
	sleep(5);

	//读写缓冲区,即在屏幕上显示内容
	for (y=0;y<varinfo.yres/2;y++)
	{    
		for (x=0;x<varinfo.xres/2;x++)
		{
			*(fbp + y*varinfo.xres + x) = RED;
		}
	}

	//释放缓冲区,关闭设备
	munmap(fbp,screensize);
	close(fbfd);
	return 0;
}

/*
 LCD显示一个点
*/
void lcd_Disp_Dot(int x,int y)
{
	*(fbp + y*varinfo.xres + x) = RED;
}

/*
 LCD显示一个字符
 0: ' '
 1~26: a~z
 27~52:A~Z
 53~63:0~9
 64:@
 65:#
*/
void lcd_Disp_Char(int x,int y,char ch)
{
	int i, j;
	char *dots;

	if(ch>='a' && ch<='z'){
		dots = (char *) &font_8x16[(ch-'a'+1)*16];
	}else if(ch>='A' && ch<='Z'){
		dots = (char *) &font_8x16[(ch-'A'+27)*16];
	}else if(ch>='0' && ch<='9'){
		dots = (char *) &font_8x16[(ch-'0'+53)*16];
	}else if(ch == '@'){
		dots = (char *) &font_8x16[64*16];
	}else if(ch == '#'){
		dots = (char *) &font_8x16[65*16];
	}else{
		dots = (char *) &font_8x16[0];
	}
	for(i=0;i<16;i++){
	//画字符字模第i行dots[i]
		for(j=7;j>=0;j--)
		{
			if(dots[i]&(1<<j))
				lcd_Disp_Dot(x+7-j, y+i);
		}
	}
}

/*
 LCD显示一个字符串
*/
void lcd_Disp_Str(int x,int y,char* str)
{
	while(*str != 0){
		lcd_Disp_Char(x, y, *str);
		x += 8;
		str++;
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include //包含头文件 #include //包含固有函数 #define uint unsigned int //定义一下方便使用 #define uchar unsigned char //定义一下方便使用 #define DATA P0 //LCD12864数据线 sbit RS=P2^2; // 数据\指令 D、I 选择 sbit RW=P2^1; // 读\写 选择 R、W sbit EN=P2^0; // 读\写使能 sbit cs1=P2^4; // 片选1 sbit cs2=P2^3; // 片选2 /********************************/ /* 定义图形字库 */ uchar code Hzk[]={ //左屏幕第1页 0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0x3F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, //左屏幕第2页 0xFF,0xFF,0xFF,0xAB,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, //左屏幕第3页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xE0,0xEA,0xC0,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xE0,0xEA,0x80,0xAA,0x00,0xAA,0x00,0xAA,0xC0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xC0,0xEA,0x80,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA,0xE0,0xEA, //左屏幕第4页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xFF,0xFF,0xFF,0xFF, 0x38,0xBA,0x38,0xBF,0x3F,0xBF,0x1F,0xAF,0x00,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA, 0x78,0xFA,0xFD,0xFF,0xDF,0xBF,0x0F,0xAA,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0xAA, 0x00,0xAA,0x01,0xEF,0xFF,0xFF,0xFF,0xFE,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xFF,0xFF, //左屏幕第5页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x0F,0xAF,0x0F,0xAF, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x0F,0xAF,0x0F,0xAF,0x0F,0xAA, 0x00,0xAA,0x03,0xAF,0x0F,0xAF,0x0F,0xAE,0x00,0xAA,0x01,0xAB,0x07,0xAF,0x0F,0xAE, 0x0E,0xAE,0x0F,0xAF,0x07,0xAF,0x03,0xAA,0x00,0xAA,0x00,0xAA,0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值