查看: 5235|回复: 1

[原创] 【LPC11U68】+ A3.GPIO驱动TIL311

[复制链接]
  • TA的每日心情
    开心
    2025-5-29 08:54
  • 签到天数: 2992 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    45

    主题

    5548

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    12035
    最后登录
    2025-5-29
    发表于 2018-11-10 18:08:42 | 显示全部楼层 |阅读模式
    在mbed平台下对GPIO的操作还是相对简单的,如果你要将一个GPIO口作为输出只需要像下边实例化一个对象,然后赋值0或者1就可以了。
    1. DigitalOut led(LED1);

    2. led = 0;
    3. led = 1;
    复制代码
    或者要将一组GPIO口作为输出还可以使用BusOut类,最多支持操作16个GPIO口。
    1.     BusOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC,
    2.            PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
    3.            PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
    4.            PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC);
    复制代码
    这里的演示我用4片74HC595拓展出来32个IO口,这样只需要3个IO口就可以操作4个TIL311了,使用起来非常方便。
    操作非常简单,直接上代码。
    1. #include "mbed.h"

    2. /*-------------------------data format-------------------------------
    3. TIL311      3               2               1               0
    4. Left Decimal        LP    OFF == HIGH ON == LOW
    5. Right Decimal       RP    OFF == HIGH ON == LOW
    6. Blanking input  BI      BI == HIGH the display is blank BI == LOW display as determined by the data in the latches.

    7. data0 == D1     C1      B1      A1      D0      C0      B0      A0
    8. data1 == D3     C3      B3      A3      D2      C2      B2      A2
    9. data2 == RP3    LP3     RP2     LP2     RP1     LP1     RP0     LP0
    10. data3 == BI3    BI2     BI1     BI0     X           X           X           X
    11. -------------------------------------------------------------------*/

    12. DigitalOut HC595_DS(P0_11);
    13. DigitalOut HC595_ST_CP(P0_23);
    14. DigitalOut HC595_SH_CP(P0_12);

    15. void HC595SendData_four(char data0, char data1, char data2, char data3);

    16. int main(){
    17.     HC595_DS = 0;
    18.     HC595_SH_CP = 0;
    19.     HC595_ST_CP = 0;
    20.     HC595SendData_four(0xff, 0xff, 0x00,0x00);
    21.     wait_ms(2000);
    22.    
    23.     while(1){
    24.         for(int i = 0; i < 16; i++){
    25.             HC595SendData_four(i+(i<<4), i+(i<<4), 0xff, 0x00);
    26.             wait_ms(500);
    27.         }
    28.     }
    29. }

    30. void HC595SendData_four(char data0, char data1, char data2, char data3){
    31.     int i = 0;
    32.     for (i = 0; i < 8; i++){
    33.         if (data0 & 0x80) HC595_DS=1;
    34.         else HC595_DS=0;
    35.         data0 <<= 1;
    36.         HC595_SH_CP=1;  HC595_SH_CP=0;
    37.     }   
    38.     for (i = 0; i < 8; i++){        
    39.         if (data1 & 0x80) HC595_DS=1;
    40.         else HC595_DS=0;
    41.         data1 <<= 1;
    42.         HC595_SH_CP=1;  HC595_SH_CP=0;
    43.     }
    44.     for (i = 0; i < 8; i++){
    45.         if (data2 & 0x80) HC595_DS=1;
    46.         else HC595_DS=0;
    47.         data2 <<= 1;
    48.         HC595_SH_CP=1;  HC595_SH_CP=0;
    49.     }
    50.     for (i = 0; i < 8; i++){
    51.         if (data3 & 0x80) HC595_DS=1;
    52.         else HC595_DS=0;
    53.         data3 <<= 1;
    54.         HC595_SH_CP=1;  HC595_SH_CP=0;
    55.     }
    56.     HC595_ST_CP=1;
    57.     HC595_ST_CP=0;
    58. }
    复制代码
    上两张图片看看效果。
    11.jpg
    22.jpg


    签到签到
    回复

    使用道具 举报

  • TA的每日心情

    2021-2-4 09:24
  • 签到天数: 190 天

    连续签到: 1 天

    [LV.7]常住居民III

    38

    主题

    591

    帖子

    28

    金牌会员

    Rank: 6Rank: 6

    积分
    2207
    最后登录
    2025-8-11
    发表于 2018-11-10 20:08:06 | 显示全部楼层
    这样扩展IO很厉害  一下扩展这么多
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-31 06:46 , Processed in 0.081925 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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