VGA 640x400 fullgraphic monochrome demo program
Dependencies: vga640x400g mbed
main.cpp@0:001deff5fcd5, 2011-07-24 (annotated)
- Committer:
- gertk
- Date:
- Sun Jul 24 11:54:37 2011 +0000
- Revision:
- 0:001deff5fcd5
0.1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |