2019/10/04(FRI) 【Nチビ】すいおん!3@
前回。LCDのドライバを作ったので
それで水温計を作ってみるw

↓完成!
フォト


回路的にはセンサーからの入力を追加しただけです。
そこは、過去に7セグLEDの時から変更なしです。
まぁ違うといえば、8pinのPICマイコンを使っているくらいか?
前までは7セグを光らす必要があったので、18pinを使ってました。
もう、これだと回路がスッキリですよ。
センサーからの入力が1本で、LCDへの出力が2本。
あとは電源がプラスとマイナスで2本。

で、簡単にプログラム紹介。
ちなみに仕事でこんなプログラム書いたら
殺されそうなロジックです。ところどころやっちゃいけない書き方ですw

メイン
フォト

フォト

まぁアセンブラで書くのと同じように
初期化とメインループです。
49〜51行目で各種初期化処理を読んでます
54行目からはメインループです。
55行目でAD値を取得して続く56〜58行目で
AD値を温度に変換の計算をしています。
60行目からLCDへ出力しています。
61〜62行目で「Temp.」と出してます
63行目から2行目ですが
右寄せにしたかったので、
スペースを入れて調整しているので
ゴチャゴチャになっていますが
67行目で、温度の数字を出力しています。

初期化
フォト

メインの49行目でコールしている処理です。
まぁ内臓クロックの設定とか、各ポートの初期化をしています。
ここではアナログ入力なしと設定していますが
AdcInit()の方で設定しています

今回作ったAD変換のライブラリ
フォト

フォト

関数は2つです。
AdcInit()とAdcGet()の2つだけです。
AdcInit()はAD変換を使う時の初期化を行います
(でもPIC12F1822でRA0をアナログ入力と使う設定です)
AdcGet()はAD変換した結果を取得する関数です。
もうやっちゃいけない無限ループ待ちw
基本的にアセンブラと同じ実装にしていますけど・・・w

いや〜C言語で書くと楽だなw
でもいろいろ作法として禁忌なことやってますけどね。

ちなみにこのサイズのLCDって・・・
先日サービスが終了したポケベルを想像させるね

いろいろやっている割に
なかなか実車に取り付けないのは
気のせいです。。。