找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3267|回复: 4
收起左侧

输入模拟电压,四位数码管扫描显示

[复制链接]
ID:225441 发表于 2017-8-7 13:27 | 显示全部楼层 |阅读模式
输入模拟电压,四位数码管扫描显示
#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);
        }
       
       
       
       
}





回复

使用道具 举报

ID:19715 发表于 2018-1-7 23:37 | 显示全部楼层
怎么送数码管段码都是用独位独位发送,可以用寄存器操作,一次性8位发送就完事,简单快捷啊
回复

使用道具 举报

ID:273047 发表于 2018-1-8 09:51 | 显示全部楼层
学习了
回复

使用道具 举报

ID:271363 发表于 2018-1-8 10:57 | 显示全部楼层
学习中
回复

使用道具 举报

ID:418829 发表于 2018-10-31 22:40 | 显示全部楼层
感谢楼主救我狗命
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表