你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F042的LCD5110显示

[复制链接]
jinglixixi 提问时间:2016-2-16 20:20 /
本帖最后由 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[line],1);
                  }
                LCD_set_XY(X,Y+1);
                for (line=12; line<24; line++)
                {               
                        LCD_write_byte(chinese_character
[line],1);
                  }
          }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显示效果

LCD5110显示效果
收藏 1 评论9 发布时间:2016-2-16 20:20

举报

9个回答
Paderboy 回答时间:2016-2-16 22:04:28
多谢分享。。恭喜。。能拿到F042
jinglixixi 回答时间:2016-2-17 13:24:27
Paderboy 发表于 2016-2-16 22:04
多谢分享。。恭喜。。能拿到F042

多谢多谢
sacq12 回答时间:2016-2-17 15:17:41
贴的代码都是带有表情的
zhangdaijin 回答时间:2016-2-18 12:44:22
谢谢楼主分享
wuweijie 回答时间:2016-2-19 18:19:41
不赖不赖,赞一个
zcl201207 回答时间:2016-2-19 20:08:16
戏如人生 回答时间:2016-2-19 20:41:09
赞一个!!!
jinglixixi 回答时间:2016-2-29 11:49:20
sacq12 发表于 2016-2-17 15:17
贴的代码都是带有表情的

见笑,不知什么原因,改了次也没变过来。
jinglixixi 回答时间:2016-2-29 11:52:57
不知谁有 STM32F051 SDHC例程能发上来,用清风的驱程好像不支持8G的SD卡,1G的市面上基本见不到了,况且容量也过小。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版