A frequency meter using a 20x4 LCD

Dependencies:   mbed

Committer:
Buldom
Date:
Tue Nov 23 21:18:25 2010 +0000
Revision:
1:4c16fd7f2821
Parent:
0:e01529ec0e2d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Buldom 0:e01529ec0e2d 1 //
Buldom 0:e01529ec0e2d 2 // DB_LCD20x4 Program
Buldom 0:e01529ec0e2d 3 // Nov 7th,2010 Started
Buldom 1:4c16fd7f2821 4 //
Buldom 0:e01529ec0e2d 5 //
Buldom 0:e01529ec0e2d 6
Buldom 0:e01529ec0e2d 7 #include "mbed.h"
Buldom 0:e01529ec0e2d 8 #include "TextLCD.h"
Buldom 0:e01529ec0e2d 9
Buldom 0:e01529ec0e2d 10
Buldom 0:e01529ec0e2d 11 #define PERIOD 0.1 // refresh period of measurement
Buldom 0:e01529ec0e2d 12
Buldom 0:e01529ec0e2d 13 DigitalOut myled1(LED1); // Assign LED output port LED1 to LED4
Buldom 0:e01529ec0e2d 14 DigitalOut myled2(LED2);
Buldom 0:e01529ec0e2d 15 DigitalOut myled3(LED3);
Buldom 0:e01529ec0e2d 16 DigitalOut myled4(LED4);
Buldom 0:e01529ec0e2d 17 InterruptIn button(p25);
Buldom 0:e01529ec0e2d 18
Buldom 0:e01529ec0e2d 19 Timer timer;
Buldom 0:e01529ec0e2d 20 long var;
Buldom 0:e01529ec0e2d 21 long count;
Buldom 0:e01529ec0e2d 22 long hertz;
Buldom 0:e01529ec0e2d 23 int pos = 0;
Buldom 0:e01529ec0e2d 24 int array[100];
Buldom 0:e01529ec0e2d 25
Buldom 0:e01529ec0e2d 26 TextLCD lcd(p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4); // rs,e,d0,d1,d2,d3,20 char's x 4 lines
Buldom 0:e01529ec0e2d 27
Buldom 0:e01529ec0e2d 28 void flip() {
Buldom 0:e01529ec0e2d 29 myled4 = !myled4;
Buldom 0:e01529ec0e2d 30 array[pos] = timer.read_us();
Buldom 0:e01529ec0e2d 31 timer.reset();
Buldom 0:e01529ec0e2d 32 timer.start();
Buldom 0:e01529ec0e2d 33 pos++;
Buldom 0:e01529ec0e2d 34 if (pos == 100) {
Buldom 0:e01529ec0e2d 35 pos = 0;
Buldom 0:e01529ec0e2d 36 }
Buldom 0:e01529ec0e2d 37 }
Buldom 0:e01529ec0e2d 38
Buldom 0:e01529ec0e2d 39 int main() {
Buldom 0:e01529ec0e2d 40 float tim;
Buldom 0:e01529ec0e2d 41 pos = 0;
Buldom 0:e01529ec0e2d 42 int i;
Buldom 0:e01529ec0e2d 43 for (i=0; i<100; i++) {
Buldom 0:e01529ec0e2d 44 array[i] = 0;
Buldom 0:e01529ec0e2d 45 }
Buldom 0:e01529ec0e2d 46
Buldom 1:4c16fd7f2821 47 set_time(1290443600); // 22 Nov 2010 - 16H33
Buldom 0:e01529ec0e2d 48
Buldom 0:e01529ec0e2d 49 lcd.cls();
Buldom 0:e01529ec0e2d 50 lcd.locate(0, 0);
Buldom 0:e01529ec0e2d 51 // 0 1 2
Buldom 0:e01529ec0e2d 52 lcd.printf(" LCD Frequencemeter ");
Buldom 0:e01529ec0e2d 53 lcd.locate(0, 1);
Buldom 0:e01529ec0e2d 54 lcd.printf("LCD 20x4 test progrm");
Buldom 0:e01529ec0e2d 55 lcd.locate(0, 2);
Buldom 0:e01529ec0e2d 56 time_t seconds = time(NULL);
Buldom 0:e01529ec0e2d 57 lcd.printf("%s", ctime(&seconds));
Buldom 0:e01529ec0e2d 58 lcd.locate(0, 3);
Buldom 0:e01529ec0e2d 59 lcd.printf("(c) Dominique Bultez");
Buldom 0:e01529ec0e2d 60 wait(2);
Buldom 0:e01529ec0e2d 61 lcd.cls();
Buldom 0:e01529ec0e2d 62 lcd.locate(0, 0);
Buldom 0:e01529ec0e2d 63 lcd.printf(" LCD Frequencemeter ");
Buldom 0:e01529ec0e2d 64 lcd.locate(0, 3);
Buldom 0:e01529ec0e2d 65 lcd.printf("(c) Dominique Bultez");
Buldom 0:e01529ec0e2d 66
Buldom 0:e01529ec0e2d 67 timer.reset();
Buldom 0:e01529ec0e2d 68 button.rise(&flip); // attach the address of the flip function to the rising edge
Buldom 0:e01529ec0e2d 69 var = 0;
Buldom 0:e01529ec0e2d 70 tim = PERIOD;
Buldom 0:e01529ec0e2d 71
Buldom 0:e01529ec0e2d 72 while (1) {
Buldom 0:e01529ec0e2d 73 for (i=0; i<100; i++) {
Buldom 0:e01529ec0e2d 74 var = var + array[i];
Buldom 0:e01529ec0e2d 75 }
Buldom 0:e01529ec0e2d 76 count = var / 100; // moyenne de 100 &#65533;chantillons
Buldom 0:e01529ec0e2d 77 hertz = 1000000/count;
Buldom 0:e01529ec0e2d 78 var = 0;
Buldom 0:e01529ec0e2d 79 myled1 = 1;
Buldom 0:e01529ec0e2d 80 wait(tim);
Buldom 0:e01529ec0e2d 81 myled1 = 0;
Buldom 0:e01529ec0e2d 82 myled2 = 1;
Buldom 0:e01529ec0e2d 83 wait(tim);
Buldom 0:e01529ec0e2d 84 myled2 = 0;
Buldom 0:e01529ec0e2d 85 myled3 = 1;
Buldom 0:e01529ec0e2d 86 wait(tim);
Buldom 0:e01529ec0e2d 87 myled3 = 0;
Buldom 0:e01529ec0e2d 88
Buldom 0:e01529ec0e2d 89 //lcd.cls();
Buldom 0:e01529ec0e2d 90 //lcd.locate(0, 0); // 1st line top
Buldom 0:e01529ec0e2d 91 // 0 1 2
Buldom 0:e01529ec0e2d 92 // 12345678901234567890
Buldom 0:e01529ec0e2d 93 //lcd.printf(" LCD Frequencemeter ");
Buldom 0:e01529ec0e2d 94 lcd.locate(0, 1); // 2nd line
Buldom 0:e01529ec0e2d 95 lcd.printf("%d uSec ", count);
Buldom 0:e01529ec0e2d 96 lcd.locate(0, 2);
Buldom 0:e01529ec0e2d 97 lcd.printf("%d Hz ", hertz);
Buldom 0:e01529ec0e2d 98 //lcd.locate(0, 3);
Buldom 0:e01529ec0e2d 99 //lcd.printf("(c) Dominique Bultez");
Buldom 0:e01529ec0e2d 100 }
Buldom 0:e01529ec0e2d 101 }