- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "key.h"
- #include "usart.h"
- #include "exti.h"
- #include "wdg.h"
- #include "timer.h"
- #include "pwm.h"
- #include "oled.h"
- #include "adc.h"
-
- int main(void)
- {
- u8 key;
- u8 str[10];
- u16 adcx;
- u16 led0pwmval=0;
- u16 xxx;
- SystemInit();
- delay_init(72); //延時初始化
- NVIC_Configuration();
- uart_init(9600);
- LED_Init();
- OLED_Init();
- Adc_Init();
- KEY_Init(); //按鍵初始化
- PWM_Init(36000,0); //不分頻。PWM頻率=72000/900=80Khz
-
- led0pwmval=0;
- TIM_SetCompare2(TIM3,led0pwmval);
- delay_ms(1000);
- delay_ms(1000);
- led0pwmval=21240;
- TIM_SetCompare2(TIM3,led0pwmval);
- while(1)
- {
- delay_ms(10);
- TIM_SetCompare2(TIM3,led0pwmval);
-
- key=KEY_Scan();
- if(key)
- {
- switch(key)
- {
- case 1:
- LED0=!LED0;
- led0pwmval = led0pwmval-36;
- break;
- case 2:
- LED1=!LED1;
- led0pwmval = led0pwmval+36;
- break;
- case 3:
- LED0=!LED0;
- LED1=!LED1;
- break;
- }
- }else delay_ms(10);
-
- xxx = (led0pwmval*1000)/36000 ;
- str[0] = (xxx/100%10)+'0';
- str[1] = (xxx/10%10)+'0';
- str[2] = '.';
- str[3] = (xxx%10)+'0';
- str[4] = '\0';
- OLED_ShowString(0,0,str);
-
- adcx=Get_Adc(ADC_Channel_1); //得到ADC轉換值
- OLED_ShowNum(0,2,adcx,4,16); //顯示ADC寄存器值
-
- adcx=adcx*(3.3/4096)*1000; //得到ADC電壓值
- str[0] = (adcx/1000)+'0';
- str[1] = '.';
- str[2] = (adcx/100%10)+'0';
- str[3] = (adcx/10%10)+'0';
- str[4] = (adcx%10)+'0';
- str[5] = '\0';
- OLED_ShowString(60,2,str);
- }
-
-
- }
復制代碼
32 PWM輸出實驗+adc 12位 0~3.3v.7z
(197.44 KB, 下載次數: 93)
2019-7-31 23:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|