サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
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);
}
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
閉じる
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
閉じる
icon拍手者リスト