Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: AD128160_kazushi_branch HTTPClient mbed PowerControl WiflyInterface
Fork of FontTest3 by

Please see at http://kazushi-lab.c.fun.ac.jp/pukiwiki/index.php?TwitterMbed
Diff: main.cpp
- Revision:
- 0:304c871df0a8
- Child:
- 1:6b495e0f3b0c
diff -r 000000000000 -r 304c871df0a8 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Dec 06 16:28:01 2009 +0000
@@ -0,0 +1,115 @@
+#include "mbed.h"
+#include "spilcd.h"
+#include "kfont8.h"
+
+#define countof(x) ( sizeof(x) / sizeof(x[0]) )
+
+SPILCD lcd(p21, p22, p23, p11, p12, p13);
+
+int csrx = 0;
+int csry = 0;
+int offsety = 0;
+bool kstate = false;
+unsigned char kbuf;
+
+void locate(int x, int y){
+ csrx = x;
+ csry = y;
+ if(csrx < 0) csrx = 0;
+ if(csry < 0) csry = 0;
+ csrx &= 31;
+ csry &= 7;
+ lcd.moveto(csrx << 3, (offsety + csry) & 7);
+};
+
+void scroll(void){
+ int i;
+ offsety = (offsety + 1) & 7;
+ lcd.cmd(0x40 | offsety << 3);
+ lcd.moveto(0, (offsety + 7) & 7);
+ for(i = 0; i < 128; i++) lcd.write(0);
+}
+
+void newline(void){
+ csrx = 0;
+ if(++csry == 8){
+ scroll();
+ csry = 7;
+ }
+ locate(csrx, csry);
+}
+
+// draw 4x8 font
+void drawfont4(unsigned char c){
+ const unsigned char *p = &font4[c << 2];
+ lcd.write(p[0]);
+ lcd.write(p[1]);
+ lcd.write(p[2]);
+ lcd.write(p[3]);
+ // cursor control
+ if(++csrx == 32) newline();
+}
+
+const unsigned char *findface(unsigned short c){
+ const unsigned char *p = NULL;
+ int i, sum;
+ for(sum = i = 0; i < countof(font8table); i++){
+ if(font8table[i].start <= c && c <= font8table[i].end){
+ p = &font8[(sum + c - font8table[i].start) << 3];
+ break;
+ }
+ sum += font8table[i].end - font8table[i].start + 1;
+ }
+ return p;
+}
+
+// draw 8x8 font
+void drawkanji(unsigned short c){
+ const unsigned char *p = findface(c);
+ if(p == NULL) return;
+
+ if(csrx >= 31) newline();
+ lcd.write(p[0]);
+ lcd.write(p[1]);
+ lcd.write(p[2]);
+ lcd.write(p[3]);
+ lcd.write(p[4]);
+ lcd.write(p[5]);
+ lcd.write(p[6]);
+ lcd.write(p[7]);
+ csrx += 2;
+ if(csrx == 32) newline();
+}
+
+void drawc(unsigned char c){
+ if(kstate){ // 2nd byte of shift-jis
+ kstate = false;
+ drawkanji(kbuf << 8 | c);
+ } else if((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)){ // 1st byte of shift-jis
+ kstate = true;
+ kbuf = c;
+ } else { // 4x8font
+ drawfont4(c);
+ }
+}
+
+void draws(const unsigned char *s){
+ unsigned char c;
+ while((c = *s++) != '\0') drawc(c);
+}
+
+Serial sio(USBTX, USBRX);
+
+int main() {
+ unsigned char c;
+
+ sio.baud(115200);
+ while(1){
+ c = sio.getc();
+ if(c == 0x0d){
+ newline();
+ } else {
+ drawc(c);
+ }
+ }
+}
