功能:
七段顯示器顯示ADC值,一顆按鈕控制七段顯示器連續改值或停止改值。
PDG2設定
取樣時間這邊設定3000,為0.3ms
開啟並設定,ADC的中斷
ADC 設定
程式:
int ssc[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
// 4. 6 7 8
int chan[4]={0xef,0xf7,0xfb,0xfd};
int time[4]={0,0,0,0};
int i,d,flag=0,btn=0,stop=0;
unsigned vout;
void main(void)
{
R_PG_Clock_Set();
//GPIO SET (小數點 在 B0)
R_PG_IO_PORT_Set_P7();
R_PG_IO_PORT_Set_P9();
R_PG_IO_PORT_Set_PB();
//GPT SET 短的要在上面
R_PG_Timer_Set_GPT_U0();
R_PG_Timer_Set_GPT_U0_C0();
//ADC SET 短的要在上面
R_PG_ADC_12_Set();
R_PG_ADC_12_Set_S12ADA0();
//開始取樣 (Trigger)
R_PG_Timer_StartCount_GPT_U0_C0();
while(1)
{
//獲取按鈕
R_PG_ExtInterrupt_Set_IRQ0(&btn);
//不斷更新 取樣資料
time[3]=(int)vout%10; //小數點後3 最右
time[2]=(int)vout/10%10; //小數點後2
time[1]=(int)vout/100%10; //小數點後1
time[0]=(int)vout/1000%10; //個位 最左
//七段顯示
for(i=0;i<4;i++){
R_PG_IO_PORT_Write_P7(0xff);
R_PG_IO_PORT_Write_P7(~ssc[time[i]]);
//小數點顯示 在點亮最左邊(個位數) 時候才亮 其他 chanl不亮
if(i==0)
R_PG_IO_PORT_Write_PB0(0);
else
R_PG_IO_PORT_Write_PB0(1);
R_PG_IO_PORT_Write_P9(chan[i]);
for(d=0;d<1000;d++);
}
}
}
//P10按鈕中斷
Irq0IntFunc()
{
//如果是第一次進來 那就暫停
if(stop==0)
{
R_PG_Timer_HaltCount_GPT_U0_C0();
stop=1;
}
//如果不是 那就 開始
else
{
R_PG_Timer_StartCount_GPT_U0_C0();
stop=0;
}
}
//ADC 取樣中斷
S12ad0IntFunc()
{
//將結果放入 vout
R_PG_ADC_12_GetResult_S12ADA0(&vout);
// vout= result *5v / 4096 乘最高電壓 5V 除 解析度 2^12=4096
vout=vout*5000/4096;
}
沒有留言:
張貼留言