本帖最后由 jinglixixi 于 2016-2-16 20:28 编辑 新近得到一块STM32F042的开发板,怎样用好它呢?最终还是决定用它实现LCD5110的显示功能。 其程序如下: // 基于STM32F042开发板的LCD5110显示功能程序 已经测试 // PA5:SCE // PA6:RES // PA7C // PA8:SDIN // PA9:SCLK #include "main.h" static GPIO_InitTypeDef GPIO_InitStruct; static void SystemClock_Config(void); const unsigned char chinese_character[][24]= { //tian? {0x20,0x22,0x22,0x22,0xA2,0x7E,0xA2,0x22,0x22,0x22,0x20,0x00,0x08,0x08,0x04,0x02,0x01,0x00,0x01,0x02,0x04,0x08,0x08,0x00}, //jin? {0x22,0x44,0x00,0x08,0xAA,0xAA,0xFF,0xAA,0xAA,0xBE,0x08,0x00,0x04,0x02,0x01,0x02,0x02,0x02,0x0F,0x02,0x02,0x02,0x02,0x00}, //li? {0x12,0x12,0xFE,0x12,0x3F,0xA5,0xA5,0xFF,0xA5,0xA5,0x3F,0x00,0x02,0x02,0x01,0x05,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x00}, //gong? {0x00,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x03,0x02,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x00}, //da? {0x08,0x08,0x08,0x08,0xC8,0x3F,0xC8,0x08,0x08,0x0C,0x08,0x00,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x00}, //xue? {0x9C,0x84,0x95,0x96,0x95,0xD6,0xB4,0x94,0x87,0x94,0x8C,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, //hou? {0x8A,0x44,0xFB,0x10,0xFC,0x03,0x48,0x3A,0xEA,0x2E,0x28,0x00,0x08,0x08,0x07,0x00,0x0F,0x00,0x09,0x05,0x03,0x05,0x09,0x00}, //nian? {0x10,0x08,0xE7,0x24,0x24,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x01,0x00}, //ji? {0x04,0xA4,0xA4,0xA4,0xA4,0xBF,0xA4,0xA4,0xA4,0xA4,0x04,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x00}, //xiang? {0x84,0x45,0xF6,0x2C,0x40,0x25,0x26,0xFC,0x26,0x25,0x00,0x00,0x00,0x00,0x0F,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x00}, }; 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 }; long int delay_1us(void) { long int count=2; while(count--); return 0; } void delay_ms(unsigned int nms) { unsigned int n,m; n=nms; while(n) { for(m=0;m<1000;m++) delay_1us(); n--; } } void Delay(unsigned long count) { while(count--); } void set_SCE(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); } void clear_SCE(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET); } void set_RES(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET); } void clear_RES(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET); } void set_DC(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET); } void clear_DC(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET); } void set_SDIN(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET); } void clear_SDIN(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET); } void set_SCLK(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); } void clear_SCLK(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); } void LCD_write_byte(unsigned char data,unsigned char cmd) { unsigned char i; clear_SCE(); if(cmd) set_DC(); else clear_DC(); for(i=0;i<8;i++) { if(data&0x80) //???????????1 set_SDIN(); //???SDIN=1 else clear_SDIN();//????SDIN=0;SDIN???????DDRAM?? data = data<<1; //????????????????????,??????? clear_SCLK(); //SDIN?SCLK??????DDRAM delay_1us(); delay_1us(); set_SCLK(); // clear_SCLK(); // } } void LCD_init(void) { set_SCE();// set_RES();// delay_ms(20); clear_RES(); delay_ms(20); set_RES(); delay_ms(20); LCD_write_byte(0x21,0);//LCD????:????,????,?????? LCD_write_byte(0xd0,0);//??VOP?,?????????3.00-10.68 LCD_write_byte(0x20,0);//LCD????:????,????,?????? LCD_write_byte(0x0c,0);//??????:???? set_SCE();//SCE????????????,SCLK??????,?????????,??????SCE???? } void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | Y, 0);// ? LCD_write_byte(0x80 | X, 0);// ? set_SCE(); } void LCD_clear(void) { unsigned char t; unsigned char k; LCD_set_XY(0,0); for(t=0;t<6;t++) { for(k=0;k<84;k++) { LCD_write_byte(0x00,1); } } set_SCE(); } void LCD_write_char(unsigned char c) { unsigned char c_line; c-=32; for (c_line=0; c_line<6; c_line++) LCD_write_byte(font6x8[c][c_line], 1); } void LCD_write_String(unsigned char X,unsigned char Y,char *s) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } 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(unsigned char X, unsigned char Y,char n) { int i; LCD_set_XY(X,Y); for(i = 0;i < 12; i++) { LCD_write_byte(chinese_character[n],1); } LCD_set_XY(X,Y+1); for(i = 12; i < 24; i++) { LCD_write_byte(chinese_character[n],1); } } void LCD_write_hanzi(unsigned char X,unsigned char Y,char s) { do { char line; LCD_set_XY(X,Y); for (line=0; line<12; line++) { LCD_write_byte(chinese_character } LCD_set_XY(X,Y+1); for (line=12; line<24; line++) { LCD_write_byte(chinese_character } }while(0); } int main(void) { HAL_Init(); SystemClock_Config(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin =GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); LCD_init(); LCD_clear(); //猴年吉祥 LCD_write_hanzi(14,1,6); LCD_write_hanzi(26,1,7); LCD_write_hanzi(38,1,8); LCD_write_hanzi(50,1,9); LCD_write_english_string(0,4," STM32F042 "); LCD_write_english_string(0,5,"LCD5110 v1.0"); while (1); } 具体显示效果如图 |
LCD5110æ¾ç¤ºææ
【STM32F030开发日志/评测/笔记】+串口echo测试程序
【STM32F030开发日志/评测/笔记】从无到有
STM32F030F4 的 STOP 电流 不稳定
【活动】2013年末签到,赢STM32F0超值型探索套件(已公布结果)
[晒一晒]STM32F0 Discovery板卡
【说出你的故事】从对STM32白痴到入门+STM32F030R8 Boost MPPT
Nucleo STM32F072 FreeRTOS移植
【小“福”蝶赏灯展+DISCO-STM32F0308】
[STM32F072 Nucleo]开发笔记(四) 用按钮代替方向盘硬件测试
[STM32F072 Nucleo]开发笔记(二)扩展USB接口
多谢多谢
见笑,不知什么原因,改了次也没变过来。