查看: 1559|回复: 17
打印 上一主题 下一主题

Arduino 实现字符串在单数码管的显示【C++程序员的告白】

[复制链接] qrcode

31

主题

54

帖子

143

积分

注册会员

Rank: 2

积分
143
楼主
跳转到指定楼层
发表于 2014-5-28 09:27 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我采用了Arduino UNO Rev3 编程在单数码管上显示了一行字符串。使字符串可以在一个数码管上滚动显示,每个单词之间用\'-\'字符隔开。视频中字符显示的是"I-LOUE-YOU-YUANBAO",是一个C++程序员的告白。在实现过程中,我编制了字符对应的数码管编码表,可以显示数字:0123456789 和字母:ABCDEFGHIJLNOPQUY 。单个字符停留0.5s时间,间隔字符\'-\'停留1.5s时间。

具体实现细节请看我上传的视频下列代码,因为Arduino IDE 无法写中文注释的原因,我采用了很poor 的英文写下了注释。

http://www.tudou.com/programs/view/WdciExTPQOo



   //////////////////////////////////////////////////////
    // Display symbol in Numerical Tube 
    /////////////////////////////////////////////////////
    
    /*
    Establish a simple digital and charactor map 
    digital: 0,1,2,3,4,5,6,7,8,9
    character: A,b,C,d,E,F,G,H,I,J,L,n,o,P,q,U,y
    */
    
    char num_tube_char[36] = "-0123456789ABCDEFGHIJLNOPQUY";
    byte num_tube_code[36] = {
                            0b00000010,  /* - */
                            0b11111100,0b01100000,0b11011010,0b11110010,
                            0b01100110,0b10110110,0b10111110,0b11100000,
                            0b11111110,0b11110110, /*from 0 to 9*/
                            0b11101110,0b00111110,0b10011100,0b01111010,
                            0b10011110,0b10001110,0b10111101,0b01101110,
                            0b00001100,0b01110000,0b00011100,0b11101100,
                            0b00111010,0b11001110,0b11100110,0b01111100,
                            0b01110110  /*from A to y*/
                          };
    const int A_port = 9;
    const int B_port = 8;
    const int C_port = 2;
    const int D_port = 3;
    const int E_port = 4;
    const int F_port = 5;
    const int G_port = 6;
    const int dot_port = 7;
    
    int port[8] = {A_port, B_port, C_port, D_port, E_port, F_port, G_port, dot_port};
    
    void setup()
    {
      pinMode(A_port, OUTPUT);
      pinMode(B_port, OUTPUT);
      pinMode(C_port, OUTPUT);
      pinMode(D_port, OUTPUT);
      pinMode(E_port, OUTPUT);
      pinMode(F_port, OUTPUT);
      pinMode(G_port, OUTPUT);
      pinMode(dot_port, OUTPUT);
    }
    void loop()
    {
      int i =0;
      char word[] = {"I-LOUE-YOU-YUANBAO&"};
      while(word)
      {
        Display(word[i++]);
      }
    }  
    /*  Write in code of charactor and display in numerical tube   */
    void WriteIn(byte b)
    {
      byte tmp = 0b00000000;
      int i = 0;
      while(i < 8) { tmp = b; b <<= 1; if(b >= tmp) 
        {
          digitalWrite(port[i++], HIGH);
        }
        else
        {
          digitalWrite(port[i++], LOW);
        }
      }
    }
     
    void Display(const char ch)
   {
     /*Search Index from Table and find the code of charactor ch*/
     int i = 0;
     for( i = 0; i < 36; i++) { if(ch == num_tube_char) { WriteIn(num_tube_code); if(num_tube_char == \'-\') { delay(1500); } else { delay(500); } break; } } if(i == 36) { for(int i = 0; i < 3; i++) { WriteIn(0b00000000); delay(250); WriteIn(0b11111111); delay(250); } } } 







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

88

帖子

16

积分

新手上路

Rank: 1

积分
16
沙发
发表于 2014-5-28 09:27 AM | 只看该作者
哈哈,自己评论一个。
回复 支持 反对

使用道具 举报

9

主题

86

帖子

41

积分

新手上路

Rank: 1

积分
41
板凳
发表于 2014-5-28 09:30 AM | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

80

帖子

4

积分

新手上路

Rank: 1

积分
4
地板
发表于 2014-5-28 09:31 AM | 只看该作者

欢迎常来分享,分数送上

回复 支持 反对

使用道具 举报

2

主题

87

帖子

12

积分

新手上路

Rank: 1

积分
12
5#
发表于 2014-5-28 09:37 AM | 只看该作者
谢谢分享,很受用哦
回复 支持 反对

使用道具 举报

0

主题

92

帖子

6

积分

新手上路

Rank: 1

积分
6
6#
发表于 2014-5-28 09:38 AM | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

73

帖子

10

积分

新手上路

Rank: 1

积分
10
7#
发表于 2014-5-28 09:43 AM | 只看该作者
哈哈,谢谢哈。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

3

主题

83

帖子

25

积分

新手上路

Rank: 1

积分
25
8#
发表于 2014-5-28 09:44 AM | 只看该作者
呵呵,谢谢。如果可以,以后把数码管的编码表封装成类库。就不知道用处大不大。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

87

帖子

22

积分

新手上路

Rank: 1

积分
22
9#
发表于 2014-5-28 09:45 AM | 只看该作者
呵呵,谢谢。如果可以,以后把数码管的编码表封装成类库。就不知道用处大不大。
回复 支持 反对

使用道具 举报

0

主题

121

帖子

80

积分

注册会员

Rank: 2

积分
80
10#
发表于 2014-5-28 09:45 AM | 只看该作者
3Q
回复 支持 反对

使用道具 举报

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

本版积分规则

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