标题:
基于stm32简易函数发生器程序
[打印本页]
作者:
张坚
时间:
2020-9-4 15:54
标题:
基于stm32简易函数发生器程序
#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;//设置字体为蓝色
LCD_ShowString(200-24,0,200,16,16,"RST");//显示清屏区域
POINT_COLOR=RED;//设置画笔蓝色
}
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); //没有按键按下的时候
}
int main(void)
{
u16 adcx;
float temp;
u8 t=0;
u16 dacval=0;
u8 key;
float result;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
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);
}
}
复制代码
简易函数发生器.7z
2020-9-4 17:46 上传
点击文件名下载附件
下载积分: 黑币 -5
367.64 KB, 下载次数: 7, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1