查看: 2324|回复: 1

PSoCRocks程序分析

[复制链接]
  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2012-9-7 11:52:11 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 nemon 于 2012-9-7 12:48 编辑

    一共4个代码文件,依赖关系如下:
    main.c
    +->device.h
    +->Display.h(Display.c)

    device就不说了。
    先说Display:
    Display负责显示字符转换和led延时,里面定义了
    extern uint8  DisplayRasterTable[];
    用来引用main.c里面定义的全局DisplayRasterTable,这个数组是用来保存显示字符的各列像素的。
    const char8 font8x5[ 0x60 ][ 5 ]是字符转列像素的转换表。
    看原文就明白了:
    1. /***************************************************************
    2. This array contains ASCII character offset for LED display*/
    3. /***************************************************************
    4. The characters are displayed using a pixel format.
    5. Each character is represented by 5 horizontal pixels and 8 vertical.
    6. Each column is a single byte.

    7. For example A is displayed in the following format

    8.              0 0 1 0 0  =      *
    9.              0 1 0 1 0  =    *   *
    10.              1 0 0 0 1  =  *       *
    11.              1 0 0 0 1  =  *       *
    12.              1 1 1 1 1  =  * * * * *
    13.              1 0 0 0 1  =  *       *
    14.              1 0 0 0 1  =  *       *
    15.              1 0 0 0 1  =  *       *
    16.              | | | | |
    17.              | | | | 0x3F
    18.              | | | 0x48
    19.              | | 0x88
    20.              | 0x48
    21.              0x3F

    22.              {0x3F,0x48,0x88,0x48,0x3F},     // ASCII -  65 A
    23. ****************************************************************/
    复制代码
    算有图了有真相了吧。
    uint8 LED_StringProcess(const char8 CurrentDisplayString[])负责把CurrentDisplayString转换成列像素,放在DisplayRasterTable里(每个字符后面加一列空白);
    void LED_Delay(uint16 DelayCount)延时;

    下面是主角main.c:
    const char8 DisplayString[MAX_MESSAGE_NUMBER][STRING_MAX_LEN] 预定义的MAX_MESSAGE_NUMBER个显示字串;
    const uint8 StringCycles[MAX_MESSAGE_NUMBER]每次显示第n个字串时连续显示的次数(有点显示时间的意思哈);
    只有一个函数:
    void main()
    流程是:对每一个要显示的字串做以下操作:
    等开始晃,则逐一显示每一列,每一列都显示完了后,停下来直到晃动停止。
    结构很清楚,现在还有个问题:“ACCEL_TRIGGER是干什么用的?”



    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2012-9-11 13:04:31 | 显示全部楼层
    本帖最后由 nemon 于 2012-9-11 13:06 编辑

    补充一下官方文件中的流程图:
    0001.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 17:51 , Processed in 0.143570 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.