日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]用到GPIO口 PA0~PA11共12個引腳先上原理圖因為是共陽所以12,9,8,6為電源輸入,其他引腳均為接地,所以對于芯片來說12,9,8,6高位輸出,其他設定為低位即可。//設定下GPIO口voidGPIO_Num_Init(void){GPIO_InitTypeDefG

用到GPIO口 PA0~PA11共12個引腳

先上原理圖

因為是共陽所以12,9,8,6為電源輸入,其他引腳均為接地,所以對于芯片來說12,9,8,6高位輸出,其他設定為低位即可。


//設定下GPIO口

voidGPIO_Num_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

}


這里有個要注意的,根據(jù)原理圖可以看出數(shù)碼管一次只能輸出一位數(shù)組,所以如果是多位的必須使用掃描的方式輸出,縮短切換的間隔,就可以達到不閃爍的效果。


//輸出封裝

voidDisPlayNum(intn)

{

if(n<9999)

{inti;

ints;

s=n;

i=0;

for(i=0;i<4;i++)

{

GPIO_ResetBits(GPIOA,GPIO_Pin_All);

switch(i)

{

case0:

GPIO_SetBits(GPIOA,GPIO_Pin_5);

break;

case1:

GPIO_SetBits(GPIOA,GPIO_Pin_7);

break;

case2:

GPIO_SetBits(GPIOA,GPIO_Pin_8);

break;

case3:

GPIO_SetBits(GPIOA,GPIO_Pin_11);

break;

}

switch(s%10)

{

case0:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_4);

break;

case1:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_9|GPIO_Pin_10);

break;

case2:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_9);

break;

case3:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_9);

break;

case4:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10);

break;

case5:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_6);

break;

case6:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_6);

break;

case7:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_9);

break;

case8:

GPIO_SetBits(GPIOA,GPIO_Pin_2);

break;

case9:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0);

break;

}

s=s/10;

delay_ms(1);

if(s==0)

break;

}

}

}


最后main的測試代碼


intcount;

intTimeCheck;

intmain(void)

{

GPIO_Num_Init();

count=0;

TimeCheck=0;

while(1)

{

DisPlayNum(count);

TimeCheck++;

delay_ms(5);

if (TimeCheck > 100){ //每500毫秒+1

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