四位数码管扫描显示project
全部资料下载地址:
ADCLCD.rar
(352.05 KB, 下载次数: 64)
- #include "stm32f10x.h"
-
- #include "adc.h"
- #include "dac.h"
- u16 ADC_ConvertedValue;
- float ADC_ConvertedValueLocal;
- u16 dacoutlow;
- u16 dacouthigh;
- unsigned int a , b ,c ,d;
- void LED_GPIO_Config(void)
- {
- /*定义一个GPIO_InitTypeDef类型的结构体*/
- GPIO_InitTypeDef GPIO_InitStructure;
- /*开启LED相关的GPIO外设时钟*/
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
- /*选择要控制的GPIO引脚*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- void Dig_Disp(int i)
- {
- switch(i)
- {
- case 0:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 1:
- GPIO_SetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 2:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_SetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- case 3:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 4:
- GPIO_SetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- case 5:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_SetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- case 6:
- GPIO_SetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- case 7:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 8:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- case 9:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_ResetBits(GPIOB, GPIO_Pin_14);
- break;
- }
- }
- void Dig_DispNP(int i)
- {
- switch(i)
- { case 0:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 1:
- GPIO_SetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 2:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_SetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- case 3:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 4:
- GPIO_SetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- case 5:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_SetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- case 6:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_SetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- case 7:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_SetBits(GPIOB, GPIO_Pin_12);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
-
- break;
- case 8:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_ResetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- case 9:
- GPIO_ResetBits(GPIOB, GPIO_Pin_7);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- GPIO_ResetBits(GPIOB, GPIO_Pin_10);
- GPIO_SetBits(GPIOB, GPIO_Pin_11);
- GPIO_ResetBits(GPIOB, GPIO_Pin_12);
- GPIO_ResetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_14);
- break;
- }
-
- }
- void choose(int m)
- {
- switch(m){ case 0:
- GPIO_SetBits(GPIOB, GPIO_Pin_0);
- GPIO_ResetBits(GPIOB, GPIO_Pin_1);
- GPIO_ResetBits(GPIOB, GPIO_Pin_5);
- GPIO_ResetBits(GPIOB, GPIO_Pin_6);
- Dig_DispNP(d);
-
-
- break;
- case 1:
- GPIO_ResetBits(GPIOB, GPIO_Pin_0);
- GPIO_SetBits(GPIOB, GPIO_Pin_1);
- GPIO_ResetBits(GPIOB, GPIO_Pin_5);
- GPIO_ResetBits(GPIOB, GPIO_Pin_6);
- Dig_DispNP(c);
-
- break;
- case 2:
- GPIO_ResetBits(GPIOB, GPIO_Pin_0);
- GPIO_ResetBits(GPIOB, GPIO_Pin_1);
- GPIO_SetBits(GPIOB, GPIO_Pin_5);
- GPIO_ResetBits(GPIOB, GPIO_Pin_6);
- Dig_Disp(b);
- break;
- case 3:
- GPIO_ResetBits(GPIOB, GPIO_Pin_0);
- GPIO_ResetBits(GPIOB, GPIO_Pin_1);
- GPIO_ResetBits(GPIOB, GPIO_Pin_5);
- GPIO_SetBits(GPIOB, GPIO_Pin_6);
- Dig_DispNP(a);
-
- }
- }
- void Dig_OutPut(float f)
- {
- a = (int)(f*10)%10; //提取小数位
- b =(int) (f)%10; //提取个位
- c = (int)(f/10)%10; //提取十位
- d = 0; //提取千位
- LED_GPIO_Config();
-
- }
-
- void delay(unsigned int i)
- {
- while(i--);
- }
- int main(void)
- {
- int x=0;
- int ct=0;
- LED_GPIO_Config();
-
- ADC1_GPIO_Config();
- ADC1_Mode_Config();
- dac_Init();
- while(1)
- {
- x++;
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
- ADC_ConvertedValue=ADC_GetConversionValue(ADC1);
-
- dacoutlow=ADC_ConvertedValue/10;
- dacouthigh=dacoutlow*9;
- DAC_SetChannel1Data(DAC_Align_12b_R,dacoutlow);
- DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
- DAC_SetChannel2Data(DAC_Align_12b_R,dacouthigh);
- DAC_SoftwareTriggerCmd(DAC_Channel_2,ENABLE);
-
- ADC_ConvertedValueLocal =(float) ADC_ConvertedValue*(float)10/4095;
- Dig_OutPut(ADC_ConvertedValueLocal);
- delay(1000);
- if(x==30)
- {
- ct++;
- x=0;
- }
- if(ct==4)
- {
- ct=0;
- }
- choose(ct);
- }
-
-
-
-
- }
复制代码
|