質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • C

    3669questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

マイコン制御 ダイナミック点灯

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 312

onGu

score 8

ifdef __USE_CMSIS

include "LPC11xx.h"

include"ad.h"

endif

include <cr_section_macros.h>

int main(void) {
unsigned int sum[4];//
const unsigned int seg[10] = {
//0  ,   1 ,   2 ,  3 ,   4 ,    5   , 6 ,  7 ,   8 ,   9
0x77,0x06,0xB3,0x97,0xC6,0xD5,0xF5,0x07,0xF7,0xD7
};
int ad;
int i ;

gpio_1();
ad_init();//AD

while(1) {

ad=ad_get(0);//AD結果
sum[3] = ad/1000;
sum[2] = (ad%1000)/100;
sum[1] = (ad%100)/10;
sum[0] = ad%10;

for(i=0;i<10;i++){
LPC_GPIO1->DATA =(LPC_GPIO1->DATA &~0xf7)| seg[sum[0]];//1桁目表示
LPC_GPIO0->DATA =(LPC_GPIO0->DATA &~0x8e)| 0x02; //gpio01,2,3,7 桁切り替
timer_ms(100);

LPC_GPIO1->DATA =(LPC_GPIO1->DATA &~0xf7)| seg[sum[1]];//2桁目表示
LPC_GPIO0->DATA =(LPC_GPIO0->DATA &~0x8e)| 0x04; //gpio01,2,3,7 桁切り替
timer_ms(100);

LPC_GPIO1->DATA =(LPC_GPIO1->DATA &~0xf7)| seg[sum[2]];//3桁目表示
LPC_GPIO0->DATA =(LPC_GPIO0->DATA &~0x8e)| 0x08; //gpio01,2,3,7 桁切り替
timer_ms(100);

LPC_GPIO1->DATA =(LPC_GPIO1->DATA &~0xf7)| seg[sum[3]];//4桁目表示
LPC_GPIO0->DATA =(LPC_GPIO0->DATA &~0x8e)| 0x80; //gpio01,2,3,7 桁切り替
timer_ms(100);
}
}
return 0 ;
}
LPC1114 28pinDIPのマイコンです。

7segLEDをダイナミック点灯させたいんですが、カソードコモンを桁切り替えのIOをTrドライブ
させています。
IOをTrのベースにつなげた状態でマイコンに書き込みするとうまくいかず、IDEも書き込みご一時停止状態になります。ベースにつながるIOを外して書き込みすると正常に書き込みできるのですが、ベースのIOを外して電源を入れその後ベースのIOをつなげないと動作しません。
ポートの出力電流の制限抵抗は確認してます。
マイコン講習の際、SW入力をHにしないと書き込みがうまくできないって言っていたのでこのマイコン特有のものなのか講師のプログラムのせいなのかわかりません。このプログラムは講師の
をイジったものです。今時のマイコンにIOをH状態にしないと正常に書き込めないなんてことはないと思うのですが。
プログラムを見ていただいて誤りやアドバイスお願いします。
よろしくお願いします。

追記、電池電圧が低く電流不足でまともに動いていませんでした。
また、3桁だけにすると動いて4桁にすると動かなかった。
ブレッドボードの一番遠い桁だったので配線の関係かと。。。
半田付けで配線の長さを均一にして確認しようと思ってます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

LEDを駆動するトランジスタは、GPIO1の何番ピンにつながっていますか?このプログラムを見ると第0,1,2,7ビット端子につながっていると読めますが、ただしい?

実は0,1,2,3 番ピンにつながっているのだとすると、「3桁だとOKだが4桁だとNG]となりそうです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/17 23:09

    ありがとうございます。切り替えはGPIO0_0~7の内1,2,3,7なので合ってると思います。
    恥ずかしながら自己解決しました。増幅したい電流に対してのTrのベース抵抗が低すぎました。
    なのでTrが開きっぱなしだったようです。
    アドバイスありがとうございました。

    キャンセル

  • 2017/09/17 23:44

    プログラムが問題ないなら回路図を出してもらう必要があるなとおもってましたが、事故解決されたようでおめでとうございます。

    キャンセル

0

恥ずかしながら自己解決しました。増幅したい電流に対してのTrのベース抵抗が低すぎました。
なのでTrが開きっぱなしだったようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3669questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。