STM32驱动Nokia5110
来源:互联网 发布:反电信网络诈骗的意义 编辑:程序博客网 时间:2024/06/05 01:09
//以下是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<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); } } */ /* //位图绘制函数,无此功能,可自行扩展 //xy位图绘制的起始坐标 //*map位图点阵数据 //Pix_x位图像素(长) //Pix_y位图像素(宽) void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map, unsigned char Pix_x,unsigned char Pix_y) { unsigned int i,n; unsigned char row; if (Pix_y%8==0) row=Pix_y/8; //计算位图所占行数 else row=Pix_y/8+1; for (n=0;n<row;n++) { LCD_set_XY(X,Y); for(i=0; i<Pix_x; i++) { LCD_write_byte(map[i+n*Pix_x], 1); } Y++; //换行 } } */ //使用spi接口写数据到lcd //输入参数data:写入的数据 //command写数据/命令选择 void LCD_write_byte(unsigned char dat, unsigned char command) { unsigned char i; //PORTB &= ~LCD_CE ; // 使能LCD LCD_CE = 0; if (command == 0) // PORTB &= ~LCD_DC ; // 传送命令 LCD_DC = 0; else // PORTB |= LCD_DC ; // 传送数据 LCD_DC = 1; for(i=0;i<8;i++) { if(dat&0x80) SDIN = 1; else SDIN = 0; SCLK = 0; dat = dat << 1; SCLK = 1; } // SPDR = data; // 传送数据到SPI寄存器 //while ((SPSR & 0x80) == 0); // 等待数据传送完毕 //PORTB |= LCD_CE ; // 关闭LCD LCD_CE = 1; }
//下面是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 };
0 0
- STM32驱动Nokia5110
- K60 nokia5110驱动
- 51单片机最小系统驱动Nokia5110
- stm8 软件模拟IIC驱动PCF8563T,NOKIA5110液晶显示
- STM32 PWM底层驱动
- STM32驱动FM24CL16
- STM32驱动DS18B20
- STM32标准IIC驱动
- STM32驱动W25X64存储器
- STM32驱动MPU6050
- stm32驱动DS1302芯片
- STM32驱动DP83848注意事项
- stm32 驱动 TFT LCD
- stm32之继电器驱动
- STM32 驱动液晶LCD12864
- STM32外设驱动---LED
- STM32驱动步进电机
- stm32 PWM驱动舵机
- Codeforces 445B. DZY Loves Chemistry
- 软解析和硬解析
- xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)
- CSS 圆角处理图片和旋转动画
- IOS按钮倒计时
- STM32驱动Nokia5110
- Android应用中意见反馈功能的探讨与实现
- Java IO 典型用法 Java编程思想读书笔记
- java模拟post方式提交表单实现图片上传
- 如何发布网站?(window server 2012)
- [leetcode] Binary Tree Postorder Traversal
- 如何修复MySQL数据库(MyISAM / InnoDB)
- Struts常用标签库
- java环境变量配置