打印

【STM32F0实验】+Nokia5110液晶显示

[复制链接]
4755|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 568581185 于 2012-9-9 09:27 编辑


昨晚研究了一晚上,在STM32F1xx的固件库文档的帮助下,成功实现了Nokia5110液晶的简单显示主函数代码
int main(void)
{
        Clock_Init();
  GPIO_LCD_Init();
        LCD_Init();
  while(1)
  {  
    LCD_Write_Num(0 ,0 ,1234,5);
  }
void Clock_Init(void)
{
        ErrorStatus HSEStartUpStatus;
        /* Enable HSE */
        RCC_HSEConfig(RCC_HSE_ON);
        /* Wait till HSE is ready and if Time out is reached exit */
        HSEStartUpStatus = RCC_WaitForHSEStartUp();
        if(HSEStartUpStatus == SUCCESS)
        {
        /* Set PLL clock output to 24MHz using HSE (8MHz) as entry clock */
        RCC_PLLConfig(RCC_CFGR_PLLSRC_PREDIV1, RCC_PLLMul_3);
        /* Enable the PLL */
        RCC_PLLCmd(ENABLE);
        /* Select the PLL as system clock source */
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        /* Configure HCLK such as HCLK = SYSCLK */
        RCC_HCLKConfig(RCC_SYSCLK_Div1);        
        /* Configure PCLK1 such as PCLK1 = HCLK/2 */
        RCC_PCLKConfig(RCC_HCLK_Div2);

        /* Enable GPIOA clocks */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
        }
        else
        {
        /* Add here some code to deal with this error */
        }        
                        
}
void GPIO_LCD_Init(void)
{
        /* Configure all the GPIOA in Input Floating mode */
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType        = GPIO_OType_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
}
5110的C文件、头文件和字库文件
Nokia5110.zip (4.77 KB)
5110液晶引脚宏定义
#define uint uint16_t
#define uchar uint8_t

#define SCLK_SET          GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET)
#define SCLK_CLR          GPIO_WriteBit(GPIOA, GPIO_Pin_1,Bit_RESET);

#define SDIN_SET          GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET)
#define SDIN_CLR          GPIO_WriteBit(GPIOA, GPIO_Pin_2,Bit_RESET);

#define LCD_DC_SET        GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET)
#define LCD_DC_CLR        GPIO_WriteBit(GPIOA, GPIO_Pin_3,Bit_RESET);

#define LCD_CE_SET        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET)
#define LCD_CE_CLR        GPIO_WriteBit(GPIOA, GPIO_Pin_4,Bit_RESET);

#define LCD_RST_SET        GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET)
#define LCD_RST_CLR        GPIO_WriteBit(GPIOA, GPIO_Pin_5,Bit_RESET);
沙发
568581185|  楼主 | 2012-8-16 09:24 | 只看该作者
痛苦的是下载太难下进去了,我下载了这么多次,只有那一次成功了
我使用的是外部8M晶振,从上面的时钟初始化也能看出来

使用特权

评论回复
板凳
znsword| | 2012-8-16 15:38 | 只看该作者
:funk:!LZ真快,我也是昨天搞定了5110,还没有来得及发帖,被你占先了。

使用特权

评论回复
地板
568581185|  楼主 | 2012-9-9 09:33 | 只看该作者
更新一下显示图片
图片显示取模必须是:数据水平,字节垂直方式
取模方式不对,图形显示是乱码
LCD_draw_bmp_pixel(0,0,gImage_j,64 ,40);  //图像取模时,数据水平,字节垂直

ST图形**的数组:
uchar gImage_j[320] = {
0x00,0x00,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x1E,
0x1E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,
0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,
0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x60,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF8,0xF0,0xE0,0xC0,
0x80,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0x3F,
0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0E,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0x07,0x01,0x00,
0x00,0x00,0x00,0x00,0xC0,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x07,0x04,0x04,0x04,0x04,0x04,
0x04,0x04,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
图片效果在楼主位

使用特权

评论回复
5
梦中花雨| | 2012-9-10 12:45 | 只看该作者
我还不知道怎么搞

使用特权

评论回复
6
568581185|  楼主 | 2012-9-10 12:53 | 只看该作者
5# 梦中花雨 这个可以参考下论坛上的资料吧,我看有很多牛人都发了资料上来
多看看就应该会了吧

使用特权

评论回复
7
cqy1991cs1205| | 2014-1-23 13:04 | 只看该作者
程序烧不进去啊~~~求教

使用特权

评论回复
8
jzxlit| | 2015-4-26 15:27 | 只看该作者
znsword 发表于 2012-8-16 15:38
!LZ真快,我也是昨天搞定了5110,还没有来得及发帖,被你占先了。

新手 请教一下5110LCD,在STM32F030F4P6上显示,能给个代码么?多谢。

使用特权

评论回复
9
mintspring| | 2015-4-26 17:25 | 只看该作者
这个,看着不错了,就是有人说程序烧的难,真不明白为何这样

使用特权

评论回复
10
chenDianDian| | 2015-4-26 20:00 | 只看该作者
mintspring 发表于 2015-4-26 17:25
这个,看着不错了,就是有人说程序烧的难,真不明白为何这样

时序问题,我也写过5110的程序,经常使能端上去了,spi还没发送完,需要延时

使用特权

评论回复
11
mintspring| | 2015-4-26 21:35 | 只看该作者
chenDianDian 发表于 2015-4-26 20:00
时序问题,我也写过5110的程序,经常使能端上去了,spi还没发送完,需要延时 ...

应该添加个while循环,直到发送完了跳过

使用特权

评论回复
12
jzxlit| | 2015-6-24 19:25 | 只看该作者
调试成功,谢谢楼主,不过代码里缺了一个 时钟         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

使用特权

评论回复
13
598330983| | 2015-6-24 19:34 | 只看该作者
这代码怎么写出来的,楼主是个大神啊

使用特权

评论回复
14
309030106| | 2015-6-24 21:38 | 只看该作者
楼主大神啊,赞一个

使用特权

评论回复
15
乱世流年| | 2015-8-24 12:00 | 只看该作者
不错不错

使用特权

评论回复
16
冰河w| | 2015-8-24 16:15 | 只看该作者
这代码是写出来的,还是移植的,大神啊

使用特权

评论回复
17
Ketose| | 2016-2-26 16:49 | 只看该作者
软件模拟SPI,看来都是从51上移植过来的。

使用特权

评论回复
18
huangxiangc| | 2016-4-20 19:25 | 只看该作者
不知道

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:个人淘宝小店:http://shop70915068.taobao.com 邮件:785606460@qq.com

20

主题

955

帖子

4

粉丝