ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Formula-SAE Japanコミュのタコメータ用プログラム(C言語)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
 自作タコメータを製作したくてプログラムを書きました。工学部に所属しているのですが、機械科の為、情報科などの方から見ると、見るにたえない物と自分でも思います。しかし、これを作る為にC言語を勉強した時の経験から、今後新しく自作タコメータに取り組みたいと考える大学チームの担当者の役に少しでも立てばと考えトピックを作成させてもらいました。

 もし他に、自分が作成したプログラムを公開してもいいと考える方がいましたら、お願いします。


3個のPICを使用して、計24個のLEDをエンジン回転数に応じて点灯させる。

使用したPIC:PIC16F84A

<ピンNo>  <機能>
  1       -

  2       -

  3       -

  4      リセット

  5      アース

  6      出力

  7      出力

  8      出力

  9      出力

 10      出力

 11      出力

 12      出力

 13      出力

 14      +5V
 
 15      オシレータ水晶出力

 16      オシレータ水晶入力

 17      入力

 18      -


変数を変える事により、各人の要望に応じたものが製作可能となる。
基本プログラムを以下に記す。

プログラムソース

//PIC1用プログラム1000~5000回転の領域をカバー
//0.125秒ごとにカウント数を確認させる。if関数使用。



#include<pic.h>
#include"delay.h"
__CONFIG(HS & WDTDIS & PWRTEN & UNPROTECT);
char a = 0;
int number = 0;
char box = 0;
char sw = 1;
void main()
{
GIE = 1;
T0IE = 1;
T0IF = 0;
TMR0 = 0;
T0CS = 0;
PSA = 0;
PS0 = 1;
PS1 = 1;
PS2 = 1;
TRISA = 0x0f;
TRISB = 0;
PORTB = 0b1111;
while(1)
{
while(sw == 1)
{
sw = RA0;
DelayMs(1);
if((RA0 == 0) && (sw == 0))
{
number = number++;
}
}
sw = RA0;
DelayMs(1);
}
}
interrupt isr()
{
T0IF = 0;
a = a + 1;
if(a == 5)
{
if((number >= 0) && (number < 2))
{
PORTB = 0;
}else if((number >= 2) && (number < 7)){
PORTB = 0b01;
}else if((number >= 7) && (number < 12)){
PORTB = 0b011;
}else if((number >= 12) && (number < 13)){
PORTB = 0b0111;
}else if((number >= 13) && (number < 15)){
PORTB = 0b01111;
}else if((number >= 15) && (number < 18)){
PORTB = 0b011111;
}else if((number >= 18) && (number < 20)){
PORTB = 0b0111111;
}else if((number >= 20) && (number < 23)){
PORTB = 0b01111111;
}else if((number >= 23) && (number < 64)){
PORTB = 0b11111111;
}else if(number >= 64){
PORTB = 0b10101010;
}
number = 0;
a = 0;
}
}

C言語の基礎知識がある方なら、解読できると思います。

コメント(0)

mixiユーザー
ログインしてコメントしよう!

Formula-SAE Japan 更新情報

Formula-SAE Japanのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング