查看: 9663|回复: 13

[原创] 【KL27 mini Board开发】+ KL27 mini Board 实现LCD511显示

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
    发表于 2016-3-22 12:28:18 | 显示全部楼层 |阅读模式
    KL27 mini Board为使用者开发所提供的GPIO资源是十分紧张的,要想添加新的外设就只能见缝插针了。板上有个SPI Flash 芯片,其引脚资源基本可以用,为此就配上一个LCD5110液晶屏来实现显示功能,以增强人机交互性。
    LCD5110共有8个引脚,除了电源和背光外,还有5个引脚需要安排,将SCE接GND,再用上SPI 总线的3个引脚(除去片选SS),还剩一个引脚无着落? 于是只好找个位置靠的近的下手,也就是24C02的SDA引脚。
    具体的引脚分配如下:
    SCLK --PC5
    DIN  --PC7
    DC   --PC6
    RST  --PC4
    SCE  --GND
    为了字符的显示,特将6*8点阵的小字符库放入数组中以便读取。
    相关的程序如下:
    1. #include <stdio.h>
    2. #include "gpio.h"
    3. #include "common.h"
    4. #define SetLCD_SCLK_High()     {GPIO_WriteBit(HW_GPIOC, 5, 1);}
    5. #define SetLCD_SCLK_Low()     {GPIO_WriteBit(HW_GPIOC, 5, 0);}
    6. #define SetLCD_SDIN_High()     {GPIO_WriteBit(HW_GPIOC, 7, 1);}
    7. #define SetLCD_SDIN_Low()          {GPIO_WriteBit(HW_GPIOC, 7, 0);}
    8. #define SetLCD_DC_High()              {GPIO_WriteBit(HW_GPIOC, 6, 1);}
    9. #define SetLCD_DC_Low()            {GPIO_WriteBit(HW_GPIOC, 6, 0);}
    10. #define SetLCD_RST_High()          {GPIO_WriteBit(HW_GPIOC, 2, 1);}
    11. #define SetLCD_RST_Low()            {GPIO_WriteBit(HW_GPIOC, 2, 0);}
    12. #define SetLCD_RSET_High()          {GPIO_WriteBit(HW_GPIOC, 4, 1);}
    13. #define SetLCD_RSET_Low()          {GPIO_WriteBit(HW_GPIOC, 4, 0);}
    14. uint8_t font6x8[][6] =
    15. {    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp
    16.      { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    17.     { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
    18. 。。。
    19.     { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
    20.     { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
    21.     { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
    22.     { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
    23. 。。。
    24.     { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    25.     { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y
    26.     { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    27.     { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines
    28. };

    29. void delay_1us(void)                 //1us延时函数
    30. {   uint16_t i;
    31.    for(i=0;i<1000;i++);
    32. }

    33. void LCD_write_CMD(uint8_t com)
    34. {    uint16_t uci;
    35.     SetLCD_DC_Low();
    36.         for(uci=0;uci<8;uci++)
    37.         {        if(com & 0x80)
    38.                 {                        SetLCD_SDIN_High();
    39.                   }
    40.                 else
    41.                 {                        SetLCD_SDIN_Low();
    42.                   }
    43.                 SetLCD_SCLK_Low();         
    44.                 com = com << 1;
    45.                 SetLCD_SCLK_High();
    46.         }
    47. }

    48. void LCD_write_Data(uint8_t dt)
    49. {    uint8_t uci;
    50.     SetLCD_DC_High();
    51.         for(uci=0;uci<8;uci++)
    52.         {        if(dt & 0x80)
    53.                 {                        SetLCD_SDIN_High();
    54.                   }
    55.                 else
    56.                 {                        SetLCD_SDIN_Low();
    57.                   }
    58.                 SetLCD_SCLK_Low();
    59.                 dt = dt << 1;
    60.                 SetLCD_SCLK_High();
    61.         }
    62. }

    63. void LCD_set_XY(uint8_t X, uint8_t Y)
    64. {    LCD_write_CMD(0x40 | (Y & 0X07));               
    65.     LCD_write_CMD(0x80 | (X & 0X7F));             
    66. }

    67. void LCD_Clear(void)
    68. {        uint16_t uii;
    69.         LCD_set_XY(0,0);
    70.         for(uii=0; uii<504; uii++)
    71.         {        LCD_write_Data(0x00);
    72.         }
    73. }

    74. void LCD_Init(void)
    75. {    SetLCD_RSET_High();
    76.         SetLCD_RST_Low();   
    77.         delay_1us();
    78.         SetLCD_RST_High();   
    79.         delay_1us();
    80.         delay_1us();
    81.         LCD_write_CMD(0x21);
    82.         LCD_write_CMD(0xc0);
    83.         LCD_write_CMD(0x06);
    84.         LCD_write_CMD(0x13);
    85.         LCD_write_CMD(0x20);
    86.         LCD_Clear();          
    87.         LCD_write_CMD(0x0c);       
    88. }

    89. void LCD_write_char(uint8_t c)
    90. {    uint8_t line;
    91.     c -= 32;
    92.     for (line=0; line<6; line++)
    93.         {              LCD_write_Data(font6x8[c][line]);
    94.           }
    95. }

    96. void LCD_write_english_string(uint8_t X,uint8_t Y,int8_t *s)
    97. {    LCD_set_XY(X,Y);
    98.     while (*s)
    99.     {        LCD_write_char(*s);
    100.         s++;
    101.     }
    102. }

    103. void TestLCD_Nokia5110(void)
    104. {        GPIO_QuickInit(HW_GPIOC, 4, kGPIO_Mode_OPP);
    105.     GPIO_QuickInit(HW_GPIOC, 5, kGPIO_Mode_OPP);
    106.     GPIO_QuickInit(HW_GPIOC, 6, kGPIO_Mode_OPP);
    107.     GPIO_QuickInit(HW_GPIOC, 7, kGPIO_Mode_OPP);
    108.         LCD_Init();
    109.         LCD_Clear();
    110.     LCD_write_english_string(0,0,"FreeLink+KL27");
    111.         DelayMs(100);
    112.         LCD_write_english_string(0,1,"mini Board");
    113.         DelayMs(100);
    114.         LCD_write_english_string(0,3,"Kinetis ");
    115.     DelayMs(100);  
    116.         LCD_write_english_string(0,4,"Development");
    117.         DelayMs(100);
    118.     LCD_write_english_string(0,5,"Kit ");
    119. }

    120. int main(void)
    121. {   DelayInit();
    122.     TestLCD_Nokia5110();
    123.     while(1);
    124. }
    复制代码


    Lcd5110显示效果

    Lcd5110显示效果
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-3-22 12:43:16 | 显示全部楼层
    不错,有参考价值。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-3-22 12:51:28 | 显示全部楼层
    另外问下楼主用的什么编译环境?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    178

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2019-7-20
    发表于 2016-3-22 13:42:11 | 显示全部楼层
    都拿到东西了,恭喜恭喜
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2016-3-22 13:43:05 | 显示全部楼层
    只能在IAR7.4下了,没有JLINK,用的是FreeLink,装的驱动。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16697
    最后登录
    1970-1-1
    发表于 2016-3-22 22:28:08 | 显示全部楼层
    不错不错,也正在玩这个5110
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:12
  • 签到天数: 1476 天

    连续签到: 9 天

    [LV.10]以坛为家III

    152

    主题

    3140

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8634
    最后登录
    2025-7-18
    发表于 2016-3-23 08:59:20 | 显示全部楼层
    不错                                      
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40

    主题

    500

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1089
    最后登录
    2025-1-13
    发表于 2016-3-23 09:33:36 | 显示全部楼层
    这个可以有!!谢谢分享
    NXP.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-3-26 09:40
  • 签到天数: 23 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    2

    主题

    63

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    348
    最后登录
    2021-3-17
    发表于 2017-3-19 21:00:58 | 显示全部楼层
    lcd的引脚可以用任意的IO口驱动吗?
    天气好,心情舒畅。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2017-3-20 09:03:32 | 显示全部楼层
    kiri 发表于 2017-3-19 21:00
    lcd的引脚可以用任意的IO口驱动吗?

    尽量使用功能较为单一的GPIO口吧。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 08:57 , Processed in 0.108483 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表