查看: 2575|回复: 2

基于S08P-Lite开发板的数码管显示模块驱动

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

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7092
    最后登录
    2023-4-20
    发表于 2021-3-4 17:17:18 | 显示全部楼层 |阅读模式
    最近在社区申请到一块S08P-Lite开发板,打算用它来了解S08P的性能并掌握其用法。此外,也顺便学习一下用CW来设计开发。
    首先体验了一下出厂demo的精彩,它比较有意思是将板载的每个外设都检测了个遍,若是不看例程的话,可能你只是看个片头曲,因为你是要参与其中。在打开串口的情况下,你才会见到demo给出的提示。你主要参与的主要在3个阶段,分别是触摸热敏电阻、按下按键及触摸感应板。否则它是不会向下执行的,你也就会错后续的好戏看。
    看过demo过了瘾,下面就是构建开发环境,也就是安装CW。由于已经有许多帖子介绍过,故此处从略。为了验证开发环境是否达标,就将demo又重新编译下载了一次,当然为了以示区别,你可以先添加一条输出语句,有了它你就有了下载成功的识别标记。
    过了编译下载关,离自主编程就进了一大块。为了初试身手,就选数码管的驱动显示为目标。
    为便于使用,资料选用的是数码管显示模块,它可同时显示8位数字,是以串并转换的方式工作的。相较于常规的数码管显示,它具有无需刷新显示的优势,且占用的I/O资源比较少,其接口原理图如图1所示。
    1.png
    图1 模块原理图
    在开发板的驱动下,该数码管的显示效果如图2所示。
    2.png
    图2模块显示效果
    在驱动该显示模块时,它与MCU的连接关系如下:
    VCC---3.3V
    GND---GND
    CLK---PTE2
    DIN---PTE1
    CS ---PTE3
    定义相关引脚输出高低电平的语句为:
    #define SMG_CLK_Clr()  PORT_PTED_PTED2   = 0  //PTE2
    #define SMG_CLK_Set()  PORT_PTED_PTED2   = 1
    #define SMG_DIN_Clr()  PORT_PTED_PTED1   = 0  //PTE1
    #define SMG_DIN_Set()  PORT_PTED_PTED1   = 1
    #define SMG_CS_Clr()   PORT_PTED_PTED3   = 0  //PTE3
    #define SMG_CS_Set()   PORT_PTED_PTED3   = 1
    配置相关引脚为输出功能的函数为:
    1. void  S08P_smg_init(void)
    2. {
    3. PORT_PTEOE_PTEOE1 = 1;
    4. PORT_PTEOE_PTEOE2 = 1;
    5. PORT_PTEOE_PTEOE3 = 1;
    6. SMG_CLK_Set();
    7. SMG_DIN_Set();
    8. SMG_CS_Set();
    9. }
    复制代码

    显示模块的初始化函数为:
    1. void Init_MAX7219(void)
    2. {
    3. Write_Max7219(0x09, 0xff);
    4. Write_Max7219(0x0a, 0x03);
    5. Write_Max7219(0x0b, 0x07);
    6. Write_Max7219(0x0c, 0x01);
    7. Write_Max7219(0x0f, 0x01);
    8. }
    复制代码
    相应的辅助函数是:
    1. void Write_Max7219(char address,char dat)
    2. {
    3. SMG_CS_Clr();
    4. Write_Max7219_byte(address);
    5. Write_Max7219_byte(dat);
    6. SMG_CS_Set();
    7. }
    复制代码

    实现显示效果的主程序为:
    1. void main(void)
    2. {
    3. Sys_Init();
    4. EnableInterrupts;
    5. MTIM1_Init();
    6. S08P_smg_init();
    7. Init_MAX7219();
    8. DelayMS(2000);
    9. Write_Max7219(0x0f, 0x00);
    10. Write_Max7219(1,8);
    11. Write_Max7219(2,7);
    12. Write_Max7219(3,6);
    13. Write_Max7219(4,5);
    14. Write_Max7219(5,4);
    15. Write_Max7219(6,3);
    16. Write_Max7219(7,2);
    17. Write_Max7219(8,1);
    18. while(1);
    19. }
    复制代码

    有了这个基础,后面我们可以给开发板配上更多的显示器件和方式。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32017
    最后登录
    2024-4-9
    发表于 2021-3-4 17:54:23 | 显示全部楼层
    感谢分享
    签到签到
    回复

    使用道具 举报

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

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7092
    最后登录
    2023-4-20
     楼主| 发表于 2021-3-4 18:36:31 | 显示全部楼层

    多谢支持!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-24 18:12 , Processed in 0.118506 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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