论坛风格切换切换到宽版
  • 13401阅读
  • 12回复

Arduino接12864的LCD屏做了个时钟,如何显示中文? [复制链接]

上一主题 下一主题
在线BG6JJI
 
发帖
4939
只看楼主 倒序阅读 0楼 发表于: 2012-02-15
使用了glcd、time库,可以在屏上显示图形和各种字体的时钟数字。
但是不知道如何直接显示中文,目前英文没问题。英文字体是用glcd库推荐的font creator 2.0

显示屏是lcdmk赠送活动中赠送的无字库屏,便宜实惠
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5339566&bbs_page_no=1&bbs_id=9999
10元邮费得的6个lcd



没有外接时钟芯片。

下面是代码:

#include <glcd.h>
#include <time.h>
#include "fonts/allfonts.h"       // system and arial14 fonts are used
#include "bitmaps/allbitmaps.h"     // all images in the bitmap dir

image_t icon;

gtext textarea;         // a text area to be defined later in the sketch
gtext textareaarray[3];     // an array of text areas
gtext countdownarea = gtext(glcd.centerx, glcd.centery,1,1,arial_14); // text area for countdown digits

unsigned long startmillis;
unsigned int loops = 0;
unsigned int iter = 0;
      int thedelay = 20;


void setup()
{
glcd.init();   // initialise the library, non inverted writes pixels onto a clear screen
settime(18,31,50,15,2,12); // set time to 4:37 am jan 2 2010
if(glcd.height >= 64)  
  icon = arduinoicon64x64; // the 64 pixel high icon
else
  icon = arduinoicon64x32; // the 32 pixel high icon

  glcd.clearscreen();
  glcd.drawbitmap(icon, 0, 0);


}

