亚博智能论坛  
  
查看: 536|回复: 0

课程12--8乘8点阵

  [复制链接]
  • TA的每日心情
    慵懒
    2017-7-29 14:25
  • 121

    主题

    161

    帖子

    576

    积分

    超级版主

    Rank: 9Rank: 9Rank: 9

    积分
    576
    发表于 2017-6-1 18:38:27 | 显示全部楼层 |阅读模式
    88点阵
             8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(1334106111516)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9148121725)接高电平,那么第一列就会点亮。
             引号脚识别:点阵模块4条边,有一边上有丝印,且中间向下有塑料突起;插针向下放置,丝印面向自己,左起为1号脚,逆时针排列。只要其对应的行接高,列接低,即可点亮响应行列的LED。应用时需加限流电阻。  
    所示是引脚和对应的行列序号,R表示行,C表示列。引脚逆时针排列:
    OTRN]R%FZY4E)QJHBS44.png
    8*8点阵应用
             一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的。也就是说得用四8*8点阵组合成一个16*16的点阵。如下图所示,要显示“0”则相应的点就要点亮,由于我们的点阵在列线上是低电平有效,而在行线上是高电平有效,所以要显示“0”的话,第一行(9脚)送0信号,列脚均送1信号。依此类推,只要每行数据显示时间间隔够短,利用人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“0”
      
    直插LED
      
    1
    负温度系数热敏电阻
    1
    10KΩ直插电阻
    1
    220Ω直插电阻
    1
    面包板
    1
    面包板跳线
    1
    号。依此类推,只要每行数据显示时间间隔够短,利用人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“0”;第二种送数据的方法是字模信号送到行线上再扫描列线也是同样的道理。同样以“0”来说明,16行(9148121725)上送(00000000000000000x000x00)而第一列(13脚)送、“0”。同理扫描第二列。当行线上送了16次数据而列线扫描了16次后一个“0”也就显示出来了。因此,形成的列代码为 00H00H3EH41H41H3EH00H00H;只要把这些代码分别依次送到相应的列线上面,即可实现“0”的数字显示。
    O)93745S7QD~TJ{RKP)YFS8.png
    按照下图链接好电路后,就可以开始编写程序了。所有ROW,也就是行的脚都要加220欧电阻
    4%}OLNU69V{S9BSQFF7ZZ29.png
    参考例程
    1. //the pin to control ROW
    2. //arduino 引脚                            //led 点阵引脚
    3. const int row1 = 2; // the number of the row pin 9
    4. const int row2 = 3; // the number of the row pin 14
    5. const int row3 = 4; // the number of the row pin 8
    6. const int row4 = 5; // the number of the row pin 12
    7. const int row5 = 17; // the number of the row pin 1
    8. const int row6 = 16; // the number of the row pin 7
    9. const int row7 = 15; // the number of the row pin 2
    10. const int row8 = 14; // the number of the row pin 5
    11. //the pin to control COl
    12. const int col1 = 6; // the number of the col pin 13
    13. const int col2 = 7; // the number of the col pin 3
    14. const int col3 = 8; // the number of the col pin 4
    15. const int col4 = 9; // the number of the col pin 10
    16. const int col5 = 10; // the number of the col pin 6
    17. const int col6 = 11; // the number of the col pin 11
    18. const int col7 = 12; // the number of the col pin 15
    19. const int col8 = 13; // the number of the col pin 16
    20. void setup(){
    21. int i = 0 ;
    22. for(i=2;i<18;i++)
    23. {
    24. pinMode(i, OUTPUT);
    25. }
    26. pinMode(row5, OUTPUT);
    27. pinMode(row6, OUTPUT);
    28. pinMode(row7, OUTPUT);
    29. pinMode(row8, OUTPUT);
    30. for(i=2;i<18;i++) {
    31. digitalWrite(i, LOW);
    32. }
    33. digitalWrite(row5, LOW);
    34. digitalWrite(row6, LOW);
    35. digitalWrite(row7, LOW);
    36. digitalWrite(row8, LOW);
    37. }
    38. void loop(){
    39. int i;
    40. //the row # 1 and col # 1 of the LEDs turn on
    41. digitalWrite(row1, HIGH);
    42. digitalWrite(row2, LOW);
    43. digitalWrite(row3, LOW);
    44. digitalWrite(row4, LOW);
    45. digitalWrite(row5, LOW);
    46. digitalWrite(row6, LOW);
    47. digitalWrite(row7, LOW);
    48. digitalWrite(row8, LOW);
    49. digitalWrite(col1, LOW);
    50. digitalWrite(col2, HIGH);
    51. digitalWrite(col3, HIGH);
    52. digitalWrite(col4, HIGH);
    53. digitalWrite(col5, HIGH);
    54. digitalWrite(col6, HIGH);
    55. digitalWrite(col7, HIGH);
    56. digitalWrite(col8, HIGH);
    57. delay(1000);
    58. //turn off all
    59. for(i=2;i<18;i++) {
    60. digitalWrite(i, LOW);
    61. }
    62. delay(1000);
    63. }
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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