AD9851と、LCD及び、その制御

0.バグフィックス

    LCDに、周波数を、カンマ入りで表示するプログラムなんですが、

    バグが、ありました。

7桁の時は、周波数が、正しく表示されるのですが

これが、6桁に変化すると、この通り、おかしくなります。(1MHZから、999.6KHzに変わった時)

そんで、これを、修正(加筆訂正)しました。

青い字が、追加部分です。

void set_comma(unsigned long x) //simulate=664uS
{
    unsigned char str[10]="";
    *result=0x00; //clear result[]
    sprintf(str,"%10lu",x);

    for (i=0;i<10;i++)
    {
        strncat(result,str+i,1);
        if( ( !(i % 3) ) && ( *(str+i) !=0x20 ) && (i !=9) ) strncat(result, "." ,1);
  
     if( ( !(i % 3) ) && ( *(str+i) ==0x20 ) ) strncat(result," ",1);
    }

}

    要するに、数字がゼロ(空白)の時、1字分の空白を、いれないと、駄目だったわけです、sorry

 

以上、ご迷惑をおかけしました。

 

 

1.AD9851の性能は?

    前節で、回路を、ショートさせてしまいましたので、正確な性能か、どうか...

 

液晶キャラクタ表示器は、OPTREXの白液晶(C−51505NFQJ−LW−AD)です。

かっこいい!

1MHz    (以降、0Hz〜120MHzのFULL SPANで、観測)

    10MHz

20MHz

30MHz

40MHz

50MHz

60MHz

2.LCD制御プログラムについて

 結構、手間取りました、はまる事、はまる事。

 最初は、LCDの初期化さえ、うまくできませんでした。

    Dmcman_full.pdfを、参考にしました。

解らない所は、勿論、諸先輩のHPを、参考にさせて頂きました。(御礼申し上げます。)

3桁毎に、ピリオドを打つ関数は、こんな風です。

void set_comma(unsigned long x) //simulate=693uS
{
    unsigned char str[10]="";

    *result=0x00; //clear result[] これをしないと、表示が変になる。


    sprintf(str,"%10lu",x);

    for (i=0;i<10;i++)
    {
        strncat(result,str+i,1);
        if( ( !(i % 3) ) && ( *(str+i) !=0x20 ) && (i !=9) ) strncat(result, &com ,1);
    }

}

unsigned long xを、10桁固定右寄せに、文字列表示。( sprintf関数、<string..h>と、<stdio.h>を、includeして置いた。 )

10桁固定にすると、ピリオドを、打ちやすいのです。

strncat関数(n文字を、新しい文字列関数resultに、n文字ずつ、コピーします。

そうしますと、

if( ( !(i % 3) ) && ( *(str+i) !=0x20 ) && (i !=9) ) strncat(result, &com ,1);

(i%3)==0の時が、ピリオドを打つ場所に、なりますので、

!(i%3)==1の時、が、ピリオドを打つ場所です。

他にも、条件が2つ、あります。

( *(str+i) !=0x20 )    空白の場所は、ピリオドを打たない。

 (i !=9)                 最終桁は、ピリオドを打たない。

そんで、条件が、3つに、なってしまいました。

スピードが、心配ですね。

これは、HEWのシミュレートモードで、確かめます。(delayも、この方法で確かめました。CLK=8MHz)

大体 0.7mSですね...遅いかな...ロータリーエンコーダは、まだ出来てないので、心配。

手動(プッシュSW)で、やるなら、充分ですね。

webによると、文字列配列を、reverseする方法も、あるようですが、まだ、試していません。

まだまだ、途中のプログラムです。

スィッチをどうするか? 自由度が多すぎて、これも又、悩みの種です、hi 。

3.AD9859の件

既に、3個、Digi-Keyから、入手していますが (分厚いカタログも、送ってくれはった、感謝。)

AD9851より、CLKが高くて、それでいて、安いねん。(\2,000位)、 コンパレータ? 要らんし )

serialが、同期型で、これは、試した事がなっかたし、

それに、CLKが、400MHzと、なると、チップ抵抗等を使わないと、具合が悪いんちゃうか?

とか、疑問点ばかりで、設計以前の状態です。

 

H.17.11.16