としぶぅ~の「工作部屋」...毎日少しのお勉強

趣味・関心事を書いていこうと思います。

PIC16F88を動かす。。。その14(昨日の考えを実行する)

2012-09-20 22:45:01 | PIC16F88

こんばんわ

としぶぅ~です。

夜はかな~り涼しくなってきましたね。。。。秋だ~^^

 

今日は昨日考えたやり方でとりあえずコーディングしてみました。

ささっと書いたのでバグありそうです。。。

表示になぜが”00”がでます。。。

表示についてはとりあえず、ADで取り込んだ値を16進数で表示しています。

まずは、ADのコードです。

下記をad.cに追加しました。

unsigned char ad_data; //(20120908追加)
unsigned char ad_disp; //(20120919追加)
unsigned char ad_data_old; //(20120919追加)

void ad_4ms()

{
    ad_data = ad4();
/* 前回のデータと今回のデータが違っていたら表示フラグをセットする */
    if(ad_data_old != ad_data){
        ad_disp = 1;           /* 表示フラグセット */
        ad_data_old = ad_data;  /* 新データを旧データにセット */
    }
}

 

次にlcd_f88.cに下記を追加

void disp_ad()
{
     unsigned char ad_10;
     unsigned char ad_1;

 /* 表示フラグを確認して、フラグが立っていたら表示データ作成 */ 

    if(ad_disp == 1){
        ad_disp = 0;      /* 表示フラグのクリア */
        ad_10 = (ad_data_old & 0xf0) >> 4; /* MSB8bit */
        ad_1 = (ad_data_old & 0x0f);             /*  LSB8bit  */

 /* 16進数表示データ作成 */

        if(ad_10
           ad_10 = ad_10 | 0x30;
        }else ad_10 = (ad_10-0x09) | 0x40;
        if(ad_1
           ad_1 = ad_1 | 0x30;
        }else ad_1 = (ad_1-0x09) | 0x40;

           lcd_posyx(1,0);
               lcd_puts("                ");     /* 2行目クリア */
               lcd_posyx(1,0);                /*  MSBデータ表示 */
               lcd_data(ad_10);
               lcd_posyx(1,1);                /* LSBデータ表示 */
               lcd_data(ad_1);

        }
}

コードはこんな感じです。

動作状況は

こんな感じです。

表示データは”8C”です。

電圧がちょっと高めなので(Pickit2の時より微妙に高い。。0.2Vくらい?)

表示データ値が少し低くなっているかな…

でもデータ的にはだいたいいいところに来ていると思います。

室温でだいたい25℃くらいなので、前回とった表で見比べると

94h付近になるはず・・・多少誤差ありますが、8Chなのでいいところ来ています。

ちゃんと温度計になっているということですね。

 

後は、少しバグ取りして、16進数を温度表示なるように変換して、温度表示できるようになれば

完成ですね。。。

明日やれるかな~

明日は、会社の懇談会なので・・・早く帰ってこれればつづきやります。

 

それでは、今日はこの辺で(^^/

おやすみなさ~い!