void loop()
{
glcd.cursortoxy(72, 36);
glcd.selectfont(launica);
if(hour() < 10)
glcd.print(Ɔ');
glcd.print(hour());
printdigits(minute());
printdigits(second());

glcd.cursortoxy(72,50 );
if(month() < 10) glcd.print(Ɔ');glcd.print(month());   glcd.print("-");
if(day() < 10) glcd.print(Ɔ');glcd.println(day());

glcd.selectfont(arial14);
glcd.cursortoxy(94, 32);

if(month() < 10) glcd.print(Ɔ');glcd.print(month());   glcd.print("-");
if(day() < 10) glcd.print(Ɔ');glcd.println(day());
  glcd.print("aprs test message...");
 

}


void printdigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
glcd.print(":");
if(digits < 10)
  glcd.print(Ɔ');
glcd.print(digits);
}
在线BG6JJI
发帖
4939
只看该作者 1楼 发表于: 2012-02-17
已经解决了
在线BG6JJI
发帖
4939
只看该作者 2楼 发表于: 2012-02-17
/*测试用的完整程序*/
#include <glcd.h>               //lcd库
#include <time.h>               // 时间库
#include "fonts/allfonts.h"       // 其中用到的字库
#include "bitmaps/allbitmaps.h"     // 本帖一楼图片上用到的图像

image_t icon;

void setup()
{
glcd.init();   // 初始化lcd
settime(15,59,50,17,2,12); // set time
icon = iloveu; // the 64x32 pixel high icon

glcd.drawbitmap(elsiehappytime, 0, 0);   //左边半边的64*64图形

}

void loop()
{
switch (weekday()) {     //转换周一到周日的图像
  case 1:
  icon = week7;
    break;
  case 2:
  icon = week1;
    break;
  case 3:
  icon = week2;
    break;
  case 4:
  icon = week3;
    break;
  case 5:
  icon = week4;
    break;
  case 6:
  icon = week5;
    break;
  case 7:
  icon = week6;
    break;

  default:
    icon = iloveu;
}

if (second() < 30 ) glcd.drawbitmap(iloveu, 63, 0);
if (second() > 30 ) glcd.drawbitmap(icon, 63, 0);

glcd.cursortoxy(66, 36);
glcd.selectfont(launica);
glcd.printf_p(pstr("%02d:%02d:%02d"), hour(), minute(), second());
glcd.print(' ');   //去除字符后面未消除的拖尾

glcd.cursortoxy(72,50 );
glcd.printf("%02d-%02d", month(), day());

delay(1000);

}




/*还没写按键部分,另外也没用中文字库,想了想,还是图片画出来的比中文的好看,虽说直接字库写文字好写,但是觉得没味道,等用到字库再说。*/
离线BH7OJ
发帖
3091
只看该作者 3楼 发表于: 2012-02-20
挺不错的,这个小板很强大。
离线ba6iv
发帖
1285
只看该作者 4楼 发表于: 2012-02-20
用stm32估计能做的更好。
离线BH7OJ
发帖
3091
只看该作者 5楼 发表于: 2012-02-21
'
用stm32估计能做的更好。
'

编程的技术问题或库的问题,用8031估计更好哈哈

芯片是死的,只有提高编程能力和设计能力才是主道。
离线ba6iv
发帖
1285
只看该作者 6楼 发表于: 2012-02-26
'
编程的技术问题或库的问题,用8031估计更好哈哈
芯片是死的,只有提高编程能力和设计能力才是主道。
'
同意,所以才说用stm32能做的更好些。
因为stm32能上ucgui了,完全基于封装库的图形化操作界面,配合tft lcd,显示效果比起12864来说那可是酷的很。
avr的片子就硬件资源来讲还是不适合图形化的操作系统。
离线BH7OJ
发帖
3091
只看该作者 7楼 发表于: 2012-03-01
'
同意,所以才说用stm32能做的更好些。
因为stm32能上ucgui了,完全基于封装库的图形化操作界面,配合tft lcd,显示效果比起12864来说那可是酷的很。
avr的片子就硬件资源来讲还是不适合图形化的操作系统。
'


但编程成本高啊。。。。哈哈

会单片机的和会嵌入式系统的工资不一样。。
离线bg6qbp
发帖
362
只看该作者 8楼 发表于: 2012-06-01
好东西,帮顶!
呼号: BG6QBP
湖北武汉
QQ 16643937  EMAIL:BG6QBP@21CN.COM
离线BH7OJ
发帖
3091
只看该作者 9楼 发表于: 2012-06-11
楼主,刚才浏览到这帖子我到突然想起来了,

把汉字做成库,然后在程序中调用,就可以完美支持中文了,这种库网上很多而且有很多建字模的软件。
我要鼓起所有的勇气
额……
我鼓过了
可惜没有……
在线BG6JJI
发帖
4939
只看该作者 10楼 发表于: 2012-06-13
谢谢,已经解决很久了
到处游荡的机器人火腿,目前在丽江
RIG:我有一堆uSDX
ANT:随时都能抄走的拉杆GP天线
QQ:1416160    我的DIY群:777353770
http://www.dxsummit.fi/DxSpots.aspx
离线bh1swf
发帖
177
只看该作者 11楼 发表于: 2014-12-16
学Arduino你还是放弃吧。根本做不了啥。工作中用不到,你见什么产品用Arduino了。商业产品没有用Arduino的。只能玩玩而已
在线BG6JJI
发帖
4939
只看该作者 12楼 发表于: 2014-12-18
回 bh1swf 的帖子
bh1swf:学Arduino你还是放弃吧。根本做不了啥。工作中用不到,你见什么产品用Arduino了。商业产品没有用Arduino的。只能玩玩而已 (2014-12-16 10:20) 

就是为了玩的,亲,没打算用到产品上
到处游荡的机器人火腿,目前在丽江
RIG:我有一堆uSDX
ANT:随时都能抄走的拉杆GP天线
QQ:1416160    我的DIY群:777353770
http://www.dxsummit.fi/DxSpots.aspx