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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiandawangliang/article/details/52856573

参考了文献:

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++;
	}
}

猜你喜欢

转载自blog.csdn.net/tiandawangliang/article/details/52856573