111

Dependencies:   4DGL-uLCD-SE AD5206 mbed-rtos mbed

Fork of 4180_proj by ECE4180proj

Committer:
taoqiuyang
Date:
Fri Nov 27 00:42:38 2015 +0000
Revision:
2:cc462c2a54f6
Parent:
1:fb8f053747d6
Child:
3:bb920a8eb590
early working code for sine wave; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taoqiuyang 0:52af3c50f548 1 #include "mbed.h"
taoqiuyang 1:fb8f053747d6 2 #include "uLCD_4DGL.h"
taoqiuyang 1:fb8f053747d6 3
taoqiuyang 1:fb8f053747d6 4 // Objects for devices
taoqiuyang 1:fb8f053747d6 5 Serial pc(USBTX, USBRX);
taoqiuyang 1:fb8f053747d6 6 uLCD_4DGL lcd(p13, p14, p15);
taoqiuyang 0:52af3c50f548 7 AnalogOut aout(p18);
taoqiuyang 0:52af3c50f548 8 DigitalOut dout(LED1);
taoqiuyang 0:52af3c50f548 9
taoqiuyang 1:fb8f053747d6 10 const double pi = 3.14;
taoqiuyang 1:fb8f053747d6 11 float time_interv;
taoqiuyang 0:52af3c50f548 12 uint16_t sample = 0;
taoqiuyang 1:fb8f053747d6 13 int length_waveform=1000;
taoqiuyang 2:cc462c2a54f6 14 uint16_t waveform[1000];
taoqiuyang 0:52af3c50f548 15
taoqiuyang 1:fb8f053747d6 16 int waveform_type=0;
taoqiuyang 0:52af3c50f548 17 float freq=2; //Hz
taoqiuyang 0:52af3c50f548 18 float amp=1; //Sacle factor, 1=full range
taoqiuyang 1:fb8f053747d6 19 float offset=0.5;
taoqiuyang 0:52af3c50f548 20 float x;
taoqiuyang 0:52af3c50f548 21
taoqiuyang 1:fb8f053747d6 22 void initialize_LCD(){
taoqiuyang 1:fb8f053747d6 23 lcd.baudrate(3000000);
taoqiuyang 1:fb8f053747d6 24 lcd.background_color(0);
taoqiuyang 1:fb8f053747d6 25 lcd.cls();
taoqiuyang 1:fb8f053747d6 26
taoqiuyang 1:fb8f053747d6 27 lcd.printf("Initializing...\n");
taoqiuyang 1:fb8f053747d6 28 lcd.printf("Fun Generator Demo");
taoqiuyang 1:fb8f053747d6 29 }
taoqiuyang 1:fb8f053747d6 30
taoqiuyang 1:fb8f053747d6 31 void generate_waveform_datapoints(){
taoqiuyang 2:cc462c2a54f6 32 float t=0;
taoqiuyang 1:fb8f053747d6 33 time_interv=1.0/freq/length_waveform;
taoqiuyang 2:cc462c2a54f6 34
taoqiuyang 2:cc462c2a54f6 35 for (int datapoint_counter=0; datapoint_counter<length_waveform; datapoint_counter++){
taoqiuyang 2:cc462c2a54f6 36 x=amp*(cos(2*pi*freq*t)+1);
taoqiuyang 2:cc462c2a54f6 37 waveform[datapoint_counter]=(uint16_t) (x*32767);
taoqiuyang 2:cc462c2a54f6 38
taoqiuyang 2:cc462c2a54f6 39 aout.write_u16(waveform[datapoint_counter]);
taoqiuyang 2:cc462c2a54f6 40 t += time_interv;
taoqiuyang 2:cc462c2a54f6 41
taoqiuyang 2:cc462c2a54f6 42 wait(time_interv);
taoqiuyang 2:cc462c2a54f6 43 }
taoqiuyang 2:cc462c2a54f6 44 }
taoqiuyang 2:cc462c2a54f6 45
taoqiuyang 2:cc462c2a54f6 46 void output_waveform_datapoints(){
taoqiuyang 2:cc462c2a54f6 47
taoqiuyang 2:cc462c2a54f6 48
taoqiuyang 2:cc462c2a54f6 49
taoqiuyang 1:fb8f053747d6 50 }
taoqiuyang 1:fb8f053747d6 51
taoqiuyang 1:fb8f053747d6 52
taoqiuyang 1:fb8f053747d6 53
taoqiuyang 0:52af3c50f548 54
taoqiuyang 0:52af3c50f548 55 int main(void){
taoqiuyang 1:fb8f053747d6 56
taoqiuyang 1:fb8f053747d6 57 initialize_LCD();
taoqiuyang 1:fb8f053747d6 58 generate_waveform_datapoints();
taoqiuyang 1:fb8f053747d6 59
taoqiuyang 1:fb8f053747d6 60
taoqiuyang 1:fb8f053747d6 61
taoqiuyang 1:fb8f053747d6 62
taoqiuyang 0:52af3c50f548 63 while (1){
taoqiuyang 1:fb8f053747d6 64
taoqiuyang 1:fb8f053747d6 65 generate_waveform_datapoints();
taoqiuyang 2:cc462c2a54f6 66 output_waveform_datapoints();
taoqiuyang 1:fb8f053747d6 67
taoqiuyang 1:fb8f053747d6 68
taoqiuyang 1:fb8f053747d6 69 /*for (float t = 0.0f; t < 1/freq; t += 1/fs) {
taoqiuyang 0:52af3c50f548 70 x=amp*(cos(2*pi*freq*t)+1);
taoqiuyang 0:52af3c50f548 71 sample=(uint16_t) (x*32767);
taoqiuyang 0:52af3c50f548 72 aout.write_u16(sample);;
taoqiuyang 0:52af3c50f548 73 wait(1/fs);
taoqiuyang 1:fb8f053747d6 74 }*/
taoqiuyang 0:52af3c50f548 75 }
taoqiuyang 0:52af3c50f548 76 }