0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STC15W408を使った電卓のプログラミング

Posted at

経緯

 アリエクで自分で組み立てる6桁の小数点付電卓のDIYKITを購入した。
 組み立てて動作確認後、プログラムを書きなおそうとしたが。
 参考とするべき元となるべきプログラムは公開されて居なかった。
 しかし、回路図がKITについて来た
 ◆◆◆ じゃあ、一から自分で作ろう ◆◆◆
 と思ったが意外と大変。途中で挫折しました。
calc.jpg

開発方法

 開発方法は「前回」に記載された方法と同一。
 SDCCコンパイラとUSBシリアルと書き込みソフトが有れば開発可能。※ソフトは無料

電卓ハード

 図面を見れば判るとは思うが。
  ※Header4には親切にも信号(VCC,GND,TX,RX)の表記が有る。
  ※この図は販売ページからのコピーだが、拡販に繋がるから問題無いだろう。
kairo.jpg
 ◇表示器
  6桁の7SEGのLED表示器をダイナミック点灯させる。
  デジットラインを切り替えながら、個々のセグメント点灯を行う。
   ※人の目でフリッカしてないように見せるには、50Hz以上の周期が必要。
   ※全デジットの同時スタティク点灯は不可。※最大端子電流に抵触すると思われる。
 ◇キーボード
  16個のキーが4x4に整列。ONキーは別扱い。
  キーのキャンを行いながら、押された情報を読み取る。
   ※キーのデバウンズへの対応が必要となる。
 ◇ブザー
  信号を加えても、其れだけでは連続音は出ない。
  人に聞こえる周波数の交流信号を加える必要が有る。
 ◇注意事項
  ボタン電池はUSB電源と回路が並列に繋がっており、※保護回路なし
  同時に使うと、USBの電圧がドロップするか、電池が爆発する可能性もある。

電卓ソフト

Githubの「ここ」に参考プログラムを格納。
 ソフトは割り込み処理とキー入力処理で構成している。
 ◇割り込み処理
  タイマーT0により、5ms(200Hz)毎に起動し下記を行う。
   ・7SEG表示
    7SSEGを1デジットだけ指定のパターンで表示。
     ※10進数字(+16進表示も可)、小数点、マイナス符号、ブランクを表示。
   ・キースキャン
    キーを一行分読み込む。
    押されていた場合は、キーヒット(kbhit)とする。
 ◇キー入力処理
  6桁の整数演算を行っている。
  キーヒットが有った場合、押されたキーに従い演算処理を行う。
  処理結果は割り込み処理により、表示される。
   ※此処で元の処理と同等に出来れば万々歳だが、之は結構手間が掛りそう。
    浮動小数点で処理出来れば演算式で処理できるが、表示形式が違うだろう。
    固定小数点にした場合、桁数合わせが面倒くさそう。
 ◇シリアル入出力
  115200bpsでのシリアル通信が可能になっている。
   ※デバッグ用、電卓処理では使って無い。

書き込み器について

 STCシリーズの書き込みは、電源投入直後にのみ可能となる。※すべてがそうかは知らないが。
 従って、書き込み時には毎回電源の再投入が必要となる。※之は微妙に面倒。
 市販されている書込み器(USBシリアル)には、電源を再投入してくれる優れモノが有る。
  ※上記写真でSTCのロゴの付いたもの。
 書き込みソフトのAIapp-ISPには、hexが更新されると書き込みが始まるモードが有る。
 之を有効にしておくと、コンパイルが終わると自動的に書き込みが始まる。
  ※書き込みが正常終了する保証は無いので、目視確認が必要だが。
   正常時と異常時にブザー音を変えて欲しいと思う。
 書込み開始時に、RTSとDTRを同時に下げる事により、0.5秒程度電源が落ちている。
 その後速度を変えながら信号(多分FF)を送り、応答の有った時点で通信速度を決めているのだろう。
 ※下記信号は上から、USB-VCC,RTS,DTR,USB-TX,USB-RX
stc_pw.jpg

感想

 軽く考えていたが、電卓を作るのも結構難しく、真っ当な仕上がりには程遠い。
 とは言え、6桁の電卓が真っ当な作業に使えるとも思えないと言っておこう。
 中途半端なソフトだが、8051の割り込み処理の事例としてでも見て下さい。
 なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?