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:
- 3:bb920a8eb590
- Parent:
- 2:cc462c2a54f6
- Child:
- 4:1b82016459ff
File content as of revision 3:bb920a8eb590:
/* 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; //0 for sine, float freq,amp=1,offset=0.5; 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*(cos(2*pi*freq*t)+1); waveform[datapoint_counter]=(uint16_t) (x*32767); t += time_interv; } } //------if other 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=0; //0 for sine, freq=2; //Hz amp=1; //Sacle factor, 1=full range offset=0.5; initialize_LCD(); generate_waveform_datapoints(); while (1){ output_waveform_datapoints(); } }