VGA 640x400 fullgraphic monochrome demo program

Dependencies:   vga640x400g mbed

Committer:
gertk
Date:
Sun Jul 24 11:54:37 2011 +0000
Revision:
0:001deff5fcd5
0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gertk 0:001deff5fcd5 1 /*
gertk 0:001deff5fcd5 2 * 640x400 70Hz fullgraphic monochrome VGA Driver demo program
gertk 0:001deff5fcd5 3 *
gertk 0:001deff5fcd5 4 * Copyright (C) 2011 by Ivo van Poorten <ivop(at)euronet.nl>
gertk 0:001deff5fcd5 5 * and Gert van der Knokke <gertk(at)xs4all.nl>
gertk 0:001deff5fcd5 6 * This file is licensed under the terms of the GNU Lesser
gertk 0:001deff5fcd5 7 * General Public License, version 3.
gertk 0:001deff5fcd5 8 *
gertk 0:001deff5fcd5 9 * Inspired by Simon's (not Ford) Cookbook entry and Cliff Biffle's
gertk 0:001deff5fcd5 10 * assembly code.
gertk 0:001deff5fcd5 11 */
gertk 0:001deff5fcd5 12
gertk 0:001deff5fcd5 13 #include "mbed.h"
gertk 0:001deff5fcd5 14 #include "vga640x400g.h"
gertk 0:001deff5fcd5 15
gertk 0:001deff5fcd5 16 // visual feedback
gertk 0:001deff5fcd5 17 DigitalOut myled(LED1);
gertk 0:001deff5fcd5 18
gertk 0:001deff5fcd5 19 // define serial port for debug
gertk 0:001deff5fcd5 20 Serial linktopc(USBTX,USBRX);
gertk 0:001deff5fcd5 21
gertk 0:001deff5fcd5 22 int main() {
gertk 0:001deff5fcd5 23 // init the VGA subsystem (always do this first!)
gertk 0:001deff5fcd5 24 init_vga();
gertk 0:001deff5fcd5 25
gertk 0:001deff5fcd5 26 int s,t;
gertk 0:001deff5fcd5 27
gertk 0:001deff5fcd5 28 // serial port on at 115200 baud
gertk 0:001deff5fcd5 29 linktopc.baud(115200);
gertk 0:001deff5fcd5 30 setbuf(stdout, NULL); // no buffering for this filehandle
gertk 0:001deff5fcd5 31
gertk 0:001deff5fcd5 32
gertk 0:001deff5fcd5 33 // clear the screen
gertk 0:001deff5fcd5 34 vga_cls();
gertk 0:001deff5fcd5 35
gertk 0:001deff5fcd5 36 // draw some circles
gertk 0:001deff5fcd5 37 for (t=10; t<200; t+=5)
gertk 0:001deff5fcd5 38 vga_circle(20+t,399-t,t,WHITE);
gertk 0:001deff5fcd5 39
gertk 0:001deff5fcd5 40 // draw some boxes
gertk 0:001deff5fcd5 41 for (t=10; t<100; t+=5)
gertk 0:001deff5fcd5 42 vga_box(400+t,100+t,400+t*2,100+t*2,WHITE);
gertk 0:001deff5fcd5 43
gertk 0:001deff5fcd5 44 // circumfence the screen
gertk 0:001deff5fcd5 45 vga_box(0,0,639,399,WHITE);
gertk 0:001deff5fcd5 46
gertk 0:001deff5fcd5 47 // show the complete character set
gertk 0:001deff5fcd5 48 for (s=0; s<4; s++) {
gertk 0:001deff5fcd5 49 for (t=0; t<64; t++) {
gertk 0:001deff5fcd5 50 vga_putchar(20+t*8,20+16*s,t+s*64,WHITE);
gertk 0:001deff5fcd5 51 }
gertk 0:001deff5fcd5 52 }
gertk 0:001deff5fcd5 53
gertk 0:001deff5fcd5 54 // put a string on screen
gertk 0:001deff5fcd5 55 vga_putstring(400,370,"Hello World!",WHITE);
gertk 0:001deff5fcd5 56
gertk 0:001deff5fcd5 57 // draw a line
gertk 0:001deff5fcd5 58 vga_line(400,390,500,390,WHITE);
gertk 0:001deff5fcd5 59
gertk 0:001deff5fcd5 60 // draw a filled box
gertk 0:001deff5fcd5 61 vga_filledbox(450,330,550,360,1);
gertk 0:001deff5fcd5 62
gertk 0:001deff5fcd5 63
gertk 0:001deff5fcd5 64 // all done
gertk 0:001deff5fcd5 65 while (1){
gertk 0:001deff5fcd5 66 wait(1);
gertk 0:001deff5fcd5 67 myled=!myled;
gertk 0:001deff5fcd5 68 }
gertk 0:001deff5fcd5 69 }