021 PIC16F84A/16F648A 名札の製作 | |
2007/04/14 PIC16F84A 名札の製作 | |
PICを使った名札を作りました。 5x7のLEDマトリクスを横型に配置して、5x5のフォントでコールサインと名前をスクロール表示させて、名札にします。 以前から計画をしていましたが、4月の例会には間に合いませんでした。 回路とソフトは、稲玉さんのHPに掲載されているものです。 http://www10.plala.or.jp/inatama/elec/matrix/index.html PICはオリジナルとおりに16F84Aを使用しました。 オリジナルではPCと接続して表示する文字を書き換えられるようですが、まだテストしていません。 そのうちに16F648Aに移植したいと思います。 | |
JJ1WKNの最初のJが出たところです。 |
|
基板です。 試作用なのでレイアウトはこれから検討します。 16F84Aはジャンク箱で眠っている時計から流用しました。 基板はPICライター1号機の基板の流用です。 16F84Aは3Vで動作します。電池の選択と配置が考えどころです。 | |
2007/04/14 PIC 16F84A ⇒ 16F648A 移植 メモ | |
Webで調べてPIC16F84Aから16F648Aへ移植をしてみました。 忘れないうちにポイントをまとめておきます。 1)インクルード 書き換えるだけです。 list p=16F648A #include <p16F648A.inc> 2)コンフィグレーション _LVP_OFF と _BODEN_OFF を追加しました。 16F648Aは4MHzの内蔵発振回路が使えるのですが、回路は変更しないので、_HS_OSCのままです。 そのうちに内蔵発振回路にしてTMR0のカウンターを変更する予定です。 ;16F648A __config _HS_OSC & _LVP_OFF & _WDT_ON & _PWRTE_ON & _BODEN_OFF & _CP_OFF 3)ワークエリア 0CHからの割り当てを20Hからに変更します。 4)初期化 PORTAを使うのでコンパレータはOFFにします。 MOVLW b'00000111' ;コンパレータOFF MOVWF CMCON ; BCF INTCON,PEIE ;周辺割り込みOFF 5)EEPROM読み出し EEDATAがBANK1にあるので、変更します。 BSF STATUS, RP0 ;BANK 1 MOVWF EEADR ;アドレスをEEADRへセット BSF EECON1, RD ;読み出し開始 MOVF EEDATA, W ;Wレジスタにデータ取り出し BCF STATUS, RP0 ;BANK 0 6)EEPROM書き込み 同様に変更が必要ですが、とりあえず使わないので、後回しです。 | |
2007/04/15 PIC16F648A 名札の製作 | |
名札の完成版ができました。 電池は入手しやすいLR44x2にしました。 新品ではないので、動作時2.7Vしかありませんが動いています。 忘れないうちに今回の変更点をまとめておきます。 PIC16F648Aなので、OSCは内蔵の4MHzにして10MHzのセラロックは不要になりました。 _INTRC_OSC_NOCLKOUT MCLRもコンフィグで設定したので配線が1本減りました。 _MCLRE_OFF TMR0関連もクロックを10MHzから4MHzに変更したので、見直しました。 [カウント数]=[インターバル時間]÷[CPUクロックx4] インタバル時間は1ms、CPUクロックは4MHzなので 1[ms]x1000/(0.25[us]x4)=1000[カウント] TMR0本体は8ビットなので256までしかカウントできないので、プリスケーラを使います。 1000/256=3.9 切り上げて 4。 OPTIONレジスタの0-2bitで設定します。 OPT_DAT EQU 01H ;プリスケーラは 1/4 TMR0のカウント値=必要なカウント数÷プリスケーラ設定値=1000/4=250 TMR0はカウントアップタイマなので 256-250=6 が設定値となります。 TMR0に設定します。 TMR0_DAT EQU 06H ;TMR0カウント値 | |
基板です。 ロボット顔のレイアウトとなりました。 | |
Wを表示したところです。 基板のサイズは25mmx38mmです。 |