サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
-
from: usagiさん
2009年03月24日 20時13分46秒
icon
16F88をmikoroCでプログラム
皆様はじめまして。お世話になります。早速ですが、おねがいがございます。車に標準装備されてるバキュームセンサーを使い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拍手者リスト
-
コメント: 全20件
from: じゅんさん
2009年04月03日 04時47分52秒
icon
「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
バーグラフの表示の情報にしたって、これも自分で考えたのではなくてどこかの掲示板で作ってもらったもののはずです。「←この意味がわからないのですが」と言っているのがいい証拠です。
本人は気づいていませんが、このバーグラフは16段階しかできません。でも本人が希望しているのは16×5ドットの80ドット(80段階)表示のバーグラフのはずです。
zweさんが作成されたソフトが動くようになったら、今度は80ドット表示版の改造を依頼してくるはずです。
際限ないんですよ、こいつは。車いじりの事になると夢中になっちゃって人に迷惑を掛けている事に気がつかないんですよね。私が某所で指摘したら「迷惑を掛けたのなら謝ります」と言いました。つまり迷惑を掛けているという認識がないんですよ。
頼めば世の中で誰かは無償でCのプログラムを作ってくれると思っているんですね。
動くようになったら稼働費を請求したほうがいいですよ。いやまじで。そうしないとこいつのためにならないです。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: zwiさん
2009年04月03日 00時05分58秒
icon
「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
じゅんさん、ありがとう御座います。
とりあえず、usagiさんの登場を待ちたいと思います。
本当のやる気があるなら、有る程度自分で何とかしてくれると思いますが、厳しい言い方ですが、やる気の無い方を応援し続ける気はありません。usagiさん返答待ってます。
そもそも人に書いて貰って完成するはずがありませんしね。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: じゅんさん
2009年04月02日 20時42分24秒
icon
「Re:Re:Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
zweさん
usagiさんって方は各所で同様な質問をしています。
http://8528.teacup.com/nekosan0/bbs?BD=9&CH=5&OF=10#CID134
http://kitaura.info/bbs/kakikomitai.cgi?
http://jbbs.livedoor.jp/bbs/read.cgi/study/3329/1214749375/l50
↑これはほんの一例
mixiでもやらかしています。
以前にmixiでナイトライダーのスキャナー(LEDが左右に点滅するやつ)のプログラムの作成丸投げもやっていました。が、出来上がると次々と仕様変更して追加の作成・変更を要求してきます。
はっきりいってこの人、Cの知識はなくて、覚えるつもりもないんですよ。無償でプログラム作ってくれる人を探して手当たり次第に色んな掲示板に投稿しているんです。
今回の負圧計も、初期バージョンができたら必ず仕様変更を求めてきますよ。
んで負圧計ができたら、今度は違うのを作ってくれと言ってくるはずです(いままでの実績だと)
こいつにプログラムを作ってあげてもなにもメリットはありません。zweさんが稼働を浪費するだけで、usagiさんのスキルがアップすることもありません。
おそらく嫌な思いをするだけです。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月31日 08時32分15秒
icon
「Re:Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
ADCON1でどうしてもエラーが出ます。
> mikroCを使うのが初めてなので何が違うのか分りませんでした。
> LCDの初期化周りも通らなかったので直しました。mikroCのバージョンの問題かもしれません。
> 本日は、ここまでとさせてください。申し訳ない。
>
管理人さま、「申し訳ない」なんてとんでもございません。
お疲れの中お付き合い下さっているのですから
こちらが頭を下げる立場です。申し訳ございません。
> * 電源:乾電池3本(4.5V)
この電源ですが3端子レギュレターで出来た5Vを使用します。
訂正させて頂きます。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月31日 08時05分23秒
icon
「Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
> とりあえずコンパイルが通るだけのものは用意できますが、実行してどうなるかは分りませんがよろしいですか?
>>この条件で結構です。ありがとうございます。
管理人様、本当にお手数お掛けして申し訳ございません。
本当に、本当に嬉しい限りです。
ご負担にならない範囲で引き続き宜しく御願い申し上げます。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 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拍手者リスト
from: zwiさん
2009年03月30日 23時13分32秒
icon
「Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
> 管理人様大変お世話になっております。
> その後、ネットで勉強してるのですが、うまく進みません。
> 真に勝手ではございますが管理人様の時間が空いてる時に
> プログラム書いて頂く事出来ませんでしょうか?
> ご検討宜しく御願いいたします。
とりあえずコンパイルが通るだけのものは用意できますが、実行してどうなるかは分りませんがよろしいですか?
動作状況を私の手を借りて一々確認するとなると、何日も掛かります。そういう意味でC言語を有る程度理解していないと辛いかと思いますが。
とりあえずメーターバージョンを用意してみます。
しばらくお待ちください。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月30日 07時57分18秒
icon
「Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
管理人様大変お世話になっております。
その後、ネットで勉強してるのですが、うまく進みません。
真に勝手ではございますが管理人様の時間が空いてる時に
プログラム書いて頂く事出来ませんでしょうか?
ご検討宜しく御願いいたします。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月25日 21時53分49秒
icon
「Re:Re:Re:Re:16F88をmikoroCでプログラム」
> とりあえず、最低限のエラーの調べ方とC言語の文法は調べてくださいね。このままだと中々進まないですよ。
>
> >[54] pressure = 900 - port;
> pressureの変数を宣言してください。
>
> >[56]LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
> >[57]LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
> 見逃してました。このプログラムだとlcd[0]は無いので
> (pressure - lcd[0] * 100)
> の代わりに
> (pressure % 100)
> で代用してください。
>
> でエラーは取れると思います。
> Undeclared identifier [xxxx]in expression
> は未定義エラーって意味です。
””
お疲れのところお返事いただき真にありがとうございます。
> pressureの変数を宣言してください。
宣言文を書き込むという事ですね!
がんばってみます。
ありがとうございました。
””
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: zwiさん
2009年03月25日 21時35分55秒
icon
「Re:Re:Re:16F88をmikoroCでプログラム」
とりあえず、最低限のエラーの調べ方とC言語の文法は調べてくださいね。このままだと中々進まないですよ。
>[54] pressure = 900 - port;
pressureの変数を宣言してください。
>[56]LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
>[57]LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
見逃してました。このプログラムだとlcd[0]は無いので
(pressure - lcd[0] * 100)
の代わりに
(pressure % 100)
で代用してください。
でエラーは取れると思います。
Undeclared identifier [xxxx]in expression
は未定義エラーって意味です。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月25日 12時49分49秒
icon
「Re:Re:16F88をmikoroCでプログラム」
> お世話になっております。なぜだかusagi復活しました?
>
> で、取りあえずmaikroCに途中までのプログラムを貼り付けてみました。
[54] pressure = 900 - port;
[55]LCD_out[0] = pressure / 100 + '0';
[56]LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
[57]LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
この部分が原因みたいです?
> また、管理人様のお手を煩わせてしまいますが引き続き
> ご教授宜しくお願い致します。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月25日 12時37分15秒
icon
「Re:16F88をmikoroCでプログラム」
お世話になっております。なぜだかusagi復活しました?
で、取りあえずmaikroCに途中までのプログラムを貼り付けてみました。
/**
* 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
*/
void main()
{
//使用変数の定義
int port;
char s_port[7];
//マイコンの初期化
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_Config(&PORTB,2,3,0,7,6,5,4); //LCDのピン接続設定
Lcd_Init(&PORTB); //LCD初期化
Lcd_Cmd(LCD_CURSOR_OFF); //カーソル非表示
do
{
char LCD_out[4];//格納する文字列配列。
//アナログデータの取得(0~1023)
port = ADC_Read(1); //RA1値をアナログデジタル変換
Delay_ms(500); //0.5秒待機
pressure = 900 - port;
LCD_out[0] = pressure / 100 + '0';
LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
LCD_out[3] = '\0'; //文字列の終端を追加。
Lcd_Out(1, 1, "mmHg ="); //LCD上位文字列表示
Lcd_Out(2, 1, LCD_out); //LCD下位文字列表示
}while(1);
}
これでビルドしてみたら、
Line/Column MessaNo. Message Text
54:0 24 Undeclared identifier [pressure]in expression
55:0 24 Undeclared identifier [pressure]in expression
56:0 24 Undeclared identifier [pressure]in expression
56:0 24 Undeclared identifier [lcd]in expression
56:0 22 Pointer required
56:0 12 Internal error
57:0 24 Undeclared identifier [pressure]in expression
57:0 24 Undeclared identifier [lcd]in expression
57:0 22 Pointer required
57:0 12 Internal error
この様なエラー表示が出てきました。
また、管理人様のお手を煩わせてしまいますが引き続き
ご教授宜しくお願い致します。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: zwiさん
2009年03月25日 11時37分59秒
icon
「Re:Re:Re:Re:16F88をmikoroCでプログラム」
バーグラフの表示ですが。
参考プログラムの処理の仕方が気持ち悪いので変更してみました。
//宣言
char buf[2];
int glen;
// バーグラフ用の■文字
buf[0] = 0xFF;
buf[1] = 0x00;
// 表示圧力 / (500 / 16)でグラフの長さを求める。
pressure = 900 - port;
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, " ");
}
}
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 1
icon拍手者リスト
from: usagiさん
2009年03月25日 07時30分19秒
icon
「Re:Re:Re:16F88をmikoroCでプログラム」
> 計算はあってるみたいです。
> ただし、バキュームセンサーは誤差が多いと紹介してもらったページに書かれていますので何処かで校正(-100mmHgの時実際何Vか測定する必要があります)そいしないと正確な圧力を測れませんので注意してください。
>
> 直すところだけプログラムを書いてみました。0x30は'0'に直してあります。この方が後でわかりやすいので。
>
> [プログラム]
>
> char LCD_out[4];//格納する文字列配列。
>
> //アナログデータの取得(0~1023)
> port = ADC_Read(1); //RA1値をアナログデジタル変換
> Delay_ms(500); //0.5秒待機
>
> pressure = 900 - port;
> LCD_out[0] = pressure / 100 + '0';
> LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
> LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
> LCD_out[3] = '\0'; //文字列の終端を追加。
>
> Lcd_Out(1, 1, "mmHg ="); //LCD上位文字列表示
> Lcd_Out(2, 1, LCD_out); //LCD下位文字列表示
>
> を組み込んでみてください。
バーグラフを追加するには、
下段に表示なのでLcd_Out(2, 1, LCD_out); //LCD下位文字列表示
この部分を変更してLcd_Out(1, 9, LCD_out);
buf[0] = 0xFF;
buf[1] = 0x00;
for (cnt = 1; cnt <= 16; cnt++) {
if ((i1 / (62 * cnt)) == 0)←この意味が分からないのですが
break;
Lcd_Custom_Out(2, cnt, buf);
}
for (; cnt <= 16; cnt++) {
Lcd_Custom_Out(2, cnt, " ");
これでバーグラフ表示できないでしょうか?
ご教授御願いいたします。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月25日 07時09分08秒
icon
「Re:Re:Re:16F88をmikoroCでプログラム」
zwiさま、お返事遅くなり申し訳ございません。本当にありがとうございます。
とても嬉しいです。
> 計算はあってるみたいです。(ありがとうございます)
このプログラムにLCDの下段にバーグラフ表示出来るようにしたいのですが、私の使っているLCDがこれです。http://akizukidenshi.com/catalog/g/gP-00038/
buf[0] = 0xFF;
buf[1] = 0x00;
for (cnt = 1; cnt <= 16; cnt++) {
if ((i1 / (62 * cnt)) == 0)
break;
Lcd_Custom_Out(2, cnt, buf);
}
for (; cnt <= 16; cnt++) {
Lcd_Custom_Out(2, cnt, " ");
このプログラムを利用できませんでしょうか?
ちなみに私が作ろうとしてる工作物の動画です。
http://blog.livedoor.jp/wpj2/archives/65165080.html
引き続きご教授頂けると幸いです。
お忙しい中お付き合いくださり本当にありがとうございます。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: zwiさん
2009年03月25日 00時25分13秒
icon
「Re:Re:16F88をmikoroCでプログラム」
計算はあってるみたいです。
ただし、バキュームセンサーは誤差が多いと紹介してもらったページに書かれていますので何処かで校正(-100mmHgの時実際何Vか測定する必要があります)そいしないと正確な圧力を測れませんので注意してください。
直すところだけプログラムを書いてみました。0x30は'0'に直してあります。この方が後でわかりやすいので。
[プログラム]
char LCD_out[4];//格納する文字列配列。
//アナログデータの取得(0~1023)
port = ADC_Read(1); //RA1値をアナログデジタル変換
Delay_ms(500); //0.5秒待機
pressure = 900 - port;
LCD_out[0] = pressure / 100 + '0';
LCD_out[1] = (pressure - lcd[0] * 100) / 10 + '0';
LCD_out[2] = (pressure - lcd[0] * 100) % 10 + '0';
LCD_out[3] = '\0'; //文字列の終端を追加。
Lcd_Out(1, 1, "mmHg ="); //LCD上位文字列表示
Lcd_Out(2, 1, LCD_out); //LCD下位文字列表示
を組み込んでみてください。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 1
icon拍手者リスト
from: usagiさん
2009年03月24日 22時31分42秒
icon
「Re:16F88をmikoroCでプログラム」
> 皆様はじめまして。お世話になります。
> こちらのプログラムを参考に出来ないかと思うのですが
> これの4ビット接続例です。
/**
* 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
*/
void main()
{
//使用変数の定義
int port;
char s_port[7];
//マイコンの初期化
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_Config(&PORTB,2,3,0,7,6,5,4); //LCDのピン接続設定
Lcd_Init(&PORTB); //LCD初期化
Lcd_Cmd(LCD_CURSOR_OFF); //カーソル非表示
do
{
//アナログデータの取得(0~1023)
port = ADC_Read(1); //RA1値をアナログデジタル変換
Delay_ms(500); //0.5秒待機
IntToStr(port, s_port); //数値を文字列に変換
Lcd_Out(1, 1, "A/D Levl"); //LCD上位文字列表示
Lcd_Out(2, 1, s_port); //LCD下位文字列表示
}while(1);
}
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年03月24日 22時21分55秒
icon
「Re:Re:16F88をmikoroCでプログラム」
> 始めまして。
>
> >何処に書き込むと良いのか教えて頂けると幸いです。
> 同じ様な回路の接続だとして
> port = ADC_Read(1); //RA1値をアナログデジタル変換
> でAD値を得ていますので、
> これを実際の計測値と合うように計算式を書いてやれば良いです。どういう係数を掛ければ良いかは回路と部品の誤差で決まるので計測してみないと分りません。16F88だとメモリ容量や速度面からも浮動小数点は使えないので固定小数点で式を工夫してください。
>
> はじめまして、早速お返事下さりありがとうございます。
計算式に付いて他のサイトで教えて頂いたのですがその方はmicroC
の事は詳しくないといわれ、この式を何処に当てはめればよいのでしょうか?
654x+y=-100
409x+y=-400
の連立方程式を解くと、xとyが出ます。
port = ADC_Read(1);
port = port * x + y;
もう一つがこちらです。
次にA/D変換ですが、
基準電圧- : 0V
基準電圧+ : 4.096V
とし、電圧をA/D変換値で表すと、
電圧=(AD変換値/1024)×4.096
=AD変換値×0.004
これを、式1に代入し、
(-圧力)=(3.6-AD変換値×0.004)×250
=900-AD変換値
と簡単な式になりました。
A/D変換結果が「AD_res」に16ビットで格納されるとすれば、
pressure = 900 - AD_res;
LCD_out[0] = pressure / 100 + 0x30;
LCD_out[1] = (pressure - lcd[0] * 100) / 10 + 0x30;
LCD_out[2] = (pressure - lcd[0] * 100) % 10 + 0x30;
引き続き教えて頂けると助かります、宜しくお願い致します。
>
>
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: zwiさん
2009年03月24日 21時29分16秒
icon
「Re:16F88をmikoroCでプログラム」
始めまして。
>何処に書き込むと良いのか教えて頂けると幸いです。
同じ様な回路の接続だとして
port = ADC_Read(1); //RA1値をアナログデジタル変換
でAD値を得ていますので、
これを実際の計測値と合うように計算式を書いてやれば良いです。どういう係数を掛ければ良いかは回路と部品の誤差で決まるので計測してみないと分りません。16F88だとメモリ容量や速度面からも浮動小数点は使えないので固定小数点で式を工夫してください。
-
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 -
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。 - 0
icon拍手者リスト
from: usagiさん
2009年04月03日 06時18分44秒
icon
「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:16F88をmikoroCでプログラム」
じゅんさん、いつかはご登場されるとは思っていました。
これを最後にするつもりでしたので、もう何処へも書き込みしませんし、御願いも致しませ。
皆様、ご迷惑お掛け致しましたがご協力ありがとうございました。
深くお礼申し上げます。
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
閉じる
サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。
閉じる
icon拍手者リスト