首页 LCD5110驱动程序代码(AVR单片机)

LCD5110驱动程序代码(AVR单片机)

举报
开通vip

LCD5110驱动程序代码(AVR单片机)LCD5110驱动程序代码(AVR单片机) /*********************************************************************** ***************** 84*48点阵 X:0-83点,Y:0-5行 英文字符: 全屏显示:6行*14列 每个字符:宽6点*高8点 中文字符: 全屏显示:4行*7列 每个字符:宽12点*高11点 LCD_init(); //初始化液晶 LCD_clear(); //清屏 LCD_set_...

LCD5110驱动程序代码(AVR单片机)
LCD5110驱动程序代码(AVR单片机) /*********************************************************************** ***************** 84*48点阵 X:0-83点,Y:0-5行 英文字符: 全屏显示:6行*14列 每个字符:宽6点*高8点 中文字符: 全屏显示:4行*7列 每个字符:宽12点*高11点 LCD_init(); //初始化液晶 LCD_clear(); //清屏 LCD_set_XY(0,1); //X行,Y点,设定坐标 LCD_write_char('V'); //写字符 ,Y点,字符 LCD_write_english_sendbyte(4,3,dingwei); //X行LCD_write_english_sendstr(3,2,"TEST"); //X行,Y点,字符串 LCD_write_chinese_string(0,5,12,2,0,0); //X行,Y列,宽度,个数,点阵数组起始行数,行 间距 LCD_draw_bmp_pixel(0,32,AVR_bmp,48,24); //X行,Y点,位图点阵数据变量,长,宽 ************************************************************************ ****************/ // Define I/O pins #define LCD_PORT PORTC #define LCD_DIR DDRC #define LCD_IN PINC #define CLK PC4 //CLK 串行时钟线 #define DIN PC3 //DIN 串行数据线 #define DC PC2 //DC 数据/指令选择 #define CE PC1 //CE 片选 #define RST PC0 //RST 复位 #define SCLK BIT(CLK) #define SDIN BIT(DIN) #define LCD_DC BIT(DC) #define LCD_CE BIT(CE) #define LCD_RST BIT(RST) //enable global interrupts #define GIE (SREG |= BIT(7)) //disable global interrupts #define GID (SREG &= ~BIT(7)) //#define SLEEP() asm("sleep") /* enables an unsigned char to be used as a series of booleans */ #define BIT(x) (1 << (x)) #define SETBIT(x, y) (x |= y) #define CLEARBIT(x, y) (x &= ~y) #define CHECKBIT(x, y) (x & y) #define true 1 #define True 1 #define false 0 #define False 0 const unsigned char HZK[][24]={ /*-- 新宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/ /*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/ 0x89,0xF2,0x00,0xFF,0x01,0xF9,0xFF,0x00,0xFC,0x00,0xFF,0x00,0x00,0x07,0x04,0x0 4,0x02,0x01,0x02,0x04,0x01,0x04,0x07,0x00, /*-- 文字0: 测 --*/ 0x11,0xF6,0x00,0x02,0x3A,0xAA,0xFF,0x6A,0xAA,0x3A,0x02,0x00,0x06,0x01,0x02,0 x05,0x05,0x04,0x07,0x04,0x04,0x05,0x04,0x00, /*-- 文字1: 速 --*/ }; /********************************** 6 x 8 font 1 pixel space at left and bottom index = ASCII - 32 取模时左边空一列,下面空一行。 ***********************************/ 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 }; void LCD_init(void); void LCD_clear(void); void delay_1us(void); void LCD_set_XY(unsigned char x,unsigned char y); void LCD_write_char(unsigned char c); void LCD_write_english_sendstr(unsigned char X,unsigned char Y,char *s); void LCD_write_english_sendbyte(unsigned char X,unsigned char Y,unsigned char dByte); 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); /******************************************/ void LCD_init(void) { //先设置为输出 SETBIT(LCD_DIR,SCLK); SETBIT(LCD_DIR,SDIN); SETBIT(LCD_DIR,LCD_DC); SETBIT(LCD_DIR,LCD_CE); SETBIT(LCD_DIR,LCD_RST); // 产生一个让LCD复位的低电平脉冲 CLEARBIT(LCD_PORT,LCD_RST);//LCD_RST = 0; delay_1us(); SETBIT(LCD_PORT,LCD_RST);//LCD_RST = 1; // 关闭LCD CLEARBIT(LCD_PORT,LCD_CE);//LCD_CE = 0; delay_1us(); // 使能LCD SETBIT(LCD_PORT,LCD_CE);//LCD_CE = 1; delay_1us(); LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式 LCD_write_byte(0xc8, 0); // 设置偏置电压 LCD_write_byte(0x06, 0); // 温度校正 LCD_write_byte(0x13, 0); // 1:48 LCD_write_byte(0x20, 0); // 使用基本命令 LCD_clear(); // 清屏 LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示 // 关闭LCD CLEARBIT(LCD_PORT,LCD_CE); //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); } } /************************************/ void delay_1us(void) //1us延时函数 { unsigned int i; for(i=0;i<12000;i++); } /************************************/ void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | X, 0);// row行 LCD_write_byte(0x80 | Y, 0);// column列 } /*******************************************/ char c) void LCD_write_char(unsigned { unsigned char line; c -= 32; for (line=0; line<6; line++) { LCD_write_byte(font6x8[c][line], 1); } } /********************************************/ /*------------------------------------------------- LCD_write_english_sendstr : 英文字符串显示函数 输入参数:*s :英文字符串指针; X、Y : 显示字符串的位置,x 0-5 ,y 0-83 --------------------------------------------------*/ void LCD_write_english_sendstr(unsigned char X,unsigned char Y,char *s) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } /********************************************/ /*------------------------------------------------- LCD_write_english_sendbyte : 英文字符显示函数 输入参数:*s :英文字符串指针; X、Y : 显示字符串的位置,x 0-5 ,y 0-83 --------------------------------------------------*/ void LCD_write_english_sendbyte(unsigned char X,unsigned char Y,unsigned char dByte) { LCD_set_XY(X,Y); LCD_write_char(dByte); } /**************************************************************/ /*------------------------------------------------- LCD_write_chinese_string: 在LCD上显示汉字 输入参数:X、Y :显示汉字的起始X、Y坐标; 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驱动程序代码&#40;AVR单片机&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_036899
暂无简介~
格式:doc
大小:42KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-10-13
浏览量:12