#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桁にすると動かなかった。
ブレッドボードの一番遠い桁だったので配線の関係かと。。。
半田付けで配線の長さを均一にして確認しようと思ってます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。