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って・・・ 先日サービスが終了したポケベルを想像させるね いろいろやっている割に なかなか実車に取り付けないのは 気のせいです。。。 |