STM32单片机AD转换采样电压十二位二进制数LED灯显示proteus仿真
上周做的用LED灯显示AD采样电压十二位二进制显示
粗略的显示了一下,有些不足,希望大家能够给予指导并相互学习。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "usart1.h"
- #include "adc.h"
- #include "stdio.h"
- #include "led.h"
- float temp;
- int main(void)
- {
- GPIO_Led_Config();
- ADC1_GPIO_Config();
- ADC_Config();
- while(1)
- {
- int a,b,c,d,e,f,g,h,i,j,k,l,m;
- ADCConvertedValue=ADC_GetConversionValue(ADC1);
- // temp=(float)ADCConvertedValue*(3.3/4096);
- a=ADCConvertedValue;
- b=a%2;
- c=(a/2)%2;
- d=(a/4)%2;
- e=(a/8)%2;
- f=(a/16)%2;
- g=(a/32)%2;
- h=(a/64)%2;
- i=(a/128)%2;
- j=(a/256)%2;
- k=(a/512)%2;
- l=(a/1024)%2;
- m=(a/2048)%2;
-
- if(b==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_1);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_1);
- if(c==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_2);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- if(d==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_3);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_3);
- if(e==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_4);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_4);
- if(f==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_5);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- if(g==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_6);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_6);
- if(h==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_7);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_7);
- if(i==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_8);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_8);
- if(j==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_9);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_9);
- if(k==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_10);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_10);
- if(l==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_11);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_11);
- if(m==1)
- GPIO_SetBits(GPIOB,GPIO_Pin_12);
- else
- GPIO_ResetBits(GPIOB,GPIO_Pin_12);
- }
- }
-
复制代码
所有资料51hei提供下载:
ADC.7z
(262.74 KB, 下载次数: 86)
|