新規登録がまだの方

下の[新規登録]ボタンを押してコミュニティに登録してください。

登録がお済みの方はこちら

コミュ二ティポイントのご案内

詳しく見る

マイコン情報の交換広場

マイコン情報の交換広場>掲示板

公開 メンバー数:19人

チャットに入る

サークル内の発言を検索する

サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。

閉じる

from: usagiさん

2009年03月24日 20時13分46秒

icon

16F88をmikoroCでプログラム

皆様はじめまして。お世話になります。早速ですが、おねがいがございます。車に標準装備されてるバキュームセンサーを使いhttp://www.jaspa-o

皆様はじめまして。お世話になります。早速ですが、おねがいがございます。車に標準装備されてるバキュームセンサーを使いhttp://www.jaspa-oita.or.jp/jissen/2002/j_1407.html センサーの特性図です。この出力電圧をA/D変換してLCDに数字で-○○○mmHgと表示させる様に
こちらのプログラムを参考に出来ないかと思うのですがhttp://kuri6005.sakura.ne.jp/pic/index.php?A%2FD%C3%CD%A4%F2LCD%A4%CB%C9%BD%BC%A8%2816F88%29
これの4ビット接続例です。
こちらのプログラムの何処にA/D変換した数値を-○○○mmHg表示出来るように変換した計算式などを
何処に書き込むと良いのか教えて頂けると幸いです。

ご検討頂けると幸いです、どうぞ宜しくお願い申し上げます


  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 20
  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年03月30日 23時47分54秒

icon

「Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
ADCON1でどうしてもエラーが出ます。
mikroCを使うのが初めてなので何が違うのか分りませんでした。
LCDの初期化周りも通らなかったので直しました。mikroCのバージョンの問題かもしれません。
本日は、ここまでとさせてください。申し訳ない。

/**
* A/D変換値を液晶ディスプレイ(LCD)に表示 データ4bit接続
*
* PIC16F88 クロック:内蔵8MHz
*
* アナログ入力:RA1
* LCD制御pin R/W:RB0 RS:RB2 E:RB3
* LCDデータpin D4:RB4 D5:RB5 D6:RB6 D7:RB7 
* LCD:DMC16117A (OPTREX社製) 秋月@300円 06/11/15
* http://www.allelectronics.com/spec/LCD-114.pdf
* 電源:乾電池3本(4.5V)
*
* Devvice Flags:
* _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF
* _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON
* _WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2
*
* MikroC v7.0.0.3
*/

//使用変数の定義
int port;
char s_port[7];
char LCD_outbuf[4];//格納する文字列配列。
int pressure;
char buf[2];
int glen;
int cnt;

void main()
{
//マイコンの初期化
PORTA = 0b00000000; //PORTAの中身をきれいにする
PORTB = 0b00000000; //PORTBの中身をきれいにする
OSCCON = 0b01110000; //内臓クロック8MHzに設定
//A/D変換clock設定 0.125us*16倍=2.0us at 8MHz > 1.6us
ADCON1.ADCS2=1;
ADCON0.ADCS1=0;
ADCON0.ADCS0=1;
// A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 //
ANSEL = 0b00000010; //RA1のみアナログ使用、他は全てデジタル使用

TRISA = 0b00000010; //RA1のみ1:入力に設定、他は0:出力
TRISB = 0b00000000; //PORTB 8ヶ全て出力に設定
//マイコンの初期化終わり

Lcd_Init(); //LCD初期化

Lcd_Cmd(_LCD_CURSOR_OFF); //カーソル非表示

// バーグラフ用の■文字
buf[0] = 0xFF;
buf[1] = 0x00;

do
{
//アナログデータの取得(0~1023)
port = ADC_Read(1); //RA1値をアナログデジタル変換
Delay_ms(500); //0.5秒待機

IntToStr(port, s_port); //数値を文字列に変換

pressure = 900 - port;
LCD_outbuf[0] = pressure / 100 + '0';
LCD_outbuf[1] = (pressure % 100) / 10 + '0';
LCD_outbuf[2] = (pressure % 100) % 10 + '0';
LCD_outbuf[3] = '\0'; //文字列の終端を追加。

Lcd_Out(1, 1, "mmHg = "); //LCD表示
Lcd_Out(1, 9, LCD_outbuf); //LCD表示

// 表示圧力 / (500 / 16)でグラフの長さを求める。
glen = (pressure*16) / 500;
// 1〜16文字まで。0〜500mmHgを16分割。
for (cnt = 1; cnt <= 16; cnt++) {
if( glen >= cnt ) {
Lcd_Out(2, cnt, buf);
} else {
Lcd_Out(2, cnt, " ");
}
}
} while(1);
}

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト