全部原有的函数文件取自stm32上的规格参数表
程控系统硬件部分由vca810和max292两块可控芯片组成,前端配有快速运放电路
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "lcd.h"
#include "key.h"
#include "usart.h"
#include "dac.h"
#include "adc.h"
//ALIENTEK Mini STM32¿ª·¢°å·¶Àý´úÂë8
//PWMÊä³öʵÑé
//¼¼ÊõÖ§³Ö£ºwww.openedv.com
//¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾
int main(void)
{
float temp;
//u8 t=0;
u16 dacval=0;
u16 adcx;
u16 led0pwmval=0; //¸ßµçƽµÄ¼ÆÊý´ÎÊý
//u8 dir=1;
u16 arr=0; //·ÖƵ¼ÆÊý
u16 keyval=0; //°´¼üµÄ´ÎÊý
u8 t=0;
// ·À¶¶Ê±¼ä³õʼ
u8 key;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2
delay_init();
//ÑÓʱº¯Êý³õʼ»¯
uart_init(9600);
//´®¿Ú³õʼ»¯Îª9600
LED_Init();
//³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
LCD_Init();
//³õʼ»¯LCD
KEY_Init();
//°´¼ü³õʼ»¯
Adc_Init();
//ADC³õʼ»¯
Dac1_Init();
//DACͨµÀ1³õʼ»¯
LED0=0;
POINT_COLOR=RED;//ÉèÖÃ×ÖÌåΪºìÉ«
LCD_ShowString(60,50,200,16,16,"20153100001");
LCD_ShowString(60,70,200,16,16,"20153100104");
LCD_ShowString(60,90,200,16,16,"vca810/max292");
LCD_ShowString(60,110,200,16,16,"2017/12/2");
LCD_ShowString(0,130,300,16,16,"WK_UP:+fc KEY1:+-db KEY0:-fc");
//ÏÔʾÌáʾÐÅÏ¢
POINT_COLOR=BLUE;//ÉèÖÃ×ÖÌåΪÀ¶É«
LCD_ShowString(60,150,200,16,16,"DAC VAL:");
LCD_ShowString(60,170,200,16,16,"DAC VOL:0.000V");
LCD_ShowString(60,190,200,16,16,"ADC VOL:0.000V");
LCD_ShowString(60,210,200,16,16,"G=-40db"); //ΪÁËgÔÚÒ»¿ªÊ¼Îȶ¨ÏÔʾ
DAC_SetChannel1Data(DAC_Align_12b_R, 0);//????0
//TIM1_PWM_Init(899,0);//²»·ÖƵ¡£PWMƵÂÊ=72000/(899+1)=80Khz
while(1)
{
t++;
key=KEY_Scan(0);
if(key==KEY1_PRES)
{
if(dacval<2635)dacval+=155;
if(dacval==2635)dacval=0;
DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//??DAC?
}
if(key==WKUP_PRES)
{
if(keyval<20)keyval+=1;
//DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//??DAC?
}else if(key==KEY0_PRES)
{
if(keyval>1)keyval-=1;
//else keyval=1; //Õâ¾ä»°µÄ×÷Óôý¶¨ ²»Çå³þÊÇ·ñ»á¶ÔºóÃæ´úÂëÓÐÓ°Ïì
//DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//??DAC?
}
if(t==10||key==KEY0_PRES||key==WKUP_PRES||key==KEY1_PRES)
//WKUP/KEY1°´ÏÂÁË,»òÕß¶¨Ê±Ê±¼äµ½ÁË
{
adcx=DAC_GetDataOutputValue(DAC_Channel_1);//??????DAC??
LCD_ShowxNum(124,150,adcx,4,16,0);
//ÏÔʾDAC¼Ä´æÆ÷Öµ
temp=(float)adcx*(3.3/4096);
//µÃµ½DACµçѹֵ
adcx=temp;
LCD_ShowxNum(124,170,temp,1,16,0);
//ÏÔʾµçѹֵÕûÊý²¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(140,170,temp,3,16,0X80);
//ÏÔʾµçѹֵµÄСÊý²¿·Ö
adcx=Get_Adc_Average(ADC_Channel_1,10);
//µÃµ½ADCת»»Öµ
temp=(float)adcx*(3.3/4096);
//µÃµ½ADCµçѹֵ
adcx=temp;
LCD_ShowxNum(124,190,temp,1,16,0);
//ÏÔʾµçѹֵÕûÊý²¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(140,190,temp,3,16,0X80);
//ÏÔʾµçѹֵµÄСÊý²¿·Ö
//LED0=!LED0;
switch(dacval)
{
case 0: LCD_ShowString(60,210,200,16,16,"G=-40db"); break;
case 155: LCD_ShowString(60,210,200,16,16,"G=-35db"); break;
case 310: LCD_ShowString(60,210,200,16,16,"G=-30db"); break;
case 465: LCD_ShowString(60,210,200,16,16,"G=-25db"); break;
case 620: LCD_ShowString(60,210,200,16,16,"G=-20db"); break;
case 775: LCD_ShowString(60,210,200,16,16,"G=-15db"); break;
case 930: LCD_ShowString(60,210,200,16,16,"G=-10db"); break;
case 1085: LCD_ShowString(60,210,200,16,16,"G= -5db"); break;
case 1240: LCD_ShowString(60,210,200,16,16,"G= -0db"); break;
case 1395: LCD_ShowString(60,210,200,16,16,"G= +5db"); break;
case 1550: LCD_ShowString(60,210,200,16,16,"G=+10db"); break;
case 1705: LCD_ShowString(60,210,200,16,16,"G=+15db"); break;
case 1860: LCD_ShowString(60,210,200,16,16,"G=+20db"); break;
case 2015: LCD_ShowString(60,210,200,16,16,"G=+25db"); break;
case 2170: LCD_ShowString(60,210,200,16,16,"G=+30db"); break;
case 2325: LCD_ShowString(60,210,200,16,16,"G=+35db"); break;
case 2480: LCD_ShowString(60,210,200,16,16,"G=+40db"); break;
default: LCD_ShowString(60,210,200,16,16,"G=-0db");
}
switch(keyval)
{
case 1: LCD_ShowString(60,230,200,16,16,"fc= 1khz"); arr=719;led0pwmval=360; break;
case 2: LCD_ShowString(60,230,200,16,16,"fc= 2khz"); arr=359;led0pwmval=180; break;
case 3: LCD_ShowString(60,230,200,16,16,"fc= 3khz");arr=239;led0pwmval=120; break;
case 4: LCD_ShowString(60,230,200,16,16,"fc= 4khz"); arr=179;led0pwmval=90;break;
case 5: LCD_ShowString(60,230,200,16,16,"fc= 5khz"); arr=143;led0pwmval=72;break;
case 6: LCD_ShowString(60,230,200,16,16,"fc= 6khz"); arr=119;led0pwmval=60;break;
case 7: LCD_ShowString(60,230,200,16,16,"fc= 7khz"); arr=102;led0pwmval=51;break;
case 8: LCD_ShowString(60,230,200,16,16,"fc= 8khz"); arr=89;led0pwmval=45;break;
case 9: LCD_ShowString(60,230,200,16,16,"fc= 9khz"); arr=79;led0pwmval=40;break;
case 10: LCD_ShowString(60,230,200,16,16,"fc=10khz"); arr=71;led0pwmval=36;break;
case 11: LCD_ShowString(60,230,200,16,16,"fc=11khz"); arr=64;led0pwmval=32;break;
case 12: LCD_ShowString(60,230,200,16,16,"fc=12khz"); arr=59;led0pwmval=30;break;
case 13: LCD_ShowString(60,230,200,16,16,"fc=13khz"); arr=54;led0pwmval=27;break;
case 14: LCD_ShowString(60,230,200,16,16,"fc=14khz"); arr=50;led0pwmval=25;break;
case 15: LCD_ShowString(60,230,200,16,16,"fc=15khz"); arr=47;led0pwmval=24;break;
case 16: LCD_ShowString(60,230,200,16,16,"fc=16khz"); arr=44;led0pwmval=22;break;
case 17: LCD_ShowString(60,230,200,16,16,"fc=17khz"); arr=41;led0pwmval=21;break;
case 18: LCD_ShowString(60,230,200,16,16,"fc=18khz"); arr=39;led0pwmval=20;break;
case 19: LCD_ShowString(60,230,200,16,16,"fc=19khz"); arr=37;led0pwmval=19;break;
case 20: LCD_ShowString(60,230,200,16,16,"fc=20khz"); arr=35;led0pwmval=18;break;
default: LCD_ShowString(60,210,200,16,16," ");
}
TIM1_PWM_Init(arr,0);//²»·ÖƵ¡£PWMƵÂÊ=72000/(899+1)=80Khz
t=0;
}
//delay_ms(10);
//if(dir)led0pwmval++;
//else led0pwmval--;
//if(led0pwmval>300)dir=0;
//if(led0pwmval==0)dir=1;
TIM_SetCompare1(TIM1,led0pwmval);
//¿ØÖÆÕ¼¿Õ±È timΪarr·ÖƵ led0pwmvalΪ¸ßµçƽ¼ÆÊý¸öÊý 50%Ó¦¸ÃÊÇarrµÄÒ»°ë
}
//u8 led0pwmval=0; //¸ßµçƽµÄ¼ÆÊý´ÎÊý
//u8 dir=1;
}