標(biāo)題:
基于stm32簡(jiǎn)易函數(shù)發(fā)生器程序
[打印本頁(yè)]
作者:
張堅(jiān)
時(shí)間:
2020-9-4 15:54
標(biāo)題:
基于stm32簡(jiǎn)易函數(shù)發(fā)生器程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "dac.h"
#include "key.h"
#include "Drive_DAC.h"
#include "touch.h"
// ************ P4或DAC口作輸出 GND接地 ***********
//清空屏幕并在右上角顯示"RST"
void Load_Drow_Dialog(void)
{
LCD_Clear(WHITE);//清屏
POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
LCD_ShowString(200-24,0,200,16,16,"RST");//顯示清屏區(qū)域
POINT_COLOR=RED;//設(shè)置畫筆藍(lán)色
}
void rtp_test(void)
{
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN) //觸摸屏被按下
{
if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
{
if(tp_dev.x[0]>30&&tp_dev.y[0]<230+16&&tp_dev.y[0]>210+16)
{
ddsStructData.wave = SAWTOOTHWAVE;
}
if(tp_dev.x[0]>30&&tp_dev.y[0]<210+16&&tp_dev.y[0]>190+16)
{
ddsStructData.wave = SQUAREWAVE;
}
if(tp_dev.x[0]>30&&tp_dev.y[0]<190+16&&tp_dev.y[0]>170+16)
{
ddsStructData.wave = TRIANGLEWAE;
}
if(tp_dev.x[0]>30&&tp_dev.y[0]<170+16&&tp_dev.y[0]>150+16)
{
ddsStructData.wave = SINWAVE;
}
if(tp_dev.x[0]>125&&tp_dev.x[0]<140&&tp_dev.y[0]<90+16)
{
ddsStructData.hz += 500;
if(ddsStructData.hz == 3000) ddsStructData.hz = 500;
}
if(tp_dev.x[0]>140&&tp_dev.y[0]<90+16)
{
ddsStructData.hz -= 500;
if(ddsStructData.hz < 500) ddsStructData.hz = 3000;
}
if(tp_dev.x[0]>125&&tp_dev.x[0]<140&&tp_dev.y[0]<110+16&&tp_dev.y[0]>90+16)
{
ddsStructData.vpp += 1;
if(ddsStructData.vpp == 4) ddsStructData.vpp = 1;
}
if(tp_dev.x[0]>140&&tp_dev.y[0]<110+16&&tp_dev.y[0]>90+16)
{
ddsStructData.vpp -= 1;
if(ddsStructData.vpp < 1) ddsStructData.vpp = 4;
}
}
}else delay_ms(10); //沒(méi)有按鍵按下的時(shí)候
}
int main(void)
{
u16 adcx;
float temp;
u8 t=0;
u16 dacval=0;
u8 key;
float result;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
delay_init(168); //初始化延時(shí)函數(shù)
uart_init(115200); //初始化串口波特率為115200
LED_Init(); //初始化LED
LCD_Init(); //LCD初始化
KEY_Init(); //按鍵初始化
POINT_COLOR=RED;
LCD_ShowString(30,20,200,16,16,"*********- dds -*********");
LCD_ShowString(30,70,200,16,16,"------ Parameter ------");
LCD_ShowString(30,90,200,16,16,"f:");
LCD_ShowString(130,90,200,16,16,"+");
LCD_ShowString(160,90,200,16,16,"-");
LCD_ShowString(90,90,200,16,16,"Hz");
LCD_ShowString(30,110,200,16,16,"vpp:");
LCD_ShowString(130,110,200,16,16,"+");
LCD_ShowString(160,110,200,16,16,"-");
LCD_ShowString(90,110,200,16,16,"v");
LCD_ShowString(30,130,200,16,16,"------ wave ------");
LCD_ShowString(30,170,200,16,16,"1.SINWAVE");
LCD_ShowString(30,190,200,16,16,"2.TRIANGLEWAE");
LCD_ShowString(30,210,200,16,16,"3.SQUAREWAVE");
LCD_ShowString(30,230,200,16,16,"4.SAWTOOTHWAVE");
DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//初始值為0
tp_dev.init(); //觸摸屏初始化
ddsStructData.hz = 1000;
ddsStructData.vpp = 1;
while(1)
{
u16 i=0;
dacInit();
dacOpen();
rtp_test();
LCD_ShowxNum(60,110,(float)ddsStructData.vpp,3,16,0);
LCD_ShowxNum(50,90,ddsStructData.hz,4,16,0);
if(ddsStructData.wave==TRIANGLEWAE)
{
LCD_ShowString(30,150,200,16,16,"wave:");
LCD_ShowString(80,150,200,16,16,"TRIANGLEWAE ");
}
if(ddsStructData.wave==SQUAREWAVE)
{
LCD_ShowString(30,150,200,16,16,"wave:");
LCD_ShowString(80,150,200,16,16,"SQUAREWAVE ");
}
if(ddsStructData.wave==SINWAVE)
{
LCD_ShowString(30,150,200,16,16,"wave:");
LCD_ShowString(80,150,200,16,16,"SINWAVE ");
}
if(ddsStructData.wave==SAWTOOTHWAVE)
{
LCD_ShowString(30,150,200,16,16,"wave:");
LCD_ShowString(80,150,200,16,16,"SAWTOOTHWAVE");
}
delay_ms(300);
}
}
復(fù)制代碼
簡(jiǎn)易函數(shù)發(fā)生器.7z
2020-9-4 17:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
367.64 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1