Basic_sine_wave_generator
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
Fork of 4180_proj by
main.cpp
- Committer:
- taoqiuyang
- Date:
- 2015-11-27
- Revision:
- 5:38c6ba85a6ec
- Parent:
- 4:1b82016459ff
- Child:
- 6:7985a531acb9
File content as of revision 5:38c6ba85a6ec:
/* ECE4180 Final Project -- mbed Function Generator Platform: mbed LPC-1768 Team member: Hanjie Xie Qiuyang Tao Xuefeng Jin Yuqing Peng */ #include "mbed.h" #include "uLCD_4DGL.h" //----- Objects for devices---------------------- Serial pc(USBTX, USBRX); uLCD_4DGL lcd(p13, p14, p15); AnalogOut aout(p18); DigitalOut dout(LED1); //-----Global variable used for Func_Gen--------- const double pi = 3.14; float time_interv; int length_waveform=1000; uint16_t waveform[1000]; float x; //-----User Specified, change it if needed------- int waveform_type; //0 for sine, float freq,amp,offset,duty_cycle; /* sine wave use: freq,amp,offset square wave use: freq,amp,offse and duty_cycle */ void initialize_LCD(){ lcd.baudrate(3000000); lcd.background_color(0); lcd.cls(); lcd.printf("Initializing...\n"); lcd.printf("Fun Generator Demo"); } void generate_waveform_datapoints(){ //Generate data points for the waveform float t=0; time_interv=1.0/freq/length_waveform; //------if sine wave-------- if (waveform_type==0){ for (int datapoint_counter=0; datapoint_counter<length_waveform; datapoint_counter++){ x=amp/3.3*cos(2*pi*freq*t)+offset/3.3; waveform[datapoint_counter]=(uint16_t) (x*65535); t += time_interv; } } //------if square wave-------- if (waveform_type==1){ for (int datapoint_counter=0; datapoint_counter<length_waveform; datapoint_counter++){ if (datapoint_counter<=length_waveform*duty_cycle){ x=amp/3.3+offset/3.3; }else{ x=-1.0*amp/3.3+offset/3.3; } waveform[datapoint_counter]=(uint16_t) (x*65535); } } //------if ???? wave--------- } void output_waveform_datapoints(){ //Output the data points using DAC (pin18) time_interv=1.0/freq/length_waveform; for (int datapoint_counter=0; datapoint_counter<length_waveform; datapoint_counter++){ aout.write_u16(waveform[datapoint_counter]); wait(time_interv); } } int main(void){ waveform_type=1; //0 for sine, freq=10; //Hz amp=0.5; //Sacle factor, 1=full range offset=0.5; duty_cycle=0.333; initialize_LCD(); generate_waveform_datapoints(); while (1){ output_waveform_datapoints(); } }